SUMO - Simulation of Urban MObility

NBTrafficLightDefinition Class Reference

The base class for traffic light logic definitions. More...

#include <NBTrafficLightDefinition.h>

Inheritance diagram for NBTrafficLightDefinition:
Named NBLoadedSUMOTLDef NBLoadedTLDef NBOwnTLDef

Public Types

enum  TLColor {
  TLCOLOR_RED, TLCOLOR_YELLOW, TLCOLOR_REDYELLOW, TLCOLOR_GREEN,
  TLCOLOR_BLINK
}
 

An enumeration of possible tl-signal states.

More...

Public Member Functions

void addControlledInnerEdges (const std::vector< std::string > &edges) throw ()
 Adds the given ids into the list of edges not controlled by the tls.
NBTrafficLightLogic * compute (const NBEdgeCont &ec, OptionsCont &oc) throw ()
 Computes the traffic light logic.
bool foes (const NBEdge *const from1, const NBEdge *const to1, const NBEdge *const from2, const NBEdge *const to2) const throw ()
 Returns the information whether the given flows cross.
bool forbids (const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo, bool regardNonSignalisedLowerPriority) const throw ()
 Returns the information whether "prohibited" flow must let "prohibitor" flow pass.
const NBConnectionVector & getControlledLinks () const
 returns the controlled links (depends on previous call to collectLinks)
const std::vector< NBNode * > & getControlledNodes () const
const std::string & getID () const
 Returns the id.
const EdgeVector & getIncomingEdges () const throw ()
 Returns the list of incoming edges (must be build first)
const std::string & getProgramID () const
 Returns the ProgramID.
bool isLeftMover (const NBEdge *const from, const NBEdge *const to) const throw ()
 returns the information whether the given link is a left-mover
bool mustBrake (const NBEdge *const possProhibitedFrom, const NBEdge *const possProhibitedTo, const NBEdge *const possProhibitorFrom, const NBEdge *const possProhibitorTo, bool regardNonSignalisedLowerPriority) const throw ()
 Returns the information whether the described flow must let any other flow pass.
bool mustBrake (const NBEdge *const from, const NBEdge *const to) const throw ()
 Returns the information whether the described flow must let any other flow pass.
bool mustBrake (const NBConnection &possProhibited, const NBConnection &possProhibitor, bool regardNonSignalisedLowerPriority) const throw ()
 Returns the information whether the described flow must let the other flow pass.
 NBTrafficLightDefinition (const std::string &id, NBNode *junction, const std::string &programID) throw ()
 Constructor.
 NBTrafficLightDefinition (const std::string &id, const std::vector< NBNode * > &junctions, const std::string &programID) throw ()
 Constructor.
 NBTrafficLightDefinition (const std::string &id, const std::string &programID) throw ()
 Constructor.
virtual void remapRemoved (NBEdge *removed, const EdgeVector &incoming, const EdgeVector &outgoing)=0 throw ()
 Replaces occurences of the removed edge in incoming/outgoing edges of all definitions.
virtual void replaceRemoved (NBEdge *removed, int removedLane, NBEdge *by, int byLane)=0 throw ()
 Replaces a removed edge/lane.
void setID (const std::string &newID)
 resets the id
virtual void setParticipantsInformation () throw ()
 Builds the list of participating nodes/edges/links.
void setProgramID (const std::string &programID)
virtual void setTLControllingInformation (const NBEdgeCont &ec) const =0 throw ()
 Informs edges about being controlled by a tls.
virtual ~NBTrafficLightDefinition () throw ()
 Destructor.
Access to controlled nodes
virtual void addNode (NBNode *node)
 Adds a node to the traffic light logic.
virtual void removeNode (NBNode *node)
 Removes the given node from the list of controlled nodes.
const std::vector< NBNode * > & getNodes () const throw ()
 Returns the list of controlled nodes.

Static Public Attributes

static const std::string DefaultProgramID = "0"

Protected Member Functions

virtual bool amInvalid () const
void collectEdges () throw ()
 Build the list of participating edges.
virtual void collectLinks ()=0
 Collects the links participating in this traffic light

Exceptions:
ProcessErrorIf a link could not be found.

unsigned int computeBrakingTime (SUMOReal minDecel) const throw ()
 Computes the time vehicles may need to brake.
virtual NBTrafficLightLogic * myCompute (const NBEdgeCont &ec, unsigned int brakingTime)=0 throw ()
 Computes the traffic light logic finally in dependence to the type.

Protected Attributes

std::set< std::string > myControlledInnerEdges
 Set of inner edges that shall be controlled, though.
NBConnectionVector myControlledLinks
 The list of controlled links.
std::vector< NBNode * > myControlledNodes
 The container with participating nodes.
EdgeVector myEdgesWithin
 The list of edges within the area controlled by the tls.
std::string myID
 The name of the object.
EdgeVector myIncomingEdges
 The list of incoming edges.
std::string mySubID
 The tls program's subid.

Detailed Description

The base class for traffic light logic definitions.

A base class is necessary, as we have two cases: a) the logic is given by the imported network, or b) the logic is not given and we have to compute it by ourselves. In the first case, NBLoadedTLDef should be used, in the second NBOwnTLDef.

See also:
NBLoadedTLDef
NBOwnTLDef

Definition at line 70 of file NBTrafficLightDefinition.h.


Member Enumeration Documentation

An enumeration of possible tl-signal states.

Enumerator:
TLCOLOR_RED 

Signal shows red.

TLCOLOR_YELLOW 

Signal shows yellow.

TLCOLOR_REDYELLOW 

Signal shows red/yellow (unused)

TLCOLOR_GREEN 

Signal shows green.

TLCOLOR_BLINK 

Signal is blinking yellow.

Definition at line 79 of file NBTrafficLightDefinition.h.


Constructor & Destructor Documentation

NBTrafficLightDefinition::NBTrafficLightDefinition ( const std::string &  id,
const std::vector< NBNode * > &  junctions,
const std::string &  programID 
) throw ()

Constructor.

Parameters:
[in]idThe id of the tls
[in]junctionsList of junctions controlled by this tls

Definition at line 56 of file NBTrafficLightDefinition.cpp.

NBTrafficLightDefinition::NBTrafficLightDefinition ( const std::string &  id,
NBNode *  junction,
const std::string &  programID 
) throw ()

Constructor.

Parameters:
[in]idThe id of the tls
[in]junctionThe (single) junction controlled by this tls

Definition at line 78 of file NBTrafficLightDefinition.cpp.

NBTrafficLightDefinition::NBTrafficLightDefinition ( const std::string &  id,
const std::string &  programID 
) throw ()

Constructor.

Parameters:
[in]idThe id of the tls

Definition at line 87 of file NBTrafficLightDefinition.cpp.

NBTrafficLightDefinition::~NBTrafficLightDefinition ( ) throw () [virtual]

Destructor.

Definition at line 91 of file NBTrafficLightDefinition.cpp.


Member Function Documentation

void NBTrafficLightDefinition::addControlledInnerEdges ( const std::vector< std::string > &  edges) throw ()

Adds the given ids into the list of edges not controlled by the tls.

Parameters:
[in]edgesThe list of edge ids to add the inner edges to

Definition at line 342 of file NBTrafficLightDefinition.cpp.

void NBTrafficLightDefinition::addNode ( NBNode *  node) [virtual]

Adds a node to the traffic light logic.

Parameters:
[in]nodeA further node that shall be controlled by the tls

Definition at line 322 of file NBTrafficLightDefinition.cpp.

References NBNode::addTrafficLight(), and myControlledNodes.

Referenced by NBLoadedSUMOTLDef::addConnection(), and NBLoadedTLDef::addToSignalGroup().

bool NBTrafficLightDefinition::amInvalid ( ) const [protected, virtual]

Reimplemented in NBLoadedSUMOTLDef.

Definition at line 118 of file NBTrafficLightDefinition.cpp.

References myControlledLinks.

void NBTrafficLightDefinition::collectEdges ( ) throw () [protected]
virtual void NBTrafficLightDefinition::collectLinks ( ) [protected, pure virtual]

Collects the links participating in this traffic light

Exceptions:
ProcessErrorIf a link could not be found.

Implemented in NBLoadedSUMOTLDef, NBLoadedTLDef, and NBOwnTLDef.

Referenced by setParticipantsInformation().

NBTrafficLightLogic * NBTrafficLightDefinition::compute ( const NBEdgeCont &  ec,
OptionsCont &  oc 
) throw ()

Computes the traffic light logic.

Does some initialisation at first, then calls myCompute to finally build the tl-logic

Parameters:
[in]ecThe edge container in order to retrieve edge information
[in]ocThe options container holding options needed during the building
Returns:
The built logic (may be 0)

Definition at line 95 of file NBTrafficLightDefinition.cpp.

References WRITE_WARNING.

Referenced by NBTrafficLightLogicCont::computeSingleLogic().

unsigned int NBTrafficLightDefinition::computeBrakingTime ( SUMOReal  minDecel) const throw () [protected]

Computes the time vehicles may need to brake.

This time depends on the maximum speed allowed on incoming junctions. It is computed as max_speed_allowed / minimum_vehicle_decleration

Definition at line 124 of file NBTrafficLightDefinition.cpp.

References NBContHelper::maxSpeed(), and SUMOReal.

bool NBTrafficLightDefinition::foes ( const NBEdge *const  from1,
const NBEdge *const  to1,
const NBEdge *const  from2,
const NBEdge *const  to2 
) const throw ()

Returns the information whether the given flows cross.

Parameters:
[in]from1The starting edge of the first stream
[in]to1The ending edge of the first stream
[in]from2The starting edge of the second stream
[in]to2The ending edge of the second stream
Returns:
Whether both stream are foes (cross)

Definition at line 299 of file NBTrafficLightDefinition.cpp.

References NBNode::foes().

bool NBTrafficLightDefinition::forbids ( const NBEdge *const  possProhibitorFrom,
const NBEdge *const  possProhibitorTo,
const NBEdge *const  possProhibitedFrom,
const NBEdge *const  possProhibitedTo,
bool  regardNonSignalisedLowerPriority 
) const throw ()

Returns the information whether "prohibited" flow must let "prohibitor" flow pass.

Parameters:
[in]possProhibitedFromThe maybe prohibited connection's begin
[in]possProhibitedToThe maybe prohibited connection's end
[in]possProhibitorFromThe maybe prohibiting connection's begin
[in]possProhibitorToThe maybe prohibiting connection's end
[in]regardNonSignalisedLowerPriorityWhether the right of way rules without traffic lights shall be regarded
Returns:
Whether the second flow prohibits the first one
See also:
forbids

Definition at line 222 of file NBTrafficLightDefinition.cpp.

References NBNode::foes(), and NBNode::forbids().

const NBConnectionVector& NBTrafficLightDefinition::getControlledLinks ( ) const [inline]

returns the controlled links (depends on previous call to collectLinks)

Definition at line 272 of file NBTrafficLightDefinition.h.

References myControlledLinks.

Referenced by NBLoadedSUMOTLDef::NBLoadedSUMOTLDef().

const std::vector<NBNode*>& NBTrafficLightDefinition::getControlledNodes ( ) const [inline]
const std::string& Named::getID ( ) const [inline, inherited]

Returns the id.

Returns:
The stored id

Reimplemented in MS_E2_ZS_CollectorOverLanes.

Definition at line 59 of file Named.h.

References Named::myID.

Referenced by RORouteDef_Alternatives::addAlternative(), MSNet::addBusStop(), NLHandler::addConnection(), NBLoadedSUMOTLDef::addConnection(), NIImporter_OpenDrive::addE2EConnectionsSecure(), NIImporter_SUMO::addPhase(), NBDistrict::addSink(), NBDistrict::addSource(), MSRouteHandler::addStop(), NIXMLTrafficLightsHandler::addTlConnection(), NIVissimDisturbance::addToNode(), MSVehicle::addTraciStop(), NIVisumTL::build(), RORouteDef_Complete::buildCurrentRoute(), NIImporter_VISUM::buildDistrictNode(), NIVissimConnection::buildEdgeConnections(), NBEdge::buildInnerEdges(), NIVissimEdge::buildNBEdge(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), ODDistrictHandler::closeDistrict(), collectEdges(), NBOwnTLDef::collectLinks(), NBNode::computeInternalLaneShape(), NBEdge::computeLaneShapes(), NBNode::computeLogic(), NBNode::computeNodeShape(), NBTrafficLightLogicCont::computeSingleLogic(), NBEdge::connections_sorter(), MSLane::detectCollisions(), NIVissimDistrictConnection::dict_BuildDistricts(), MSVTypeProbe::execute(), Command_SaveTLSSwitches::execute(), NBTrafficLightLogicCont::extract(), NBEdgeCont::extract(), MSNet::getBusStopID(), NIImporter_VISUM::getNamedEdgeContinuating(), NLTriggerBuilder::getPosition(), NBNode::getPossiblySplittedIncoming(), NBNode::getPossiblySplittedOutgoing(), NIImporter_VISUM::getReversedContinuating(), MSUnboundActuatedTrafficLightLogic::init(), MSAgentbasedTrafficLightLogic::init(), MSActuatedTrafficLightLogic::init(), NIXMLTrafficLightsHandler::initTrafficLightLogic(), NIImporter_SUMO::initTrafficLightLogic(), NBNodeCont::joinJunctions(), NBEdgeCont::joinSameNodeConnectingEdges(), NIImporter_OpenDrive::loadNetwork(), MSLane::moveCritical(), MSVehicle::MSVehicle(), NBLoadedTLDef::myCompute(), NIXMLEdgesHandler::myEndElement(), NIXMLConnectionsHandler::myStartElement(), MSLaneSpeedTrigger::myStartElement(), NBConnection::NBConnection(), NBRequest::NBRequest(), NBOwnTLDef::edge_by_incoming_priority_sorter::operator()(), NBNode::nodes_by_id_sorter::operator()(), NBNetBuilder::by_id_sorter::operator()(), NBContHelper::same_connection_edge_sorter::operator()(), Named::ComparatorIdLess::operator()(), NIImporter_VISUM::parse_EdgePolys(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_Turns(), NIImporter_VISUM::parse_TurnsToSignalGroups(), NIXMLConnectionsHandler::parseDeprecatedLaneDefinition(), NIXMLConnectionsHandler::parseLaneBound(), NBLoadedTLDef::SignalGroup::patchTYellow(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_InductionLoop::processGet(), NWWriter_SUMO::prohibitionConnection(), NBNodeCont::remapEdge(), NBLoadedSUMOTLDef::removeConnection(), NBNode::removeDummyEdges(), NBEdgeCont::removeUnwishedEdges(), NBNodeCont::removeUnwishedNodes(), NBConnection::replaceFrom(), NBConnection::replaceTo(), NIXMLTrafficLightsHandler::retrieveLaneIndex(), NBNodeCont::setAsTLControlled(), NBEdge::setControllingTLInformation(), MSLane::setCritical(), NBOwnTLDef::setTLControllingInformation(), NBLoadedTLDef::setTLControllingInformation(), NBLoadedSUMOTLDef::setTLControllingInformation(), NBEdgeCont::splitAt(), RORDLoader_SUMOBase::startRoute(), NIXMLConnectionsHandler::validateLaneInfo(), MSInstantInductLoop::write(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), NWWriter_SUMO::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_SUMO::writeInternalConnections(), NWWriter_SUMO::writeJunction(), NWWriter_OpenDrive::writeNetwork(), NWWriter_XML::writeNodes(), and MSRouteProbe::writeXMLOutput().

const EdgeVector & NBTrafficLightDefinition::getIncomingEdges ( ) const throw ()

Returns the list of incoming edges (must be build first)

Returns:
The edges which are incoming into the tls

Definition at line 348 of file NBTrafficLightDefinition.cpp.

References myIncomingEdges.

const std::vector<NBNode*>& NBTrafficLightDefinition::getNodes ( ) const throw () [inline]

Returns the list of controlled nodes.

Returns:
Controlled nodes

Definition at line 152 of file NBTrafficLightDefinition.h.

References myControlledNodes.

const std::string& NBTrafficLightDefinition::getProgramID ( ) const [inline]
bool NBTrafficLightDefinition::isLeftMover ( const NBEdge *const  from,
const NBEdge *const  to 
) const throw ()

returns the information whether the given link is a left-mover

Parameters:
[in]fromThe connection's start edge
[in]toThe connection's end edge
Returns:
Whether the connection is a left-mover

Definition at line 170 of file NBTrafficLightDefinition.cpp.

References NBNode::isLeftMover().

bool NBTrafficLightDefinition::mustBrake ( const NBEdge *const  from,
const NBEdge *const  to 
) const throw ()

Returns the information whether the described flow must let any other flow pass.

If the from/to connection passes only one junction (from is incoming into same node as to outgoes from) the node is asked whether the flow must brake- Otherwise true is returned (recheck!) "from" must be an incoming edge into one of the participating nodes!

Parameters:
[in]fromThe connection's start edge
[in]toThe connection's end edge
Returns:
Whether the described connection must brake (has higher priorised foes)

Definition at line 186 of file NBTrafficLightDefinition.cpp.

References NBNode::mustBrake().

Referenced by NBLoadedTLDef::mustBrake().

bool NBTrafficLightDefinition::mustBrake ( const NBConnection &  possProhibited,
const NBConnection &  possProhibitor,
bool  regardNonSignalisedLowerPriority 
) const throw ()

Returns the information whether the described flow must let the other flow pass.

Parameters:
[in]possProhibitedThe maybe prohibited connection
[in]possProhibitorThe maybe prohibiting connection
[in]regardNonSignalisedLowerPriorityWhether the right of way rules without traffic lights shall be regarded
Returns:
Whether the second flow prohibits the first one
See also:
forbids

Definition at line 212 of file NBTrafficLightDefinition.cpp.

bool NBTrafficLightDefinition::mustBrake ( const NBEdge *const  possProhibitedFrom,
const NBEdge *const  possProhibitedTo,
const NBEdge *const  possProhibitorFrom,
const NBEdge *const  possProhibitorTo,
bool  regardNonSignalisedLowerPriority 
) const throw ()

Returns the information whether the described flow must let any other flow pass.

Parameters:
[in]possProhibitedFromThe maybe prohibited connection's begin
[in]possProhibitedToThe maybe prohibited connection's end
[in]possProhibitorFromThe maybe prohibiting connection's begin
[in]possProhibitorToThe maybe prohibiting connection's end
[in]regardNonSignalisedLowerPriorityWhether the right of way rules without traffic lights shall be regarded
Returns:
Whether the second flow prohibits the first one
See also:
forbids

Definition at line 200 of file NBTrafficLightDefinition.cpp.

virtual NBTrafficLightLogic* NBTrafficLightDefinition::myCompute ( const NBEdgeCont &  ec,
unsigned int  brakingTime 
) throw () [protected, pure virtual]

Computes the traffic light logic finally in dependence to the type.

Parameters:
[in]ecThe edge container
[in]brakingTimeDuration a vehicle needs for braking in front of the tls
Returns:
The computed logic

Implemented in NBLoadedSUMOTLDef, NBLoadedTLDef, and NBOwnTLDef.

virtual void NBTrafficLightDefinition::remapRemoved ( NBEdge *  removed,
const EdgeVector &  incoming,
const EdgeVector &  outgoing 
) throw () [pure virtual]

Replaces occurences of the removed edge in incoming/outgoing edges of all definitions.

Parameters:
[in]removedThe removed edge
[in]incomingThe edges to use instead if an incoming edge was removed
[in]outgoingThe edges to use instead if an outgoing edge was removed

Implemented in NBLoadedSUMOTLDef, NBLoadedTLDef, and NBOwnTLDef.

void NBTrafficLightDefinition::removeNode ( NBNode *  node) [virtual]

Removes the given node from the list of controlled nodes.

Parameters:
[in]nodeThe node that shall not be controlled by the tls any more

Definition at line 332 of file NBTrafficLightDefinition.cpp.

References myControlledNodes.

virtual void NBTrafficLightDefinition::replaceRemoved ( NBEdge *  removed,
int  removedLane,
NBEdge *  by,
int  byLane 
) throw () [pure virtual]

Replaces a removed edge/lane.

Parameters:
[in]removedThe edge to replace
[in]removedLaneThe lane of this edge to replace
[in]byThe edge to insert instead
[in]byLaneThis edge's lane to insert instead

Implemented in NBLoadedSUMOTLDef, NBLoadedTLDef, and NBOwnTLDef.

void Named::setID ( const std::string &  newID) [inline, inherited]

resets the id

Definition at line 65 of file Named.h.

References Named::myID.

void NBTrafficLightDefinition::setParticipantsInformation ( ) throw () [virtual]

Builds the list of participating nodes/edges/links.

Reimplemented in NBOwnTLDef.

Definition at line 131 of file NBTrafficLightDefinition.cpp.

References collectEdges(), and collectLinks().

void NBTrafficLightDefinition::setProgramID ( const std::string &  programID) [inline]

Definition at line 291 of file NBTrafficLightDefinition.h.

References mySubID.

virtual void NBTrafficLightDefinition::setTLControllingInformation ( const NBEdgeCont &  ec) const throw () [pure virtual]

Informs edges about being controlled by a tls.

Parameters:
[in]ecThe container of edges

Implemented in NBLoadedSUMOTLDef, NBLoadedTLDef, and NBOwnTLDef.


Field Documentation

const std::string NBTrafficLightDefinition::DefaultProgramID = "0" [static]
std::set<std::string> NBTrafficLightDefinition::myControlledInnerEdges [protected]

Set of inner edges that shall be controlled, though.

Definition at line 343 of file NBTrafficLightDefinition.h.

Referenced by NBLoadedSUMOTLDef::addConnection(), and collectEdges().

The list of edges within the area controlled by the tls.

Definition at line 337 of file NBTrafficLightDefinition.h.

Referenced by collectEdges().

std::string NBTrafficLightDefinition::mySubID [protected]

The tls program's subid.

Definition at line 346 of file NBTrafficLightDefinition.h.

Referenced by getProgramID(), and setProgramID().


The documentation for this class was generated from the following files:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines