SUMO - Simulation of Urban MObility
MSLaneChanger Class Reference

Performs lane changing of vehicles. More...

#include <MSLaneChanger.h>

Collaboration diagram for MSLaneChanger:
Collaboration graph

Data Structures

struct  ChangeElem
 

Public Types

typedef std::vector< ChangeElemChanger
 The list of changers; For each lane, a ChangeElem is being build. More...
 
typedef Changer::iterator ChangerIt
 the iterator moving over the ChangeElems More...
 
typedef Changer::const_iterator ConstChangerIt
 the iterator moving over the ChangeElems More...
 

Public Member Functions

void laneChange (SUMOTime t)
 Start lane-change-process for all vehicles on the edge'e lanes. More...
 
 MSLaneChanger (const std::vector< MSLane * > *lanes, bool allowSwap)
 Constructor. More...
 
 ~MSLaneChanger ()
 Destructor. More...
 

Protected Member Functions

bool change ()
 
int checkChange (int laneOffset, const std::pair< MSVehicle *const, SUMOReal > &leader, const std::vector< MSVehicle::LaneQ > &preb) const
 
ChangerIt findCandidate ()
 Find current candidate. If there is none, myChanger.end() is returned. More...
 
std::pair< MSVehicle *const, SUMORealgetRealFollower (const ChangerIt &target) const
 
std::pair< MSVehicle *const, SUMORealgetRealLeader (const ChangerIt &target) const
 
void initChanger ()
 Initialize the changer before looping over all vehicles. More...
 
void registerUnchanged (MSVehicle *vehicle)
 
void startChange (MSVehicle *vehicle, ChangerIt &from, int direction)
 start the lane change maneuver (and finish it instantly if gLaneChangeDuration == 0) More...
 
void updateChanger (bool vehHasChanged)
 
void updateLanes (SUMOTime t)
 
MSVehicleveh (ConstChangerIt ce) const
 
bool vehInChanger () const
 Check if there is a single change-candidate in the changer. Returns true if there is one. More...
 

Protected Attributes

bool myAllowsSwap
 Whether blocking vehicles may be swapped. More...
 
ChangerIt myCandi
 
Changer myChanger
 Container for ChangeElemements, one for every lane in the edge. More...
 

Private Member Functions

 MSLaneChanger ()
 Default constructor. More...
 
 MSLaneChanger (const MSLaneChanger &)
 Copy constructor. More...
 
MSLaneChangeroperator= (const MSLaneChanger &)
 Assignment operator. More...
 

Detailed Description

Performs lane changing of vehicles.

Definition at line 55 of file MSLaneChanger.h.

Member Typedef Documentation

typedef std::vector< ChangeElem > MSLaneChanger::Changer

The list of changers; For each lane, a ChangeElem is being build.

Definition at line 94 of file MSLaneChanger.h.

typedef Changer::iterator MSLaneChanger::ChangerIt

the iterator moving over the ChangeElems

Definition at line 97 of file MSLaneChanger.h.

typedef Changer::const_iterator MSLaneChanger::ConstChangerIt

the iterator moving over the ChangeElems

Definition at line 100 of file MSLaneChanger.h.

Constructor & Destructor Documentation

MSLaneChanger::~MSLaneChanger ( )

Destructor.

Definition at line 76 of file MSLaneChanger.cpp.

MSLaneChanger::MSLaneChanger ( )
private

Default constructor.

MSLaneChanger::MSLaneChanger ( const MSLaneChanger )
private

Copy constructor.

Member Function Documentation

MSLaneChanger::ChangerIt MSLaneChanger::findCandidate ( )
protected

Find current candidate. If there is none, myChanger.end() is returned.

Definition at line 397 of file MSLaneChanger.cpp.

References max, myChanger, and veh().

Referenced by change(), and veh().

std::pair< MSVehicle *const, SUMOReal > MSLaneChanger::getRealFollower ( const ChangerIt target) const
protected
void MSLaneChanger::initChanger ( )
protected

Initialize the changer before looping over all vehicles.

Definition at line 95 of file MSLaneChanger.cpp.

References myChanger.

Referenced by laneChange().

void MSLaneChanger::laneChange ( SUMOTime  t)

Start lane-change-process for all vehicles on the edge'e lanes.

Definition at line 80 of file MSLaneChanger.cpp.

References change(), initChanger(), updateChanger(), updateLanes(), and vehInChanger().

Referenced by MSEdge::changeLanes().

MSLaneChanger& MSLaneChanger::operator= ( const MSLaneChanger )
private

Assignment operator.

void MSLaneChanger::registerUnchanged ( MSVehicle vehicle)
protected

Update changer for vehicles that did not change

Definition at line 272 of file MSLaneChanger.cpp.

References MSVehicle::getLaneChangeModel(), MSVehicleType::getLengthWithGap(), MSBaseVehicle::getVehicleType(), myCandi, MSAbstractLaneChangeModel::unchanged(), and veh().

Referenced by change(), and veh().

void MSLaneChanger::startChange ( MSVehicle vehicle,
ChangerIt from,
int  direction 
)
protected

start the lane change maneuver (and finish it instantly if gLaneChangeDuration == 0)

Definition at line 280 of file MSLaneChanger.cpp.

References MSVehicle::computeAngle(), MSVehicle::getLaneChangeModel(), MSVehicleType::getLengthWithGap(), MSBaseVehicle::getVehicleType(), MSVehicle::myAngle, and MSAbstractLaneChangeModel::startLaneChangeManeuver().

Referenced by change(), and veh().

void MSLaneChanger::updateChanger ( bool  vehHasChanged)
protected

After the possible change, update the changer.

Definition at line 354 of file MSLaneChanger.cpp.

References DELTA_T, MSGlobals::gLaneChangeDuration, myCandi, and veh().

Referenced by laneChange(), and veh().

void MSLaneChanger::updateLanes ( SUMOTime  t)
protected

During lane-change a temporary vehicle container is filled within the lanes (bad pratice to modify foreign members, I know). Swap this container with the real one.

Definition at line 380 of file MSLaneChanger.cpp.

References myChanger.

Referenced by laneChange(), and veh().

MSVehicle* MSLaneChanger::veh ( ConstChangerIt  ce) const
inlineprotected

Returns a pointer to the changer-element-iterator vehicle, or 0 if there is none.

Definition at line 121 of file MSLaneChanger.h.

References change(), checkChange(), findCandidate(), getRealFollower(), getRealLeader(), registerUnchanged(), startChange(), updateChanger(), and updateLanes().

Referenced by change(), checkChange(), findCandidate(), getRealFollower(), getRealLeader(), registerUnchanged(), and updateChanger().

bool MSLaneChanger::vehInChanger ( ) const
inlineprotected

Check if there is a single change-candidate in the changer. Returns true if there is one.

Definition at line 108 of file MSLaneChanger.h.

References myChanger, and MSLaneChanger::ChangeElem::veh.

Referenced by laneChange().

Field Documentation

bool MSLaneChanger::myAllowsSwap
protected

Whether blocking vehicles may be swapped.

Definition at line 172 of file MSLaneChanger.h.

Referenced by change().

ChangerIt MSLaneChanger::myCandi
protected

Change-candidate. Last of the vehicles in changer. Only this one will try to change. Every vehicle on the edge will be a candidate once in the change-process.

Definition at line 169 of file MSLaneChanger.h.

Referenced by change(), checkChange(), getRealFollower(), getRealLeader(), registerUnchanged(), and updateChanger().

Changer MSLaneChanger::myChanger
protected

Container for ChangeElemements, one for every lane in the edge.

Definition at line 164 of file MSLaneChanger.h.

Referenced by change(), findCandidate(), initChanger(), MSLaneChanger(), updateLanes(), and vehInChanger().


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