Interface Synchronization
-
- All Superinterfaces:
LmrsParameters
public interface Synchronization extends LmrsParameters
Different forms of synchronization.Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.- Version:
- $Revision$, $LastChangedDate$, by $Author$, initial version 3 apr. 2017
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
-
Field Summary
Fields Modifier and Type Field Description static Synchronization
ACTIVE
Synchronization where a suitable leader is actively targeted, in relation to infrastructure.static Synchronization
ALIGN_GAP
Synchronization by following the adjacent leader or aligning with the middle of the gap, whichever allows the largest acceleration.static Synchronization
DEADEND
Synchronization that only includes stopping for a dead-end.static Synchronization
PASSIVE
Synchronization where current leaders are taken.static Synchronization
PASSIVE_MOVING
Synchronization where current leaders are taken.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description static boolean
canBeAhead(HeadwayGTU adjacentVehicle, Length xCur, int nCur, Speed ownSpeed, Length ownLength, Speed tagSpeed, double dCoop, Acceleration b, Duration tMin, Duration tMax, Length x0, Duration t0, Duration lc, double desire)
Returns whether a driver estimates it can be ahead of an adjacent vehicle for merging.static Acceleration
gentleUrgency(Acceleration a, double desire, Parameters params)
Return limited deceleration.static HeadwayGTU
getFollower(HeadwayGTU gtu, PerceptionCollectable<HeadwayGTU,LaneBasedGTU> leaders, HeadwayGTU follower, Length ownLength)
Returns the upstream gtu of the given gtu.static Length
getMergeDistance(LanePerception perception, LateralDirectionality lat)
Returns the distance to the next merge, stopping within this distance is futile for a lane change.static HeadwayGTU
getTargetLeader(HeadwayGTU gtu, SortedSet<HeadwayGTU> leaders)
Returns the leader of one gtu from a set.static Length
headwayWithLcSpace(Headway headway, Parameters parameters, LaneChange laneChange)
Returns a headway (length) to allow space to perform a lane change at low speeds.static PerceptionCollectable<HeadwayGTU,LaneBasedGTU>
removeAllUpstreamOfConflicts(PerceptionCollectable<HeadwayGTU,LaneBasedGTU> set, LanePerception perception, RelativeLane relativeLane)
Removes all GTUs from the set, that are found upstream on the conflicting lane of a conflict in the current lane.static Length
requiredBufferSpace(Speed speed, int nCur, Length x0, Duration t0, Duration lc, double dCoop)
Returns the required buffer space to perform a lane change and further lane changes.static Acceleration
stopForEnd(Length xCur, Length xMerge, Parameters params, Speed ownSpeed, CarFollowingModel cfm, SpeedLimitInfo sli)
Calculates acceleration to stop for a split or dead-end, accounting for infrastructure.Acceleration
synchronize(LanePerception perception, Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm, double desire, LateralDirectionality lat, LmrsData lmrsData, LaneChange laneChange, LateralDirectionality initiatedLaneChange)
Determine acceleration for synchronization.static Acceleration
tagAlongAcceleration(HeadwayGTU leader, Speed followerSpeed, Length followerLength, Speed tagSpeed, double desire, Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm)
Calculates acceleration by following an adjacent vehicle, with tagging along if desire is not very high and speed is low.
-
-
-
Field Detail
-
DEADEND
static final Synchronization DEADEND
Synchronization that only includes stopping for a dead-end.
-
PASSIVE
static final Synchronization PASSIVE
Synchronization where current leaders are taken.
-
ALIGN_GAP
static final Synchronization ALIGN_GAP
Synchronization by following the adjacent leader or aligning with the middle of the gap, whichever allows the largest acceleration. Note that aligning with the middle of the gap then means the gap is too small, as following would cause lower acceleration. Aligning with the middle of the gap will however provide a better starting point for the rest of the process. Mainly, the adjacent follower can decelerate less, allowing more smooth merging.
-
PASSIVE_MOVING
static final Synchronization PASSIVE_MOVING
Synchronization where current leaders are taken. Synchronization is disabled for d_sync<d<d_coop at low speeds.
-
ACTIVE
static final Synchronization ACTIVE
Synchronization where a suitable leader is actively targeted, in relation to infrastructure.
-
-
Method Detail
-
getMergeDistance
static Length getMergeDistance(LanePerception perception, LateralDirectionality lat) throws OperationalPlanException
Returns the distance to the next merge, stopping within this distance is futile for a lane change.- Parameters:
perception
- LanePerception; perceptionlat
- LateralDirectionality; lateral direction- Returns:
- Length; distance to the next merge
- Throws:
OperationalPlanException
- if there is no infrastructure perception
-
synchronize
Acceleration synchronize(LanePerception perception, Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm, double desire, LateralDirectionality lat, LmrsData lmrsData, LaneChange laneChange, LateralDirectionality initiatedLaneChange) throws ParameterException, OperationalPlanException
Determine acceleration for synchronization.- Parameters:
perception
- LanePerception; perceptionparams
- Parameters; parameterssli
- SpeedLimitInfo; speed limit infocfm
- CarFollowingModel; car-following modeldesire
- double; level of lane change desirelat
- LateralDirectionality; lateral direction for synchronizationlmrsData
- LmrsData; LMRS datalaneChange
- LaneChange; lane changeinitiatedLaneChange
- LateralDirectionality; lateral direction of initiated lane change- Returns:
- acceleration for synchronization
- Throws:
ParameterException
- if a parameter is not definedOperationalPlanException
- perception exception
-
headwayWithLcSpace
static Length headwayWithLcSpace(Headway headway, Parameters parameters, LaneChange laneChange) throws ParameterException
Returns a headway (length) to allow space to perform a lane change at low speeds.- Parameters:
headway
- Headway; headwayparameters
- Parameters; parameterslaneChange
- LaneChange; lane change- Returns:
- Length; distance to allow space to perform a lane change at low speeds
- Throws:
ParameterException
- if parameter VCONG is not available
-
removeAllUpstreamOfConflicts
static PerceptionCollectable<HeadwayGTU,LaneBasedGTU> removeAllUpstreamOfConflicts(PerceptionCollectable<HeadwayGTU,LaneBasedGTU> set, LanePerception perception, RelativeLane relativeLane) throws OperationalPlanException
Removes all GTUs from the set, that are found upstream on the conflicting lane of a conflict in the current lane.- Parameters:
set
- PerceptionCollectable<HeadwayGTU,LaneBasedGTU>; set of GTUsperception
- LanePerception; perceptionrelativeLane
- RelativeLane; relative lane- Returns:
- the input set, for chained use
- Throws:
OperationalPlanException
- if theIntersectionPerception
category is not present
-
gentleUrgency
static Acceleration gentleUrgency(Acceleration a, double desire, Parameters params) throws ParameterException
Return limited deceleration. Deceleration is limited tob
ford < dCoop
. BeyonddCoop
the limit is a linear interpolation betweenb
andbCrit
.- Parameters:
a
- Acceleration; acceleration to limitdesire
- double; lane change desireparams
- Parameters; parameters- Returns:
- limited deceleration
- Throws:
ParameterException
- when parameter is no available or value out of range
-
getFollower
static HeadwayGTU getFollower(HeadwayGTU gtu, PerceptionCollectable<HeadwayGTU,LaneBasedGTU> leaders, HeadwayGTU follower, Length ownLength)
Returns the upstream gtu of the given gtu.- Parameters:
gtu
- HeadwayGTU; gtuleaders
- PerceptionCollectable<HeadwayGTU,LaneBasedGTU>; leaders of own vehiclefollower
- HeadwayGTU; following vehicle of own vehicleownLength
- Length; own vehicle length- Returns:
- upstream gtu of the given gtu
-
tagAlongAcceleration
static Acceleration tagAlongAcceleration(HeadwayGTU leader, Speed followerSpeed, Length followerLength, Speed tagSpeed, double desire, Parameters params, SpeedLimitInfo sli, CarFollowingModel cfm) throws ParameterException
Calculates acceleration by following an adjacent vehicle, with tagging along if desire is not very high and speed is low.- Parameters:
leader
- HeadwayGTU; leaderfollowerSpeed
- Speed; follower speedfollowerLength
- Length; follower lengthtagSpeed
- Speed; maximum tag along speeddesire
- double; lane change desireparams
- Parameters; parameterssli
- SpeedLimitInfo; speed limit infocfm
- CarFollowingModel; car-following model- Returns:
- acceleration by following an adjacent vehicle including tagging along
- Throws:
ParameterException
- if a parameter is not present
-
canBeAhead
static boolean canBeAhead(HeadwayGTU adjacentVehicle, Length xCur, int nCur, Speed ownSpeed, Length ownLength, Speed tagSpeed, double dCoop, Acceleration b, Duration tMin, Duration tMax, Length x0, Duration t0, Duration lc, double desire) throws ParameterException
Returns whether a driver estimates it can be ahead of an adjacent vehicle for merging.- Parameters:
adjacentVehicle
- HeadwayGTU; adjacent vehiclexCur
- Length; remaining distancenCur
- int; number of lane changes to performownSpeed
- Speed; own speedownLength
- Length; own lengthtagSpeed
- Speed; maximum tag along speeddCoop
- double; cooperation thresholdb
- Acceleration; critical decelerationtMin
- Duration; minimum headwaytMax
- Duration; normal headwayx0
- Length; anticipation distancet0
- Duration; anticipation timelc
- Duration; lane change durationdesire
- double; lane change desire- Returns:
- whether a driver estimates it can be ahead of an adjacent vehicle for merging
- Throws:
ParameterException
- if parameter is not defined
-
requiredBufferSpace
static Length requiredBufferSpace(Speed speed, int nCur, Length x0, Duration t0, Duration lc, double dCoop)
Returns the required buffer space to perform a lane change and further lane changes.- Parameters:
speed
- Speed; representative speednCur
- int; number of required lane changesx0
- Length; anticipation distancet0
- Duration; anticipation timelc
- Duration; lane change durationdCoop
- double; cooperation threshold- Returns:
- required buffer space to perform a lane change and further lane changes
-
stopForEnd
static Acceleration stopForEnd(Length xCur, Length xMerge, Parameters params, Speed ownSpeed, CarFollowingModel cfm, SpeedLimitInfo sli) throws ParameterException
Calculates acceleration to stop for a split or dead-end, accounting for infrastructure.- Parameters:
xCur
- Length; remaining distance to endxMerge
- Length; distance until merge pointparams
- Parameters; parametersownSpeed
- Speed; own speedcfm
- CarFollowingModel; car-following modelsli
- SpeedLimitInfo; speed limit info- Returns:
- acceleration to stop for a split or dead-end, accounting for infrastructure
- Throws:
ParameterException
- if parameter is not defined
-
getTargetLeader
static HeadwayGTU getTargetLeader(HeadwayGTU gtu, SortedSet<HeadwayGTU> leaders)
Returns the leader of one gtu from a set.- Parameters:
gtu
- HeadwayGTU; gtuleaders
- SortedSet<HeadwayGTU>; leaders- Returns:
- leader of one gtu from a set
-
-