Open behrisch opened 6 years ago
add lcmodel parameters for setting an upper bound on lateral speed depending on longitudinal speed.
lcMaxSpeedLatStanding lcMaxSpeedLatFactor
where lateralSpeed <= MIN(lcMaxSpeedLatStanding + lcMaxSpeedLatFactor * getSpeed(), vtype.getMaxSpeedLat())
You might also consider sth like: maxAccelLat -> maxAccelLatStanding + lcMaxAccelLatFactor * getSpeed()
sliding should be totally disabled for non-urgent changes (except for bicycles)
solution:
in addition to maxSpeedLatStanding, maxSpeedLatFactor add two new parameters
maxSpeedLatStandingStrategic, maxSpeedLatFactorStrategic maxSpeedLatStandingUrgent, maxSpeedLatFactorUrgent to explicitly configure the two different situations. (i.e. the urgent version with negative factor #8064)
using Urgent as the suffix is better than Strategic because other lane change motivations may be flagged as urgent in the future (#1145) and it makes sense to apply the new value there as well.
lcMaxSpeedLatStanding=0 results in unrealistic behavior where vehicles begin a lane changing maneuver (i.e. to gain speed) and are then stuck in mid-maneuver once their forward space runs out and they have to stop.
Fixing this has several aspects:
Idea: prevent non-urgent maneuvers if maneuverDist is greater than some threshold + brakeDist. Threshold could be something like half a lane width.
Problem: lane changes may still be started and not finished if the lateral speed is not high enough to pass the threshold until the vehicle has to stop.
Next Idea: use a function of myMaxDistLatStanding, brakeGap and maneuverDist to affect changes in mySpeedGainProbability and myKeepRightProbability
to be done:
to prevent deadlocks it cannot be totally prevented but at least it should be avoided where possible
Migrated from http://sumo.dlr.de/ticket/3392
related to #4017