SUMO - Simulation of Urban MObility
MSVehicle::Influencer Class Reference

Changes the wished vehicle speed / lanes. More...

#include <MSVehicle.h>

Collaboration diagram for MSVehicle::Influencer:
Collaboration graph

Public Member Functions

SUMOReal changeRequestRemainingSeconds (const SUMOTime currentTime) const
 Return the remaining number of seconds of the current laneTimeLine assuming one exists. More...
 
bool getEmergencyBrakeRedLight () const
 Returns whether red lights shall be a reason to brake. More...
 
SUMOTime getLastAccessTimeStep () const
 
SUMOReal getOriginalSpeed () const
 Returns the originally longitudinal speed to use. More...
 
bool getRespectJunctionPriority () const
 Returns whether junction priority rules shall be respected. More...
 
SUMOReal implicitDeltaPosVTD (const MSVehicle *veh)
 return the change in longitudinal position that is implicit in the new VTD position More...
 
SUMOReal implicitSpeedVTD (const MSVehicle *veh, SUMOReal oldSpeed)
 return the speed that is implicit in the new VTD position More...
 
int influenceChangeDecision (const SUMOTime currentTime, const MSEdge &currentEdge, const unsigned int currentLaneIndex, int state)
 Applies stored LaneChangeMode information and laneTimeLine. More...
 
 Influencer ()
 Constructor. More...
 
SUMOReal influenceSpeed (SUMOTime currentTime, SUMOReal speed, SUMOReal vSafe, SUMOReal vMin, SUMOReal vMax)
 Applies stored velocity information on the speed to use. More...
 
bool isVTDAffected (SUMOTime t) const
 
bool isVTDControlled () const
 
void postProcessVTD (MSVehicle *v)
 
void setConsiderMaxAcceleration (bool value)
 Sets whether the maximum acceleration shall be regarded. More...
 
void setConsiderMaxDeceleration (bool value)
 Sets whether the maximum deceleration shall be regarded. More...
 
void setConsiderSafeVelocity (bool value)
 Sets whether the safe velocity shall be regarded. More...
 
void setEmergencyBrakeRedLight (bool value)
 Sets whether red lights shall be a reason to brake. More...
 
void setLaneChangeMode (int value)
 Sets lane changing behavior. More...
 
void setLaneTimeLine (const std::vector< std::pair< SUMOTime, unsigned int > > &laneTimeLine)
 Sets a new lane timeline. More...
 
void setRespectJunctionPriority (bool value)
 Sets whether junction priority rules shall be respected. More...
 
void setSpeedTimeLine (const std::vector< std::pair< SUMOTime, SUMOReal > > &speedTimeLine)
 Sets a new velocity timeline. More...
 
void setVTDControlled (bool c, MSLane *l, SUMOReal pos, int edgeOffset, const ConstMSEdgeVector &route, SUMOTime t)
 
 ~Influencer ()
 Destructor. More...
 

Private Attributes

bool myAmVTDControlled
 
bool myConsiderMaxAcceleration
 Whether the maximum acceleration shall be regarded. More...
 
bool myConsiderMaxDeceleration
 Whether the maximum deceleration shall be regarded. More...
 
bool myConsiderSafeVelocity
 Whether the safe velocity shall be regarded. More...
 
bool myEmergencyBrakeRedLight
 Whether red lights are a reason to brake. More...
 
std::vector< std::pair< SUMOTime, unsigned int > > myLaneTimeLine
 The lane usage time line to apply. More...
 
SUMOTime myLastVTDAccess
 
SUMOReal myOriginalSpeed
 The velocity before influence. More...
 
bool myRespectJunctionPriority
 Whether the junction priority rules are respected. More...
 
bool mySpeedAdaptationStarted
 Whether influencing the speed has already started. More...
 
std::vector< std::pair< SUMOTime, SUMOReal > > mySpeedTimeLine
 The velocity time line to apply. More...
 
TraciLaneChangePriority myTraciLaneChangePriority
 flags for determining the priority of traci lane change requests More...
 
int myVTDEdgeOffset
 
MSLanemyVTDLane
 
SUMOReal myVTDPos
 
ConstMSEdgeVector myVTDRoute
 
Flags for managing conflicts between the laneChangeModel and TraCI laneTimeLine
LaneChangeMode myStrategicLC
 lane changing which is necessary to follow the current route More...
 
LaneChangeMode myCooperativeLC
 lane changing with the intent to help other vehicles More...
 
LaneChangeMode mySpeedGainLC
 lane changing to travel with higher speed More...
 
LaneChangeMode myRightDriveLC
 changing to the rightmost lane More...
 

Detailed Description

Changes the wished vehicle speed / lanes.

The class is used for passing velocities or velocity profiles obtained via TraCI to the vehicle. The speed adaptation is controlled by the stored speedTimeLine Additionally, the variables myConsiderSafeVelocity, myConsiderMaxAcceleration, and myConsiderMaxDeceleration control whether the safe velocity, the maximum acceleration, and the maximum deceleration have to be regarded.

Furthermore this class is used to affect lane changing decisions according to LaneChangeMode and any given laneTimeLine

Definition at line 914 of file MSVehicle.h.

Constructor & Destructor Documentation

MSVehicle::Influencer::Influencer ( )

Constructor.

Definition at line 147 of file MSVehicle.cpp.

MSVehicle::Influencer::~Influencer ( )

Destructor.

Definition at line 164 of file MSVehicle.cpp.

Member Function Documentation

SUMOReal MSVehicle::Influencer::changeRequestRemainingSeconds ( const SUMOTime  currentTime) const

Return the remaining number of seconds of the current laneTimeLine assuming one exists.

Parameters
[in]currentTimeThe current simulation time
Returns
The remaining seconds to change lanes

Definition at line 296 of file MSVehicle.cpp.

References myLaneTimeLine, and STEPS2TIME.

Referenced by MSLCM_JE2013::_wantsChange(), and MSLCM_LC2013::_wantsChange().

bool MSVehicle::Influencer::getEmergencyBrakeRedLight ( ) const
inline

Returns whether red lights shall be a reason to brake.

Returns
Whether red lights shall be a reason to brake

Definition at line 1007 of file MSVehicle.h.

Referenced by MSVehicle::executeMove().

SUMOTime MSVehicle::Influencer::getLastAccessTimeStep ( ) const
inline

Definition at line 1034 of file MSVehicle.h.

References SUMOReal.

SUMOReal MSVehicle::Influencer::getOriginalSpeed ( ) const
inline

Returns the originally longitudinal speed to use.

Returns
The speed given before influence

Definition at line 1021 of file MSVehicle.h.

Referenced by MSVehicle::getSpeedWithoutTraciInfluence().

bool MSVehicle::Influencer::getRespectJunctionPriority ( ) const
inline

Returns whether junction priority rules shall be respected.

Returns
Whether junction priority rules be respected

Definition at line 993 of file MSVehicle.h.

Referenced by MSVehicle::checkRewindLinkLanes(), and MSVehicle::executeMove().

SUMOReal MSVehicle::Influencer::implicitDeltaPosVTD ( const MSVehicle veh)

return the change in longitudinal position that is implicit in the new VTD position

Definition at line 370 of file MSVehicle.cpp.

References DIST2SPEED, MSVehicle::getDistanceToPosition(), MSLane::getEdge(), MSBaseVehicle::getMaxSpeed(), myVTDLane, myVTDPos, and SUMOReal.

Referenced by MSVehicle::executeMove().

SUMOReal MSVehicle::Influencer::implicitSpeedVTD ( const MSVehicle veh,
SUMOReal  oldSpeed 
)

return the speed that is implicit in the new VTD position

Definition at line 360 of file MSVehicle.cpp.

References DIST2SPEED, MSVehicle::getDistanceToPosition(), MSLane::getEdge(), MSBaseVehicle::getMaxSpeed(), myVTDLane, myVTDPos, and SUMOReal.

Referenced by MSVehicle::executeMove().

int MSVehicle::Influencer::influenceChangeDecision ( const SUMOTime  currentTime,
const MSEdge currentEdge,
const unsigned int  currentLaneIndex,
int  state 
)

Applies stored LaneChangeMode information and laneTimeLine.

Parameters
[in]currentTimeThe current simulation time
[in]currentEdgeThe current edge the vehicle is on
[in]currentLaneIndexThe index of the lane the vehicle is currently on
[in]stateThe LaneChangeAction flags as computed by the laneChangeModel
Returns
The new LaneChangeAction flags to use

Definition at line 214 of file MSVehicle.cpp.

References MSEdge::getLanes(), MSVehicle::LC_ALWAYS, MSVehicle::LC_NEVER, MSVehicle::LC_NOCONFLICT, LCA_BLOCKED, LCA_COOPERATIVE, LCA_KEEPRIGHT, LCA_LEFT, LCA_OVERLAPPING, LCA_RIGHT, LCA_SPEEDGAIN, LCA_STAY, LCA_STRATEGIC, LCA_TRACI, LCA_URGENT, LCA_WANTS_LANECHANGE_OR_STAY, MSVehicle::LCP_ALWAYS, MSVehicle::LCP_NOOVERLAP, MSVehicle::LCP_OPPORTUNISTIC, myCooperativeLC, myLaneTimeLine, myRightDriveLC, mySpeedGainLC, myStrategicLC, myTraciLaneChangePriority, MSVehicle::REQUEST_HOLD, MSVehicle::REQUEST_LEFT, MSVehicle::REQUEST_NONE, MSVehicle::REQUEST_RIGHT, SUMOReal, time2string(), toString(), and WRITE_WARNING.

Referenced by MSVehicle::influenceChangeDecision().

SUMOReal MSVehicle::Influencer::influenceSpeed ( SUMOTime  currentTime,
SUMOReal  speed,
SUMOReal  vSafe,
SUMOReal  vMin,
SUMOReal  vMax 
)

Applies stored velocity information on the speed to use.

The given speed is assumed to be the non-influenced speed from longitudinal control. It is stored for further usage in "myOriginalSpeed".

Parameters
[in]currentTimeThe current simulation time
[in]speedThe undisturbed speed
[in]vSafeThe safe velocity
[in]vMinThe minimum velocity
[in]vMaxThe maximum simulation time
Returns
The speed to use

Definition at line 181 of file MSVehicle.cpp.

References DELTA_T, MAX2(), MIN2(), myConsiderMaxAcceleration, myConsiderMaxDeceleration, myConsiderSafeVelocity, myOriginalSpeed, mySpeedAdaptationStarted, mySpeedTimeLine, STEPS2TIME, and SUMOReal.

Referenced by MSVehicle::executeMove(), and MSVehicle::planMoveInternal().

bool MSVehicle::Influencer::isVTDAffected ( SUMOTime  t) const
inline

Definition at line 1050 of file MSVehicle.h.

References TIME2STEPS.

bool MSVehicle::Influencer::isVTDControlled ( ) const
inline
void MSVehicle::Influencer::setConsiderMaxAcceleration ( bool  value)

Sets whether the maximum acceleration shall be regarded.

Parameters
[in]valueWhether the maximum acceleration shall be regarded

Definition at line 310 of file MSVehicle.cpp.

References myConsiderMaxAcceleration.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setConsiderMaxDeceleration ( bool  value)

Sets whether the maximum deceleration shall be regarded.

Parameters
[in]valueWhether the maximum deceleration shall be regarded

Definition at line 316 of file MSVehicle.cpp.

References myConsiderMaxDeceleration.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setConsiderSafeVelocity ( bool  value)

Sets whether the safe velocity shall be regarded.

Parameters
[in]valueWhether the safe velocity shall be regarded

Definition at line 304 of file MSVehicle.cpp.

References myConsiderSafeVelocity.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setEmergencyBrakeRedLight ( bool  value)

Sets whether red lights shall be a reason to brake.

Parameters
[in]valueWhether red lights shall be a reason to brake

Definition at line 328 of file MSVehicle.cpp.

References myEmergencyBrakeRedLight.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setLaneChangeMode ( int  value)

Sets lane changing behavior.

Parameters
[in]valuea bitset controlling the different modes

Definition at line 334 of file MSVehicle.cpp.

References myCooperativeLC, myRightDriveLC, mySpeedGainLC, myStrategicLC, and myTraciLaneChangePriority.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setLaneTimeLine ( const std::vector< std::pair< SUMOTime, unsigned int > > &  laneTimeLine)

Sets a new lane timeline.

Parameters
[in]laneTimeLineThe time line of lanes to use

Definition at line 175 of file MSVehicle.cpp.

References myLaneTimeLine, and SUMOReal.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setRespectJunctionPriority ( bool  value)

Sets whether junction priority rules shall be respected.

Parameters
[in]valueWhether junction priority rules be respected

Definition at line 322 of file MSVehicle.cpp.

References myRespectJunctionPriority.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setSpeedTimeLine ( const std::vector< std::pair< SUMOTime, SUMOReal > > &  speedTimeLine)

Sets a new velocity timeline.

Parameters
[in]speedTimeLineThe time line of speeds to use

Definition at line 168 of file MSVehicle.cpp.

References mySpeedAdaptationStarted, and mySpeedTimeLine.

Referenced by TraCIServerAPI_Vehicle::processSet().

void MSVehicle::Influencer::setVTDControlled ( bool  c,
MSLane l,
SUMOReal  pos,
int  edgeOffset,
const ConstMSEdgeVector route,
SUMOTime  t 
)
inline

Definition at line 1025 of file MSVehicle.h.

References MSVehicle::State::pos().

Referenced by TraCIServer::setVTDControlled().

Field Documentation

bool MSVehicle::Influencer::myAmVTDControlled
private

Definition at line 1083 of file MSVehicle.h.

Referenced by postProcessVTD().

bool MSVehicle::Influencer::myConsiderMaxAcceleration
private

Whether the maximum acceleration shall be regarded.

Definition at line 1072 of file MSVehicle.h.

Referenced by influenceSpeed(), and setConsiderMaxAcceleration().

bool MSVehicle::Influencer::myConsiderMaxDeceleration
private

Whether the maximum deceleration shall be regarded.

Definition at line 1075 of file MSVehicle.h.

Referenced by influenceSpeed(), and setConsiderMaxDeceleration().

bool MSVehicle::Influencer::myConsiderSafeVelocity
private

Whether the safe velocity shall be regarded.

Definition at line 1069 of file MSVehicle.h.

Referenced by influenceSpeed(), and setConsiderSafeVelocity().

LaneChangeMode MSVehicle::Influencer::myCooperativeLC
private

lane changing with the intent to help other vehicles

Definition at line 1095 of file MSVehicle.h.

Referenced by influenceChangeDecision(), and setLaneChangeMode().

bool MSVehicle::Influencer::myEmergencyBrakeRedLight
private

Whether red lights are a reason to brake.

Definition at line 1081 of file MSVehicle.h.

Referenced by setEmergencyBrakeRedLight().

std::vector<std::pair<SUMOTime, unsigned int> > MSVehicle::Influencer::myLaneTimeLine
private

The lane usage time line to apply.

Definition at line 1060 of file MSVehicle.h.

Referenced by changeRequestRemainingSeconds(), influenceChangeDecision(), and setLaneTimeLine().

SUMOTime MSVehicle::Influencer::myLastVTDAccess
private

Definition at line 1088 of file MSVehicle.h.

SUMOReal MSVehicle::Influencer::myOriginalSpeed
private

The velocity before influence.

Definition at line 1063 of file MSVehicle.h.

Referenced by influenceSpeed().

bool MSVehicle::Influencer::myRespectJunctionPriority
private

Whether the junction priority rules are respected.

Definition at line 1078 of file MSVehicle.h.

Referenced by setRespectJunctionPriority().

LaneChangeMode MSVehicle::Influencer::myRightDriveLC
private

changing to the rightmost lane

Definition at line 1099 of file MSVehicle.h.

Referenced by influenceChangeDecision(), and setLaneChangeMode().

bool MSVehicle::Influencer::mySpeedAdaptationStarted
private

Whether influencing the speed has already started.

Definition at line 1066 of file MSVehicle.h.

Referenced by influenceSpeed(), and setSpeedTimeLine().

LaneChangeMode MSVehicle::Influencer::mySpeedGainLC
private

lane changing to travel with higher speed

Definition at line 1097 of file MSVehicle.h.

Referenced by influenceChangeDecision(), and setLaneChangeMode().

std::vector<std::pair<SUMOTime, SUMOReal> > MSVehicle::Influencer::mySpeedTimeLine
private

The velocity time line to apply.

Definition at line 1057 of file MSVehicle.h.

Referenced by influenceSpeed(), and setSpeedTimeLine().

LaneChangeMode MSVehicle::Influencer::myStrategicLC
private

lane changing which is necessary to follow the current route

Definition at line 1093 of file MSVehicle.h.

Referenced by influenceChangeDecision(), and setLaneChangeMode().

TraciLaneChangePriority MSVehicle::Influencer::myTraciLaneChangePriority
private

flags for determining the priority of traci lane change requests

Definition at line 1102 of file MSVehicle.h.

Referenced by influenceChangeDecision(), and setLaneChangeMode().

int MSVehicle::Influencer::myVTDEdgeOffset
private

Definition at line 1086 of file MSVehicle.h.

Referenced by postProcessVTD().

MSLane* MSVehicle::Influencer::myVTDLane
private

Definition at line 1084 of file MSVehicle.h.

Referenced by implicitDeltaPosVTD(), implicitSpeedVTD(), and postProcessVTD().

SUMOReal MSVehicle::Influencer::myVTDPos
private

Definition at line 1085 of file MSVehicle.h.

Referenced by implicitDeltaPosVTD(), implicitSpeedVTD(), and postProcessVTD().

ConstMSEdgeVector MSVehicle::Influencer::myVTDRoute
private

Definition at line 1087 of file MSVehicle.h.

Referenced by postProcessVTD().


The documentation for this class was generated from the following files: