Package org.opentrafficsim.road.gtu.lane
Interface InternalLaneBasedGtu
-
- All Superinterfaces:
Drawable,EventProducerInterface,Gtu,Identifiable,InternalGtu,LaneBasedGtu,Locatable,Serializable
- All Known Implementing Classes:
AbstractLaneBasedGtu,AbstractLaneBasedGtu2,AbstractLaneBasedIndividualGtu,LaneBasedIndividualGtu
public interface InternalLaneBasedGtu extends LaneBasedGtu, InternalGtu
InternalLaneBasedGTU.java.Copyright (c) 2020-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
-
Field Summary
-
Fields inherited from interface org.djutils.event.EventProducerInterface
FIRST_POSITION, LAST_POSITION
-
Fields inherited from interface org.opentrafficsim.core.gtu.Gtu
DESTROY_EVENT, INIT_EVENT, MOVE_EVENT
-
Fields inherited from interface org.opentrafficsim.road.gtu.lane.LaneBasedGtu
LANE_CHANGE_EVENT, LANE_ENTER_EVENT, LANE_EXIT_EVENT, LANEBASED_DESTROY_EVENT, LANEBASED_INIT_EVENT, LANEBASED_MOVE_EVENT
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description voidaddTrigger(Lane lane, SimEventInterface<SimTimeDoubleUnit> event)Add an event to the list of lane triggers scheduled for this GTU.voidchangeLaneInstantaneously(LateralDirectionality laneChangeDirection)Change lanes instantaneously.doublefractionalPosition(Lane lane, RelativePosition relativePosition, Time when)Return the longitudinal position of a point relative to this GTU, relative to the center line of the Lane, as a fraction of the length of the lane.Map<Lane,Double>fractionalPositions(RelativePosition relativePosition, Time when)Return the longitudinal positions of a point relative to this GTU, relative to the center line of the Lanes in which the vehicle is registered, as fractions of the length of the lane.AccelerationgetCarFollowingAcceleration()This method returns the current car-following acceleration of the GTU.SpeedgetDesiredSpeed()This method returns the current desired speed of the GTU.LaneBasedStrategicalPlannergetStrategicalPlanner()LaneBasedStrategicalPlannergetStrategicalPlanner(Time time)default LaneBasedTacticalPlannergetTacticalPlanner()default LaneBasedTacticalPlannergetTacticalPlanner(Time time)TurnIndicatorStatusgetTurnIndicatorStatus(Time time)default VehicleModelgetVehicleModel()Returns the vehicle model.voidinitLaneChange(LateralDirectionality laneChangeDirection)Register on lanes in target lane.default booleanisBrakingLightsOn(Time when)The default implementation returnstrueif the deceleration is larger than a speed-dependent threshold given by:
c0 * g(v) + c1 + c3*v^2
where c0 = 0.2, c1 = 0.15 and c3 = 0.00025 (with c2 = 0 implicit) are empirically derived averages, and g(v) is 0 below 25 km/h or 1 otherwise, representing that the engine is disengaged at low speeds.booleanisInstantaneousLaneChange()Returns whether the GTU perform lane changes instantaneously or not.booleanlaneChangeAllowed()Returns whether a lane change is allowed.Lengthposition(Lane lane, RelativePosition relativePosition, Time when)Return the longitudinal position of a point relative to this GTU, relative to the center line of the Lane.Map<Lane,Length>positions(RelativePosition relativePosition, Time when)Return the longitudinal positions of a point relative to this GTU, relative to the center line of the Lanes in which the vehicle is registered.voidsetFinalizeLaneChangeEvent(SimEventInterface<SimTimeDoubleUnit> event)Sets event to finalize lane change.voidsetInstantaneousLaneChange(boolean instantaneous)Sets whether the GTU perform lane changes instantaneously or not.voidsetNoLaneChangeDistance(Length distance)Set distance over which the GTU should not change lane after being created.voidsetTurnIndicatorStatus(TurnIndicatorStatus turnIndicatorStatus)Set the status of the turn indicator.-
Methods inherited from interface org.djutils.event.EventProducerInterface
addListener, addListener, addListener, addListener, getEventTypesWithListeners, getSourceId, hasListeners, numberOfListeners, removeListener
-
Methods inherited from interface org.opentrafficsim.core.gtu.Gtu
addGtu, destroy, getAcceleration, getBounds, getCenter, getChildren, getContourPoints, getFront, getGTUType, getId, getLength, getMaximumAcceleration, getMaximumDeceleration, getMaximumSpeed, getParent, getPerceivableContext, getRear, getReference, getRelativePositions, getSimulator, getSpeed, getWidth, isDestroyed, removeGtu, setParent
-
Methods inherited from interface org.opentrafficsim.core.gtu.InternalGtu
getAcceleration, getOdometer, getOdometer, getOperationalPlan, getOperationalPlan, getParameters, getSpeed, setErrorHandler, setParameters
-
Methods inherited from interface org.opentrafficsim.road.gtu.lane.LaneBasedGtu
fractionalPosition, fractionalPositions, getDirection, getLateralPosition, getLocation, getNetwork, getProjectedLength, getReferencePosition, getTurnIndicatorStatus, isBrakingLightsOn, position, positions
-
-
-
-
Method Detail
-
getStrategicalPlanner
LaneBasedStrategicalPlanner getStrategicalPlanner()
- Specified by:
getStrategicalPlannerin interfaceInternalGtu
-
getStrategicalPlanner
LaneBasedStrategicalPlanner getStrategicalPlanner(Time time)
- Specified by:
getStrategicalPlannerin interfaceInternalGtu
-
getTacticalPlanner
default LaneBasedTacticalPlanner getTacticalPlanner()
- Specified by:
getTacticalPlannerin interfaceInternalGtu
-
getTacticalPlanner
default LaneBasedTacticalPlanner getTacticalPlanner(Time time)
- Specified by:
getTacticalPlannerin interfaceInternalGtu
-
changeLaneInstantaneously
void changeLaneInstantaneously(LateralDirectionality laneChangeDirection) throws GtuException
Change lanes instantaneously.- Parameters:
laneChangeDirection- LateralDirectionality; the direction to change to- Throws:
GtuException- in case lane change fails
-
initLaneChange
void initLaneChange(LateralDirectionality laneChangeDirection) throws GtuException
Register on lanes in target lane.- Parameters:
laneChangeDirection- LateralDirectionality; direction of lane change- Throws:
GtuException- exception
-
setFinalizeLaneChangeEvent
void setFinalizeLaneChangeEvent(SimEventInterface<SimTimeDoubleUnit> event)
Sets event to finalize lane change.- Parameters:
event- SimEventInterface<SimTimeDoubleUnit>; event
-
setInstantaneousLaneChange
void setInstantaneousLaneChange(boolean instantaneous)
Sets whether the GTU perform lane changes instantaneously or not.- Parameters:
instantaneous- boolean; whether the GTU perform lane changes instantaneously or not
-
isInstantaneousLaneChange
boolean isInstantaneousLaneChange()
Returns whether the GTU perform lane changes instantaneously or not.- Returns:
- boolean; whether the GTU perform lane changes instantaneously or not
-
positions
Map<Lane,Length> positions(RelativePosition relativePosition, Time when) throws GtuException
Return the longitudinal positions of a point relative to this GTU, relative to the center line of the Lanes in which the vehicle is registered.- Parameters:
relativePosition- RelativePosition; the position on the vehicle relative to the reference point.when- Time; the future time for which to calculate the positions.- Returns:
- the lanes and the position on the lanes where the GTU will be registered at the time, for the given position of the GTU.
- Throws:
GtuException- when the vehicle is not on one of the lanes on which it is registered.
-
position
Length position(Lane lane, RelativePosition relativePosition, Time when) throws GtuException
Return the longitudinal position of a point relative to this GTU, relative to the center line of the Lane.- Parameters:
lane- Lane; the position on this lane will be returned.relativePosition- RelativePosition; the position on the vehicle relative to the reference point.when- Time; the future time for which to calculate the positions.- Returns:
- DoubleScalarAbs<LengthUnit>; the position, relative to the center line of the Lane.
- Throws:
GtuException- when the vehicle is not on the given lane.
-
fractionalPositions
Map<Lane,Double> fractionalPositions(RelativePosition relativePosition, Time when) throws GtuException
Return the longitudinal positions of a point relative to this GTU, relative to the center line of the Lanes in which the vehicle is registered, as fractions of the length of the lane. This is important when we want to see if two vehicles are next to each other and we compare an 'inner' and 'outer' curve.- Parameters:
relativePosition- RelativePosition; the position on the vehicle relative to the reference point.when- Time; the future time for which to calculate the positions.- Returns:
- the lanes and the position on the lanes where the GTU will be registered at the time, for the given position of the GTU.
- Throws:
GtuException- when the vehicle is not on one of the lanes on which it is registered.
-
fractionalPosition
double fractionalPosition(Lane lane, RelativePosition relativePosition, Time when) throws GtuException
Return the longitudinal position of a point relative to this GTU, relative to the center line of the Lane, as a fraction of the length of the lane. This is important when we want to see if two vehicles are next to each other and we compare an 'inner' and 'outer' curve.- Parameters:
lane- Lane; the position on this lane will be returned.relativePosition- RelativePosition; the position on the vehicle relative to the reference point.when- Time; the future time for which to calculate the positions.- Returns:
- the fractional relative position on the lane at the given time.
- Throws:
GtuException- when the vehicle is not on the given lane.
-
addTrigger
void addTrigger(Lane lane, SimEventInterface<SimTimeDoubleUnit> event)
Add an event to the list of lane triggers scheduled for this GTU.- Parameters:
lane- Lane; the lane on which the event occursevent- SimEventInterface<SimTimeDoubleUnit>; SimeEvent<SimTimeDoubleUnit> the event
-
setNoLaneChangeDistance
void setNoLaneChangeDistance(Length distance)
Set distance over which the GTU should not change lane after being created.- Parameters:
distance- Length; distance over which the GTU should not change lane after being created
-
laneChangeAllowed
boolean laneChangeAllowed()
Returns whether a lane change is allowed.- Returns:
- whether a lane change is allowed
-
getDesiredSpeed
Speed getDesiredSpeed()
This method returns the current desired speed of the GTU. This value is required often, so implementations can cache it.- Returns:
- Speed; current desired speed
-
getCarFollowingAcceleration
Acceleration getCarFollowingAcceleration()
This method returns the current car-following acceleration of the GTU. This value is required often, so implementations can cache it.- Returns:
- Acceleration; current car-following acceleration
-
getVehicleModel
default VehicleModel getVehicleModel()
Returns the vehicle model.- Returns:
- VehicleModel; vehicle model
-
isBrakingLightsOn
default boolean isBrakingLightsOn(Time when)
The default implementation returnstrueif the deceleration is larger than a speed-dependent threshold given by:
c0 * g(v) + c1 + c3*v^2
where c0 = 0.2, c1 = 0.15 and c3 = 0.00025 (with c2 = 0 implicit) are empirically derived averages, and g(v) is 0 below 25 km/h or 1 otherwise, representing that the engine is disengaged at low speeds.- Parameters:
when- Time; time- Returns:
- boolean; whether the braking lights are on
-
getTurnIndicatorStatus
TurnIndicatorStatus getTurnIndicatorStatus(Time time)
- Parameters:
time- Time; time to obtain the turn indicator status at- Returns:
- the status of the turn indicator at the given time
-
setTurnIndicatorStatus
void setTurnIndicatorStatus(TurnIndicatorStatus turnIndicatorStatus) throws GtuException
Set the status of the turn indicator.- Parameters:
turnIndicatorStatus- TurnIndicatorStatus; the new status of the turn indicator.- Throws:
GtuException- when GTUType does not have a turn indicator
-
-