![]() |
Eclipse SUMO - Simulation of Urban MObility
|
Changes the wished vehicle speed / lanes. More...
#include <MSVehicle.h>
Data Structures | |
struct | GapControlState |
Container for state and parameters of the gap control. More... | |
class | GapControlVehStateListener |
A static instance of this class in GapControlState deactivates gap control for vehicles whose reference vehicle is removed from the road network. More... | |
Public Member Functions | |
void | activateGapController (double originalTau, double newTimeHeadway, double newSpaceHeadway, double duration, double changeRate, double maxDecel, MSVehicle *refVeh=nullptr) |
Activates the gap control with the given parameters,. More... | |
void | adaptLaneTimeLine (int indexShift) |
Adapts lane timeline when moving to a new lane and the lane index changes. More... | |
double | changeRequestRemainingSeconds (const SUMOTime currentTime) const |
Return the remaining number of seconds of the current laneTimeLine assuming one exists. More... | |
bool | considerSafeVelocity () const |
Returns whether safe velocities shall be considered. More... | |
void | deactivateGapController () |
Deactivates the gap control. More... | |
double | gapControlSpeed (SUMOTime currentTime, const SUMOVehicle *veh, double speed, double vSafe, double vMin, double vMax) |
Applies gap control logic on the speed. More... | |
bool | getEmergencyBrakeRedLight () const |
Returns whether red lights shall be a reason to brake. More... | |
int | getLaneChangeMode () const |
return the current lane change mode More... | |
SUMOTime | getLaneTimeLineDuration () |
SUMOTime | getLaneTimeLineEnd () |
SUMOTime | getLastAccessTimeStep () const |
double | getLatDist () const |
double | getOriginalSpeed () const |
Returns the originally longitudinal speed to use. More... | |
bool | getRespectJunctionPriority () const |
Returns whether junction priority rules shall be respected. More... | |
SUMOAbstractRouter< MSEdge, SUMOVehicle > & | getRouterTT (const int rngIndex, SUMOVehicleClass svc) const |
int | getRoutingMode () const |
return the current routing mode More... | |
int | getSignals () const |
int | getSpeedMode () const |
return the current speed mode More... | |
bool | ignoreOverlap () const |
double | implicitDeltaPosRemote (const MSVehicle *veh) |
return the change in longitudinal position that is implicit in the new remote position More... | |
double | implicitSpeedRemote (const MSVehicle *veh, double oldSpeed) |
return the speed that is implicit in the new remote position More... | |
int | influenceChangeDecision (const SUMOTime currentTime, const MSEdge ¤tEdge, const int currentLaneIndex, int state) |
Applies stored LaneChangeMode information and laneTimeLine. More... | |
Influencer () | |
Constructor. More... | |
double | influenceSpeed (SUMOTime currentTime, double speed, double vSafe, double vMin, double vMax) |
Applies stored velocity information on the speed to use. More... | |
bool | isRemoteAffected (SUMOTime t) const |
bool | isRemoteControlled () const |
void | postProcessRemoteControl (MSVehicle *v) |
void | resetLatDist () |
void | setLaneChangeMode (int value) |
Sets lane changing behavior. More... | |
void | setLaneTimeLine (const std::vector< std::pair< SUMOTime, int > > &laneTimeLine) |
Sets a new lane timeline. More... | |
void | setRemoteControlled (Position xyPos, MSLane *l, double pos, double posLat, double angle, int edgeOffset, const ConstMSEdgeVector &route, SUMOTime t) |
void | setRoutingMode (int value) |
Sets routing behavior. More... | |
void | setSignals (int signals) |
void | setSpeedMode (int speedMode) |
Sets speed-constraining behaviors. More... | |
void | setSpeedTimeLine (const std::vector< std::pair< SUMOTime, double > > &speedTimeLine) |
Sets a new velocity timeline. More... | |
void | setSublaneChange (double latDist) |
Sets a new sublane-change request. More... | |
~Influencer () | |
Destructor. More... | |
Static Public Member Functions | |
static void | cleanup () |
Static cleanup. More... | |
static void | init () |
Static initalization. More... | |
Protected Attributes | |
int | myRoutingMode |
routing mode (see TraCIConstants.h) More... | |
Private Attributes | |
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::shared_ptr< GapControlState > | myGapControlState |
The gap control state. More... | |
std::vector< std::pair< SUMOTime, int > > | myLaneTimeLine |
The lane usage time line to apply. More... | |
SUMOTime | myLastRemoteAccess |
double | myLatDist |
The requested lateral change. More... | |
double | myOriginalSpeed |
The velocity before influence. More... | |
double | myRemoteAngle |
int | myRemoteEdgeOffset |
MSLane * | myRemoteLane |
double | myRemotePos |
double | myRemotePosLat |
ConstMSEdgeVector | myRemoteRoute |
Position | myRemoteXYPos |
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, double > > | mySpeedTimeLine |
The velocity time line to apply. More... | |
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... | |
LaneChangeMode | mySublaneLC |
changing to the prefered lateral alignment More... | |
TraciLaneChangePriority | myTraciLaneChangePriority |
flags for determining the priority of traci lane change requests More... | |
int | myTraCISignals |
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 1341 of file MSVehicle.h.
MSVehicle::Influencer::Influencer | ( | ) |
Constructor.
Definition at line 357 of file MSVehicle.cpp.
MSVehicle::Influencer::~Influencer | ( | ) |
Destructor.
Definition at line 378 of file MSVehicle.cpp.
void MSVehicle::Influencer::activateGapController | ( | double | originalTau, |
double | newTimeHeadway, | ||
double | newSpaceHeadway, | ||
double | duration, | ||
double | changeRate, | ||
double | maxDecel, | ||
MSVehicle * | refVeh = nullptr |
||
) |
Activates the gap control with the given parameters,.
Definition at line 397 of file MSVehicle.cpp.
Referenced by LIBSUMO_NAMESPACE::Vehicle::openGap(), and MSDevice_ToC::requestToC().
void MSVehicle::Influencer::adaptLaneTimeLine | ( | int | indexShift | ) |
Adapts lane timeline when moving to a new lane and the lane index changes.
[in] | indexShift | The change in laneIndex |
Definition at line 418 of file MSVehicle.cpp.
Referenced by MSVehicle::enterLaneAtMove().
double MSVehicle::Influencer::changeRequestRemainingSeconds | ( | const SUMOTime | currentTime | ) | const |
Return the remaining number of seconds of the current laneTimeLine assuming one exists.
[in] | currentTime | The current simulation time |
Definition at line 754 of file MSVehicle.cpp.
References STEPS2TIME.
Referenced by MSLCM_LC2013::_wantsChange(), and MSLCM_SL2015::_wantsChangeSublane().
|
static |
Static cleanup.
Definition at line 386 of file MSVehicle.cpp.
Referenced by MSNet::cleanupStatic().
|
inline |
Returns whether safe velocities shall be considered.
Definition at line 1518 of file MSVehicle.h.
References myConsiderSafeVelocity.
Referenced by MSVehicle::planMoveInternal().
void MSVehicle::Influencer::deactivateGapController | ( | ) |
Deactivates the gap control.
Definition at line 405 of file MSVehicle.cpp.
Referenced by LIBSUMO_NAMESPACE::Vehicle::deactivateGapControl(), and MSDevice_ToC::setState().
double MSVehicle::Influencer::gapControlSpeed | ( | SUMOTime | currentTime, |
const SUMOVehicle * | veh, | ||
double | speed, | ||
double | vSafe, | ||
double | vMin, | ||
double | vMax | ||
) |
Applies gap control logic on the speed.
The given speed is assumed to be the non-influenced speed from longitudinal control. It is stored for further usage in "myOriginalSpeed".
[in] | currentTime | The current simulation time |
[in] | veh | The controlled vehicle |
[in] | speed | The undisturbed speed |
[in] | vSafe | The safe velocity |
[in] | vMin | The minimum velocity |
[in] | vMax | The maximum simulation time |
Definition at line 506 of file MSVehicle.cpp.
References DEBUG_COND2, MSCFModel::followSpeed(), MSVehicleType::getCarFollowModel(), MSVehicle::getDistanceToPosition(), MSBaseVehicle::getEdge(), MSCFModel::getHeadwayTime(), MSVehicle::getLeader(), MSBaseVehicle::getLength(), MSVehicleType::getMinGap(), MSVehicle::getPositionOnLane(), MSVehicle::getSpeed(), SUMOTrafficObject::getSpeed(), MSBaseVehicle::getVehicleType(), MAX2(), MIN2(), MSCFModel::setHeadwayTime(), and TS.
Referenced by MSVehicle::planMoveInternal().
|
inline |
Returns whether red lights shall be a reason to brake.
Definition at line 1512 of file MSVehicle.h.
References myEmergencyBrakeRedLight.
Referenced by MSVehicle::ignoreRed(), and MSVehicle::processLaneAdvances().
int MSVehicle::Influencer::getLaneChangeMode | ( | ) | const |
return the current lane change mode
Definition at line 441 of file MSVehicle.cpp.
Referenced by MSDevice_ToC::deactivateDeliberateLCs().
SUMOTime MSVehicle::Influencer::getLaneTimeLineDuration | ( | ) |
Definition at line 451 of file MSVehicle.cpp.
Referenced by MSLaneChanger::changeOpposite().
SUMOTime MSVehicle::Influencer::getLaneTimeLineEnd | ( | ) |
Definition at line 464 of file MSVehicle.cpp.
|
inline |
Definition at line 1539 of file MSVehicle.h.
References myLastRemoteAccess.
Referenced by MSVehicle::wasRemoteControlled().
|
inline |
Definition at line 1563 of file MSVehicle.h.
References myLatDist.
Referenced by MSLCM_SL2015::checkBlocking(), MSAbstractLaneChangeModel::checkTraCICommands(), and MSLCM_SL2015::keepLatGap().
double MSVehicle::Influencer::getOriginalSpeed | ( | ) | const |
Returns the originally longitudinal speed to use.
Definition at line 653 of file MSVehicle.cpp.
Referenced by MSVehicle::getSpeedWithoutTraciInfluence().
|
inline |
Returns whether junction priority rules shall be respected.
Definition at line 1504 of file MSVehicle.h.
References myRespectJunctionPriority.
Referenced by MSLaneChanger::changeOpposite(), MSVehicle::checkRewindLinkLanes(), and MSVehicle::processLinkApproaches().
|
inherited |
Definition at line 80 of file MSBaseVehicle.cpp.
References MSNet::getInstance(), MSNet::getRouterTT(), and MSRoutingEngine::getRouterTT().
Referenced by LIBSUMO_NAMESPACE::Vehicle::changeTarget(), MSVehicle::replaceStop(), MSVehicle::rerouteParkingArea(), and LIBSUMO_NAMESPACE::Vehicle::rerouteTraveltime().
|
inlineinherited |
return the current routing mode
Definition at line 709 of file MSBaseVehicle.h.
References MSBaseVehicle::BaseInfluencer::myRoutingMode.
Referenced by LIBSUMO_NAMESPACE::Vehicle::getRoutingMode().
|
inline |
Definition at line 1559 of file MSVehicle.h.
References myTraCISignals.
Referenced by MSVehicle::setBlinkerInformation().
int MSVehicle::Influencer::getSpeedMode | ( | ) | const |
return the current speed mode
Definition at line 431 of file MSVehicle.cpp.
|
inline |
Definition at line 1571 of file MSVehicle.h.
References MSVehicle::LCP_ALWAYS, and myTraciLaneChangePriority.
Referenced by MSLCM_SL2015::checkBlocking().
double MSVehicle::Influencer::implicitDeltaPosRemote | ( | const MSVehicle * | veh | ) |
return the change in longitudinal position that is implicit in the new remote position
Definition at line 886 of file MSVehicle.cpp.
References DIST2SPEED, Position::distanceTo2D(), MSVehicle::getDistanceToPosition(), MSBaseVehicle::getMaxSpeed(), and MSVehicle::getPosition().
Referenced by MSVehicle::updateState().
double MSVehicle::Influencer::implicitSpeedRemote | ( | const MSVehicle * | veh, |
double | oldSpeed | ||
) |
return the speed that is implicit in the new remote position
Definition at line 859 of file MSVehicle.cpp.
References DIST2SPEED, Position::distanceTo2D(), MSVehicle::getCarFollowModel(), MSVehicle::getDistanceToPosition(), MSVehicle::getLane(), MSVehicleType::getMaxSpeed(), MSVehicle::getPosition(), MSLane::getVehicleMaxSpeed(), MSBaseVehicle::getVehicleType(), Position::INVALID, MAX2(), MIN2(), and MSCFModel::minNextSpeedEmergency().
Referenced by MSVehicle::processTraCISpeedControl().
int MSVehicle::Influencer::influenceChangeDecision | ( | const SUMOTime | currentTime, |
const MSEdge & | currentEdge, | ||
const int | currentLaneIndex, | ||
int | state | ||
) |
Applies stored LaneChangeMode information and laneTimeLine.
[in] | currentTime | The current simulation time |
[in] | currentEdge | The current edge the vehicle is on |
[in] | currentLaneIndex | The index of the lane the vehicle is currently on |
[in] | state | The LaneChangeAction flags as computed by the laneChangeModel |
Definition at line 659 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_SUBLANE, LCA_TRACI, LCA_URGENT, LCA_WANTS_LANECHANGE_OR_STAY, MSVehicle::LCP_ALWAYS, MSVehicle::LCP_NOOVERLAP, MSVehicle::LCP_OPPORTUNISTIC, MSVehicle::REQUEST_HOLD, MSVehicle::REQUEST_LEFT, MSVehicle::REQUEST_NONE, MSVehicle::REQUEST_RIGHT, time2string(), toString(), and WRITE_WARNING.
Referenced by MSVehicle::influenceChangeDecision().
double MSVehicle::Influencer::influenceSpeed | ( | SUMOTime | currentTime, |
double | speed, | ||
double | vSafe, | ||
double | vMin, | ||
double | 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".
[in] | currentTime | The current simulation time |
[in] | speed | The undisturbed speed |
[in] | vSafe | The safe velocity |
[in] | vMin | The minimum velocity |
[in] | vMax | The maximum simulation time |
Definition at line 474 of file MSVehicle.cpp.
References DELTA_T, MAX2(), MIN2(), and STEPS2TIME.
Referenced by MSVehicle::planMoveInternal(), and MSVehicle::processTraCISpeedControl().
|
static |
Static initalization.
Definition at line 381 of file MSVehicle.cpp.
Referenced by MSNet::initStatic().
bool MSVehicle::Influencer::isRemoteAffected | ( | SUMOTime | t | ) | const |
Definition at line 802 of file MSVehicle.cpp.
References TIME2STEPS.
Referenced by MSLane::detectCollisionBetween(), MSVehicle::getPosition(), and MSLane::handleCollisionBetween().
bool MSVehicle::Influencer::isRemoteControlled | ( | ) | const |
Definition at line 796 of file MSVehicle.cpp.
References MSNet::getCurrentTimeStep(), and MSNet::getInstance().
Referenced by MSVehicle::isRemoteControlled(), MSVehicle::processTraCISpeedControl(), and MSVehicle::updateState().
void MSVehicle::Influencer::postProcessRemoteControl | ( | MSVehicle * | v | ) |
Definition at line 807 of file MSVehicle.cpp.
References MSRoute::begin(), MSVehicle::drawOutsideNetwork(), GeomHelper::fromNaviDegree(), MSBaseVehicle::getDeparture(), MSVehicle::getLane(), MSVehicleType::getMaxSpeed(), MSVehicle::getMutableLane(), MSBaseVehicle::getRoute(), MSVehicle::getSpeed(), MSBaseVehicle::getVehicleType(), MSVehicleType::getWidth(), MSVehicle::isOnRoad(), MSVehicle::myAcceleration, MSBaseVehicle::myCurrEdge, MSVehicle::State::myPos, MSVehicle::State::myPosLat, MSVehicle::State::myPreviousSpeed, MSVehicle::State::mySpeed, MSVehicle::myState, MSBaseVehicle::NOT_YET_DEPARTED, MSMoveReminder::NOTIFICATION_DEPARTED, MSMoveReminder::NOTIFICATION_TELEPORT, MSMoveReminder::NOTIFICATION_TELEPORT_ARRIVED, MSBaseVehicle::onDepart(), MSVehicle::onRemovalFromNet(), MSVehicle::processTraCISpeedControl(), MSLane::removeVehicle(), MSBaseVehicle::replaceRouteEdges(), MSVehicle::setAngle(), MSVehicle::setBrakingSignals(), MSVehicle::setRemoteState(), SPEED2ACCEL, MSVehicle::updateBestLanes(), and MSVehicle::updateWaitingTime().
|
inline |
Definition at line 1567 of file MSVehicle.h.
References myLatDist.
Referenced by MSAbstractLaneChangeModel::checkTraCICommands().
void MSVehicle::Influencer::setLaneChangeMode | ( | int | value | ) |
Sets lane changing behavior.
[in] | value | a bitset controlling the different modes |
Definition at line 772 of file MSVehicle.cpp.
Referenced by MSDevice_ToC::deactivateDeliberateLCs(), MSDevice_Bluelight::notifyMove(), MSDevice_ToC::resetDeliberateLCs(), and LIBSUMO_NAMESPACE::Vehicle::setLaneChangeMode().
void MSVehicle::Influencer::setLaneTimeLine | ( | const std::vector< std::pair< SUMOTime, int > > & | laneTimeLine | ) |
Sets a new lane timeline.
[in] | laneTimeLine | The time line of lanes to use |
Definition at line 412 of file MSVehicle.cpp.
Referenced by LIBSUMO_NAMESPACE::Vehicle::changeLane(), LIBSUMO_NAMESPACE::Vehicle::changeLaneRelative(), and MSDevice_ToC::MRMExecutionStep().
void MSVehicle::Influencer::setRemoteControlled | ( | Position | xyPos, |
MSLane * | l, | ||
double | pos, | ||
double | posLat, | ||
double | angle, | ||
int | edgeOffset, | ||
const ConstMSEdgeVector & | route, | ||
SUMOTime | t | ||
) |
Definition at line 783 of file MSVehicle.cpp.
Referenced by libsumo::Helper::setRemoteControlled().
|
inlineinherited |
Sets routing behavior.
[in] | value | an enum value controlling the different modes |
Definition at line 716 of file MSBaseVehicle.h.
References MSBaseVehicle::BaseInfluencer::myRoutingMode.
Referenced by LIBSUMO_NAMESPACE::Vehicle::setRoutingMode().
|
inline |
Definition at line 1555 of file MSVehicle.h.
References myTraCISignals.
Referenced by MSVehicle::setBlinkerInformation(), and LIBSUMO_NAMESPACE::Vehicle::setSignals().
void MSVehicle::Influencer::setSpeedMode | ( | int | speedMode | ) |
Sets speed-constraining behaviors.
[in] | value | a bitset controlling the different modes |
Definition at line 762 of file MSVehicle.cpp.
Referenced by MSDevice_Bluelight::notifyMove(), MSCFModel_CC::setParameter(), and LIBSUMO_NAMESPACE::Vehicle::setSpeedMode().
void MSVehicle::Influencer::setSpeedTimeLine | ( | const std::vector< std::pair< SUMOTime, double > > & | speedTimeLine | ) |
Sets a new velocity timeline.
[in] | speedTimeLine | The time line of speeds to use |
Definition at line 391 of file MSVehicle.cpp.
Referenced by MSDevice_ToC::MRMExecutionStep(), MSDevice_Bluelight::notifyMove(), LIBSUMO_NAMESPACE::Vehicle::setSpeed(), and LIBSUMO_NAMESPACE::Vehicle::slowDown().
void MSVehicle::Influencer::setSublaneChange | ( | double | latDist | ) |
Sets a new sublane-change request.
[in] | latDist | The lateral distance for changing |
Definition at line 426 of file MSVehicle.cpp.
Referenced by LIBSUMO_NAMESPACE::Vehicle::changeSublane(), and MSLaneChangerSublane::startChangeSublane().
|
private |
Whether the maximum acceleration shall be regarded.
Definition at line 1598 of file MSVehicle.h.
|
private |
Whether the maximum deceleration shall be regarded.
Definition at line 1601 of file MSVehicle.h.
|
private |
Whether the safe velocity shall be regarded.
Definition at line 1595 of file MSVehicle.h.
Referenced by considerSafeVelocity().
|
private |
lane changing with the intent to help other vehicles
Definition at line 1623 of file MSVehicle.h.
|
private |
Whether red lights are a reason to brake.
Definition at line 1607 of file MSVehicle.h.
Referenced by getEmergencyBrakeRedLight().
|
private |
The gap control state.
Definition at line 1583 of file MSVehicle.h.
|
private |
The lane usage time line to apply.
Definition at line 1580 of file MSVehicle.h.
|
private |
Definition at line 1616 of file MSVehicle.h.
Referenced by getLastAccessTimeStep().
|
private |
The requested lateral change.
Definition at line 1589 of file MSVehicle.h.
Referenced by getLatDist(), and resetLatDist().
|
private |
The velocity before influence.
Definition at line 1586 of file MSVehicle.h.
|
private |
Definition at line 1613 of file MSVehicle.h.
|
private |
Definition at line 1614 of file MSVehicle.h.
|
private |
Definition at line 1610 of file MSVehicle.h.
|
private |
Definition at line 1611 of file MSVehicle.h.
|
private |
Definition at line 1612 of file MSVehicle.h.
|
private |
Definition at line 1615 of file MSVehicle.h.
|
private |
Definition at line 1609 of file MSVehicle.h.
|
private |
Whether the junction priority rules are respected.
Definition at line 1604 of file MSVehicle.h.
Referenced by getRespectJunctionPriority().
|
private |
changing to the rightmost lane
Definition at line 1627 of file MSVehicle.h.
|
protectedinherited |
routing mode (see TraCIConstants.h)
Definition at line 725 of file MSBaseVehicle.h.
Referenced by MSBaseVehicle::BaseInfluencer::getRoutingMode(), and MSBaseVehicle::BaseInfluencer::setRoutingMode().
|
private |
Whether influencing the speed has already started.
Definition at line 1592 of file MSVehicle.h.
|
private |
lane changing to travel with higher speed
Definition at line 1625 of file MSVehicle.h.
|
private |
The velocity time line to apply.
Definition at line 1577 of file MSVehicle.h.
|
private |
lane changing which is necessary to follow the current route
Definition at line 1621 of file MSVehicle.h.
|
private |
changing to the prefered lateral alignment
Definition at line 1629 of file MSVehicle.h.
|
private |
flags for determining the priority of traci lane change requests
Definition at line 1632 of file MSVehicle.h.
Referenced by ignoreOverlap().
|
private |
Definition at line 1635 of file MSVehicle.h.
Referenced by getSignals(), and setSignals().