![]() |
SUMO - Simulation of Urban MObility
|
A device which collects info on the vehicle trip (mainly on departure and arrival) More...
#include <MSDevice_SSM.h>
Data Structures | |
class | Encounter |
An encounter is an episode involving two vehicles, which are closer to each other than some specified distance. More... | |
struct | EncounterApproachInfo |
Structure to collect some info on the encounter needed during ssm calculation by various functions. More... | |
struct | FoeInfo |
Public Member Functions | |
void | addTo (const StoringVisitor &cont) const |
Adds this object to the given container. More... | |
const std::string | deviceName () const |
return the name for this type of device More... | |
void | generateOutput () const |
Finalizes output. Called on vehicle removal. More... | |
const std::string & | getDescription () const |
SUMOVehicle & | getHolder () const |
Returns the vehicle that holds this device. More... | |
const std::string & | getID () const |
Returns the id. More... | |
const MSLane * | getLane () const |
Returns the lane the reminder works on. More... | |
virtual std::string | getParameter (const std::string &key) const |
try to retrieve the given parameter from this device. Throw exception for unsupported key More... | |
virtual void | loadState (const SUMOSAXAttributes &attrs) |
Loads the state of the device from the given description. More... | |
virtual void | notifyMoveInternal (const SUMOVehicle &veh, const double frontOnLane, const double timeOnLane, const double meanSpeedFrontOnLane, const double meanSpeedVehicleOnLane, const double travelledDistanceFrontOnLane, const double travelledDistanceVehicleOnLane, const double meanLengthOnLane) |
Internal notification about the vehicle moves. More... | |
virtual void | saveState (OutputDevice &out) const |
Saves the state of the device. More... | |
void | setDescription (const std::string &description) |
void | setID (const std::string &newID) |
resets the id More... | |
virtual void | setParameter (const std::string &key, const std::string &value) |
try to set the given parameter for this device. Throw exception for unsupported key More... | |
void | updateAndWriteOutput () |
This is called once per time step in MSNet::writeOutput() and collects the surrounding vehicles, updates information on encounters and flushes the encounters qualified as conflicts (. More... | |
~MSDevice_SSM () | |
Destructor. More... | |
Methods called on vehicle movement / state change, overwriting MSDevice | |
bool | notifyMove (SUMOVehicle &veh, double oldPos, double newPos, double newSpeed) |
Checks for waiting steps when the vehicle moves. More... | |
bool | notifyEnter (SUMOVehicle &veh, MSMoveReminder::Notification reason, const MSLane *enteredLane=0) |
Called whenever the holder enteres a lane. More... | |
bool | notifyLeave (SUMOVehicle &veh, double lastPos, MSMoveReminder::Notification reason, const MSLane *enteredLane=0) |
Called whenever the holder leaves a lane. More... | |
Interface methods, to be derived by subclasses | |
void | updateDetector (SUMOVehicle &veh, double entryPos, double leavePos, SUMOTime entryTime, SUMOTime currentTime, SUMOTime leaveTime, bool cleanUp) |
Static Public Member Functions | |
static void | buildVehicleDevices (SUMOVehicle &v, std::vector< MSDevice *> &into) |
Build devices for the given vehicle, if needed. More... | |
static bool | checkOptions (OptionsCont &oc) |
check device-specific options More... | |
static void | cleanup () |
Clean up remaining devices instances. More... | |
static void | cleanupAll () |
perform cleanup for all devices More... | |
static void | findSurroundingVehicles (const MSVehicle &veh, double range, FoeInfoMap &foeCollector) |
Returns all vehicles, which are within the given range of the given vehicle. More... | |
static std::mt19937 * | getEquipmentRNG () |
template<class T > | |
static std::string | getIDSecure (const T *obj, const std::string &fallBack="NULL") |
get an identifier for Named-like object which may be Null More... | |
static const std::set< MSDevice * > & | getInstances () |
returns all currently existing SSM devices More... | |
static void | getUpstreamVehicles (const MSEdge *edge, double pos, double range, double egoDistToConflictLane, const MSLane *const egoConflictLane, FoeInfoMap &foeCollector, std::set< const MSJunction *> seenJunctions) |
Collects all vehicles within range 'range' upstream of the position 'pos' on the edge 'edge' into foeCollector. More... | |
static void | getVehiclesOnJunction (const MSJunction *, double egoDistToConflictLane, const MSLane *const egoConflictLane, FoeInfoMap &foeCollector) |
Collects all vehicles on the junction into foeCollector. More... | |
static void | insertOptions (OptionsCont &oc) |
Inserts MSDevice_SSM-options. More... | |
Protected Member Functions | |
void | removeFromVehicleUpdateValues (SUMOVehicle &veh) |
Static Protected Member Functions | |
Helper methods for device assignment | |
static void | insertDefaultAssignmentOptions (const std::string &deviceName, const std::string &optionsTopic, OptionsCont &oc) |
Adds common command options that allow to assign devices to vehicles. More... | |
static bool | equippedByDefaultAssignmentOptions (const OptionsCont &oc, const std::string &deviceName, SUMOVehicle &v) |
Determines whether a vehicle should get a certain device. More... | |
Protected Attributes | |
std::string | myDescription |
a description of this moveReminder More... | |
SUMOVehicle & | myHolder |
The vehicle that stores the device. More... | |
std::string | myID |
The name of the object. More... | |
MSLane *const | myLane |
Lane on which the reminder works. More... | |
Private Types | |
typedef std::priority_queue< Encounter *, std::vector< Encounter * >, Encounter::compare > | EncounterQueue |
typedef std::vector< Encounter * > | EncounterVector |
typedef std::map< const MSVehicle *, FoeInfo * > | FoeInfoMap |
Private Member Functions | |
EncounterType | classifyEncounter (const FoeInfo *foeInfo, EncounterApproachInfo &eInfo) const |
Classifies the current type of the encounter provided some information on the opponents. More... | |
void | closeEncounter (Encounter *e) |
Finalizes the encounter and calculates SSM values. More... | |
void | computeSSMs (EncounterApproachInfo &e) const |
Compute current values of the logged SSMs (myMeasures) for the given encounter 'e' and update 'e' accordingly (add point to SSM time-series, update maximal/minimal value) This is called just after adding the current vehicle positions and velocity vectors to the encounter. More... | |
double | computeTTC (double gap, double followerSpeed, double leaderSpeed) const |
Computes the time to collision (in seconds) for two vehicles with a given initial gap under the assumption that both maintain their current speeds. Returns INVALID if no collision would occur under this assumption. More... | |
void | createEncounters (FoeInfoMap &foes) |
Makes new encounters for all given vehicles (these should be the ones entering the device's range in the current timestep) More... | |
void | determinePET (EncounterApproachInfo &eInfo) const |
Discriminates between different encounter types and correspondingly determines the PET for those cases and writes the result to eInfo.pet (after both vehicles have left the conflict area) More... | |
void | determineTTCandDRAC (EncounterApproachInfo &eInfo) const |
Discriminates between different encounter types and correspondingly determines TTC and DRAC for those cases and writes the result to eInfo.ttc and eInfo.drac. More... | |
const MSLane * | findFoeConflictLane (const MSVehicle *foe, const MSLane *egoConflictLane, double &distToConflictLane) const |
Computes the conflict lane for the foe. More... | |
void | flushConflicts (bool all=false) |
Writes out all past conflicts that have begun earlier than the oldest active encounter. More... | |
MSDevice_SSM (SUMOVehicle &holder, const std::string &id, std::string outputFilename, std::map< std::string, double > thresholds, bool trajectories, double range, double extraTime, bool useGeoCoords) | |
Constructor. More... | |
MSDevice_SSM (const MSDevice_SSM &) | |
Invalidated copy constructor. More... | |
MSDevice_SSM & | operator= (const MSDevice_SSM &) |
Invalidated assignment operator. More... | |
void | processEncounters (FoeInfoMap &foes, bool forceClose=false) |
Finds encounters for which the foe vehicle has disappeared from range. remainingExtraTime is decreased until it reaches zero, which triggers closing the encounter. If an ended encounter is qualified as a conflict, it is transferred to myPastConflicts All vehicles for which an encounter instance already exists (vehicle is already tracked) are removed from 'foes' during processing. More... | |
bool | qualifiesAsConflict (Encounter *e) |
Tests if the SSM values exceed the threshold for qualification as conflict. More... | |
void | resetEncounters () |
Closes all current Encounters and moves conflicts to myPastConflicts,. More... | |
void | storeEncountersExceedingMaxLength () |
Closes encounters, whose duration exceeds the maximal encounter length. If it is classified as conflict, the encounter is saved. In any case, a new active encounter is created holding the trailing part (of length myOverlapTime) of the original. More... | |
void | update () |
void | updateEncounter (Encounter *e, FoeInfo *foeInfo) |
Updates the encounter (adds a new trajectory point) and deletes the foeInfo. More... | |
void | updatePassedEncounter (Encounter *e, FoeInfo *foeInfo, EncounterApproachInfo &eInfo) |
Updates an encounter, which was classified as ENCOUNTER_TYPE_NOCONFLICT_AHEAD this may be the case because the foe is out of the detection range but the encounter is still in extra time (in this case foeInfo==0), or because the foe does not head for a lane conflicting with the route of the ego vehicle. It is also used for an ongoing crossing conflict, where only the covered distances are traced until the situation is over. (A crossing conflict is ongoing, if one vehicle entered the conflict area) Writes the type of encounter which is determined for the current state into eInfo. And if appropriate some information concerning vehicles positions in relation to a crossed crossing point (for PET calculation). More... | |
void | writeOutConflict (Encounter *e) |
Static Private Member Functions | |
static void | checkConflictEntryAndExit (EncounterApproachInfo &eInfo) |
Checks whether ego or foe have entered or left the conflict area in the last step and eventually writes the corresponding entry or exit times to eInfo.encounter. For ongoing crossing conflicts, it also manages the evolution of the conflict type. More... | |
static double | computeDRAC (double gap, double followerSpeed, double leaderSpeed) |
Computes the DRAC (deceleration to avoid a collision) for a lead/follow situation as defined, e.g., in Guido et al. (2011, Safety performance measures: a comparison between microsimulation and observational data) for two vehicles with a given gap. Returns 0.0 if no deceleration is required by the follower to avoid a crash, INVALID if collision is detected. More... | |
static double | computeDRAC (const EncounterApproachInfo &eInfo) |
Computes the DRAC a crossing situation, determining the minimal constant deceleration needed for one of the vehicles to reach the conflict area after the other has left. for estimated leaving times, current deceleration is extrapolated, and acceleration is neglected. Returns 0.0 if no deceleration is required by the follower to avoid a crash, INVALID if collision is detected. More... | |
static void | determineConflictPoint (EncounterApproachInfo &eInfo) |
Calculates the (x,y)-coordinate for the eventually predicted conflict point and stores the result in eInfo.conflictPoint. In case of MERGING and CROSSING, this is the entry point to conflict area for follower In case of FOLLOWING it is the position of leader's back. More... | |
static void | estimateConflictTimes (EncounterApproachInfo &eInfo) |
Estimates the time until conflict for the vehicles based on the distance to the conflict entry points. For acceleration profiles, we assume that the acceleration is <= 0 (that is, braking is extrapolated, while for acceleration it is assumed that the vehicle will continue with its current speed) More... | |
static std::string | makeStringWithNAs (std::vector< double > v, double NA, std::string sep=" ") |
make a string of a double vector and treat a special value as invalid ("NA") More... | |
static std::string | makeStringWithNAs (std::vector< double > v, std::vector< double > NAs, std::string sep=" ") |
static void | toGeo (Position &x) |
convert SUMO-positions to geo coordinates (in place) More... | |
static void | toGeo (PositionVector &x) |
convert SUMO-positions to geo coordinates (in place) More... | |
parameter load helpers (introduced for readability of buildVehicleDevices()) | |
static std::string | getOutputFilename (const SUMOVehicle &v, std::string deviceID) |
static double | getDetectionRange (const SUMOVehicle &v) |
static double | getExtraTime (const SUMOVehicle &v) |
static bool | useGeoCoords (const SUMOVehicle &v) |
static bool | requestsTrajectories (const SUMOVehicle &v) |
static bool | getMeasuresAndThresholds (const SUMOVehicle &v, std::string deviceID, std::map< std::string, double > &thresholds) |
Private Attributes | |
OutputDevice * | myOutputFile |
Output device. More... | |
Device parameters | |
thresholds for the ssms, i.e., critical values above or below which a value indicates that a conflict has occured. These are used in qualifiesAsConflict() and decide whether an encounter is saved. | |
std::map< std::string, double > | myThresholds |
bool | mySaveTrajectories |
This determines whether the whole trajectories of the vehicles (position, speed, ssms) shall be saved in the ssm-output or only the most critical value shall be reported. More... | |
double | myRange |
Detection range. For vehicles closer than this distance from the ego vehicle, SSMs are traced. More... | |
double | myExtraTime |
Extra time in seconds to be logged after a conflict is over. More... | |
bool | myUseGeoCoords |
Whether to use the original coordinate system for output. More... | |
bool | myComputeTTC |
Flags for switching on / off comutation of different SSMs, derived from myMeasures. More... | |
bool | myComputeDRAC |
bool | myComputePET |
MSVehicle * | myHolderMS |
Internal storage for encounters/conflicts | |
Currently observed encounters/conflicts | |
EncounterVector | myActiveEncounters |
double | myOldestActiveEncounterBegin |
begin time of the oldest active encounter More... | |
EncounterQueue | myPastConflicts |
Past encounters that where qualified as conflicts and are not yet flushed to the output file. More... | |
Static Private Attributes | |
static std::set< std::string > | createdOutputFiles |
remember which files were created already (don't duplicate xml root-elements) More... | |
static std::set< MSDevice * > * | instances = new std::set<MSDevice*>() |
All currently existing SSM devices. More... | |
A device which collects info on the vehicle trip (mainly on departure and arrival)
Each device collects departure time, lane and speed and the same for arrival.
Definition at line 62 of file MSDevice_SSM.h.
|
private |
Definition at line 290 of file MSDevice_SSM.h.
|
private |
Definition at line 291 of file MSDevice_SSM.h.
|
private |
Definition at line 292 of file MSDevice_SSM.h.
Different types of encounters corresponding to relative positions of the vehicles. The name describes the type from the ego perspective.
Definition at line 71 of file MSDevice_SSM.h.
|
inherited |
Definition of a vehicle state.
Definition at line 95 of file MSMoveReminder.h.
MSDevice_SSM::~MSDevice_SSM | ( | ) |
Destructor.
Definition at line 2164 of file MSDevice_SSM.cpp.
References flushConflicts(), instances, and resetEncounters().
|
private |
Constructor.
[in] | holder | The vehicle that holds this device |
[in] | id | The ID of the device |
measures | Vector of Surrogate Safety Measure IDs | |
thresholds | Vector of corresponding thresholds | |
trajectories | Flag indicating whether complete trajectories should be saved for an encounter (if false only extremal values are logged) | |
range | Detection range. For vehicles closer than this distance from the ego vehicle, SSMs are traced | |
extraTime | Extra time in seconds to be logged after a conflict is over | |
useGeoCoords | Whether coordinates should be written out in the original coordinate reference system or as sumo's x,y values |
Definition at line 2117 of file MSDevice_SSM.cpp.
References createdOutputFiles, OutputDevice::getDevice(), instances, joinToString(), myActiveEncounters, myComputeDRAC, myComputePET, myComputeTTC, myExtraTime, myHolderMS, myOutputFile, myPastConflicts, myRange, mySaveTrajectories, myThresholds, myUseGeoCoords, and OutputDevice::openTag().
Referenced by buildVehicleDevices(), and deviceName().
|
private |
Invalidated copy constructor.
|
inlineinherited |
Adds this object to the given container.
Definition at line 119 of file Named.h.
References Named::StoringVisitor::add().
|
static |
Build devices for the given vehicle, if needed.
The options are read and evaluated whether a example-device shall be built for the given vehicle.
The built device is stored in the given vector.
[in] | v | The vehicle for which a device may be built |
Definition at line 209 of file MSDevice_SSM.cpp.
References MSDevice::equippedByDefaultAssignmentOptions(), getDetectionRange(), getExtraTime(), SUMOVehicle::getID(), getMeasuresAndThresholds(), OptionsCont::getOptions(), getOutputFilename(), MSGlobals::gUseMesoSim, MSDevice_SSM(), requestsTrajectories(), useGeoCoords(), and WRITE_WARNING.
Referenced by MSDevice::buildVehicleDevices().
|
staticprivate |
Checks whether ego or foe have entered or left the conflict area in the last step and eventually writes the corresponding entry or exit times to eInfo.encounter. For ongoing crossing conflicts, it also manages the evolution of the conflict type.
Definition at line 1235 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::currentType, MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::Encounter::egoConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::Encounter::egoConflictExitTime, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::Encounter::foeConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSDevice_SSM::Encounter::foeConflictExitTime, MSDevice_SSM::Encounter::foeID, MSVehicle::getLastStepDist(), MSBaseVehicle::getLength(), MSVehicle::getPreviousSpeed(), MSVehicle::getSpeed(), INVALID, MAX2(), MSCFModel::passingTime(), SIMTIME, MSDevice_SSM::Encounter::timeSpan, TS, and MSDevice_SSM::EncounterApproachInfo::type.
Referenced by deviceName(), and updateEncounter().
|
staticinherited |
check device-specific options
Definition at line 73 of file MSDevice.cpp.
References MSDevice_Routing::checkOptions().
Referenced by MSFrame::checkOptions().
|
private |
Classifies the current type of the encounter provided some information on the opponents.
[in] | foeInfo | Info on distance to conflict point for the device holder. |
Definition at line 1469 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::FoeInfo::egoConflictLane, MSDevice_SSM::FoeInfo::egoDistToConflictLane, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_CROSSING, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_MERGING, ENCOUNTER_TYPE_MERGING_ADJACENT, ENCOUNTER_TYPE_NOCONFLICT_AHEAD, ENCOUNTER_TYPE_ON_ADJACENT_LANES, findFoeConflictLane(), MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSVehicle::getBackPositionOnLane(), MSLane::getCanonicalSuccessorLane(), MSLink::getCorrespondingExitLink(), MSLane::getEdge(), MSLane::getEntryLink(), MSLane::getFirstInternalInConnection(), MSLink::getFoeLinks(), Named::getID(), MSBaseVehicle::getID(), MSLink::getInternalLaneBefore(), MSLink::getInternalLengthsAfter(), MSLink::getLane(), MSVehicle::getLane(), MSVehicle::getLateralPositionOnLane(), MSBaseVehicle::getLength(), MSLane::getLength(), MSLink::getLengthsBeforeCrossing(), MSLane::getLinkCont(), MSVehicle::getPositionOnLane(), MSLane::getShape(), MSEdge::getToJunction(), MSBaseVehicle::getVehicleType(), MSLink::getViaLane(), MSVehicleType::getWidth(), MSBaseVehicle::getWidth(), MSLane::getWidth(), INVALID, MSLane::isInternal(), M_PI, PositionVector::rotationAtOffset(), MSDevice_SSM::EncounterApproachInfo::type, and MSDevice_SSM::Encounter::typeSpan.
Referenced by deviceName(), and updateEncounter().
|
static |
Clean up remaining devices instances.
Definition at line 173 of file MSDevice_SSM.cpp.
References OutputDevice::closeTag(), createdOutputFiles, flushConflicts(), fn, OutputDevice::getDevice(), instances, and resetEncounters().
Referenced by MSNet::clearAll().
|
staticinherited |
perform cleanup for all devices
Definition at line 95 of file MSDevice.cpp.
References MSDevice_Tripinfo::cleanup(), and MSDevice_Routing::cleanup().
Referenced by MSNet::clearAll(), and MSDevice::getEquipmentRNG().
|
private |
Finalizes the encounter and calculates SSM values.
Definition at line 530 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::ego, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::Encounter::end, MSDevice_SSM::Encounter::foe, MSDevice_SSM::Encounter::foeID, myPastConflicts, qualifiesAsConflict(), SIMTIME, and MSDevice_SSM::Encounter::timeSpan.
Referenced by deviceName(), and processEncounters().
|
staticprivate |
Computes the DRAC (deceleration to avoid a collision) for a lead/follow situation as defined, e.g., in Guido et al. (2011, Safety performance measures: a comparison between microsimulation and observational data) for two vehicles with a given gap. Returns 0.0 if no deceleration is required by the follower to avoid a crash, INVALID if collision is detected.
Definition at line 1121 of file MSDevice_SSM.cpp.
References INVALID.
Referenced by computeDRAC(), determineTTCandDRAC(), and deviceName().
|
staticprivate |
Computes the DRAC a crossing situation, determining the minimal constant deceleration needed for one of the vehicles to reach the conflict area after the other has left. for estimated leaving times, current deceleration is extrapolated, and acceleration is neglected. Returns 0.0 if no deceleration is required by the follower to avoid a crash, INVALID if collision is detected.
[in] | eInfo | infos on the encounter. Used variables: dEntry1,dEntry2 The distances to the conflict area entry dExit1,dExit2 The distances to the conflict area exit v1,v2 The current speeds tEntry1,tEntry2 The estimated conflict entry times (including extrapolation of current acceleration) tExit1,tExit2 The estimated conflict exit times (including extrapolation of current acceleration) |
Definition at line 1138 of file MSDevice_SSM.cpp.
References computeDRAC(), MSDevice_SSM::EncounterApproachInfo::drac, MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictExitTime, MSDevice_SSM::EncounterApproachInfo::encounter, MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictExitTime, MSVehicle::getSpeed(), INVALID, MIN2(), SIMTIME, and toString().
|
private |
Compute current values of the logged SSMs (myMeasures) for the given encounter 'e' and update 'e' accordingly (add point to SSM time-series, update maximal/minimal value) This is called just after adding the current vehicle positions and velocity vectors to the encounter.
Definition at line 784 of file MSDevice_SSM.cpp.
References determinePET(), determineTTCandDRAC(), MSDevice_SSM::EncounterApproachInfo::drac, MSDevice_SSM::Encounter::ego, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_BOTH_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_COLLISION, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_FOLLOWING_PASSED, ENCOUNTER_TYPE_MERGING_ADJACENT, ENCOUNTER_TYPE_MERGING_FOLLOWER, ENCOUNTER_TYPE_MERGING_LEADER, ENCOUNTER_TYPE_MERGING_PASSED, ENCOUNTER_TYPE_NOCONFLICT_AHEAD, ENCOUNTER_TYPE_ON_ADJACENT_LANES, MSDevice_SSM::Encounter::foe, MSDevice_SSM::Encounter::foeID, MSBaseVehicle::getID(), INVALID, myComputeDRAC, myComputeTTC, MSDevice_SSM::EncounterApproachInfo::pet, SIMTIME, toString(), MSDevice_SSM::EncounterApproachInfo::ttc, MSDevice_SSM::EncounterApproachInfo::type, and WRITE_WARNING.
Referenced by deviceName(), and updateEncounter().
|
private |
Computes the time to collision (in seconds) for two vehicles with a given initial gap under the assumption that both maintain their current speeds. Returns INVALID if no collision would occur under this assumption.
Definition at line 1100 of file MSDevice_SSM.cpp.
References INVALID.
Referenced by determineTTCandDRAC(), and deviceName().
|
private |
Makes new encounters for all given vehicles (these should be the ones entering the device's range in the current timestep)
Definition at line 416 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::begin, Named::getID(), INVALID, myActiveEncounters, myExtraTime, myHolderMS, myOldestActiveEncounterBegin, SIMTIME, and updateEncounter().
Referenced by deviceName(), and update().
|
staticprivate |
Calculates the (x,y)-coordinate for the eventually predicted conflict point and stores the result in eInfo.conflictPoint. In case of MERGING and CROSSING, this is the entry point to conflict area for follower In case of FOLLOWING it is the position of leader's back.
Definition at line 623 of file MSDevice_SSM.cpp.
References MSDevice_SSM::EncounterApproachInfo::conflictPoint, MSDevice_SSM::Encounter::conflictPointSpan, MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_BOTH_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_COLLISION, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_MERGING_FOLLOWER, ENCOUNTER_TYPE_MERGING_LEADER, MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSBaseVehicle::getLength(), MSVehicle::getPosition(), MSVehicle::getPositionAlongBestLanes(), SIMTIME, and MSDevice_SSM::EncounterApproachInfo::type.
Referenced by deviceName(), and updateEncounter().
|
private |
Discriminates between different encounter types and correspondingly determines the PET for those cases and writes the result to eInfo.pet (after both vehicles have left the conflict area)
Definition at line 833 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::egoConflictEntryTime, MSDevice_SSM::Encounter::egoConflictExitTime, MSDevice_SSM::Encounter::egoDistsToConflict, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_BOTH_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, MSDevice_SSM::Encounter::foeConflictEntryTime, MSDevice_SSM::Encounter::foeConflictExitTime, MSDevice_SSM::Encounter::foeDistsToConflict, MSDevice_SSM::Encounter::foeID, INVALID, MSDevice_SSM::Encounter::PET, MSDevice_SSM::EncounterApproachInfo::pet, SIMTIME, MSDevice_SSM::Encounter::size(), MSDevice_SSM::EncounterApproachInfo::type, MSDevice_SSM::Encounter::typeSpan, and MSDevice_SSM::Encounter::ConflictPointInfo::value.
Referenced by computeSSMs(), and deviceName().
|
private |
Discriminates between different encounter types and correspondingly determines TTC and DRAC for those cases and writes the result to eInfo.ttc and eInfo.drac.
Definition at line 930 of file MSDevice_SSM.cpp.
References computeDRAC(), computeTTC(), MSDevice_SSM::EncounterApproachInfo::drac, MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictExitTime, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_MERGING_FOLLOWER, ENCOUNTER_TYPE_MERGING_LEADER, MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictExitTime, MSDevice_SSM::Encounter::foeID, MSBaseVehicle::getLength(), MSVehicle::getSpeed(), INVALID, MAX2(), MIN2(), myComputeDRAC, myComputeTTC, SIMTIME, toString(), MSDevice_SSM::EncounterApproachInfo::ttc, MSDevice_SSM::EncounterApproachInfo::type, and WRITE_WARNING.
Referenced by computeSSMs(), and deviceName().
|
inlinevirtual |
return the name for this type of device
Implements MSDevice.
Definition at line 409 of file MSDevice_SSM.h.
References checkConflictEntryAndExit(), classifyEncounter(), closeEncounter(), computeDRAC(), computeSSMs(), computeTTC(), createEncounters(), determineConflictPoint(), determinePET(), determineTTCandDRAC(), estimateConflictTimes(), findFoeConflictLane(), flushConflicts(), MSDevice_SSM::Encounter::foe, generateOutput(), getDetectionRange(), getExtraTime(), getMeasuresAndThresholds(), getOutputFilename(), makeStringWithNAs(), MSDevice_SSM(), processEncounters(), qualifiesAsConflict(), requestsTrajectories(), resetEncounters(), storeEncountersExceedingMaxLength(), updateEncounter(), updatePassedEncounter(), useGeoCoords(), and MSDevice_SSM::Encounter::Trajectory::v.
|
staticprotectedinherited |
Determines whether a vehicle should get a certain device.
[in] | oc | The options container to get the information about assignment from |
[in] | deviceName | The name of the device type |
[in] | v | The vehicle to determine whether it shall be equipped or not |
Definition at line 115 of file MSDevice.cpp.
References TplConvert::_2bool(), MSDevice::deviceName(), OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getFloat(), SUMOVehicle::getID(), MSNet::getInstance(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), MSVehicleControl::getQuota(), OptionsCont::getStringVector(), MSNet::getVehicleControl(), SUMOVehicle::getVehicleType(), OptionsCont::isSet(), Parameterised::knowsParameter(), MSDevice::myEquipmentRNG, MSDevice::myExplicitIDs, and RandHelper::rand().
Referenced by MSDevice_Battery::buildVehicleDevices(), MSDevice_Bluelight::buildVehicleDevices(), MSDevice_Example::buildVehicleDevices(), MSDevice_BTsender::buildVehicleDevices(), MSDevice_BTreceiver::buildVehicleDevices(), MSDevice_Emissions::buildVehicleDevices(), MSDevice_Routing::buildVehicleDevices(), buildVehicleDevices(), and MSDevice::setParameter().
|
staticprivate |
Estimates the time until conflict for the vehicles based on the distance to the conflict entry points. For acceleration profiles, we assume that the acceleration is <= 0 (that is, braking is extrapolated, while for acceleration it is assumed that the vehicle will continue with its current speed)
Definition at line 666 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::egoEstimatedConflictExitTime, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::encounter, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_BOTH_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_COLLISION, ENCOUNTER_TYPE_CROSSING, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_MERGING, ENCOUNTER_TYPE_MERGING_ADJACENT, ENCOUNTER_TYPE_MERGING_FOLLOWER, ENCOUNTER_TYPE_MERGING_LEADER, ENCOUNTER_TYPE_NOCONFLICT_AHEAD, ENCOUNTER_TYPE_ON_ADJACENT_LANES, MSCFModel::estimateArrivalTime(), MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictEntryTime, MSDevice_SSM::EncounterApproachInfo::foeEstimatedConflictExitTime, MSDevice_SSM::Encounter::foeID, MSVehicle::getAcceleration(), MSVehicle::getCarFollowModel(), MSVehicleType::getLength(), MSVehicle::getMaxSpeedOnLane(), MSVehicle::getSpeed(), MSBaseVehicle::getVehicleType(), INVALID, MIN2(), SIMTIME, toString(), MSDevice_SSM::EncounterApproachInfo::type, and WRITE_WARNING.
Referenced by deviceName(), and updateEncounter().
|
private |
Computes the conflict lane for the foe.
foe | Foe vehicle | |
egoConflictLane | Lane, on which the ego would enter the possible conflict | |
routeToConflict,Series | of edges, that were traced back from egoConflictLane during findSurrounding Vehicles, when collecting the foe vehicle | |
[out] | distToConflictLane,distance | to conflictlane entry link (may be negative if foe is already on the conflict lane) |
Definition at line 1903 of file MSDevice_SSM.cpp.
References MSVehicle::getBestLanesContinuation(), MSLane::getEdge(), Named::getID(), MSBaseVehicle::getID(), MSLink::getInternalLengthsAfter(), MSVehicle::getLane(), MSLane::getLength(), MSLane::getLinkCont(), MSLane::getLinkTo(), MSVehicle::getPositionOnLane(), MSEdge::getToJunction(), MSLink::getViaLane(), MSLane::isInternal(), myRange, SIMTIME, and toString().
Referenced by classifyEncounter(), and deviceName().
|
static |
Returns all vehicles, which are within the given range of the given vehicle.
veh | The ego vehicle, that forms the origin for the scan |
range | The range to be scanned. |
Definition at line 2209 of file MSDevice_SSM.cpp.
References MSVehicle::getBestLanesContinuation(), MSBaseVehicle::getCurrentRouteEdge(), MSLane::getEdge(), MSEdge::getFromJunction(), Named::getID(), MSBaseVehicle::getID(), MSJunction::getIncoming(), MSLink::getInternalLengthsAfter(), MSVehicle::getLane(), MSBaseVehicle::getLength(), MSLane::getLength(), MSEdge::getLength(), MSLane::getLinkCont(), MSVehicle::getPositionOnLane(), MSEdge::getToJunction(), getUpstreamVehicles(), getVehiclesOnJunction(), MSLink::getViaLane(), MSEdge::isInternal(), MSLane::isInternal(), MSVehicle::isOnRoad(), SIMTIME, and toString().
Referenced by update().
|
private |
Writes out all past conflicts that have begun earlier than the oldest active encounter.
[in] | all | Whether all conflicts should be flushed or only those for which no active encounters with earlier begin can exist |
Definition at line 1985 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::begin, Named::getID(), myOldestActiveEncounterBegin, myPastConflicts, SIMTIME, and writeOutConflict().
Referenced by cleanup(), deviceName(), updateAndWriteOutput(), and ~MSDevice_SSM().
|
virtual |
Finalizes output. Called on vehicle removal.
[in] | os | The stream to write the information into |
IOError | not yet implemented |
Reimplemented from MSDevice.
Definition at line 2538 of file MSDevice_SSM.cpp.
Referenced by deviceName().
|
inlineinherited |
Definition at line 234 of file MSMoveReminder.h.
References MSMoveReminder::myDescription, and MSMoveReminder::removeFromVehicleUpdateValues().
Referenced by MSBaseVehicle::getSingularType(), MSMeanData_Net::MSLaneMeanDataValues::notifyMoveInternal(), and MSMeanData_Net::MSLaneMeanDataValues::write().
|
staticprivate |
Definition at line 2595 of file MSDevice_SSM.cpp.
References TplConvert::_2double(), OptionsCont::getFloat(), SUMOVehicle::getID(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), INVALID, Parameterised::knowsParameter(), and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
inlinestaticinherited |
Definition at line 90 of file MSDevice.h.
References MSDevice::cleanupAll(), MSDevice::deviceName(), and MSDevice::myEquipmentRNG.
Referenced by NLBuilder::init(), and GUILoadThread::run().
|
staticprivate |
Definition at line 2621 of file MSDevice_SSM.cpp.
References TplConvert::_2double(), DEFAULT_EXTRA_TIME, OptionsCont::getFloat(), SUMOVehicle::getID(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), INVALID, Parameterised::knowsParameter(), toString(), and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
inlineinherited |
Returns the vehicle that holds this device.
Definition at line 119 of file MSDevice.h.
References MSDevice::myHolder.
Referenced by MSChargingStation::addChargeValueForOutput().
|
inlineinherited |
Returns the id.
Definition at line 74 of file Named.h.
Referenced by NIImporter_SUMO::_loadNetwork(), MSLCM_LC2013::adaptSpeedToPedestrians(), MSVehicle::adaptToLeader(), MSVehicle::adaptToLeaders(), LaneStoringVisitor::add(), MSPModel_Striping::add(), MSVehicleTransfer::add(), PCPolyContainer::add(), Named::StoringVisitor::add(), MSDetectorControl::add(), ShapeContainer::add(), IntermodalRouter< E, L, N, V >::addAccess(), NLTriggerBuilder::addAccess(), RORouteDef::addAlternative(), MSLane::addApproachingLane(), NBLoadedSUMOTLDef::addConnection(), NLHandler::addConnection(), NIXMLConnectionsHandler::addCrossing(), MSPModel_Striping::addCrossingVehs(), RODFDetectorCon::addDetector(), RONet::addEdge(), NBParkingCont::addEdges2Keep(), ROJTREdge::addFollowerProbability(), MSTLLogicControl::TLSLogicVariants::addLogic(), RONet::addNode(), NIImporter_SUMO::addPhase(), GUIEdge::addRerouter(), NBEdge::addRestrictedLane(), RONet::addRouteDef(), NBDistrict::addSink(), NBDistrict::addSource(), NIXMLEdgesHandler::addSplit(), NBTrafficLightLogic::addStep(), ROVehicle::addStop(), MSRouteHandler::addStop(), MSVehicle::addStop(), MSNet::addStoppingPlace(), NBEdge::addStraightConnections(), NIXMLTrafficLightsHandler::addTlConnection(), NIVissimDisturbance::addToNode(), MSVehicle::addTraciStop(), MSVehicle::addTraciStopAtStoppingPlace(), AGActivityTripWriter::addTrip(), NIXMLConnectionsHandler::addWalkingArea(), NBEdge::append(), NBPTStopCont::assignAndCreatNewPTStopAsNeeded(), NBPTStopCont::assignPTStopToEdgeOfClosestPlatform(), GUITrafficLightLogicWrapper::begin2TrackPhases(), MSTransportable::Stage_Waiting::beginEventOutput(), MSTransportable::Stage_Driving::beginEventOutput(), MSPModel_Striping::blockedAtDist(), MSLink::blockedAtTime(), MSLink::blockedByFoe(), NLEdgeControlBuilder::build(), NIVisumTL::build(), RODFNet::buildApproachList(), MSSOTLE2Sensors::buildContinueSensior(), MSSOTLE2Sensors::buildCountSensorForLane(), MSSOTLE2Sensors::buildCountSensorForOutLane(), NBNode::buildCrossings(), NBNode::buildCrossingsAndWalkingAreas(), NIImporter_VISUM::buildDistrictNode(), NLDetectorBuilder::buildE2Detector(), NIVissimConnection::buildEdgeConnections(), RODFNet::buildEdgeFlowMap(), GNETLSEditorFrame::buildIinternalLanes(), NBEdge::buildInnerEdges(), NGEdge::buildNBEdge(), NIVissimEdge::buildNBEdge(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), MELoop::buildSegmentsFor(), MSSOTLE2Sensors::buildSensorForLane(), MSSOTLE2Sensors::buildSensorForOutLane(), NBNode::buildWalkingAreas(), MSBaseVehicle::calculateArrivalParams(), MSSwarmTrafficLightLogic::calculateEtaDiff(), MSSwarmTrafficLightLogic::calculateEtaRatio(), MSSOTLPolicyBasedTrafficLightLogic::canRelease(), MSLaneChanger::changeOpposite(), MELoop::changeSegment(), MSSimpleTrafficLightLogic::changeStepAndDuration(), MSEdge::checkAndRegisterBiDirEdge(), MSLane::checkForPedestrians(), NBEdge::checkGeometry(), NBEdgeCont::checkGrade(), MSVehicleTransfer::checkInsertions(), MSVehicle::checkLinkLeader(), NBEdgeCont::checkOverlap(), MSDevice_Battery::checkParam(), MSE2Collector::checkPositioning(), MSVehicle::checkRewindLinkLanes(), MSSwarmTrafficLightLogic::choosePolicy(), classifyEncounter(), NBTrafficLightLogic::closeBuilding(), ODDistrictHandler::closeDistrict(), NLHandler::closeEdge(), RORouteHandler::closeRouteDistribution(), RORouteHandler::closeVehicle(), NBTrafficLightDefinition::collectAllLinks(), NBLoadedSUMOTLDef::collectEdges(), NBTrafficLightDefinition::collectEdges(), NBLoadedSUMOTLDef::collectEdgeVectors(), NBLoadedTLDef::collectLinks(), ROJTRRouter::compute(), NBTrafficLightDefinition::compute(), NBEdge::computeAngle(), NBEdge::computeLaneShapes(), NBNode::computeLogic(), NBOwnTLDef::computeLogicAndConts(), NBNode::computeNodeShape(), NBNodeShapeComputer::computeNodeShapeDefault(), NBNodeShapeComputer::computeNodeShapeSmall(), RODFNet::computeRoutesFor(), NBTrafficLightLogicCont::computeSingleLogic(), NBNode::computeSmoothShape(), NBTurningDirectionsComputer::computeTurnDirectionsForNode(), NGNet::connect(), MSSOTLWaveTrafficLightLogic::countVehicles(), MSSOTLE2Sensors::countVehicles(), createEncounters(), GUINet::createTLWrapper(), MSDeterministicHiLevelTrafficLightLogic::decideNextPhase(), MSSOTLPolicyBasedTrafficLightLogic::decideNextPhase(), MSSwarmTrafficLightLogic::decideNextPhase(), MSDeterministicHiLevelTrafficLightLogic::decidePolicy(), MSSwarmTrafficLightLogic::decidePolicy(), MSLane::detectCollisionBetween(), MSLane::detectCollisions(), MSLane::detectPedestrianJunctionCollision(), NIVissimDistrictConnection::dict_BuildDistricts(), NBEdge::divideOnEdges(), NBEdge::divideSelectedLanesOnEdges(), MSTransportable::Stage_Waiting::endEventOutput(), MSTransportable::Stage_Driving::endEventOutput(), MSE3Collector::enter(), MSVehicle::enterLaneAtMove(), METriggeredCalibrator::execute(), MSCalibrator::execute(), Command_SaveTLSState::execute(), Command_SaveTLSSwitchStates::execute(), Command_SaveTLSSwitches::execute(), MSVTypeProbe::execute(), MSPModel_Striping::MovePedestrians::execute(), MSTrafficLightLogic::SwitchCommand::execute(), MSVehicle::executeMove(), MSLane::executeMovements(), NBNodeCont::extract(), NBTrafficLightLogicCont::extract(), NBEdgeCont::extract(), libsumo::Helper::findCloserLane(), findFoeConflictLane(), libsumo::Simulation::findIntermodalRoute(), findSurroundingVehicles(), flushConflicts(), NBTrafficLightDefinition::forbids(), NBRampsComputer::fulfillsRampConstraints(), RODFDetectorCon::getAggFlowFor(), RODFDetectorCon::getAnyDetectorForEdge(), MSPModel_Striping::getArbitraryPath(), GNEConnection::getAttribute(), MSVehicle::getBackPosition(), MSVehicle::getBackPositionOnLane(), libsumo::Vehicle::getBestLanes(), NBOwnTLDef::getBestPair(), MSVehicle::getCenterOnEdge(), MSDevice_Battery::getChargingStationID(), NBEdge::getConnection(), NBEdge::getConnectionRef(), libsumo::TrafficLight::getControlledLinks(), NBEdge::getCrossingAngle(), RODFNet::getDetectorEdge(), libsumo::Lane::getEdgeID(), MSMeanData::getEdgeID(), NBEdge::getFirstNonPedestrianLane(), MSLane::getFollower(), MSLane::getFollowersOnConsecutive(), libsumo::InductionLoop::getLaneID(), libsumo::LaneArea::getLaneID(), libsumo::Vehicle::getLaneID(), MSLane::getLastVehicleInformation(), MSVehicle::getLatOffset(), MSLane::getLeader(), MSLink::getLeaderInfo(), MSLane::getLeaderOnConsecutive(), MSLane::getLeadersOnConsecutive(), MSLink::getLengthBeforeCrossing(), libsumo::Lane::getLinks(), MSLane::getLinkTo(), MSTLLogicControl::TLSLogicVariants::getLogicInstantiatingOff(), MSDeterministicHiLevelTrafficLightLogic::getMeanSpeedForInputLanes(), MSDeterministicHiLevelTrafficLightLogic::getMeanSpeedForOutputLanes(), NIImporter_VISUM::getNamedEdgeContinuating(), MSPerson::getNextEdge(), MSPModel_Striping::getNextLane(), MSLane::getOppositeFollower(), MSLane::getOppositeLeader(), MSLane::getOppositePos(), GUITrafficLightLogicWrapper::getParameterWindow(), GUIInstantInductLoop::MyWrapper::getParameterWindow(), GUIMEInductLoop::MyWrapper::getParameterWindow(), GUIVehicle::getParameterWindow(), GUIE2Collector::MyWrapper::getParameterWindow(), GUIInductLoop::MyWrapper::getParameterWindow(), MSLane::getPartialBehind(), MSSOTLTrafficLightLogic::getPhaseIndexWithMaxCTS(), MSSwarmTrafficLightLogic::getPheromoneForInputLanes(), MSSwarmTrafficLightLogic::getPheromoneForOutputLanes(), GUITrafficLightLogicWrapper::getPopUpMenu(), NLTriggerBuilder::getPosition(), NLDetectorBuilder::getPositionChecking(), NBNode::getPossiblySplittedIncoming(), NBNode::getPossiblySplittedOutgoing(), NIImporter_VISUM::getReversedContinuating(), NBPTStopCont::getReverseStop(), libsumo::Person::getRoadID(), libsumo::Vehicle::getRoadID(), libsumo::Vehicle::getRouteID(), MSNet::getStoppingPlaceID(), getUpstreamVehicles(), getVehiclesOnJunction(), MSTransportable::Stage_Driving::getWaitingDescription(), MSVehicleControl::getWaitingVehicle(), MSLink::getZipperSpeed(), NBNode::guessCrossings(), RODFDetectorCon::guessEmptyFlows(), NBEdgeCont::guessSidewalks(), NBNodeCont::guessTLs(), GUITLLogicPhasesTrackerWindow::GUITLLogicPhasesTrackerWindow(), MSLane::handleCollisionBetween(), NBEdgeCont::ignoreFilterMatch(), MSVehicle::ignoreRed(), MSDeterministicHiLevelTrafficLightLogic::init(), MSRailSignal::init(), MSDelayBasedTrafficLightLogic::init(), MSActuatedTrafficLightLogic::init(), MSTrafficLightLogic::init(), MSSOTLTrafficLightLogic::init(), MSSwarmTrafficLightLogic::init(), NBEdge::init(), MSE2Collector::initAuxiliaries(), NIImporter_SUMO::initTrafficLightLogic(), NIXMLTrafficLightsHandler::initTrafficLightLogic(), NBDistrictCont::insert(), NBNodeCont::insert(), NBTrafficLightLogicCont::insert(), NBEdgeCont::insert(), MSEdge::insertVehicle(), MSLane::integrateNewVehicle(), IntermodalNetwork< E, L, N, V >::IntermodalNetwork(), GNEJunction::invalidateTLS(), NBNode::invalidateTLS(), MSTLLogicControl::isActive(), MSPedestrianPushButton::isActiveForEdge(), MSPedestrianPushButton::isActiveOnAnySideOfTheRoad(), RODFNet::isDestination(), RODFNet::isFalseSource(), MSLane::isInsertionSuccess(), RODFNet::isSource(), MSSOTLTrafficLightLogic::isThresholdPassed(), NBNodeCont::joinJunctions(), NBEdgeCont::joinSameNodeConnectingEdges(), MSAbstractLaneChangeModel::laneChangeOutput(), MSE3Collector::leave(), MSE3Collector::leaveFront(), MSDevice_BTreceiver::BTreceiverUpdate::leaveRange(), MSPedestrianPushButton::loadCrossingEdgeMap(), NIImporter_OpenDrive::loadNetwork(), MSPedestrianPushButton::loadPushButtons(), NBEdge::MainDirections::MainDirections(), ODDistrictCont::makeDistricts(), MSE2Collector::makeVehicleInfo(), GNEJunction::markAsModified(), MSSOTLE2Sensors::meanVehiclesSpeed(), METriggeredCalibrator::METriggeredCalibrator(), MSPModel_Striping::moveInDirection(), MSPModel_Striping::moveInDirectionOnLane(), NBRampsComputer::moveRampRight(), MSPModel_Striping::PState::moveToNextLane(), libsumo::Person::moveToXY(), libsumo::Vehicle::moveToXY(), libsumo::Helper::moveToXYMap(), MSCalibrator::MSCalibrator(), MSChargingStation::MSChargingStation(), MSDevice_Battery::MSDevice_Battery(), MSE2Collector::MSE2Collector(), NBLoadedTLDef::myCompute(), NIXMLEdgesHandler::myEndElement(), NIImporter_SUMO::myEndElement(), NIXMLConnectionsHandler::myStartElement(), MSCalibrator::myStartElement(), MSLaneSpeedTrigger::myStartElement(), MSTriggeredRerouter::myStartElement(), NBConnection::NBConnection(), NBRequest::NBRequest(), MSPModel_Striping::nextBlocking(), MSDevice_BTreceiver::notifyEnter(), MSDevice_BTsender::notifyEnter(), MSMeanData::MeanDataValues::notifyEnter(), MSDevice_Example::notifyEnter(), MSDevice_Bluelight::notifyEnter(), MSMeanData_Net::MSLaneMeanDataValues::notifyEnter(), MSDevice_Tripinfo::notifyEnter(), MSTriggeredRerouter::notifyEnter(), MSMeanData::MeanDataValueTracker::notifyEnter(), MSE2Collector::notifyEnter(), notifyEnter(), MSDevice_Transportable::notifyLeave(), MSE3Collector::MSE3EntryReminder::notifyLeave(), MSDevice_Bluelight::notifyLeave(), MSDevice_Example::notifyLeave(), MSDevice_BTreceiver::notifyLeave(), MSDevice_BTsender::notifyLeave(), MSDevice_Tripinfo::notifyLeave(), MSE3Collector::MSE3LeaveReminder::notifyLeave(), MSE2Collector::notifyLeave(), notifyLeave(), MSDevice_Example::notifyMove(), MSDevice_BTreceiver::notifyMove(), MSDevice_BTsender::notifyMove(), MSMeanData::MeanDataValues::notifyMove(), MSE2Collector::notifyMove(), notifyMove(), MSMeanData_Net::MSLaneMeanDataValues::notifyMoveInternal(), GUIViewTraffic::onGamingClick(), GNEViewNet::onLeftBtnPress(), MSLink::opened(), RORouteHandler::openRoute(), NBTurningDirectionsComputer::combination_by_angle_sorter::operator()(), RODFNet::idComp::operator()(), NBNetBuilder::by_id_sorter::operator()(), NBOwnTLDef::edge_by_incoming_priority_sorter::operator()(), NBContHelper::same_connection_edge_sorter::operator()(), NBContHelper::edge_by_angle_to_nodeShapeCentroid_sorter::operator()(), NBNode::nodes_by_id_sorter::operator()(), MSEdge::by_id_sorter::operator()(), MSLane::incoming_lane_priority_sorter::operator()(), MSLane::outgoing_lane_priority_sorter::operator()(), NIImporter_VISUM::parse_EdgePolys(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_Turns(), NIImporter_VISUM::parse_TurnsToSignalGroups(), NLTriggerBuilder::parseAndBuildCalibrator(), NIXMLConnectionsHandler::parseDeprecatedLaneDefinition(), NIXMLConnectionsHandler::parseLaneBound(), MSRouteHandler::parseWalkPositions(), NBLoadedSUMOTLDef::patchIfCrossingsAdded(), MSLCM_LC2013::patchSpeed(), MSLCM_SL2015::patchSpeed(), NBLoadedTLDef::SignalGroup::patchTYellow(), MSVehicle::planMove(), MSVehicle::planMoveInternal(), MSLane::planMovements(), MSInternalJunction::postloadInit(), MSRightOfWayJunction::postloadInit(), NBEdge::prepareEdgePriorities(), AGStreet::print(), processEncounters(), MSVehicle::processLinkAproaches(), MSVehicle::processNextStop(), TraCIServerAPI_Vehicle::processSet(), NIXMLNodesHandler::processTrafficLightDefinitions(), NWWriter_SUMO::prohibitionConnection(), MSDelayBasedTrafficLightLogic::proposeProlongation(), MSPModel_Striping::PState::PState(), NBEdgeCont::recheckLanes(), NBEdge::recheckLanes(), NBEdgeCont::recheckPostProcessConnections(), NIImporter_OpenStreetMap::reconstructLayerElevation(), NBLoadedSUMOTLDef::reconstructLogic(), NBNodeCont::remapIDs(), NBEdgeCont::remapIDs(), NBLoadedTLDef::SignalGroup::remapIncoming(), NBLoadedTLDef::SignalGroup::remapOutgoing(), MSLink::removeApproaching(), NBNodeCont::removeIsolatedRoads(), MSVehicle::removePassedDriveItems(), MSCalibrator::removePending(), NBNode::removeSelfLoops(), NBEdgeCont::removeUnwishedEdges(), NBNodeCont::rename(), NBEdgeCont::rename(), GNENet::renameEdge(), GNENet::renameJunction(), RORouteDef::repairCurrentRoute(), NBConnection::replaceFrom(), MSVehicle::replaceParkingArea(), MSBaseVehicle::replaceRouteEdges(), NBConnection::replaceTo(), NIImporter_DlrNavteq::TrafficlightsHandler::report(), NIImporter_DlrNavteq::ConnectedLanesHandler::report(), MSBaseVehicle::reroute(), MSTriggeredRerouter::rerouteParkingArea(), MSLane::resetManeuverReservation(), MSLane::resetPartialOccupation(), NBEdge::restoreRestrictedLane(), GNEEdge::retrieveGNEConnection(), NIXMLTrafficLightsHandler::retrieveLaneIndex(), RODFNet::revalidateFlows(), NBPTLineCont::reviseStops(), MSPerson::MSPersonStage_Walking::routeOutput(), MSPerson::MSPersonStage_Driving::routeOutput(), RONet::saveAndRemoveRoutesUntil(), MSDevice_Vehroutes::saveState(), MSDevice::saveState(), MSDevice_Tripinfo::saveState(), MSBaseVehicle::saveState(), MSLane::saveState(), GUIVehicle::selectBlockingFoes(), MSE2Collector::selectLanes(), MSLink::setApproaching(), NBNodeCont::setAsTLControlled(), GNEEdge::setAttribute(), MSChargingStation::setChargeDelay(), MSChargingStation::setChargingPower(), NBEdge::setControllingTLInformation(), MSChargingStation::setEfficency(), GNEJunction::setLogicValid(), MSLane::setManeuverReservation(), MSDevice_Battery::setMaximumBatteryCapacity(), NBEdge::setNodeBorder(), NIXMLEdgesHandler::setNodes(), MSLane::setPartialOccupation(), MSDevice_Battery::setPowerMax(), MSLink::setRequestInformation(), MSTLLogicControl::TLSLogicVariants::setStateInstantiatingOnline(), MSDevice_Battery::setStoppingTreshold(), NBLoadedSUMOTLDef::setTLControllingInformation(), NBOwnTLDef::setTLControllingInformation(), NBTrafficLightLogicCont::setTLControllingInformation(), NBLoadedTLDef::setTLControllingInformation(), NBEdge::shiftPositionAtNode(), NBEdgeCont::splitAt(), IntermodalRouter< E, L, N, V >::splitEdge(), MSLaneChangerSublane::startChangeSublane(), MSStopOut::stopEnded(), MSLane::succLinkSec(), GUITrafficLightLogicWrapper::switchTLSLogic(), MELoop::teleportVehicle(), METriggeredCalibrator::tryEmit(), MSSOTLTrafficLightLogic::trySwitch(), update(), MSVehicle::updateBestLanes(), MSLCM_SL2015::updateCFRelated(), MSSOTLTrafficLightLogic::updateCTS(), GNETLSEditorFrame::updateDescription(), MSVehicle::updateDriveItems(), MSSwarmTrafficLightLogic::updatePheromoneLevels(), MSSwarmTrafficLightLogic::updateSensitivities(), MSAbstractLaneChangeModel::updateTargetLane(), MSDevice_BTreceiver::BTreceiverUpdate::updateVisibility(), MSPModel_Striping::PState::walk(), MSLCM_LC2013::wantsChange(), MSLCM_SL2015::wantsChange(), MSLCM_SL2015::wantsChangeSublane(), NBParking::write(), MSBatteryExport::write(), MSEmissionExport::write(), MSFCDExport::write(), MSInstantInductLoop::write(), MSLink::writeApproaching(), NBSign::writeAsPOI(), NWWriter_DlrNavteq::writeConnectedLanes(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), MSFullExport::writeEdge(), MSXMLRawOut::writeEdge(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_SUMO::writeInternalConnections(), NWWriter_OpenDrive::writeInternalEdge(), writeInterval(), NWWriter_SUMO::writeJunction(), MSQueueExport::writeLane(), MSFullExport::writeLane(), NWWriter_DlrNavteq::writeLinksUnsplitted(), NWWriter_OpenDrive::writeNetwork(), NWWriter_XML::writeNodes(), NWWriter_DlrNavteq::writeNodesUnsplitted(), NWWriter_OpenDrive::writeNormalEdge(), NWWriter_DlrNavteq::writeProhibitedManoeuvres(), NWWriter_SUMO::writeRoundabout(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_DlrNavteq::writeTrafficSignals(), MSFCDExport::writeTransportable(), RODFDetectorCon::writeValidationDetectors(), MSFullExport::writeVehicles(), SUMOPolygon::writeXML(), PointOfInterest::writeXML(), MSRouteProbe::writeXMLOutput(), MSInductLoop::writeXMLOutput(), MSE2Collector::writeXMLOutput(), and RONet::~RONet().
|
inlinestaticinherited |
get an identifier for Named-like object which may be Null
Definition at line 67 of file Named.h.
Referenced by MSLCM_LC2013::_wantsChange(), MSLCM_SL2015::_wantsChangeSublane(), MSLaneChanger::changeOpposite(), MSLaneChanger::continueChange(), MSLane::detectCollisions(), MSVehicle::getBackPositionOnLane(), NBOwnTLDef::getBestPair(), MSVehicle::getCenterOnEdge(), NBEdge::Connection::getDescription(), MSLane::getFollowersOnConsecutive(), MSVehicle::getLatOffset(), GUIVehicle::getParameterWindow(), MSLaneChanger::getRealLeader(), NBEdge::init(), MSLane::isInsertionSuccess(), MSPModel_Striping::PState::moveToNextLane(), libsumo::Person::moveToXY(), libsumo::Vehicle::moveToXY(), libsumo::Helper::moveToXYMap(), operator<<(), NBEdge::recheckLanes(), MSTriggeredRerouter::rerouteParkingArea(), MSLCM_SL2015::saveBlockerLength(), MSLCM_LC2013::saveBlockerLength(), MSLCM_LC2013::slowDownForBlocked(), MSLCM_SL2015::slowDownForBlocked(), MSLaneChangerSublane::startChangeSublane(), toString(), MSLeaderInfo::toString(), MSLeaderDistanceInfo::toString(), MSCriticalFollowerDistanceInfo::toString(), MSVehicle::updateBestLanes(), and MSAbstractLaneChangeModel::updateShadowLane().
|
static |
returns all currently existing SSM devices
Definition at line 168 of file MSDevice_SSM.cpp.
References instances.
Referenced by MSNet::writeOutput().
|
inlineinherited |
Returns the lane the reminder works on.
Definition at line 89 of file MSMoveReminder.h.
References MSMoveReminder::myLane.
Referenced by MSDevice_Tripinfo::computeLengthAndDuration(), libsumo::InductionLoop::getLaneID(), libsumo::LaneArea::getLaneID(), GUIInstantInductLoop::MyWrapper::getParameterWindow(), GUIE2Collector::MyWrapper::getParameterWindow(), GUIInductLoop::MyWrapper::getParameterWindow(), TraCIServerAPI_InductionLoop::getPosition(), libsumo::InductionLoop::getTree(), GUIInstantInductLoop::MyWrapper::MyWrapper(), GUIInductLoop::MyWrapper::MyWrapper(), MSDevice_Vehroutes::notifyEnter(), MSMeanData_Amitran::MSLaneMeanDataValues::notifyEnter(), MSMeanData_Net::MSLaneMeanDataValues::notifyEnter(), MSDevice_Tripinfo::notifyEnter(), MSMeanData_Net::MSLaneMeanDataValues::notifyLeave(), MSDevice_Tripinfo::notifyLeave(), MSMeanData::MeanDataValues::notifyMove(), and MSMeanData::writeEdge().
|
staticprivate |
Definition at line 2677 of file MSDevice_SSM.cpp.
References TplConvert::_2double(), AVAILABLE_SSMS, DEFAULT_THRESHOLD_DRAC, DEFAULT_THRESHOLD_PET, DEFAULT_THRESHOLD_TTC, SUMOVehicle::getID(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), OptionsCont::getString(), StringTokenizer::getVector(), SUMOVehicle::getVehicleType(), StringTokenizer::hasNext(), Parameterised::knowsParameter(), StringTokenizer::next(), WRITE_ERROR, and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
staticprivate |
Definition at line 2548 of file MSDevice_SSM.cpp.
References SUMOVehicle::getID(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), Parameterised::knowsParameter(), and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
inlinevirtualinherited |
try to retrieve the given parameter from this device. Throw exception for unsupported key
Reimplemented in MSDevice_Routing, MSDevice_Bluelight, MSDevice_Example, MSDevice_Transportable, and MSDevice_Battery.
Definition at line 154 of file MSDevice.h.
References MSDevice::deviceName().
|
static |
Collects all vehicles within range 'range' upstream of the position 'pos' on the edge 'edge' into foeCollector.
Definition at line 2395 of file MSDevice_SSM.cpp.
References MSDevice_SSM::FoeInfo::egoConflictLane, MSDevice_SSM::FoeInfo::egoDistToConflictLane, MSEdge::getFromJunction(), Named::getID(), MSBaseVehicle::getID(), MSJunction::getIncoming(), MSEdge::getInternalFollowingLengthTo(), MSEdge::getLanes(), MSBaseVehicle::getLength(), MSEdge::getLength(), MSVehicle::getPositionOnLane(), getVehiclesOnJunction(), MSLane::getVehiclesSecure(), MSEdge::isInternal(), MSLane::releaseVehicles(), and SIMTIME.
Referenced by findSurroundingVehicles().
|
static |
Collects all vehicles on the junction into foeCollector.
Definition at line 2478 of file MSDevice_SSM.cpp.
References MSDevice_SSM::FoeInfo::egoConflictLane, MSDevice_SSM::FoeInfo::egoDistToConflictLane, Named::getID(), MSJunction::getInternalLanes(), MSLane::getLinkCont(), MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SIMTIME.
Referenced by findSurroundingVehicles(), and getUpstreamVehicles().
|
staticprotectedinherited |
Adds common command options that allow to assign devices to vehicles.
[in] | deviceName | The name of the device type |
[in] | optionsTopic | The options topic into which the options shall be added |
!! describe
!! describe
!! describe
Definition at line 101 of file MSDevice.cpp.
References OptionsCont::addDescription(), OptionsCont::addSynonyme(), and OptionsCont::doRegister().
Referenced by MSDevice_Battery::insertOptions(), MSDevice_Bluelight::insertOptions(), MSDevice_Example::insertOptions(), MSDevice_BTsender::insertOptions(), MSDevice_BTreceiver::insertOptions(), MSDevice_Emissions::insertOptions(), MSDevice_Routing::insertOptions(), insertOptions(), and MSDevice::setParameter().
|
static |
Inserts MSDevice_SSM-options.
Definition at line 189 of file MSDevice_SSM.cpp.
References OptionsCont::addDescription(), OptionsCont::addOptionSubTopic(), DEFAULT_EXTRA_TIME, DEFAULT_RANGE, OptionsCont::doRegister(), MSDevice::insertDefaultAssignmentOptions(), and toString().
Referenced by MSDevice::insertOptions().
|
virtualinherited |
Loads the state of the device from the given description.
The default implementation does nothing.
[in] | attrs | XML attributes describing the current state |
Reimplemented in MSDevice_Tripinfo, and MSDevice_Vehroutes.
Definition at line 157 of file MSDevice.cpp.
Referenced by MSDevice::generateOutput().
|
staticprivate |
make a string of a double vector and treat a special value as invalid ("NA")
v | vector to be converted to string |
NA | value to be treated as NA |
sep | separator for values in string |
Definition at line 2096 of file MSDevice_SSM.cpp.
References toString().
Referenced by deviceName(), and writeOutConflict().
|
staticprivate |
Definition at line 2105 of file MSDevice_SSM.cpp.
References toString().
|
virtual |
Called whenever the holder enteres a lane.
[in] | veh | The entering vehicle. |
[in] | reason | Reason for leaving the lane |
[in] | enteredLane | The lane entered. |
Reimplemented from MSMoveReminder.
Definition at line 2174 of file MSDevice_SSM.cpp.
References MSLane::getEdge(), Named::getID(), SUMOVehicle::getLane(), and UNUSED_PARAMETER.
|
virtual |
Called whenever the holder leaves a lane.
[in] | veh | The leaving vehicle. |
[in] | lastPos | Position on the lane when leaving. |
[in] | reason | Reason for leaving the lane |
[in] | enteredLane | The lane entered. |
Reimplemented from MSMoveReminder.
Definition at line 2185 of file MSDevice_SSM.cpp.
References MSLane::getEdge(), Named::getID(), SUMOVehicle::getLane(), and UNUSED_PARAMETER.
|
virtual |
Checks for waiting steps when the vehicle moves.
[in] | veh | Vehicle that notifies. |
[in] | oldPos | Position before move. |
[in] | newPos | Position after move with newSpeed. |
[in] | newSpeed | Moving speed. |
Reimplemented from MSMoveReminder.
Definition at line 2197 of file MSDevice_SSM.cpp.
References Named::getID(), and UNUSED_PARAMETER.
|
inlinevirtualinherited |
Internal notification about the vehicle moves.
Indicator if the reminders is still active for the passed vehicle/parameters. If false, the vehicle will erase this reminder from it's reminder-container.
[in] | veh | Vehicle that asks this reminder. |
[in] | frontOnLane | time the front of the vehicle spent on the lane. |
[in] | timeOnLane | time some part of the vehicle spent on the lane. |
[in] | meanSpeedFrontOnLane | Average speed for the time that the front is on the lane. |
[in] | meanSpeedVehicleOnLane | Average speed for the time that the vehicle is on the lane (with front or back). |
[in] | travelledDistanceFrontOnLane | distance travelled while overlapping with the lane. |
[in] | travelledDistanceVehicleOnLane | distance travelled while front was on the lane. |
[in] | meanLengthOnLane | the average length of the vehicle's part on the lane during the last step (==complete length in meso case) |
Reimplemented in MSMeanData::MeanDataValueTracker, MSDevice_Tripinfo, MSMeanData_Net::MSLaneMeanDataValues, MSMeanData_Amitran::MSLaneMeanDataValues, MSMeanData_Harmonoise::MSLaneMeanDataValues, and MSMeanData_Emissions::MSLaneMeanDataValues.
Definition at line 212 of file MSMoveReminder.h.
References UNUSED_PARAMETER.
Referenced by MSMeanData::MeanDataValues::notifyMove(), and MSMoveReminder::updateDetector().
|
private |
Invalidated assignment operator.
|
private |
Finds encounters for which the foe vehicle has disappeared from range. remainingExtraTime is decreased until it reaches zero, which triggers closing the encounter. If an ended encounter is qualified as a conflict, it is transferred to myPastConflicts All vehicles for which an encounter instance already exists (vehicle is already tracked) are removed from 'foes' during processing.
[in] | foes | Foe vehicles that have been found by findSurroundingVehicles() |
[in] | forceClose | whether encounters for which the foe is not in range shall be closed immediately, disregarding the remaining extra time (is requested by resetEncounters()). |
Definition at line 448 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::begin, closeEncounter(), MSDevice_SSM::Encounter::closingRequested, MSDevice_SSM::Encounter::foe, MSDevice_SSM::Encounter::foeID, Named::getID(), MSNet::getInstance(), MSDevice_SSM::Encounter::getRemainingExtraTime(), MSVehicleControl::getVehicle(), MSNet::getVehicleControl(), INVALID, MIN2(), myActiveEncounters, myOldestActiveEncounterBegin, SIMTIME, and updateEncounter().
Referenced by deviceName(), resetEncounters(), and update().
|
private |
Tests if the SSM values exceed the threshold for qualification as conflict.
Definition at line 508 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::egoID, MSDevice_SSM::Encounter::foeID, INVALID, MSDevice_SSM::Encounter::maxDRAC, MSDevice_SSM::Encounter::minTTC, myComputeDRAC, myComputePET, myComputeTTC, myThresholds, MSDevice_SSM::Encounter::PET, SIMTIME, and MSDevice_SSM::Encounter::ConflictPointInfo::value.
Referenced by closeEncounter(), and deviceName().
|
protectedinherited |
Definition at line 93 of file MSMoveReminder.cpp.
References MSMoveReminder::myLastVehicleUpdateValues.
Referenced by MSMoveReminder::getDescription(), MSMeanData_Net::MSLaneMeanDataValues::notifyLeave(), and MSMoveReminder::updateDetector().
|
staticprivate |
Definition at line 2651 of file MSDevice_SSM.cpp.
References TplConvert::_2bool(), OptionsCont::getBool(), SUMOVehicle::getID(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), Parameterised::knowsParameter(), and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
private |
Closes all current Encounters and moves conflicts to myPastConflicts,.
Definition at line 440 of file MSDevice_SSM.cpp.
References processEncounters().
Referenced by cleanup(), deviceName(), updateAndWriteOutput(), and ~MSDevice_SSM().
|
virtualinherited |
Saves the state of the device.
The default implementation writes a warning and does nothing.
[in] | out | The OutputDevice to write the information into |
Reimplemented in MSDevice_Tripinfo, and MSDevice_Vehroutes.
Definition at line 151 of file MSDevice.cpp.
References Named::getID(), and WRITE_WARNING.
Referenced by MSDevice::generateOutput().
|
inlineinherited |
Definition at line 230 of file MSMoveReminder.h.
References MSMoveReminder::myDescription.
Referenced by MSMeanData::init(), MEInductLoop::MEInductLoop(), METriggeredCalibrator::METriggeredCalibrator(), and MSCalibrator::MSCalibrator().
|
inlineinherited |
resets the id
[in] | newID | The new id of this object |
Definition at line 82 of file Named.h.
Referenced by Distribution_Parameterized::parse(), NBLoadedSUMOTLDef::reconstructLogic(), NBNodeCont::remapIDs(), NBEdgeCont::remapIDs(), NBNodeCont::rename(), NBEdgeCont::rename(), and IntermodalRouter< E, L, N, V >::splitEdge().
|
inlinevirtualinherited |
try to set the given parameter for this device. Throw exception for unsupported key
Reimplemented in MSDevice_Routing, MSDevice_Bluelight, MSDevice_Example, and MSDevice_Battery.
Definition at line 159 of file MSDevice.h.
References MSDevice::deviceName(), MSDevice::equippedByDefaultAssignmentOptions(), MSDevice::insertDefaultAssignmentOptions(), and UNUSED_PARAMETER.
|
private |
Closes encounters, whose duration exceeds the maximal encounter length. If it is classified as conflict, the encounter is saved. In any case, a new active encounter is created holding the trailing part (of length myOverlapTime) of the original.
Referenced by deviceName().
|
staticprivate |
convert SUMO-positions to geo coordinates (in place)
Definition at line 2002 of file MSDevice_SSM.cpp.
References GeoConvHelper::cartesian2geo(), and GeoConvHelper::getFinal().
Referenced by toGeo(), and writeOutConflict().
|
staticprivate |
convert SUMO-positions to geo coordinates (in place)
Definition at line 2007 of file MSDevice_SSM.cpp.
References toGeo().
|
private |
Definition at line 383 of file MSDevice_SSM.cpp.
References createEncounters(), findSurroundingVehicles(), Named::getID(), myActiveEncounters, myHolderMS, myPastConflicts, myRange, processEncounters(), and SIMTIME.
Referenced by updateAndWriteOutput().
void MSDevice_SSM::updateAndWriteOutput | ( | ) |
This is called once per time step in MSNet::writeOutput() and collects the surrounding vehicles, updates information on encounters and flushes the encounters qualified as conflicts (.
Definition at line 370 of file MSDevice_SSM.cpp.
References flushConflicts(), SUMOVehicle::isOnRoad(), MSDevice::myHolder, resetEncounters(), and update().
Referenced by MSNet::writeOutput().
|
inherited |
Definition at line 50 of file MSMoveReminder.cpp.
References MSMoveReminder::myLastVehicleUpdateValues, MSMoveReminder::notifyMoveInternal(), MSMoveReminder::removeFromVehicleUpdateValues(), and STEPS2TIME.
Referenced by MSMoveReminder::notifyLeave(), and MEVehicle::updateDetectorForWriting().
Updates the encounter (adds a new trajectory point) and deletes the foeInfo.
Definition at line 552 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::add(), checkConflictEntryAndExit(), classifyEncounter(), computeSSMs(), MSDevice_SSM::EncounterApproachInfo::conflictPoint, determineConflictPoint(), MSDevice_SSM::EncounterApproachInfo::drac, MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::Encounter::egoID, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_NOCONFLICT_AHEAD, estimateConflictTimes(), MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::Encounter::foeID, MSVehicle::getPosition(), MSVehicle::getVelocityVector(), myExtraTime, MSDevice_SSM::EncounterApproachInfo::pet, MSDevice_SSM::Encounter::resetExtraTime(), SIMTIME, MSDevice_SSM::EncounterApproachInfo::ttc, MSDevice_SSM::EncounterApproachInfo::type, and updatePassedEncounter().
Referenced by createEncounters(), deviceName(), and processEncounters().
|
private |
Updates an encounter, which was classified as ENCOUNTER_TYPE_NOCONFLICT_AHEAD this may be the case because the foe is out of the detection range but the encounter is still in extra time (in this case foeInfo==0), or because the foe does not head for a lane conflicting with the route of the ego vehicle. It is also used for an ongoing crossing conflict, where only the covered distances are traced until the situation is over. (A crossing conflict is ongoing, if one vehicle entered the conflict area) Writes the type of encounter which is determined for the current state into eInfo. And if appropriate some information concerning vehicles positions in relation to a crossed crossing point (for PET calculation).
Definition at line 1323 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::closingRequested, MSDevice_SSM::Encounter::countDownExtraTime(), MSDevice_SSM::Encounter::ego, MSDevice_SSM::EncounterApproachInfo::egoConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::egoConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::egoConflictExitDist, MSDevice_SSM::Encounter::egoDistsToConflict, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::EncounterApproachInfo::egoLeftConflict, ENCOUNTER_TYPE_BOTH_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_BOTH_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_COLLISION, ENCOUNTER_TYPE_CROSSING_FOLLOWER, ENCOUNTER_TYPE_CROSSING_LEADER, ENCOUNTER_TYPE_EGO_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_EGO_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_ENTERED_CONFLICT_AREA, ENCOUNTER_TYPE_FOE_LEFT_CONFLICT_AREA, ENCOUNTER_TYPE_FOLLOWING_FOLLOWER, ENCOUNTER_TYPE_FOLLOWING_LEADER, ENCOUNTER_TYPE_FOLLOWING_PASSED, ENCOUNTER_TYPE_MERGING_FOLLOWER, ENCOUNTER_TYPE_MERGING_LEADER, ENCOUNTER_TYPE_MERGING_PASSED, ENCOUNTER_TYPE_NOCONFLICT_AHEAD, MSDevice_SSM::Encounter::foe, MSDevice_SSM::EncounterApproachInfo::foeConflictAreaLength, MSDevice_SSM::EncounterApproachInfo::foeConflictEntryDist, MSDevice_SSM::EncounterApproachInfo::foeConflictExitDist, MSDevice_SSM::Encounter::foeDistsToConflict, MSDevice_SSM::Encounter::foeID, MSDevice_SSM::EncounterApproachInfo::foeLeftConflict, MSVehicle::getLastStepDist(), MSBaseVehicle::getLength(), MSDevice_SSM::Encounter::getRemainingExtraTime(), MSBaseVehicle::getWidth(), INVALID, myExtraTime, MSDevice_SSM::Encounter::resetExtraTime(), SIMTIME, TS, MSDevice_SSM::EncounterApproachInfo::type, and MSDevice_SSM::Encounter::typeSpan.
Referenced by deviceName(), and updateEncounter().
|
staticprivate |
Definition at line 2569 of file MSDevice_SSM.cpp.
References TplConvert::_2bool(), OptionsCont::getBool(), SUMOVehicle::getID(), OptionsCont::getOptions(), Parameterised::getParameter(), SUMOVehicle::getParameter(), MSVehicleType::getParameter(), SUMOVehicle::getVehicleType(), Parameterised::knowsParameter(), and WRITE_WARNING.
Referenced by buildVehicleDevices(), and deviceName().
|
private |
Definition at line 2014 of file MSDevice_SSM.cpp.
References MSDevice_SSM::Encounter::begin, OutputDevice::closeTag(), MSDevice_SSM::Encounter::conflictPointSpan, MSDevice_SSM::Encounter::DRACspan, MSDevice_SSM::Encounter::egoID, MSDevice_SSM::Encounter::egoTrajectory, MSDevice_SSM::Encounter::end, MSDevice_SSM::Encounter::foeID, MSDevice_SSM::Encounter::foeTrajectory, gPrecision, gPrecisionGeo, INVALID, makeStringWithNAs(), MSDevice_SSM::Encounter::maxDRAC, MSDevice_SSM::Encounter::minTTC, myComputeDRAC, myComputePET, myComputeTTC, myOutputFile, mySaveTrajectories, myUseGeoCoords, OutputDevice::openTag(), MSDevice_SSM::Encounter::PET, MSDevice_SSM::Encounter::ConflictPointInfo::pos, SIMTIME, MSDevice_SSM::Encounter::ConflictPointInfo::time, MSDevice_SSM::Encounter::timeSpan, toGeo(), toString(), MSDevice_SSM::Encounter::TTCspan, MSDevice_SSM::Encounter::ConflictPointInfo::type, MSDevice_SSM::EncounterApproachInfo::type, MSDevice_SSM::Encounter::typeSpan, MSDevice_SSM::Encounter::Trajectory::v, MSDevice_SSM::Encounter::ConflictPointInfo::value, OutputDevice::writeAttr(), and MSDevice_SSM::Encounter::Trajectory::x.
Referenced by flushConflicts().
|
staticprivate |
remember which files were created already (don't duplicate xml root-elements)
Definition at line 647 of file MSDevice_SSM.h.
Referenced by cleanup(), MSDevice_SSM(), and operator<<().
All currently existing SSM devices.
Definition at line 66 of file MSDevice_SSM.h.
Referenced by cleanup(), getInstances(), MSDevice_SSM(), operator<<(), and ~MSDevice_SSM().
|
private |
Definition at line 636 of file MSDevice_SSM.h.
Referenced by createEncounters(), MSDevice_SSM(), processEncounters(), and update().
|
private |
Definition at line 628 of file MSDevice_SSM.h.
Referenced by computeSSMs(), determineTTCandDRAC(), MSDevice_SSM(), qualifiesAsConflict(), and writeOutConflict().
|
private |
Definition at line 628 of file MSDevice_SSM.h.
Referenced by MSDevice_SSM(), qualifiesAsConflict(), and writeOutConflict().
|
private |
Flags for switching on / off comutation of different SSMs, derived from myMeasures.
Definition at line 628 of file MSDevice_SSM.h.
Referenced by computeSSMs(), determineTTCandDRAC(), MSDevice_SSM(), qualifiesAsConflict(), and writeOutConflict().
|
protectedinherited |
a description of this moveReminder
Definition at line 246 of file MSMoveReminder.h.
Referenced by MSMoveReminder::getDescription(), and MSMoveReminder::setDescription().
|
private |
Extra time in seconds to be logged after a conflict is over.
Definition at line 624 of file MSDevice_SSM.h.
Referenced by createEncounters(), MSDevice_SSM(), updateEncounter(), and updatePassedEncounter().
|
protectedinherited |
The vehicle that stores the device.
Definition at line 188 of file MSDevice.h.
Referenced by MSDevice_Vehroutes::addRoute(), MSDevice_Transportable::addTransportable(), MSDevice_Tripinfo::computeLengthAndDuration(), MSDevice_Tripinfo::generateOutput(), MSDevice_Tripinfo::generateOutputForUnfinished(), MSDevice::getHolder(), MSDevice_Routing::getParameter(), MSDevice_Vehroutes::notifyEnter(), MSDevice_Tripinfo::notifyLeave(), MSDevice_Routing::preInsertionReroute(), MSDevice_Transportable::removeTransportable(), MSDevice_Routing::reroute(), MSDevice_Routing::setParameter(), updateAndWriteOutput(), MSDevice_Tripinfo::updateStatistics(), MSDevice_Vehroutes::writeOutput(), MSDevice_Vehroutes::writeXMLRoute(), and MSDevice_Vehroutes::~MSDevice_Vehroutes().
|
private |
Definition at line 629 of file MSDevice_SSM.h.
Referenced by createEncounters(), MSDevice_SSM(), and update().
|
protectedinherited |
The name of the object.
Definition at line 126 of file Named.h.
Referenced by MSE2Collector::addDetectorToLanes(), RODFDetector::buildDestinationDistribution(), NGEdge::buildNBEdge(), NGNode::buildNBNode(), MSSOTLTrafficLightLogic::checkPhases(), NBNode::computeNodeShape(), MSE2Collector::detectorUpdate(), METriggeredCalibrator::execute(), MSCalibrator::execute(), GNEPOI::getAttribute(), GNEPOILane::getAttribute(), GNEPoly::getAttribute(), MSLane::getCanonicalPredecessorLane(), MSLane::getCanonicalSuccessorLane(), NBEdge::getLaneID(), NBEdge::getLaneIDInsecure(), ROEdge::getStoredEffort(), ROEdge::getTravelTime(), MSDelayBasedTrafficLightLogic::init(), MSActuatedTrafficLightLogic::init(), MSSOTLTrafficLightLogic::init(), MSCalibrator::init(), NBEdge::init(), MSLane::isInsertionSuccess(), MSCalibrator::myStartElement(), MSE2Collector::notifyEnter(), MSE2Collector::notifyLeave(), MSE2Collector::notifyMove(), MSMeanData::openInterval(), RORouteDef::preComputeCurrentRoute(), NBEdge::reinitNodes(), MSRoute::release(), GNEPOI::setAttribute(), GNEPOILane::setAttribute(), GNEPoly::setAttribute(), MSSOTLTrafficLightLogic::setToATargetPhase(), NBEdge::splitGeometry(), Distribution_Parameterized::toStr(), MSChargingStation::writeChargingStationOutput(), RODFDetector::writeEmitterDefinition(), MSXMLRawOut::writeLane(), NBNode::writeLogic(), RODFDetector::writeSingleSpeedTrigger(), MEInductLoop::writeXMLOutput(), MSCalibrator::writeXMLOutput(), and MSE3Collector::writeXMLOutput().
|
protectedinherited |
Lane on which the reminder works.
Definition at line 244 of file MSMoveReminder.h.
Referenced by MSE2Collector::getEstimatedCurrentVehicleNumber(), MSE2Collector::getEstimateQueueLength(), MSMoveReminder::getLane(), MSMoveReminder::MSMoveReminder(), MSInductLoop::notifyEnter(), MSE2Collector::notifyEnter(), MSE2Collector::notifyLeave(), MSMeanData::MeanDataValues::notifyMove(), MSE2Collector::notifyMove(), and MSMeanData::MeanDataValueTracker::reset().
|
private |
begin time of the oldest active encounter
Definition at line 638 of file MSDevice_SSM.h.
Referenced by createEncounters(), flushConflicts(), and processEncounters().
|
private |
Output device.
Definition at line 644 of file MSDevice_SSM.h.
Referenced by MSDevice_SSM(), and writeOutConflict().
|
private |
Past encounters that where qualified as conflicts and are not yet flushed to the output file.
Definition at line 640 of file MSDevice_SSM.h.
Referenced by closeEncounter(), flushConflicts(), MSDevice_SSM(), and update().
|
private |
Detection range. For vehicles closer than this distance from the ego vehicle, SSMs are traced.
Definition at line 622 of file MSDevice_SSM.h.
Referenced by findFoeConflictLane(), MSDevice_SSM(), and update().
|
private |
This determines whether the whole trajectories of the vehicles (position, speed, ssms) shall be saved in the ssm-output or only the most critical value shall be reported.
Definition at line 620 of file MSDevice_SSM.h.
Referenced by MSDevice_SSM(), and writeOutConflict().
|
private |
Definition at line 617 of file MSDevice_SSM.h.
Referenced by MSDevice_SSM(), and qualifiesAsConflict().
|
private |
Whether to use the original coordinate system for output.
Definition at line 626 of file MSDevice_SSM.h.
Referenced by MSDevice_SSM(), and writeOutConflict().