53 #define INVALID_SPEED 299792458 + 1 // nothing can go faster than the speed of light! Refs. #2577 192 void passTime(
SUMOTime dt,
bool waiting);
201 return myWaitingIntervals;
214 void appendWaitingTime(
SUMOTime dt);
975 const std::vector<MSTransportable*>&
getPersons()
const;
1111 const bool parking,
const bool triggered,
const bool containerTriggered, std::string& errorMsg);
1125 const bool triggered,
const bool containerTriggered,
const bool isContainerStop, std::string& errorMsg);
1142 std::vector<SUMOReal>& furtherLanesPosLat,
1143 const std::vector<MSLane*>& passedLanes);
1176 void setSpeedTimeLine(
const std::vector<std::pair<SUMOTime, SUMOReal> >& speedTimeLine);
1182 void setLaneTimeLine(
const std::vector<std::pair<SUMOTime, int> >& laneTimeLine);
1185 int getSpeedMode()
const;
1220 void setConsiderSafeVelocity(
bool value);
1226 void setConsiderMaxAcceleration(
bool value);
1232 void setConsiderMaxDeceleration(
bool value);
1238 void setRespectJunctionPriority(
bool value);
1245 return myRespectJunctionPriority;
1252 void setEmergencyBrakeRedLight(
bool value);
1259 return myEmergencyBrakeRedLight;
1266 void setLaneChangeMode(
int value);
1273 return myOriginalSpeed;
1279 return myLastVTDAccess;
1290 bool isVTDControlled()
const;
1292 bool isVTDAffected(
SUMOTime t)
const;
1510 myLink(link), myVLinkPass(vPass), myVLinkWait(vWait), mySetRequest(setRequest),
1511 myArrivalTime(arrivalTime), myArrivalSpeed(arrivalSpeed),
1512 myArrivalTimeBraking(arrivalTimeBraking), myArrivalSpeedBraking(arrivalSpeedBraking),
1513 myDistance(distance),
1514 accelV(leaveSpeed), hadVehicle(false), availableSpace(-1.) {
1522 myLink(0), myVLinkPass(vWait), myVLinkWait(vWait), mySetRequest(false),
1523 myArrivalTime(0), myArrivalSpeed(0),
1524 myArrivalTimeBraking(0), myArrivalSpeedBraking(0),
1525 myDistance(distance),
1526 accelV(-1), hadVehicle(false), availableSpace(-1.) {
1535 accelV =
MIN2(accelV, v);
1539 return accelV < 0 ? myVLinkPass : accelV;
1578 void adaptToLeader(
const std::pair<const MSVehicle*, SUMOReal> leaderInfo,
1581 SUMOReal distToCrossing = -1)
const;
void adaptToLeader(const std::pair< const MSVehicle *, SUMOReal > leaderInfo, const SUMOReal seen, DriveProcessItem *const lastLink, const MSLane *const lane, SUMOReal &v, SUMOReal &vLinkPass, SUMOReal distToCrossing=-1) const
int getRoutePosition() const
bool getRespectJunctionPriority() const
Returns whether junction priority rules shall be respected.
SUMOReal getCenterOnEdge(const MSLane *lane=0) const
Get the vehicle's lateral position on the edge of the given lane (or its current edge if lane == 0) ...
void setAngle(SUMOReal angle)
Set a custom vehicle angle in rad.
const MSLane * myLastBestLanesInternalLane
SUMOReal updateFurtherLanes(std::vector< MSLane *> &furtherLanes, std::vector< SUMOReal > &furtherLanesPosLat, const std::vector< MSLane *> &passedLanes)
update a vector of further lanes and return the new backPos
const MSVehicleType * myType
This Vehicle's type.
void replaceVehicleType(MSVehicleType *type)
Replaces the current vehicle type by the one given.
SUMOReal getHarmonoise_NoiseEmissions() const
Returns noise emissions of the current state.
bool enterLaneAtMove(MSLane *enteredLane, bool onTeleporting=false)
Update when the vehicle enters a new lane in the move step.
std::list< std::pair< SUMOTime, SUMOTime > > waitingIntervalList
Representation of a vehicle in the micro simulation.
void planMove(const SUMOTime t, const MSLeaderInfo &ahead, const SUMOReal lengthsInFront)
Compute safe velocities for the upcoming lanes based on positions and speeds from the last time step...
MSCFModel::VehicleVariables * getCarFollowVariables() const
Returns the vehicle's car following model variables.
bool isRemoteControlled() const
Returns the information whether the vehicle is fully controlled via TraCI.
SUMOTime timeToBoardNextPerson
The time at which the vehicle is able to board another person.
MSEdgeWeightsStorage * myEdgeWeights
PositionVector getBoundingPoly() const
get bounding polygon
static int nextLinkPriority(const std::vector< MSLane *> &conts)
get a numerical value for the priority of the upcoming link
SUMOTime getWaitingTime() const
Returns the SUMOTime waited (speed was lesser than 0.1m/s)
const MSEdge * myLastBestLanesEdge
LaneChangeMode
modes for resolving conflicts between external control (traci) and vehicle control over lane changing...
MSAbstractLaneChangeModel * myLaneChangeModel
bool myAmOnNet
Whether the vehicle is on the network (not parking, teleported, vaporized, or arrived) ...
LaneChangeMode myRightDriveLC
changing to the rightmost lane
std::vector< std::vector< LaneQ > > myBestLanes
std::vector< MSLane * > myFurtherLanes
The information into which lanes the vehicle laps into.
State myState
This Vehicles driving state (pos and speed)
void setTentativeLaneAndPosition(MSLane *lane, SUMOReal pos, SUMOReal posLat=0)
set tentative lane and position during insertion to ensure that all cfmodels work (some of them requi...
SUMOReal getSafeFollowSpeed(const std::pair< const MSVehicle *, SUMOReal > leaderInfo, const SUMOReal seen, const MSLane *const lane, SUMOReal distToCrossing) const
compute safe speed for following the given leader
A lane area vehicles can halt at.
DriveItemVector myLFLinkLanes
SUMOReal backPos() const
back Position of this state
void enterLaneAtInsertion(MSLane *enteredLane, SUMOReal pos, SUMOReal speed, SUMOReal posLat, MSMoveReminder::Notification notification)
Update when the vehicle enters a new lane in the emit step.
bool resumeFromStopping()
bool myAmRegisteredAsWaitingForPerson
Whether this vehicle is registered as waiting for a person (for deadlock-recognition) ...
MSLane * getLane() const
Returns the lane the vehicle is on.
Position getPosition(const SUMOReal offset=0) const
Return current position (x/y, cartesian)
int bestLaneOffset
The (signed) number of lanes to be crossed to get to the lane which allows to continue the drive...
void setBlinkerInformation()
void addContainer(MSTransportable *container)
Adds a container.
void checkRewindLinkLanes(const SUMOReal lengthsInFront, DriveItemVector &lfLinks) const
SUMOTime getMemorySize() const
SUMOReal myAcceleration
The current acceleration after dawdling in m/s.
int getPersonNumber() const
Returns the number of persons.
The front lights are on (no visualisation)
Signalling
Some boolean values which describe the state of some vehicle parts.
The base class for an intersection.
The car-following model abstraction.
bool myConsiderMaxAcceleration
Whether the maximum acceleration shall be regarded.
SUMOReal getLatOffset(const MSLane *lane) const
Get the offset that that must be added to interpret myState.myPosLat for the given lane...
void updateState(SUMOReal vNext)
updates the vehicles state, given a next value for its speed. This value can be negative in case of t...
int getBestLaneOffset() const
returns the current offset from the best lane
SUMOReal lastCoveredDist() const
previous Speed of this state
The high beam lights are on (no visualisation)
Notification
Definition of a vehicle state.
MSDevice_Transportable * myPersonDevice
The passengers this vehicle may have.
SUMOReal currentLength
The length which may be driven on this lane.
bool replaceRoute(const MSRoute *route, bool onInit=false, int offset=0)
Replaces the current route by the given one.
SUMOReal getNOxEmissions() const
Returns NOx emission of the current state.
Changes the wished vehicle speed / lanes.
bool isStoppedInRange(SUMOReal pos) const
return whether the given position is within range of the current stop
SUMOReal getLeaveSpeed() const
bool myRespectJunctionPriority
Whether the junction priority rules are respected.
bool reached
Information whether the stop has been reached.
State & operator=(const State &state)
Assignment operator.
SUMOReal getBackPositionOnLane() const
Get the vehicle's position relative to its current lane.
The backwards driving lights are on (no visualisation)
vehicle doesn't want to change
TraciLaneChangePriority
modes for prioritizing traci lane change requests
PositionVector getBoundingBox() const
get bounding rectangle
WaitingTimeCollector myWaitingTimeCollector
SUMOReal mySpeed
the stored speed (should be >=0 at any time)
Definition of vehicle stop (position and duration)
bool executeMove()
Executes planned vehicle movements with regards to right-of-way.
std::vector< const MSEdge * > ConstMSEdgeVector
SUMOTime myMemorySize
the maximal memory to store
int getSignals() const
Returns the signals.
SUMOReal getLength() const
Returns the length of this link.
DriveProcessItem(MSLink *link, SUMOReal vPass, SUMOReal vWait, bool setRequest, SUMOTime arrivalTime, SUMOReal arrivalSpeed, SUMOTime arrivalTimeBraking, SUMOReal arrivalSpeedBraking, SUMOReal distance, SUMOReal leaveSpeed=-1.)
The base class for microscopic and mesoscopic vehicles.
bool myHaveToWaitOnNextLink
SUMOReal processNextStop(SUMOReal currentVelocity)
Processes stops, returns the velocity needed to reach the stop.
A storage for edge travel times and efforts.
void planMoveInternal(const SUMOTime t, MSLeaderInfo ahead, DriveItemVector &lfLinks, SUMOReal &myStopDist) const
SUMOReal getCO2Emissions() const
Returns CO2 emission of the current state.
SUMOReal length
The overall length which may be driven when using this lane without a lane change.
bool hasArrived() const
Returns whether this vehicle has already arived (reached the arrivalPosition on its final edge) ...
void enterLaneAtLaneChange(MSLane *enteredLane)
Update when the vehicle enters a new lane in the laneChange step.
SUMOReal myStopDist
distance to the next stop or -1 if there is none
The car-following model and parameter.
bool triggered
whether an arriving person lets the vehicle continue
MSAbstractLaneChangeModel & getLaneChangeModel()
MSCFModel::VehicleVariables * myCFVariables
The per vehicle variables of the car following model.
Performs lane changing of vehicles.
SUMOReal getOriginalSpeed() const
Returns the originally longitudinal speed to use.
bool knowsEdgeTest(MSEdge &edge) const
bool isFrontOnLane(const MSLane *lane) const
Returns the information whether the front of the vehicle is on the given lane.
Right blinker lights are switched on.
SUMOReal getRightSideOnLane() const
Get the vehicle's lateral position on the lane:
MSChargingStation * chargingStation
(Optional) charging station if one is assigned to the stop
SUMOReal nextOccupation
As occupation, but without the first lane.
const ConstMSEdgeVector getStopEdges() const
Returns the list of still pending stop edges.
SUMOReal getSpeedWithoutTraciInfluence() const
Returns the uninfluenced velocity.
std::vector< std::pair< SUMOTime, int > > myLaneTimeLine
The lane usage time line to apply.
SUMOReal getSpaceTillLastStanding(const MSLane *l, bool &foundStopped) const
bool signalSet(int which) const
Returns whether the given signal is on.
bool getEmergencyBrakeRedLight() const
Returns whether red lights shall be a reason to brake.
bool operator!=(const State &state)
Operator !=.
static std::vector< MSTransportable * > myEmptyTransportableVector
Performs lane changing of vehicles.
A road/street connecting two junctions.
bool isOnRoad() const
Returns the information whether the vehicle is on a road (is simulated)
MSLane * lane
The described lane.
const MSCFModel & getCarFollowModel() const
Returns the vehicle's car following model definition.
SUMOReal getCOEmissions() const
Returns CO emission of the current state.
SUMOReal getFuelConsumption() const
Returns fuel consumption of the current state.
Left blinker lights are switched on.
DriveProcessItem(SUMOReal vWait, SUMOReal distance)
constructor if the link shall not be passed
const MSCFModel & getCarFollowModel() const
Returns the vehicle type's car following model definition (const version)
SUMOReal posLat() const
Lateral Position of this state (m relative to the centerline of the lane).
void workOnMoveReminders(SUMOReal oldPos, SUMOReal newPos, SUMOReal newSpeed)
Processes active move reminder.
vehicle want's to change to right lane
MSStoppingPlace * containerstop
(Optional) container stop if one is assigned to the stop
Stores the waiting intervals over the previous seconds (memory is to be specified in ms...
Encapsulated SAX-Attributes.
ChangeRequest
Requests set via TraCI.
SUMOReal getAccumulatedWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s) within the last millisecs...
A point in 2D or 3D with translation and scaling methods.
SUMOReal getWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s)
SUMOReal myAngle
the angle in radians (
void updateBestLanes(bool forceRebuild=false, const MSLane *startLane=0)
computes the best lanes to use in order to continue the route
SUMOTime timeToLoadNextContainer
The time at which the vehicle is able to load another container.
const std::vector< MSLane * > & getBestLanesContinuation() const
Returns the subpart of best lanes that describes the vehicle's current lane and their successors...
Position myCachedPosition
const MSLane * lane
The lane to stop at.
SUMOReal myOriginalSpeed
The velocity before influence.
std::vector< SUMOReal > myFurtherLanesPosLat
SUMOReal getPMxEmissions() const
Returns PMx emission of the current state.
bool addStop(const SUMOVehicleParameter::Stop &stopPar, std::string &errorMsg, SUMOTime untilOffset=0)
Adds a stop.
const std::vector< MSLane * > & getFurtherLanes() const
std::list< Stop > myStops
The vehicle's list of stops.
ConstMSEdgeVector::const_iterator MSRouteIterator
bool myConsiderMaxDeceleration
Whether the maximum deceleration shall be regarded.
void adaptLeaveSpeed(const SUMOReal v)
MSLane * myLane
The lane the vehicle is on.
bool myAmRegisteredAsWaitingForContainer
Whether this vehicle is registered as waiting for a container (for deadlock-recognition) ...
Blinker lights on both sides are switched on.
bool hasStops() const
Returns whether the vehicle has to stop somewhere.
Influencer * myInfluencer
An instance of a velocity/lane influencing instance; built in "getInfluencer".
void resetRoutePosition(int index)
std::vector< LaneQ >::iterator myCurrentLaneInBestLanes
SUMOTime duration
The stopping duration.
SUMOReal getPositionOnLane() const
Get the vehicle's position along the lane.
SUMOReal computeAngle() const
compute the current vehicle angle
SUMOReal myLastCoveredDist
SUMOReal getTimeGap() const
Returns the time gap in seconds to the leader of the vehicle looking for a fixed distance.
A blue emergency light is on.
A structure representing the best lanes for continuing the route.
void loadState(const SUMOSAXAttributes &attrs, const SUMOTime offset)
Loads the state of this vehicle from the given description.
Everything is switched off.
void onRemovalFromNet(const MSMoveReminder::Notification reason)
Called when the vehicle is removed from the network.
SUMOReal getMaxAccel() const
Get the vehicle type's maximum acceleration [m/s^2].
bool isStoppedTriggered() const
Returns whether the vehicle is on a triggered stop.
bool hasInfluencer() const
std::set< std::string > awaitedContainers
IDs of containers the vehicle has to wait for until departing.
Something on a lane to be noticed about vehicle movement.
void fixPosition()
repair errors in vehicle position after changing between internal edges
SUMOReal getSlope() const
Returns the slope of the road at vehicle's position.
SUMOReal speed() const
Speed of this state.
SUMOTime myWaitingTime
The time the vehicle waits (is not faster than 0.1m/s) in seconds.
One of the left doors is opened.
LaneChangeMode mySpeedGainLC
lane changing to travel with higher speed
SUMOReal getVehicleMaxSpeed(const SUMOVehicle *const veh) const
Returns the lane's maximum speed, given a vehicle's speed limit adaptation.
SUMOReal pos() const
Position of this state.
LaneChangeMode myCooperativeLC
lane changing with the intent to help other vehicles
State(SUMOReal pos, SUMOReal speed, SUMOReal posLat, SUMOReal backPos)
Constructor.
bool allowsContinuation
Whether this lane allows to continue the drive.
const waitingIntervalList & getWaitingIntervals() const
SUMOReal getLateralOverlap() const
return the amount by which the vehicle extends laterally outside it's primary lane ...
Container that holds the vehicles driving state (position+speed).
void saveState(OutputDevice &out)
Saves the states of a vehicle.
SUMOTime getAccumulatedWaitingTime(SUMOTime t=MSGlobals::gWaitingTimeMemory) const
Returns the SUMOTime waited (speed was lesser than 0.1m/s) within the last t millisecs.
bool myEmergencyBrakeRedLight
Whether red lights are a reason to brake.
ConstMSEdgeVector myVTDRoute
virtual void drawOutsideNetwork(bool)
register vehicle for drawing while outside the network
void leaveLane(const MSMoveReminder::Notification reason)
Update of members if vehicle leaves a new lane in the lane change step or at arrival.
Abstract in-vehicle device.
void updateOccupancyAndCurrentBestLane(const MSLane *startLane)
updates LaneQ::nextOccupation and myCurrentLaneInBestLanes
void setEmergencyBlueLight(SUMOTime currentTime)
sets the blue flashing light for emergency vehicles
SUMOReal estimateSpeedAfterDistance(const SUMOReal dist, const SUMOReal v, const SUMOReal accel) const
vehicle want's to change to left lane
SUMOReal getLateralPositionOnLane() const
Get the vehicle's lateral position on the lane.
Influencer & getInfluencer()
Returns the velocity/lane influencer.
Structure representing possible vehicle parameter.
SUMOReal getAngle() const
Returns the vehicle's direction in radians.
LaneChangeMode mySublaneLC
changing to the prefered lateral alignment
void adaptToLeaders(const MSLeaderInfo &ahead, SUMOReal latOffset, const SUMOReal seen, DriveProcessItem *const lastLink, const MSLane *const lane, SUMOReal &v, SUMOReal &vLinkPass) const
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
void removeApproachingInformation(DriveItemVector &lfLinks) const
unregister approach from all upcoming links
std::vector< std::pair< SUMOTime, SUMOReal > > mySpeedTimeLine
The velocity time line to apply.
bool containerTriggered
whether an arriving container lets the vehicle continue
void setVTDState(Position xyPos)
sets position outside the road network
SUMOReal occupation
The overall vehicle sum on consecutive lanes which can be passed without a lane change.
int mySignals
State of things of the vehicle that can be on or off.
std::vector< MSLane * > bestContinuations
Consecutive lane that can be followed without a lane change (contribute to length and occupation) ...
Definition of vehicle stop (position and duration)
SUMOReal myArrivalSpeedBraking
std::set< std::string > awaitedPersons
IDs of persons the vehicle has to wait for until departing.
SUMOReal myPreviousSpeed
the speed at the begin of the previous time step
SUMOReal getMaxSpeed() const
Get vehicle's maximum speed [m/s].
SUMOTime until
The time at which the vehicle may continue its journey.
const MSEdge * getRerouteOrigin() const
Returns the starting point for reroutes (usually the current edge)
friend class MSVehicle
vehicle sets states directly
MSRouteIterator edge
The edge in the route to stop at.
SUMOReal getPreviousSpeed() const
Returns the vehicle's speed before the previous time step.
MSLane * getViaLaneOrLane() const
return the via lane if it exists and the lane otherwise
bool addTraciBusOrContainerStop(const std::string &stopId, const SUMOTime duration, const SUMOTime until, const bool parking, const bool triggered, const bool containerTriggered, const bool isContainerStop, std::string &errorMsg)
int getContainerNumber() const
Returns the number of containers.
SUMOReal getRightSideOnEdge(const MSLane *lane=0) const
Get the vehicle's lateral position on the edge of the given lane (or its current edge if lane == 0) ...
SUMOTime cumulatedWaitingTime(SUMOTime memory=-1) const
SUMOReal myPos
the stored position
const MSLane * getBackLane() const
SUMOReal getDistanceToPosition(SUMOReal destPos, const MSEdge *destEdge) const
waitingIntervalList myWaitingIntervals
static SUMOTime gWaitingTimeMemory
length of memory for waiting times (in millisecs)
std::vector< DriveProcessItem > DriveItemVector
Container for used Links/visited Lanes during lookForward.
SUMOReal estimateLeaveSpeed(const MSLink *const link, const SUMOReal vLinkPass) const
estimate leaving speed when accelerating across a link
SUMOReal getHCEmissions() const
Returns HC emission of the current state.
const MSEdgeWeightsStorage & getWeightsStorage() const
Returns the vehicle's internal edge travel times/efforts container.
SUMOReal endPos
The stopping position end.
vehicle want's to keep the current lane
Static storage of an output device and its base (abstract) implementation.
SUMOReal myPosLat
the stored lateral position
void switchOffSignal(int signal)
Switches the given signal off.
static bool gSemiImplicitEulerUpdate
void switchOnSignal(int signal)
Switches the given signal on.
void addPerson(MSTransportable *person)
Adds a passenger.
static std::vector< MSLane * > myEmptyLaneVector
void adaptBestLanesOccupation(int laneIndex, SUMOReal density)
update occupation from MSLaneChanger
static bool overlap(const MSVehicle *veh1, const MSVehicle *veh2)
bool unsafeLinkAhead(const MSLane *lane) const
whether the vehicle may safely move to the given lane with regard to upcoming links ...
MSEdgeWeightsStorage & _getWeightsStorage() const
SUMOReal myBackPos
the stored back position
virtual ~MSVehicle()
Destructor.
const std::vector< MSTransportable * > & getPersons() const
retrieve riding persons
bool isStopped() const
Returns whether the vehicle is at a stop.
const std::vector< MSTransportable * > & getContainers() const
retrieve riding containers
bool willPass(const MSEdge *const edge) const
Returns whether the vehicle wil pass the given edge.
const Position getBackPosition() const
const std::vector< LaneQ > & getBestLanes() const
Returns the description of best lanes to use in order to continue the route.
bool isParking() const
Returns whether the vehicle is parking.
SUMOReal getElectricityConsumption() const
Returns electricity consumption of the current state.
SUMOReal getAcceleration() const
Returns the vehicle's acceleration in m/s (this is computed as the last step's mean acceleration in c...
std::pair< const MSVehicle *const, SUMOReal > getLeader(SUMOReal dist=0) const
Returns the leader of the vehicle looking for a fixed distance.
bool mySpeedAdaptationStarted
Whether influencing the speed has already started.
SUMOReal nextStopDist() const
return the distance to the next stop or SUMORealMax if there is none.
int influenceChangeDecision(int state)
allow TraCI to influence a lane change decision
SUMOReal getLastStepDist() const
Get the distance the vehicle covered in the previous timestep.
void activateReminders(const MSMoveReminder::Notification reason)
"Activates" all current move reminder
SUMOTime getLastAccessTimeStep() const
bool addTraciStop(MSLane *const lane, const SUMOReal startPos, const SUMOReal endPos, const SUMOTime duration, const SUMOTime until, const bool parking, const bool triggered, const bool containerTriggered, std::string &errorMsg)
SUMOReal startPos
The stopping position start.
A red emergency light is on.
MSStoppingPlace * busstop
(Optional) bus stop if one is assigned to the stop
Representation of a lane in the micro simulation.
void adaptLaneEntering2MoveReminder(const MSLane &enteredLane)
Adapts the vehicle's entering of a new lane.
SUMOReal getSpeed() const
Returns the vehicle's current speed.
SUMOReal getMaxSpeedOnLane() const
Returns the maximal speed for the vehicle on its current lane (including speed factor and deviation...
SUMOTime myArrivalTimeBraking
const std::vector< SUMOReal > & getFurtherLanesPosLat() const
One of the right doors is opened.
Interface for lane-change models.
bool myConsiderSafeVelocity
Whether the safe velocity shall be regarded.
MSDevice_Transportable * myContainerDevice
The containers this vehicle may have.
The fog lights are on (no visualisation)
SUMOReal getLengthWithGap() const
Get vehicle's length including the minimum gap [m].
bool parking
whether the vehicle is removed from the net while stopping
A yellow emergency light is on.
SUMOReal getDeltaPos(SUMOReal accel)
calculates the distance covered in the next integration step given an acceleration and assuming the c...