Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
MSPModel_NonInteracting.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2014-2023 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
18// The pedestrian following model (prototype)
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <string>
24#include <limits>
27#include "MSPerson.h"
28#include "MSPModel.h"
29
30// ===========================================================================
31// class declarations
32// ===========================================================================
33class MSNet;
34class MSLink;
35class MSLane;
36class MSJunction;
37
38
39// ===========================================================================
40// class definitions
41// ===========================================================================
48public:
49
52
54
57
59 MSTransportableStateAdapter* loadState(MSTransportable* transportable, MSStageMoving* stage, std::istringstream& in);
60
62 void clearState();
63
66
69 return false;
70 }
71
75 }
76
80
81private:
82 class MoveToNextEdge : public Command {
83 public:
85 myParent(walk), myTransportable(transportable), myModel(model) {}
86 SUMOTime execute(SUMOTime currentTime);
87 void abortWalk() {
88 myTransportable = nullptr;
89 }
91 return myTransportable;
92 }
93
94 private:
98
99 private:
102 };
103
104
107 public:
108 PState(MoveToNextEdge* cmd, std::istringstream* in = nullptr);
109
113 double getEdgePos(const MSStageMoving& stage, SUMOTime now) const;
114 int getDirection(const MSStageMoving& stage, SUMOTime now) const;
115 virtual Position getPosition(const MSStageMoving& stage, SUMOTime now) const;
116 virtual double getAngle(const MSStageMoving& stage, SUMOTime now) const;
117 SUMOTime getWaitingTime(const MSStageMoving& stage, SUMOTime now) const;
118 double getSpeed(const MSStageMoving& stage) const;
119 const MSEdge* getNextEdge(const MSStageMoving& stage) const;
121
123 virtual SUMOTime computeDuration(const MSEdge* prev, const MSStageMoving& stage, SUMOTime currentTime);
125 return myCommand;
126 }
127
131
134 void saveState(std::ostringstream& out);
135
136 protected:
142 };
143
144
145 class CState : public PState {
146 public:
147 CState(MoveToNextEdge* cmd, std::istringstream* in = nullptr);
148
150 static const double LATERAL_OFFSET;
151
153 Position getPosition(const MSStageMoving& stage, SUMOTime now) const;
155 double getAngle(const MSStageMoving& stage, SUMOTime now) const;
157 SUMOTime computeDuration(const MSEdge* prev, const MSStageMoving& stage, SUMOTime currentTime);
158
159 private:
160 Position myCurrentBeginPosition; //the position the container is moving from during its tranship stage
161 Position myCurrentEndPosition; //the position the container is moving to during its tranship stage
162 };
163
164private:
167
170
171};
172
173
174
long long int SUMOTime
Definition GUI.h:36
Base (microsim) event class.
Definition Command.h:50
A road/street connecting two junctions.
Definition MSEdge.h:77
The base class for an intersection.
Definition MSJunction.h:58
Representation of a lane in the micro simulation.
Definition MSLane.h:84
The simulated network and simulation perfomer.
Definition MSNet.h:88
Position getPosition(const MSStageMoving &stage, SUMOTime now) const
return the network coordinate of the container
double getAngle(const MSStageMoving &stage, SUMOTime now) const
return the direction in which the container heading to
SUMOTime computeDuration(const MSEdge *prev, const MSStageMoving &stage, SUMOTime currentTime)
compute tranship time on edge and update state members
static const double LATERAL_OFFSET
the offset for computing container positions when being transhiped
MoveToNextEdge(MSTransportable *transportable, MSStageMoving &walk, MSPModel_NonInteracting *model)
MoveToNextEdge & operator=(const MoveToNextEdge &)
Invalidated assignment operator.
const MSTransportable * getTransportable() const
SUMOTime execute(SUMOTime currentTime)
Executes the command.
implementation of callbacks to retrieve various state information from the model
const MSEdge * getNextEdge(const MSStageMoving &stage) const
return the list of internal edges if the transportable is on an intersection
SUMOTime getWaitingTime(const MSStageMoving &stage, SUMOTime now) const
return the time the transportable spent standing
virtual double getAngle(const MSStageMoving &stage, SUMOTime now) const
return the direction in which the transportable faces in degrees
double getSpeed(const MSStageMoving &stage) const
return the current speed of the transportable
virtual Position getPosition(const MSStageMoving &stage, SUMOTime now) const
return the network coordinate of the transportable
virtual SUMOTime computeDuration(const MSEdge *prev, const MSStageMoving &stage, SUMOTime currentTime)
compute walking time on edge and update state members
double getEdgePos(const MSStageMoving &stage, SUMOTime now) const
abstract methods inherited from PedestrianState
void saveState(std::ostringstream &out)
Saves the current state into the given stream.
int getDirection(const MSStageMoving &stage, SUMOTime now) const
return the walking direction (FORWARD, BACKWARD)
The pedestrian following model.
MSTransportableStateAdapter * add(MSTransportable *transportable, MSStageMoving *stage, SUMOTime now)
register the given transportable
void remove(MSTransportableStateAdapter *state)
remove the specified person from the pedestrian simulation
void clearState()
Resets pedestrians when quick-loading state.
MSTransportableStateAdapter * loadState(MSTransportable *transportable, MSStageMoving *stage, std::istringstream &in)
load the state of the given transportable
int myNumActivePedestrians
the total number of active pedestrians
bool usingInternalLanes()
whether movements on intersections are modelled
int getActiveNumber()
return the number of active objects
MSNet * myNet
the net to which to issue moveToNextEdge commands
The pedestrian (and also sometimes container) movement model.
Definition MSPModel.h:51
abstract base class for managing callbacks to retrieve various state information from the model
Definition MSPModel.h:150
A storage for options typed value containers)
Definition OptionsCont.h:89
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37