SUMO - Simulation of Urban MObility
MSPModel_Striping Class Reference

The pedestrian following model. More...

#include <MSPModel_Striping.h>

Inheritance diagram for MSPModel_Striping:
Inheritance graph
Collaboration diagram for MSPModel_Striping:
Collaboration graph

Data Structures

class  by_xpos_sorter
 sorts the persons by position on the lane. If dir is forward, higher x positions come first. More...
 
class  lane_by_numid_sorter
 
class  MovePedestrians
 
struct  NextLaneInfo
 
struct  Obstacle
 information regarding surround Pedestrians (and potentially other things) More...
 
class  PState
 Container for pedestrian state and individual position update function. More...
 
class  walkingarea_path_sorter
 
struct  WalkingAreaPath
 

Public Member Functions

PedestrianState * add (MSPerson *person, MSPerson::MSPersonStage_Walking *stage, SUMOTime now)
 register the given person as a pedestrian More...
 
bool blockedAtDist (const MSLane *lane, double vehSide, double vehWidth, double oncomingGap, std::vector< const MSPerson * > *collectBlockers)
 whether a pedestrian is blocking the crossing of lane for the given vehicle bondaries More...
 
void cleanupHelper ()
 remove state at simulation end More...
 
bool hasPedestrians (const MSLane *lane)
 whether the given lane has pedestrians on it More...
 
 MSPModel_Striping (const OptionsCont &oc, MSNet *net)
 Constructor (it should not be necessary to construct more than one instance) More...
 
PersonDist nextBlocking (const MSLane *lane, double minPos, double minRight, double maxLeft, double stopTime=0)
 returns the next pedestrian beyond minPos that is laterally between minRight and maxLeft or 0 More...
 
void remove (PedestrianState *state)
 remove the specified person from the pedestrian simulation More...
 
 ~MSPModel_Striping ()
 

Static Public Member Functions

static bool canTraverse (int dir, const ConstMSEdgeVector &route)
 return whether the route may traversed with the given starting direction More...
 
static void cleanup ()
 remove state at simulation end More...
 
static MSPModel * getModel ()
 

Static Public Attributes

static const int BACKWARD
 
static const int FORWARD
 
static const double SAFETY_GAP
 
static const double SIDEWALK_OFFSET
 the offset for computing person positions when walking on edges without a sidewalk More...
 
static const int UNDEFINED_DIRECTION
 
static double stripeWidth
 model parameters More...
 
static double dawdling
 
static SUMOTime jamTime
 
static const double LOOKAHEAD_SAMEDIR
 
static const double LOOKAHEAD_ONCOMING
 
static const double LOOKAROUND_VEHICLES
 
static const double LATERAL_PENALTY
 
static const double OBSTRUCTED_PENALTY
 
static const double INAPPROPRIATE_PENALTY
 
static const double ONCOMING_CONFLICT_PENALTY
 
static const double OBSTRUCTION_THRESHOLD
 
static const double SQUEEZE
 
static const double RESERVE_FOR_ONCOMING_FACTOR
 
static const double RESERVE_FOR_ONCOMING_FACTOR_JUNCTIONS
 
static const double MAX_WAIT_TOLERANCE
 
static const double LATERAL_SPEED_FACTOR
 
static const double MIN_STARTUP_DIST
 

Protected Types

typedef std::map< const MSLane *, Pedestrians, lane_by_numid_sorter > ActiveLanes
 
typedef std::map< const MSLane *, double > MinNextLengths
 
typedef std::map< const MSLane *, Obstacles, lane_by_numid_sorter > NextLanesObstacles
 
typedef std::vector< Obstacle > Obstacles
 
enum  ObstacleType {
  OBSTACLE_NONE = 0, OBSTACLE_PED = 1, OBSTACLE_VEHICLE = 3, OBSTACLE_END = 4,
  OBSTACLE_NEXTEND = 5, OBSTACLE_LINKCLOSED = 6, OBSTACLE_ARRIVALPOS = 7
}
 
typedef std::vector< PState * > Pedestrians
 
typedef std::map< std::pair< const MSLane *, const MSLane * >, WalkingAreaPath > WalkingAreaPaths
 

Protected Member Functions

void arriveAndAdvance (Pedestrians &pedestrians, SUMOTime currentTime, std::set< MSPerson * > &changedLane, int dir)
 handle arrivals and lane advancement More...
 
const ActiveLanes & getActiveLanes ()
 
void moveInDirection (SUMOTime currentTime, std::set< MSPerson * > &changedLane, int dir)
 move all pedestrians forward and advance to the next lane if applicable More...
 
void moveInDirectionOnLane (Pedestrians &pedestrians, const MSLane *lane, SUMOTime currentTime, std::set< MSPerson * > &changedLane, int dir)
 move pedestrians forward on one lane More...
 

Static Protected Attributes

static const double DIST_BEHIND
 
static const double DIST_FAR_AWAY
 
static const double DIST_OVERLAP
 

Private Member Functions

const Obstacles & getNextLaneObstacles (NextLanesObstacles &nextLanesObs, const MSLane *lane, const MSLane *nextLane, int stripes, int nextDir, double currentLength, int currentDir)
 
Pedestrians & getPedestrians (const MSLane *lane)
 retrieves the pedestian vector for the given lane (may be empty) More...
 

Static Private Member Functions

static void addCloserObstacle (Obstacles &obs, double x, int stripe, int numStripes, const std::string &id, double width, int dir, ObstacleType type)
 
static bool addCrossingVehs (const MSLane *crossing, int stripes, double lateral_offset, int dir, Obstacles &crossingVehs)
 add vehicles driving across More...
 
static int connectedDirection (const MSLane *from, const MSLane *to)
 returns the direction in which these lanes are connectioned or 0 if they are not More...
 
static void DEBUG_PRINT (const Obstacles &obs)
 
static WalkingAreaPath * getArbitraryPath (const MSEdge *walkingArea)
 return an arbitrary path across the given walkingArea More...
 
static Obstacles getNeighboringObstacles (const Pedestrians &pedestrians, int egoIndex, int stripes)
 
static NextLaneInfo getNextLane (const PState &ped, const MSLane *currentLane, const MSLane *prevLane)
 computes the successor lane for the given pedestrian and sets the link as well as the direction to use on the succesor lane More...
 
static const MSLane * getNextWalkingArea (const MSLane *currentLane, const int dir, MSLink *&link)
 return the next walkingArea in the given direction More...
 
static int getStripeOffset (int origStripes, int destStripes, bool addRemainder)
 
static void initWalkingAreaPaths (const MSNet *net)
 
static int numStripes (const MSLane *lane)
 return the maximum number of pedestrians walking side by side More...
 
static void transformToCurrentLanePositions (Obstacles &o, int currentDir, int nextDir, double currentLength, double nextLength)
 

Private Attributes

ActiveLanes myActiveLanes
 store of all lanes which have pedestrians on them More...
 
MovePedestrians * myCommand
 the MovePedestrians command that is registered More...
 
int myNumActivePedestrians
 the total number of active pedestrians More...
 

Static Private Attributes

static MinNextLengths myMinNextLengths
 
static WalkingAreaPaths myWalkingAreaPaths
 store for walkinArea elements More...
 
static Pedestrians noPedestrians
 empty pedestrian vector More...
 

Friends

class GUIPerson
 

Detailed Description

The pedestrian following model.

Definition at line 58 of file MSPModel_Striping.h.

Member Typedef Documentation

Definition at line 165 of file MSPModel_Striping.h.

typedef std::map<const MSLane*, double> MSPModel_Striping::MinNextLengths
protected

Definition at line 169 of file MSPModel_Striping.h.

Definition at line 167 of file MSPModel_Striping.h.

typedef std::vector<Obstacle> MSPModel_Striping::Obstacles
protected

Definition at line 166 of file MSPModel_Striping.h.

typedef std::vector<PState*> MSPModel_Striping::Pedestrians
protected

Definition at line 163 of file MSPModel_Striping.h.

typedef std::map<std::pair<const MSLane*, const MSLane*>, WalkingAreaPath> MSPModel_Striping::WalkingAreaPaths
protected

Definition at line 168 of file MSPModel_Striping.h.

Member Enumeration Documentation

Enumerator
OBSTACLE_NONE 
OBSTACLE_PED 
OBSTACLE_VEHICLE 
OBSTACLE_END 
OBSTACLE_NEXTEND 
OBSTACLE_LINKCLOSED 
OBSTACLE_ARRIVALPOS 

Definition at line 192 of file MSPModel_Striping.h.

Constructor & Destructor Documentation

MSPModel_Striping::MSPModel_Striping ( const OptionsCont &  oc,
MSNet *  net 
)
MSPModel_Striping::~MSPModel_Striping ( )

Definition at line 129 of file MSPModel_Striping.cpp.

Member Function Documentation

void MSPModel_Striping::addCloserObstacle ( Obstacles &  obs,
double  x,
int  stripe,
int  numStripes,
const std::string &  id,
double  width,
int  dir,
ObstacleType  type 
)
staticprivate

Definition at line 723 of file MSPModel_Striping.cpp.

References MSPModel::BACKWARD, and MSPModel::FORWARD.

Referenced by getActiveLanes(), and getNextLaneObstacles().

void MSPModel_Striping::arriveAndAdvance ( Pedestrians &  pedestrians,
SUMOTime  currentTime,
std::set< MSPerson * > &  changedLane,
int  dir 
)
protected
bool MSPModel_Striping::blockedAtDist ( const MSLane *  lane,
double  vehSide,
double  vehWidth,
double  oncomingGap,
std::vector< const MSPerson * > *  collectBlockers 
)
virtual

whether a pedestrian is blocking the crossing of lane for the given vehicle bondaries

Parameters
[in]laneThe crossing to check
[in]vehsideThe offset to the vehicle side near the start of the crossing
[in]vehWidthThe width of the vehicle
[in]oncomingGapThe distance which the vehicle wants to keep from oncoming pedestrians
[in]collectBlockersThe list of persons blocking the crossing
Returns
Whether the vehicle must wait

Reimplemented from MSPModel.

Definition at line 169 of file MSPModel_Striping.cpp.

References DEBUGCOND, MSPModel::FORWARD, Named::getID(), MSPModel_Striping::PState::getLength(), getPedestrians(), MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel_Striping::PState::myWaitingTime, SIMTIME, and TIME2STEPS.

bool MSPModel::canTraverse ( int  dir,
const ConstMSEdgeVector &  route 
)
staticinherited

return whether the route may traversed with the given starting direction

Definition at line 99 of file MSPModel.cpp.

References MSPModel::BACKWARD, MSPModel::FORWARD, MSEdge::getFromJunction(), and MSEdge::getToJunction().

Referenced by MSPModel_Striping::PState::PState().

void MSPModel::cleanup ( )
staticinherited

remove state at simulation end

Definition at line 89 of file MSPModel.cpp.

References MSPModel::cleanupHelper(), and MSPModel::myModel.

Referenced by MSNet::clearAll().

void MSPModel_Striping::cleanupHelper ( )
virtual

remove state at simulation end

Reimplemented from MSPModel.

Definition at line 261 of file MSPModel_Striping.cpp.

References myActiveLanes, myMinNextLengths, myNumActivePedestrians, and myWalkingAreaPaths.

int MSPModel_Striping::connectedDirection ( const MSLane *  from,
const MSLane *  to 
)
staticprivate

returns the direction in which these lanes are connectioned or 0 if they are not

Definition at line 280 of file MSPModel_Striping.cpp.

References MSPModel::BACKWARD, MSPModel::FORWARD, MSLinkContHelper::getConnectingLink(), and MSPModel::UNDEFINED_DIRECTION.

Referenced by getActiveLanes(), and getNextLane().

MSPModel_Striping::WalkingAreaPath * MSPModel_Striping::getArbitraryPath ( const MSEdge *  walkingArea)
staticprivate

return an arbitrary path across the given walkingArea

Definition at line 361 of file MSPModel_Striping.cpp.

References Named::getID(), MSEdge::getPredecessors(), MSEdge::getSuccessors(), MSEdge::isWalkingArea(), and myWalkingAreaPaths.

Referenced by getActiveLanes(), and MSPModel_Striping::PState::PState().

MSPModel_Striping::NextLaneInfo MSPModel_Striping::getNextLane ( const PState &  ped,
const MSLane *  currentLane,
const MSLane *  prevLane 
)
staticprivate
const MSLane * MSPModel_Striping::getNextWalkingArea ( const MSLane *  currentLane,
const int  dir,
MSLink *&  link 
)
staticprivate

return the next walkingArea in the given direction

Definition at line 532 of file MSPModel_Striping.cpp.

References MSPModel::FORWARD, MSLane::getIncomingLanes(), MSLink::getLane(), and MSLane::getLinkCont().

Referenced by getActiveLanes(), and getNextLane().

MSPModel_Striping::Pedestrians & MSPModel_Striping::getPedestrians ( const MSLane *  lane)
private

retrieves the pedestian vector for the given lane (may be empty)

Definition at line 249 of file MSPModel_Striping.cpp.

References myActiveLanes, and noPedestrians.

Referenced by blockedAtDist(), getActiveLanes(), getNextLaneObstacles(), hasPedestrians(), and nextBlocking().

int MSPModel_Striping::getStripeOffset ( int  origStripes,
int  destStripes,
bool  addRemainder 
)
staticprivate
bool MSPModel_Striping::hasPedestrians ( const MSLane *  lane)
virtual

whether the given lane has pedestrians on it

Reimplemented from MSPModel.

Definition at line 206 of file MSPModel_Striping.cpp.

References getPedestrians().

void MSPModel_Striping::moveInDirectionOnLane ( Pedestrians &  pedestrians,
const MSLane *  lane,
SUMOTime  currentTime,
std::set< MSPerson * > &  changedLane,
int  dir 
)
protected

move pedestrians forward on one lane

Definition at line 835 of file MSPModel_Striping.cpp.

References addCrossingVehs(), MSLane::anyVehiclesUpstreamBegin(), MSLane::anyVehiclesUpstreamEnd(), MSPModel::BACKWARD, DEBUG_PRINT(), DEBUGCOND, MSPModel_Striping::NextLaneInfo::dir, DIST_OVERLAP, MSPModel_Striping::PState::distanceTo(), MSPModel_Striping::PState::distToLaneEnd(), MSPModel::FORWARD, MSPModel_Striping::WalkingAreaPath::from, MSGlobals::gCheck4Accidents, gDebugFlag1, MSPerson::MSPersonStage_Walking::getArrivalPos(), MSVehicle::getBackPositionOnLane(), MSTransportable::Stage::getDestination(), MSTransportable::Stage::getDestinationStop(), MSLane::getEdge(), Named::getID(), MSBaseVehicle::getID(), MSTransportable::getID(), MSPModel_Striping::PState::getImpatience(), MSVehicle::getLateralPositionOnLane(), MSVehicleType::getLength(), MSPModel_Striping::PState::getLength(), MSLane::getLength(), MSPerson::MSPersonStage_Walking::getMaxSpeed(), MSPModel_Striping::PState::getMaxX(), MSPModel_Striping::PState::getMinGap(), MSPModel_Striping::PState::getMinX(), getNeighboringObstacles(), getNextLane(), getNextLaneObstacles(), MSVehicle::getSpeed(), MSLane::getVehicleNumberWithPartials(), MSBaseVehicle::getVehicleType(), MSTransportable::getVehicleType(), MSLink::getViaLaneOrLane(), MSVehicleType::getWidth(), MSLane::getWidth(), MSPModel_Striping::PState::ignoreRed(), MSEdge::isCrossing(), MSPModel_Striping::NextLaneInfo::lane, MSPModel_Striping::WalkingAreaPath::length, MSPModel_Striping::NextLaneInfo::link, LOOKAHEAD_ONCOMING, LOOKAHEAD_SAMEDIR, LOOKAROUND_VEHICLES, MAX2(), MSPModel_Striping::PState::mergeObstacles(), MIN2(), MSPModel_Striping::PState::myAmJammed, MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myLane, MSPModel_Striping::PState::myNLI, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel_Striping::PState::myRelY, MSPModel_Striping::PState::mySpeed, MSPModel_Striping::PState::myStage, MSPModel_Striping::PState::myWaitingToEnter, MSPModel_Striping::PState::myWalkingAreaPath, NUMERICAL_EPS, numStripes(), OBSTACLE_ARRIVALPOS, OBSTACLE_LINKCLOSED, OBSTACLE_VEHICLE, MSLink::opened(), MSPModel_Striping::PState::otherStripe(), MSPModel::SAFETY_GAP, SIMTIME, MSPModel_Striping::Obstacle::speed, MSPModel_Striping::PState::stripe(), stripeWidth, time2string(), MSPModel_Striping::PState::walk(), WRITE_WARNING, and MSPModel_Striping::Obstacle::xFwd.

Referenced by moveInDirection().

PersonDist MSPModel_Striping::nextBlocking ( const MSLane *  lane,
double  minPos,
double  minRight,
double  maxLeft,
double  stopTime = 0 
)
virtual
void MSPModel_Striping::remove ( PedestrianState *  state)
virtual

remove the specified person from the pedestrian simulation

Implements MSPModel.

Definition at line 155 of file MSPModel_Striping.cpp.

References myActiveLanes.

void MSPModel_Striping::transformToCurrentLanePositions ( Obstacles &  o,
int  currentDir,
int  nextDir,
double  currentLength,
double  nextLength 
)
staticprivate

Friends And Related Function Documentation

friend class GUIPerson
friend

Definition at line 60 of file MSPModel_Striping.h.

Field Documentation

double MSPModel_Striping::dawdling
static
const double MSPModel_Striping::DIST_BEHIND
staticprotected
const double MSPModel_Striping::DIST_FAR_AWAY
staticprotected

Definition at line 149 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT().

const double MSPModel_Striping::DIST_OVERLAP
staticprotected
const double MSPModel_Striping::INAPPROPRIATE_PENALTY
static

Definition at line 121 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

SUMOTime MSPModel_Striping::jamTime
static
const double MSPModel_Striping::LATERAL_PENALTY
static

Definition at line 115 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::LATERAL_SPEED_FACTOR
static

Definition at line 140 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::LOOKAHEAD_ONCOMING
static
const double MSPModel_Striping::LOOKAHEAD_SAMEDIR
static
const double MSPModel_Striping::LOOKAROUND_VEHICLES
static

Definition at line 112 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and moveInDirectionOnLane().

const double MSPModel_Striping::MAX_WAIT_TOLERANCE
static

Definition at line 137 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::getImpatience().

const double MSPModel_Striping::MIN_STARTUP_DIST
static

Definition at line 143 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

ActiveLanes MSPModel_Striping::myActiveLanes
private

store of all lanes which have pedestrians on them

Definition at line 449 of file MSPModel_Striping.h.

Referenced by add(), arriveAndAdvance(), cleanupHelper(), getActiveLanes(), getPedestrians(), moveInDirection(), and remove().

MovePedestrians* MSPModel_Striping::myCommand
private

the MovePedestrians command that is registered

Definition at line 443 of file MSPModel_Striping.h.

Referenced by MSPModel_Striping().

MSPModel_Striping::MinNextLengths MSPModel_Striping::myMinNextLengths
staticprivate
int MSPModel_Striping::myNumActivePedestrians
private

the total number of active pedestrians

Definition at line 446 of file MSPModel_Striping.h.

Referenced by add(), arriveAndAdvance(), and cleanupHelper().

MSPModel_Striping::WalkingAreaPaths MSPModel_Striping::myWalkingAreaPaths
staticprivate

store for walkinArea elements

Definition at line 452 of file MSPModel_Striping.h.

Referenced by cleanupHelper(), DEBUG_PRINT(), getArbitraryPath(), initWalkingAreaPaths(), and MSPModel_Striping::PState::moveToNextLane().

MSPModel_Striping::Pedestrians MSPModel_Striping::noPedestrians
staticprivate

empty pedestrian vector

Definition at line 456 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and getPedestrians().

const double MSPModel_Striping::OBSTRUCTED_PENALTY
static

Definition at line 118 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::OBSTRUCTION_THRESHOLD
static

Definition at line 127 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::ONCOMING_CONFLICT_PENALTY
static

Definition at line 124 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::RESERVE_FOR_ONCOMING_FACTOR
static

Definition at line 133 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel_Striping::RESERVE_FOR_ONCOMING_FACTOR_JUNCTIONS
static

Definition at line 134 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::walk().

const double MSPModel::SAFETY_GAP
staticinherited

Definition at line 114 of file MSPModel.h.

Referenced by MSLink::getLeaderInfo(), and moveInDirectionOnLane().

const double MSPModel::SIDEWALK_OFFSET
staticinherited

the offset for computing person positions when walking on edges without a sidewalk

Definition at line 117 of file MSPModel.h.

Referenced by MSPModel_NonInteracting::PState::getPosition(), and GUINet::initGUIStructures().

const double MSPModel_Striping::SQUEEZE
static

Definition at line 130 of file MSPModel_Striping.h.

Referenced by DEBUG_PRINT(), and MSPModel_Striping::PState::otherStripe().

const int MSPModel::UNDEFINED_DIRECTION
staticinherited

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