17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-09 10:12:24 +01:00
Files
maszyna/vehicle
pwarszawski ce87aa0e09 AI braking: plan approaches from the consist brake, stop 8-15 m short
The new braking curve below plans the stop at the signal itself unless
the stopping point moves with it (in testing, trains stopped 0-3 m past
the signal), so both go in one change.

1. The braking curve.

The braking curve towards a lower speed or a stop assumed a constant
deceleration from the present speed over the whole distance. A pneumatic
brake does not work like that:

- it acts on the state the train is in once it has applied; while the
  train is still speeding up (downhill), plan from the speed it will have
  reached by then, over the distance left by then;
- cast iron blocks grip harder as the train slows, so a constant
  deceleration plan asks for too much at the start and then releases;
  follow the shape of the consist brake table (fBrake_a0/a1) over speed
  instead (shaped_braking_demand), over the distance left once the brake
  has had its fill time;
- no power while the train is still above the speed it is braking for.

IncBrake() only adds braking when the brake table says the present
position is not enough. When the table overestimates the consist (see
the previous rapid step fix, or a descent), the train keeps slowing too
little with the handle held. After the full fill time with the handle
unchanged, believe the train rather than the table (fBrakeHeldTime).

When the AI asks for no braking and the train is still slowing down more
than that, release. With the gentler plan above the demand eases off
early, and without this a heavy freight train in G came to a stand a few
hundred metres before a W4 with its brake still on (seen in testing).

2. The stopping window.

In train running the final approach to a stop signal began at
fMaxProximityDist (15-40 m, cargo 25-50 m), aimed at half of
fMinProximityDist (10-15 m, cargo 20-25 m), and set VelDesired = 0,
which asks for hard braking whatever the distance left. Where a train
came to a stand depended on how it entered that phase: on the test
sceneries anywhere from 1 to 45 m short of the signal on the flat and
25-42 m uphill for heavy freight.

For train running only (a W4 stop point, shunting and coupling keep the
old margins and the old final approach):

- stop 8-15 m short of the signal whatever the length of the train, aim
  at the middle of that window (stopping_margin) both with the braking
  curve and in the final approach, and ask there only for what the
  distance left takes, following the consist brake table;
- start the final approach 50 m out (cargo 60 m) whether the train is
  moving or standing; it used to be 15-40 m while moving and 50 m once
  stopped, and with the gentler final approach above a train that came
  to a stand between the two released to creep closer and, uphill,
  rolled back and tried again;
- uphill, while the gradient alone would bring the train to a stand short
  of the window, keep it rolling at no more than the speed the gradient
  can take off by then, with power if needed;
- uphill, put the train brake on as the train comes to a stand, keep it
  on while it stands, and apply it for real if the train rolls back. This
  is done at the very end of pick_optimal_speed(): the adjustments made
  before it assume a train moving forward and can raise the demand back
  to "no braking" (with the rule placed earlier, EMUs rolled back up to
  90 m in testing). The EMU branch of
  control_braking_force() gets the "slipping back" condition the wagon
  branch has always had.


3. Known limitation.

Heavy trains of wagons with the ESt3AL2 distributor (413S, 601W and
alike) respond more slowly than the AI expects: with the present brake
model the distributor fills the AL2 relay chamber, whose capacity is set
to 2 in TNESt3::SetSize (Przekladniki[i]->CreateCap(i)), through
orifices sized for about 1 l, so these wagons need 34 s to reach 95 %
cylinder pressure in G against 21 s for a plain ESt3. On a 20 per mille
descent an ET22 with 20 loaded 413S wagons overran the stop signal by up
to 6.5 m in 6 of 24 runs at x20 with this change. With the relay chamber
at 1 l and the release orifices at about 80 % of their diameter, as the
author of the brake model suggested, none of them did (0 of 16).
2026-09-28 15:45:10 +02:00
..
2026-05-05 23:02:16 +02:00
2026-06-30 21:19:46 +02:00