Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
MSParkingArea.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2015-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// A area where vehicles can park next to the road
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <vector>
24#include <algorithm>
25#include <map>
26#include <string>
28#include <utils/common/Named.h>
30#include "MSStoppingPlace.h"
31
32
33// ===========================================================================
34// class declarations
35// ===========================================================================
36class MSLane;
37class SUMOVehicle;
38class MSTransportable;
39class Position;
40class Command;
41
42
43// ===========================================================================
44// class definitions
45// ===========================================================================
59public:
60
74 MSParkingArea(const std::string& id,
75 const std::vector<std::string>& lines, MSLane& lane,
76 double begPos, double endPos, int capacity,
77 double width, double length, double angle, const std::string& name,
78 bool onRoad,
79 const std::string& departPos,
80 bool lefthand);
81
83 virtual ~MSParkingArea();
84
86 int getCapacity() const;
87
89 bool parkOnRoad() const;
90
92 int getLotIndex(const SUMOVehicle* veh) const;
93
100 int getOccupancy() const;
101
104
106 int getLastStepOccupancy() const;
107
117 void enter(SUMOVehicle* veh);
118
128 void leaveFrom(SUMOVehicle* what);
129
137 SUMOTime updateOccupancy(SUMOTime currentTime);
138
140 double getLastFreePos(const SUMOVehicle& forVehicle, double brakePos = 0) const;
141
147 double getLastFreePosWithReservation(SUMOTime t, const SUMOVehicle& forVehicle, double brakePos);
148
150 Position getVehiclePosition(const SUMOVehicle& forVehicle) const;
151
153 double getInsertionPosition(const SUMOVehicle& forVehicle) const;
154
156 double getVehicleAngle(const SUMOVehicle& forVehicle) const;
157
159 double getVehicleSlope(const SUMOVehicle& forVehicle) const;
160
166 int getLastFreeLotAngle() const;
167
173 double getLastFreeLotGUIAngle() const;
174
176 int getManoeuverAngle(const SUMOVehicle& forVehicle) const;
177
179 double getGUIAngle(const SUMOVehicle& forVehicle) const;
180
192 virtual void addLotEntry(double x, double y, double z,
193 double width, double length,
194 double angle, double slope);
195
197 double getWidth() const;
198
200 double getLength() const;
201
203 double getAngle() const;
204
206 void notifyEgressBlocked();
207
209 int getNumAlternatives() const;
210
212 void setNumAlternatives(int alternatives);
213
214protected:
221
223 LotSpaceDefinition(int index, SUMOVehicle* vehicle, double x, double y, double z, double rotation, double slope, double width, double length);
224
226 const int index;
227
230
233
235 const double rotation;
236
238 const double slope;
239
241 const double width;
242
244 const double length;
245
247 double endPos;
248
251
254 };
255
262 void computeLastFreePos();
263
266
269
272
275
277 double myWidth;
278
280 double myLength;
281
283 double myAngle;
284
286 std::vector<LotSpaceDefinition> mySpaceOccupancies;
287
290
293
296
299
302
305
308
312
315
316private:
318 MSParkingArea(const MSParkingArea&) = delete;
319
322};
long long int SUMOTime
Definition GUI.h:36
DepartPosDefinition
Possible ways to choose the departure position.
Base (microsim) event class.
Definition Command.h:50
Representation of a lane in the micro simulation.
Definition MSLane.h:84
A lane area vehicles can halt at.
void notifyEgressBlocked()
update state so that vehicles wishing to enter cooperate with exiting vehicles
double getAngle() const
Returns the lot rectangle angle.
void leaveFrom(SUMOVehicle *what)
Called if a vehicle leaves this stop.
int getNumAlternatives() const
get number alternatives
int myReservations
number of reservations
int myCapacity
Stop area total capacity.
int getCapacity() const
Returns the area capacity.
void enter(SUMOVehicle *veh)
Called if a vehicle enters this stop.
MSParkingArea(const MSParkingArea &)=delete
Invalidated copy constructor.
int myLastStepOccupancy
Changes to the occupancy in the current time step.
MSParkingArea & operator=(const MSParkingArea &)=delete
Invalidated assignment operator.
bool myOnRoad
Whether vehicles stay on the road.
int myLastFreeLot
Last free lot number (-1 no free lot)
void setNumAlternatives(int alternatives)
set number alternatives
PositionVector myShape
The roadside shape of this parkingArea.
double getLength() const
Returns the lot rectangle length.
virtual void addLotEntry(double x, double y, double z, double width, double length, double angle, double slope)
Add a lot entry to parking area.
SUMOTime myReservationTime
track parking reservations from the lane for the current time step
double getWidth() const
Returns the lot rectangle width.
double getVehicleSlope(const SUMOVehicle &forVehicle) const
Returns the slope of parked vehicle.
int myRoadSideCapacity
Stop area capacity configured via roadsideCapacity.
int getLotIndex(const SUMOVehicle *veh) const
compute lot for this vehicle
virtual ~MSParkingArea()
Destructor.
SUMOTime updateOccupancy(SUMOTime currentTime)
Called at the end of the time step.
int getLastFreeLotAngle() const
Return the angle of myLastFreeLot - the next parking lot only expected to be called after we have est...
double myDepartPos
custom departPos
double myAngle
The default angle of each parking space.
bool parkOnRoad() const
whether vehicles park on the road
DepartPosDefinition myDepartPosDefinition
double myReservationMaxLength
reservation max length
int myNumAlternatives
the number of alternative parkingAreas that are assigned to parkingAreaRerouter
double myWidth
The default width of each parking space.
double myLength
The default length of each parking space.
void computeLastFreePos()
Computes the last free position on this stop.
int getOccupancyIncludingBlocked() const
Returns the area occupancy.
double getLastFreePosWithReservation(SUMOTime t, const SUMOVehicle &forVehicle, double brakePos)
Returns the last free position on this stop including reservatiosn from the current lane and time ste...
double getLastFreeLotGUIAngle() const
Return the GUI angle of myLastFreeLot - the angle the GUI uses to rotate into the next parking lot as...
int getManoeuverAngle(const SUMOVehicle &forVehicle) const
Return the manoeuver angle of the lot where the vehicle is parked.
int getLastStepOccupancy() const
Returns the area occupancy at the end of the last simulation step.
int getOccupancy() const
Returns the area occupancy.
double getVehicleAngle(const SUMOVehicle &forVehicle) const
Returns the angle of parked vehicle.
Command * myUpdateEvent
Event for updating the occupancy.
std::vector< LotSpaceDefinition > mySpaceOccupancies
All the spaces in this parking area.
double getInsertionPosition(const SUMOVehicle &forVehicle) const
Returns the insertion position of a parked vehicle.
Position getVehiclePosition(const SUMOVehicle &forVehicle) const
Returns the position of parked vehicle.
double getGUIAngle(const SUMOVehicle &forVehicle) const
Return the GUI angle of the lot where the vehicle is parked.
bool myEgressBlocked
whether a vehicle wants to exit but is blocked
A lane area vehicles can halt at.
double getLastFreePos() const
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
A list of positions.
Representation of a vehicle.
Definition SUMOVehicle.h:62
Representation of a single lot space.
const Position position
The position of the vehicle when parking in this space.
bool sideIsLHS
Whether the lot is on the LHS of the lane relative to the lane direction.
const int index
the running index
double manoeuverAngle
The angle between lane and lot through which a vehicle must manoeuver to enter the lot.
const double rotation
The rotation.
double endPos
The position along the lane that the vehicle needs to reach for entering this lot.
LotSpaceDefinition()
default constructor
const double length
The length.
const SUMOVehicle * vehicle
The last parked vehicle or 0.