Package org.opentrafficsim.core.gtu
Class AbstractGTU
java.lang.Object
nl.tudelft.simulation.event.EventProducer
org.opentrafficsim.core.gtu.AbstractGTU
- All Implemented Interfaces:
java.io.Serializable
,Locatable
,EventProducerInterface
,Identifiable
,Drawable
,GTU
- Direct Known Subclasses:
AbstractLinkBasedGTU
public abstract class AbstractGTU extends EventProducer implements GTU
Implements the basic functionalities of any GTU: the ability to move on 3D-space according to a plan.
Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Version:
- $Revision: 5717 $, $LastChangedDate: 2019-11-14 14:36:06 +0100 (Thu, 14 Nov 2019) $, by $Author: averbraeck $,
initial version Oct 22, 2014
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description static int
ALIGN_COUNT
aligned schedule count.static boolean
ALIGNED
aligned or not.protected Historical<OperationalPlan>
operationalPlan
The current operational plan, which provides a short-term movement over time.Fields inherited from interface nl.tudelft.simulation.event.EventProducerInterface
FIRST_POSITION, LAST_POSITION
Fields inherited from interface org.opentrafficsim.core.gtu.GTU
DESTROY_EVENT, INIT_EVENT, MOVE_EVENT
-
Constructor Summary
Constructors Constructor Description AbstractGTU(java.lang.String id, GTUType gtuType, OTSSimulatorInterface simulator, PerceivableContext perceivableContext)
AbstractGTU(IdGenerator idGenerator, GTUType gtuType, OTSSimulatorInterface simulator, PerceivableContext perceivableContext)
-
Method Summary
Modifier and Type Method Description void
addGtu(GTU gtu)
Adds the provided GTU to this GTU, meaning it moves with this GTU.void
destroy()
Destructor.boolean
equals(java.lang.Object obj)
Acceleration
getAcceleration()
Acceleration
getAcceleration(Time time)
java.util.Set<GTU>
getChildren()
Returns the children GTU's.protected GTUErrorHandler
getErrorHandler()
GTUType
getGTUType()
java.lang.String
getId()
DirectedPoint
getLocation()
Acceleration
getMaximumAcceleration()
Acceleration
getMaximumDeceleration()
SimEvent<SimTimeDoubleUnit>
getNextMoveEvent()
Note that destroying the next move event of the GTU can be dangerous!Length
getOdometer()
Length
getOdometer(Time time)
OperationalPlan
getOperationalPlan()
OperationalPlan
getOperationalPlan(Time time)
Parameters
getParameters()
GTU
getParent()
Returns the parent GTU, ornull
if this GTU has no parent.PerceivableContext
getPerceivableContext()
RelativePosition
getReference()
OTSSimulatorInterface
getSimulator()
Speed
getSpeed()
Speed
getSpeed(Time time)
StrategicalPlanner
getStrategicalPlanner()
StrategicalPlanner
getStrategicalPlanner(Time time)
int
hashCode()
void
init(StrategicalPlanner strategicalPlanner, DirectedPoint initialLocation, Speed initialSpeed)
Initialize the GTU at a location and speed, and give it a mission to fulfill through the strategical planner.protected void
interruptMove()
Interrupt the move and ask for a new plan.boolean
isDestroyed()
Returns whether the GTU is destroyed.protected boolean
move(DirectedPoint fromLocation)
Move from the current location according to an operational plan to a location that will bring us nearer to reaching the location provided by the strategical planner.void
removeGtu(GTU gtu)
Removes the provided GTU from this GTU, meaning it no longer moves with this GTU.void
setErrorHandler(GTUErrorHandler errorHandler)
Sets the error handler.void
setMaximumAcceleration(Acceleration maximumAcceleration)
void
setMaximumDeceleration(Acceleration maximumDeceleration)
void
setParameters(Parameters parameters)
void
setParent(GTU gtu)
Set the parent GTU.Methods inherited from class nl.tudelft.simulation.event.EventProducer
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, removeAllListeners, removeAllListeners, removeListener
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface nl.tudelft.simulation.event.EventProducerInterface
addListener, addListener, addListener, addListener, removeListener
Methods inherited from interface org.opentrafficsim.core.gtu.GTU
getCenter, getContourPoints, getFront, getLength, getMaximumSpeed, getRear, getRelativePositions, getTacticalPlanner, getTacticalPlanner, getWidth
-
Field Details
-
operationalPlan
The current operational plan, which provides a short-term movement over time. -
ALIGNED
public static boolean ALIGNEDaligned or not. -
ALIGN_COUNT
public static int ALIGN_COUNTaligned schedule count.
-
-
Constructor Details
-
AbstractGTU
public AbstractGTU(java.lang.String id, GTUType gtuType, OTSSimulatorInterface simulator, PerceivableContext perceivableContext) throws GTUException- Parameters:
id
- String; the id of the GTUgtuType
- GTUType; the type of GTU, e.g. TruckType, CarType, BusTypesimulator
- OTSSimulatorInterface; the simulator to schedule plan changes onperceivableContext
- PerceivableContext; the perceivable context in which this GTU will be registered- Throws:
GTUException
- when the preconditions of the constructor are not met
-
AbstractGTU
public AbstractGTU(IdGenerator idGenerator, GTUType gtuType, OTSSimulatorInterface simulator, PerceivableContext perceivableContext) throws GTUException- Parameters:
idGenerator
- IdGenerator; the generator that will produce a unique id of the GTUgtuType
- GTUType; the type of GTU, e.g. TruckType, CarType, BusTypesimulator
- OTSSimulatorInterface; the simulator to schedule plan changes onperceivableContext
- PerceivableContext; the perceivable context in which this GTU will be registered- Throws:
GTUException
- when the preconditions of the constructor are not met
-
-
Method Details
-
init
public void init(StrategicalPlanner strategicalPlanner, DirectedPoint initialLocation, Speed initialSpeed) throws SimRuntimeException, GTUExceptionInitialize the GTU at a location and speed, and give it a mission to fulfill through the strategical planner.- Parameters:
strategicalPlanner
- StrategicalPlanner; the strategical planner responsible for the overall 'mission' of the GTU, usually indicating where it needs to go. It operates by instantiating tactical planners to do the work.initialLocation
- DirectedPoint; the initial location (and direction) of the GTUinitialSpeed
- Speed; the initial speed of the GTU- Throws:
SimRuntimeException
- when scheduling after the first move failsGTUException
- when the preconditions of the parameters are not met or when the construction of the original waiting path fails
-
destroy
public void destroy()Destructor. Don't forget to call with super.destroy() from any override to avoid memory leaks in the network. -
move
protected boolean move(DirectedPoint fromLocation) throws SimRuntimeException, OperationalPlanException, GTUException, NetworkException, ParameterExceptionMove from the current location according to an operational plan to a location that will bring us nearer to reaching the location provided by the strategical planner.
This method can be overridden to carry out specific behavior during the execution of the plan (e.g., scheduling of triggers, entering or leaving lanes, etc.). Please bear in mind that the call to super.move() is essential, and that one has to take care to handle the situation that the plan gets interrupted.- Parameters:
fromLocation
- DirectedPoint; the last known location (initial location, or end location of the previous operational plan)- Returns:
- boolean; whether an exception occurred
- Throws:
SimRuntimeException
- when scheduling of the next move failsOperationalPlanException
- when there is a problem creating a good path for the GTUGTUException
- when there is a problem with the state of the GTU when planning a pathNetworkException
- in case of a problem with the network, e.g., a dead end where it is not expectedParameterException
- in there is a parameter problem
-
interruptMove
protected void interruptMove() throws SimRuntimeException, OperationalPlanException, GTUException, NetworkException, ParameterExceptionInterrupt the move and ask for a new plan. This method can be overridden to carry out the bookkeeping needed when the current plan gets interrupted.- Throws:
OperationalPlanException
- when there was a problem retrieving the location from the running planSimRuntimeException
- when scheduling of the next move failsOperationalPlanException
- when there is a problem creating a good path for the GTUGTUException
- when there is a problem with the state of the GTU when planning a pathNetworkException
- in case of a problem with the network, e.g., unreachability of a certain pointParameterException
- when there is a problem with a parameter
-
getId
public final java.lang.String getId()- Specified by:
getId
in interfaceGTU
- Specified by:
getId
in interfaceIdentifiable
- Returns:
- the id of the GTU
-
getGTUType
- Specified by:
getGTUType
in interfaceGTU
- Returns:
- the type of GTU, e.g. TruckType, CarType, BusType.
-
getReference
- Specified by:
getReference
in interfaceGTU
- Returns:
- the reference position of the GTU, by definition (0, 0, 0).
-
getSimulator
- Specified by:
getSimulator
in interfaceGTU
- Returns:
- the simulator of the GTU.
-
getParameters
- Specified by:
getParameters
in interfaceGTU
- Returns:
- Parameters.
-
setParameters
- Specified by:
setParameters
in interfaceGTU
- Parameters:
parameters
- Parameters; parameters
-
getStrategicalPlanner
- Specified by:
getStrategicalPlanner
in interfaceGTU
- Returns:
- StrategicalPlanner; the planner responsible for the overall 'mission' of the GTU, usually indicating where it needs to go. It operates by instantiating tactical planners to do the work.
-
getStrategicalPlanner
- Specified by:
getStrategicalPlanner
in interfaceGTU
- Parameters:
time
- Time; time to obtain the strategical planner at- Returns:
- StrategicalPlanner; the planner responsible for the overall 'mission' of the GTU, usually indicating where it needs to go. It operates by instantiating tactical planners to do the work.
-
getOperationalPlan
- Specified by:
getOperationalPlan
in interfaceGTU
- Returns:
- the current operational plan for the GTU
-
getOperationalPlan
- Specified by:
getOperationalPlan
in interfaceGTU
- Parameters:
time
- Time; time to obtain the operational plan at- Returns:
- the operational plan for the GTU at the given time.
-
getOdometer
- Specified by:
getOdometer
in interfaceGTU
- Returns:
- Length; the current odometer value.
-
getOdometer
- Specified by:
getOdometer
in interfaceGTU
- Parameters:
time
- Time; time to obtain the odometer at- Returns:
- Length; the odometer value at given time.
-
getSpeed
-
getSpeed
-
getAcceleration
- Specified by:
getAcceleration
in interfaceGTU
- Returns:
- the current acceleration of the GTU, along the direction of movement.
-
getAcceleration
- Specified by:
getAcceleration
in interfaceGTU
- Parameters:
time
- Time; time at which to obtain the acceleration- Returns:
- the current acceleration of the GTU, along the direction of movement.
-
getMaximumAcceleration
- Specified by:
getMaximumAcceleration
in interfaceGTU
- Returns:
- maximumAcceleration
-
setMaximumAcceleration
- Parameters:
maximumAcceleration
- Acceleration; set maximumAcceleration
-
getMaximumDeceleration
- Specified by:
getMaximumDeceleration
in interfaceGTU
- Returns:
- maximumDeceleration
-
setMaximumDeceleration
- Parameters:
maximumDeceleration
- Acceleration; set maximumDeceleration, stored as a negative number
-
getLocation
- Specified by:
getLocation
in interfaceLocatable
-
isDestroyed
public final boolean isDestroyed()Returns whether the GTU is destroyed.- Specified by:
isDestroyed
in interfaceGTU
- Returns:
- whether the GTU is destroyed
-
getPerceivableContext
- Specified by:
getPerceivableContext
in interfaceGTU
- Returns:
- the context to which the GTU belongs
-
addGtu
Adds the provided GTU to this GTU, meaning it moves with this GTU.- Specified by:
addGtu
in interfaceGTU
- Parameters:
gtu
- GTU; gtu to enter this GTU- Throws:
GTUException
- if the gtu already has a parent
-
removeGtu
Removes the provided GTU from this GTU, meaning it no longer moves with this GTU. -
setParent
Set the parent GTU.- Specified by:
setParent
in interfaceGTU
- Parameters:
gtu
- GTU; parent GTU, may benull
- Throws:
GTUException
- if the gtu already has a parent
-
getParent
Returns the parent GTU, ornull
if this GTU has no parent. -
getChildren
Returns the children GTU's.- Specified by:
getChildren
in interfaceGTU
- Returns:
- Set<GTU>; children GTU's
-
getErrorHandler
- Returns:
- errorHandler.
-
setErrorHandler
Sets the error handler.- Specified by:
setErrorHandler
in interfaceGTU
- Parameters:
errorHandler
- GTUErrorHandler; error handler
-
getNextMoveEvent
Note that destroying the next move event of the GTU can be dangerous!- Returns:
- nextMoveEvent the next move event of the GTU, e.g. to cancel it from outside.
-
hashCode
public int hashCode()- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)- Overrides:
equals
in classjava.lang.Object
-