SUMO - Simulation of Urban MObility
|
The pedestrian following model. More...
#include <MSPModel_Striping.h>
Data Structures | |
class | by_xpos_sorter |
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, SUMOReal distToCrossing, std::vector< const MSPerson * > *collectBlockers) |
whether a pedestrian is blocking the crossing of lane at offset distToCrossing More... | |
void | cleanupHelper () |
remove state at simulation end More... | |
MSPModel_Striping (const OptionsCont &oc, MSNet *net) | |
Constructor (it should not be necessary to construct more than one instance) 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 MSLane * | getSidewalk (const MSEdge *edge) |
return the appropriate lane to walk on More... | |
Static Public Attributes | |
static const int | BACKWARD |
static const int | FORWARD |
static const SUMOReal | SAFETY_GAP |
static const SUMOReal | SIDEWALK_OFFSET |
the offset for computing person positions when walking on edges without a sidewalk More... | |
static const int | UNDEFINED_DIRECTION |
static SUMOReal | stripeWidth |
model parameters More... | |
static SUMOReal | dawdling |
static SUMOTime | jamTime |
static const SUMOReal | LOOKAHEAD_SAMEDIR |
static const SUMOReal | LOOKAHEAD_ONCOMING |
static const SUMOReal | LATERAL_PENALTY |
static const SUMOReal | SQUEEZE |
static const SUMOReal | BLOCKER_LOOKAHEAD |
static const SUMOReal | RESERVE_FOR_ONCOMING_FACTOR |
static const SUMOReal | MAX_WAIT_TOLERANCE |
static const SUMOReal | LATERAL_SPEED_FACTOR |
static const SUMOReal | MIN_STARTUP_SPEED |
Protected Types | |
typedef std::map< const MSLane *, Pedestrians, lane_by_numid_sorter > | ActiveLanes |
typedef std::map< const MSLane *, Obstacles, lane_by_numid_sorter > | NextLanesObstacles |
typedef std::vector< Obstacle > | Obstacles |
typedef std::vector< PState * > | Pedestrians |
typedef std::map< std::pair < const MSLane *, const MSLane * > , WalkingAreaPath > | WalkingAreaPaths |
Protected Member Functions | |
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... | |
Private Member Functions | |
const Obstacles & | getNextLaneObstacles (NextLanesObstacles &nextLanesObs, const MSLane *lane, const MSLane *nextLane, int stripes, SUMOReal nextLength, int nextDir, SUMOReal 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, SUMOReal x, int stripe, const std::string &id, int stripes, int dir) |
static void | addMappedObstacle (Obstacles &obs, const PState &p, int stripe, int currentDir, int nextDir, int offset, int stripes, int nextStripes) |
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 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 void | initWalkingAreaPaths (const MSNet *net) |
static Obstacles | mergeObstacles (const Obstacles &obs1, const Obstacles &obs2, int dir) |
static int | numStripes (const MSLane *lane) |
return the maximum number of pedestrians walking side by side More... | |
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 WalkingAreaPaths | myWalkingAreaPaths |
store for walkinArea elements More... | |
static Pedestrians | noPedestrians |
empty pedestrian vector More... | |
Friends | |
class | GUIPerson |
The pedestrian following model.
Definition at line 57 of file MSPModel_Striping.h.
|
protected |
Definition at line 131 of file MSPModel_Striping.h.
|
protected |
Definition at line 133 of file MSPModel_Striping.h.
|
protected |
Definition at line 132 of file MSPModel_Striping.h.
|
protected |
Definition at line 129 of file MSPModel_Striping.h.
|
protected |
Definition at line 134 of file MSPModel_Striping.h.
MSPModel_Striping::MSPModel_Striping | ( | const OptionsCont & | oc, |
MSNet * | net | ||
) |
Constructor (it should not be necessary to construct more than one instance)
Definition at line 98 of file MSPModel_Striping.cpp.
References MSEventControl::ADAPT_AFTER_EXECUTION, MSEventControl::addEvent(), dawdling, DELTA_T, MSNet::getBeginOfTimestepEvents(), MSNet::getCurrentTimeStep(), OptionsCont::getFloat(), OptionsCont::getString(), initWalkingAreaPaths(), jamTime, myCommand, string2time(), stripeWidth, and SUMOTime_MAX.
MSPModel_Striping::~MSPModel_Striping | ( | ) |
Definition at line 114 of file MSPModel_Striping.cpp.
|
virtual |
register the given person as a pedestrian
Implements MSPModel.
Definition at line 119 of file MSPModel_Striping.cpp.
References MSPerson::getCurrentStageType(), MSPerson::getEdge(), MSPModel::getSidewalk(), myActiveLanes, myNumActivePedestrians, and MSPerson::WALKING.
|
staticprivate |
Definition at line 543 of file MSPModel_Striping.cpp.
Referenced by getNextLaneObstacles().
|
staticprivate |
Definition at line 532 of file MSPModel_Striping.cpp.
Referenced by getNextLaneObstacles().
|
virtual |
whether a pedestrian is blocking the crossing of lane at offset distToCrossing
Implements MSPModel.
Definition at line 130 of file MSPModel_Striping.cpp.
References BLOCKER_LOOKAHEAD, MSPModel::FORWARD, MSPModel_Striping::PState::getLength(), getPedestrians(), MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel::SAFETY_GAP, and SUMOReal.
|
staticinherited |
return whether the route may traversed with the given starting direction
Definition at line 109 of file MSPModel.cpp.
References MSPModel::BACKWARD, MSPModel::FORWARD, MSEdge::getFromJunction(), and MSEdge::getToJunction().
Referenced by MSPModel_Striping::PState::PState().
|
staticinherited |
remove state at simulation end
Definition at line 83 of file MSPModel.cpp.
References MSPModel::cleanupHelper(), and MSPModel::myModel.
Referenced by MSNet::clearAll().
|
virtual |
remove state at simulation end
Reimplemented from MSPModel.
Definition at line 170 of file MSPModel_Striping.cpp.
References myActiveLanes, myNumActivePedestrians, and myWalkingAreaPaths.
returns the direction in which these lanes are connectioned or 0 if they are not
Definition at line 183 of file MSPModel_Striping.cpp.
References MSPModel::BACKWARD, MSPModel::FORWARD, MSLinkContHelper::getConnectingLink(), and MSPModel::UNDEFINED_DIRECTION.
Referenced by getNextLane().
|
staticprivate |
Definition at line 50 of file MSPModel_Striping.cpp.
Referenced by getNeighboringObstacles(), moveInDirectionOnLane(), and MSPModel_Striping::PState::walk().
|
inlineprotected |
Definition at line 314 of file MSPModel_Striping.h.
References myActiveLanes.
|
staticinherited |
Definition at line 65 of file MSPModel.cpp.
References MSNet::getInstance(), OptionsCont::getOptions(), OptionsCont::getString(), and MSPModel::myModel.
Referenced by MSPerson::MSPersonStage_Walking::proceed().
|
staticprivate |
Definition at line 436 of file MSPModel_Striping.cpp.
References DEBUG_PRINT(), DEBUGCOND, MSPerson::getID(), MSPModel_Striping::PState::getLength(), MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel_Striping::PState::myWaitingToEnter, MSPModel_Striping::PState::otherStripe(), SIMTIME, MSPModel_Striping::PState::stripe(), and SUMOReal.
Referenced by moveInDirectionOnLane().
|
staticprivate |
computes the successor lane for the given pedestrian and sets the link as well as the direction to use on the succesor lane
[in] | currentLane | The lane the pedestrian is currently on |
[in] | ped | The pedestrian for which to compute the next lane |
Definition at line 261 of file MSPModel_Striping.cpp.
References MSPModel::BACKWARD, PedestrianRouter< E, L, N, INTERNALROUTER >::compute(), connectedDirection(), DEBUGCOND, MSPModel::FORWARD, MSPerson::MSPersonStage_Walking::getArrivalPos(), MSLinkContHelper::getConnectingLink(), MSLane::getEdge(), MSEdge::getFromJunction(), Named::getID(), MSPerson::getID(), MSNet::getInstance(), MSLane::getLength(), MSEdge::getLength(), MSLane::getLinkCont(), MSLane::getLogicalPredecessorLane(), MSPerson::MSPersonStage_Walking::getMaxSpeed(), MSPerson::MSPersonStage_Walking::getNextRouteEdge(), getNextWalkingArea(), MSNet::getPedestrianRouter(), MSPerson::MSPersonStage_Walking::getRoute(), MSPModel::getSidewalk(), MSEdge::getToJunction(), MSLink::getViaLaneOrLane(), MSEdge::isCrossing(), MSEdge::isInternal(), MSEdge::isWalkingArea(), MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myStage, POSITION_EPS, SIMTIME, SUMOReal, toString(), and MSPModel::UNDEFINED_DIRECTION.
Referenced by moveInDirectionOnLane(), MSPModel_Striping::PState::moveToNextLane(), and MSPModel_Striping::PState::PState().
|
private |
Definition at line 459 of file MSPModel_Striping.cpp.
References addCloserObstacle(), addMappedObstacle(), MSPModel::BACKWARD, MSPModel::FORWARD, MSLane::getEdge(), MSPerson::getID(), getPedestrians(), MSPModel_Striping::PState::getPosition(), MSLane::getShape(), MSLane::getWidth(), MSEdge::isWalkingArea(), MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myStage, MSPModel_Striping::PState::myWaitingToEnter, NUMERICAL_EPS, numStripes(), MSPModel_Striping::PState::otherStripe(), MSPModel_Striping::PState::stripe(), stripeWidth, SUMOReal, PositionVector::transformToVectorCoordinates(), Position::x(), MSPModel_Striping::Obstacle::x, and Position::y().
Referenced by moveInDirectionOnLane().
|
staticprivate |
return the next walkingArea in the given direction
Definition at line 401 of file MSPModel_Striping.cpp.
References MSPModel::FORWARD, MSLane::getIncomingLanes(), MSLink::getLane(), and MSLane::getLinkCont().
Referenced by getNextLane().
|
private |
retrieves the pedestian vector for the given lane (may be empty)
Definition at line 158 of file MSPModel_Striping.cpp.
References myActiveLanes, and noPedestrians.
Referenced by blockedAtDist(), and getNextLaneObstacles().
return the appropriate lane to walk on
Definition at line 93 of file MSPModel.cpp.
References MSEdge::getLanes(), and SVC_PEDESTRIAN.
Referenced by add(), getNextLane(), MSPModel_NonInteracting::PState::getPosition(), and initWalkingAreaPaths().
|
staticprivate |
Definition at line 197 of file MSPModel_Striping.cpp.
References MSPModel::BACKWARD, MSEdge::dictionary(), MSEdge::dictSize(), Position::distanceTo2D(), PositionVector::extrapolate(), MSPModel::FORWARD, MSLinkContHelper::getConnectingLink(), MSEdge::getIncomingEdges(), MSLane::getShape(), MSPModel::getSidewalk(), MSEdge::getSuccessors(), MSLane::getWidth(), MSEdge::isWalkingArea(), MIN2(), myWalkingAreaPaths, POSITION_EPS, PositionVector::push_back(), PositionVector::push_back_noDoublePos(), PositionVector::reverse(), and SUMOReal.
Referenced by MSPModel_Striping().
|
staticprivate |
Definition at line 424 of file MSPModel_Striping.cpp.
Referenced by moveInDirectionOnLane().
|
protected |
move all pedestrians forward and advance to the next lane if applicable
Definition at line 550 of file MSPModel_Striping.cpp.
References DEBUGCOND, MSPModel_Striping::WalkingAreaPath::from, MSLane::getEdge(), Named::getID(), MSPerson::getID(), MSPModel_Striping::PState::getPosition(), MSLane::getWidth(), Position::INVALID, MSEdge::isWalkingArea(), moveInDirectionOnLane(), MSPModel_Striping::PState::moveToNextLane(), myActiveLanes, MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myLane, myNumActivePedestrians, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel_Striping::PState::myRelY, MSPModel_Striping::PState::mySpeed, MSPModel_Striping::PState::myStage, MSPModel_Striping::PState::myWalkingAreaPath, MSPModel_Striping::WalkingAreaPath::shape, SIMTIME, stripeWidth, SUMOReal, MSPModel_Striping::WalkingAreaPath::to, PositionVector::transformToVectorCoordinates(), Position::x(), and Position::y().
|
protected |
move pedestrians forward on one lane
Definition at line 642 of file MSPModel_Striping.cpp.
References DEBUG_PRINT(), DEBUGCOND, MSPModel_Striping::NextLaneInfo::dir, MSPModel_Striping::PState::distToLaneEnd(), MSPModel_Striping::WalkingAreaPath::from, MSPerson::getID(), MSPModel_Striping::PState::getImpatience(), MSPModel_Striping::PState::getLength(), MSLane::getLength(), MSPerson::MSPersonStage_Walking::getMaxSpeed(), getNeighboringObstacles(), getNextLane(), getNextLaneObstacles(), MSPModel_Striping::NextLaneInfo::lane, MSPModel_Striping::WalkingAreaPath::length, MSPModel_Striping::NextLaneInfo::link, LOOKAHEAD_ONCOMING, mergeObstacles(), MSPModel_Striping::PState::myDir, MSPModel_Striping::PState::myLane, MSPModel_Striping::PState::myNLI, MSPModel_Striping::PState::myPerson, MSPModel_Striping::PState::myRelX, MSPModel_Striping::PState::myStage, MSPModel_Striping::PState::myWaitingToEnter, MSPModel_Striping::PState::myWalkingAreaPath, numStripes(), MSLink::opened(), MSPModel_Striping::PState::otherStripe(), POSITION_EPS, SIMTIME, MSPModel_Striping::PState::stripe(), SUMOReal, and MSPModel_Striping::PState::walk().
Referenced by moveInDirection().
|
staticprivate |
return the maximum number of pedestrians walking side by side
Definition at line 178 of file MSPModel_Striping.cpp.
References MSLane::getWidth(), and stripeWidth.
Referenced by getNextLaneObstacles(), moveInDirectionOnLane(), MSPModel_Striping::PState::moveToNextLane(), MSPModel_Striping::PState::otherStripe(), MSPModel_Striping::PState::PState(), MSPModel_Striping::PState::stripe(), and MSPModel_Striping::PState::walk().
|
friend |
Definition at line 59 of file MSPModel_Striping.h.
|
staticinherited |
Definition at line 77 of file MSPModel.h.
Referenced by MSPModel::canTraverse(), MSPModel_NonInteracting::PState::computeWalkingTime(), connectedDirection(), MSPModel_Striping::MovePedestrians::execute(), MSPModel_Striping::PState::getAngle(), getNextLane(), getNextLaneObstacles(), initWalkingAreaPaths(), MSPModel_Striping::PState::moveToNextLane(), MSPModel_Striping::PState::PState(), and MSPModel_Striping::PState::walk().
|
static |
Definition at line 101 of file MSPModel_Striping.h.
Referenced by blockedAtDist().
|
static |
Definition at line 84 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping(), and MSPModel_Striping::PState::walk().
|
staticinherited |
Definition at line 73 of file MSPModel.h.
Referenced by blockedAtDist(), MSPModel::canTraverse(), MSPModel_NonInteracting::PState::computeWalkingTime(), connectedDirection(), MSPModel_Striping::PState::distToLaneEnd(), MSPModel_Striping::MovePedestrians::execute(), getNextLane(), getNextLaneObstacles(), getNextWalkingArea(), initWalkingAreaPaths(), MSPModel_Striping::PState::PState(), and MSPModel_Striping::PState::walk().
|
static |
Definition at line 87 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping(), and MSPModel_Striping::PState::walk().
|
static |
Definition at line 95 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::walk().
|
static |
Definition at line 110 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::walk().
|
static |
Definition at line 92 of file MSPModel_Striping.h.
Referenced by moveInDirectionOnLane(), and MSPModel_Striping::PState::walk().
|
static |
Definition at line 90 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::walk().
|
static |
Definition at line 107 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::getImpatience().
|
static |
Definition at line 113 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::walk().
|
private |
store of all lanes which have pedestrians on them
Definition at line 362 of file MSPModel_Striping.h.
Referenced by add(), cleanupHelper(), getActiveLanes(), getPedestrians(), and moveInDirection().
|
private |
the MovePedestrians command that is registered
Definition at line 356 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping().
|
private |
the total number of active pedestrians
Definition at line 359 of file MSPModel_Striping.h.
Referenced by add(), cleanupHelper(), and moveInDirection().
|
staticprivate |
store for walkinArea elements
Definition at line 365 of file MSPModel_Striping.h.
Referenced by cleanupHelper(), initWalkingAreaPaths(), and MSPModel_Striping::PState::moveToNextLane().
|
staticprivate |
empty pedestrian vector
Definition at line 368 of file MSPModel_Striping.h.
Referenced by getPedestrians().
|
static |
Definition at line 104 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::walk().
|
staticinherited |
Definition at line 81 of file MSPModel.h.
Referenced by blockedAtDist().
|
staticinherited |
the offset for computing person positions when walking on edges without a sidewalk
Definition at line 84 of file MSPModel.h.
Referenced by MSPModel_NonInteracting::PState::getPosition(), MSPerson::MSPersonStage_Driving::getPosition(), MSPerson::MSPersonStage_Waiting::getPosition(), and GUINet::initGUIStructures().
|
static |
Definition at line 98 of file MSPModel_Striping.h.
Referenced by MSPModel_Striping::PState::otherStripe().
|
static |
model parameters
Definition at line 81 of file MSPModel_Striping.h.
Referenced by getNextLaneObstacles(), MSPModel_Striping::PState::getPosition(), moveInDirection(), MSPModel_Striping::PState::moveToNextLane(), MSPModel_Striping(), numStripes(), MSPModel_Striping::PState::otherStripe(), MSPModel_Striping::PState::PState(), MSPModel_Striping::PState::stripe(), and MSPModel_Striping::PState::walk().
|
staticinherited |
Definition at line 78 of file MSPModel.h.
Referenced by MSPModel_NonInteracting::PState::computeWalkingTime(), connectedDirection(), getNextLane(), and MSPModel_Striping::PState::moveToNextLane().