LaneChangeReasons¶
This class and its derived classes provide methods for calculating individual lane change decisions and -urgencies and the respective speed adjustment.
Each lane change reason is derived as a separate class with the structure of the inherited class “LaneChangeReason”. The process for each decision and calculation is fundamentally divided in, but can differ from the inherited function:
the preparation for each step (set triggers to zero),
the preparation of the member variables (set surounding agents, dynamics),
the calculation of the trigger addition of the urgency for the current timestep (based on the relationships between the agent and the surrounding situation). Currently based on the addition of four factors:
Normalized value of the velocity difference based on the velocity-wish and a surrounding velocity depending on a MaximumDelayThreshold
Normalized value of the velocity to follow a vehicle to the possible maximum and minimum velocity in the next timestep
A value depending on the current time-to-collision to the leader
Normalized value of a velocity difference based on the velocity in the next timestep and the velocity wish of the vehicle
and the final calculation of the possible lane-change status (to save the final decision of each reason)
At the moment the following lane-change-reasons are implemented:
Reason |
Inherits from |
Description |
---|---|---|
LaneChangeReason |
General class with the main functional sequence and member variables |
|
OvertakeLeader |
LaneChangeReason |
Overtake a slower leader to gain speed in order to reach the desired velocity |
OvertakeRight |
LaneChangeReason |
Overtake on the right or, if it is not allowed, start the overtaking process on the left, while adapting the velocity |
GoRight |
LaneChangeReason |
Go to the right in order to follow the right-hand drive “rule”, check also if the ego blocks a following vehicle more, than it is blocked by a slower leader on the right |
GoRightFastFollower |
LaneChangeReason |
Used by the GoRight-Reason: clear the left lane for a faster following vehicle |
StayLeftSlowerRightLeader |
LaneChangeReason |
Used by the GoRight-Reason: stay on the left lane, because the right lane is blocked by a slower leader |
Cooperative |
LaneChangeReason |
General class with methods for calculations of decision weighting for cooperative lane-changes or velocity adaptions |
LCLeftEndingCurrLane |
Cooperative |
Lane change to the left because the current lane is ending. If the left lane is blocked, a velocity adaption is considered. |
CooperativeForOnramper |
Cooperative |
Lane change to the left, because the right lane is ending and there is a relevant vehicle on it. Also a velocity adaption is considered. |
LCRightEndingCurrLane |
Cooperative |
Lane change to the right, because the current lane is ending. If the right lane is blocked, a velocity adaption is considered. |
CooperativeForEndingLeft |
Cooperative |
Lane change to the right, because the left lane is ending and there is a relevant vehicle on it. Also a velocity adaption is considered. |
ChangeToFollowRoute |
Strategic |
Lane change to follow the route (only used if an intersection is oncoming and the SensorJunction is used. |
Each possible lane-change-reason is called and evaluated by the lane-change-model.