Closed WJSchakel closed 4 months ago
The 'no traffic lane' concept has been removed. It is no longer a valid cross section element in XML. The Shoulder
class is removed. Instead, the static Lane.noTrafficLane()
has been renamed to Lane.shoulder()
, and uses a fixed lane type for recognition. In this way, shoulders are lanes that can contain GTUs. They have no further information, and the speed limit is taken from an adjacent lane.
GTUs will now extend on the shoulder if a lane change has not been made in time. However, from that point other GTUs will no longer cooperate as they are not aware of the GTU on the shoulder. This is due to an issue with the LaneStructure
in perception that will not see shoulders laterally. This is because otherwise upstream of the merge, potentially cooperating vehicles will see the shoulder as their right hand lane, disabling all cooperation upstream of the merge. This is a structural issue in the LaneStructure
that will need to be solved by improving the perception structure.
The 'Lane.SHOULDER' LaneType
has been removed. Instead there is now a class Shoulder
that extends Lane
with only minor changes. Now instanceof
is used rather than checking the lane type. This is done because lane types should be fully customizable. So for example the conflict builder should not check lane type to consider what lanes to include for conflicts. Instead, it now skips lanes that are an instance of Shoulder
.
The conflict builder did not have a check at all, which causes errors in simulations with conflicts and shoulders on the conflicts located on the shoulders as they lacked certain information. Conflicts are no longer generated on shoulders.
In the original LMRS model and simulation, when vehicles were not able to change lane in time, they were deleted. In order to preserve conservation of vehicles in OTS, deceleration towards a dead-end was implemented as part of the synchronization routine. This seems a minor adjustment, however, the deceleration towards a dead-end disturbs the synchronization and cooperation procedure precisely where it is most critical to operate. To show this, trajectories in the short merge demo were produced. With deceleration for a dead-end, the following trajectories result:
If we disable the deceleration for a dead-end, and instead force an instantaneous lane change whenever a vehicle reaches the end of the merge, these trajectories result:
The total number of vehicles with a forced instantaneous lane change is 16 in the 1 hour simulation. As can be seen, the disturbances are much more severe with dead-end deceleration. This means that capacities will be significantly reduced relative to the original and calibrated LMRS. Therefore, a different approach is required. Forcing lane changes is a way to deal with this. Additionally, it would make sense to explicitly allow vehicles to extend over the shoulder lane.
Note that in both simulations the synchronization occurs slightly more intelligent than the original model. The maximum acceleration is applied regarding to two situations: