Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
SUMOVehicleClass.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2024 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/****************************************************************************/
22// Definitions of SUMO vehicle classes and helper functions
23/****************************************************************************/
24#pragma once
25#include <config.h>
26#include <string>
27#include <set>
28#include <limits>
33
34
35// ===========================================================================
36// class declarations
37// ===========================================================================
38class OutputDevice;
40
41// ===========================================================================
42// enum definitions
43// ===========================================================================
48enum class SUMOVehicleShape {
50 UNKNOWN,
54 BICYCLE,
56 MOPED,
70 //PASSENGER_AUTOMATED,
72 TAXI,
76 TRUCK,
82 BUS,
90 RAIL,
98 ANT,
100 SHIP,
102 EMERGENCY,
106 POLICE,
108 RICKSHAW,
110 SCOOTER,
113};
114
115
116
140enum SUMOVehicleClass : int64_t {
143
145
146
154 SVC_ARMY = 1 << 3,
156 SVC_VIP = 1 << 4,
158
159
161
162
164
168 SVC_HOV = 1 << 7,
170 SVC_TAXI = 1 << 8,
172 SVC_BUS = 1 << 9,
174 SVC_COACH = 1 << 10,
176 SVC_DELIVERY = 1 << 11,
178 SVC_TRUCK = 1 << 12,
180 SVC_TRAILER = 1 << 13,
182 SVC_MOTORCYCLE = 1 << 14,
184 SVC_MOPED = 1 << 15,
186 SVC_BICYCLE = 1 << 16,
188 SVC_E_VEHICLE = 1 << 17,
189
191 SVC_TRAM = 1 << 18,
193 SVC_RAIL_URBAN = 1 << 19,
195 SVC_RAIL = 1 << 20,
199 SVC_RAIL_FAST = 1 << 22,
200
202 SVC_SHIP = 1 << 23,
203
204 SVC_CONTAINER = 1 << 24,
205 SVC_CABLE_CAR = 1 << 25,
206 SVC_SUBWAY = 1 << 26,
207 SVC_AIRCRAFT = 1 << 27,
208 SVC_WHEELCHAIR = 1 << 28,
209 SVC_SCOOTER = 1 << 29,
210 SVC_DRONE = 1 << 30,
211
213 SVC_CUSTOM1 = (long long int)1 << 31,
215 SVC_CUSTOM2 = (long long int)1 << 32,
217
230
233extern std::set<std::string> deprecatedVehicleClassesSeen;
235
237typedef long long int SVCPermissions;
238
240extern const SVCPermissions SVCAll;
241
244
251
254
255// ===========================================================================
256// Stop Offsets
257// ===========================================================================
258
261
262public:
264 StopOffset();
265
267 StopOffset(const SUMOSAXAttributes& attrs, bool& ok);
268
270 bool isDefined() const;
271
273 void reset();
274
277
279 std::string getExceptions() const;
280
282 double getOffset() const;
283
285 void setPermissions(const SVCPermissions permissions);
286
288 void setExceptions(const std::string permissions);
289
291 void setOffset(const double offset);
292
294 bool operator==(StopOffset const& other) const;
295
297 bool operator!=(StopOffset const& other) const;
298
299private:
302
304 double myOffset;
305};
306
307// ===========================================================================
308// method declarations
309// ===========================================================================
310
311// ---------------------------------------------------------------------------
312// abstract vehicle class / purpose
313// ---------------------------------------------------------------------------
314
320extern const std::string& getVehicleClassNames(SVCPermissions permissions, bool expand = false);
321
326extern const std::vector<std::string>& getVehicleClassNamesList(SVCPermissions permissions);
327
333extern SUMOVehicleClass getVehicleClassID(const std::string& name);
334
339extern SVCPermissions getVehicleClassCompoundID(const std::string& name);
340
348extern SVCPermissions parseVehicleClasses(const std::string& allowedS);
349
351extern bool canParseVehicleClasses(const std::string& classes);
352
357extern SVCPermissions parseVehicleClasses(const std::string& allowedS, const std::string& disallowedS, const MMVersion& networkVersion = NETWORK_VERSION);
358
363extern SVCPermissions parseVehicleClasses(const std::vector<std::string>& allowedS);
364
370extern SVCPermissions extraDisallowed(SVCPermissions disallowed, const MMVersion& networkVersion);
371
374
376extern void writePermissions(OutputDevice& into, SVCPermissions permissions);
377
379extern void writePreferences(OutputDevice& into, SVCPermissions preferred);
380
381// ---------------------------------------------------------------------------
382// vehicle shape class
383// ---------------------------------------------------------------------------
384
389extern std::string getVehicleShapeName(SUMOVehicleShape id);
390
395extern SUMOVehicleShape getVehicleShapeID(const std::string& name);
396
398extern bool canParseVehicleShape(const std::string& shape);
399
404extern bool isRailway(SVCPermissions permissions);
405
410extern bool isTram(SVCPermissions permissions);
411
416extern bool isBikepath(SVCPermissions permissions);
417
422extern bool isWaterway(SVCPermissions permissions);
423
428extern bool isAirway(SVCPermissions permissions);
429
434extern bool isForbidden(SVCPermissions permissions);
435
440extern bool isSidewalk(SVCPermissions permissions);
441
446extern bool isForVulnerableModes(SVCPermissions permissions);
447
452extern bool noVehicles(SVCPermissions permissions);
453
460
461// ---------------------------------------------------------------------------
462// default vehicle type parameter
463// ---------------------------------------------------------------------------
464extern const std::string DEFAULT_VTYPE_ID;
465extern const std::string DEFAULT_PEDTYPE_ID;
466extern const std::string DEFAULT_BIKETYPE_ID;
467extern const std::string DEFAULT_CONTAINERTYPE_ID;
468extern const std::string DEFAULT_TAXITYPE_ID;
469extern const std::string DEFAULT_RAILTYPE_ID;
470extern const std::set<std::string> DEFAULT_VTYPES;
471
472extern const double DEFAULT_VEH_PROB; // !!! does this belong here?
473extern const double DEFAULT_VEH_MASS;
474extern const double DEFAULT_VEH_WIDTH;
475extern const double DEFAULT_VEH_HEIGHT;
476extern const double DEFAULT_VEH_SHUT_OFF_STOP;
477
478extern const double DEFAULT_PEDESTRIAN_SPEED;
479extern const double DEFAULT_BICYCLE_SPEED;
480
481extern const double DEFAULT_CONTAINER_TRANSHIP_SPEED;
SVCPermissions extraDisallowed(SVCPermissions disallowed, const MMVersion &networkVersion)
Interprets disallowed vehicles depending on network version.
bool canParseVehicleShape(const std::string &shape)
Checks whether the given string contains only known vehicle shape.
const double DEFAULT_VEH_HEIGHT
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
const double DEFAULT_VEH_SHUT_OFF_STOP
const SVCPermissions SVCAll
all VClasses are allowed
int SUMOEmissionClass
bool isForVulnerableModes(SVCPermissions permissions)
Returns whether an edge with the given permissions allows only vulnerable road users.
std::set< std::string > deprecatedVehicleClassesSeen
const std::string DEFAULT_TAXITYPE_ID
const double DEFAULT_VEH_PROB
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a railway edge.
const SVCPermissions SVC_UNSPECIFIED
permissions not specified
double getDefaultVehicleLength(const SUMOVehicleClass vc=SVC_IGNORING)
Returns the default vehicle length This put into a function so it can be used by NBVehicle.
const std::string DEFAULT_RAILTYPE_ID
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a waterway edge.
bool isAirway(SVCPermissions permissions)
Returns whether an edge with the given permissions is an airway edge.
bool isTram(SVCPermissions permissions)
Returns whether an edge with the given permissions is a tram edge.
const SUMOEmissionClass EMISSION_CLASS_UNSPECIFIED
emission class not specified
StringBijection< SUMOVehicleShape > SumoVehicleShapeStrings
const std::vector< std::string > & getVehicleClassNamesList(SVCPermissions permissions)
Returns the ids of the given classes, divided using a ' '.
const std::string DEFAULT_PEDTYPE_ID
const double DEFAULT_VEH_MASS
const std::set< std::string > DEFAULT_VTYPES
void writePermissions(OutputDevice &into, SVCPermissions permissions)
writes allowed disallowed attributes if needed;
SUMOVehicleShape getVehicleShapeID(const std::string &name)
Returns the class id of the shape class given by its name.
bool isForbidden(SVCPermissions permissions)
Returns whether an edge with the given permissions is a forbidden edge.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
SUMOVehicleShape
Definition of vehicle classes to differ between different appearances.
@ RICKSHAW
render as a rickshaw
@ BUS
render as a bus
@ RAIL_CARGO
render as a cargo train
@ EMERGENCY
render as an emergency vehicle
@ RAIL
render as a rail
@ PASSENGER_VAN
render as a van
@ PASSENGER
render as a passenger vehicle
@ SCOOTER
render as a scooter
@ RAIL_CAR
render as a (city) rail without locomotive
@ SHIP
render as a arbitrary ship
@ DELIVERY
render as a delivery vehicle
@ BICYCLE
render as a bicycle
@ MOTORCYCLE
render as a motorcycle
@ UNKNOWN
not defined
@ BUS_TROLLEY
render as a trolley bus
@ TAXI
automated car (with cruise controllers)
@ E_VEHICLE
render as a (futuristic) e-vehicle
@ ANT
render as a giant ant
@ TRUCK
render as a transport vehicle
@ AIRCRAFT
render as aircraft
@ FIREBRIGADE
render as a fire brigade
@ PASSENGER_HATCHBACK
render as a hatchback passenger vehicle ("Fliessheck")
@ MOPED
render as a moped
@ BUS_FLEXIBLE
render as a flexible city bus
@ TRUCK_1TRAILER
render as a transport vehicle with one trailer
@ PASSENGER_SEDAN
render as a sedan passenger vehicle ("Stufenheck")
@ BUS_COACH
render as a coach
@ POLICE
render as a police car
@ PASSENGER_WAGON
render as a wagon passenger vehicle ("Combi")
@ TRUCK_SEMITRAILER
render as a semi-trailer transport vehicle ("Sattelschlepper")
@ PEDESTRIAN
render as a pedestrian
const double DEFAULT_PEDESTRIAN_SPEED
const double DEFAULT_BICYCLE_SPEED
bool isSidewalk(SVCPermissions permissions)
Returns whether an edge with the given permissions is a sidewalk.
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
std::string getVehicleShapeName(SUMOVehicleShape id)
Returns the class name of the shape class given by its id.
const double DEFAULT_VEH_WIDTH
void writePreferences(OutputDevice &into, SVCPermissions preferred)
writes allowed disallowed attributes if needed;
bool noVehicles(SVCPermissions permissions)
Returns whether an edge with the given permissions forbids vehicles.
const std::string DEFAULT_VTYPE_ID
bool isBikepath(SVCPermissions permissions)
Returns whether an edge with the given permissions is a bicycle edge.
const std::string DEFAULT_CONTAINERTYPE_ID
SVCPermissions getVehicleClassCompoundID(const std::string &name)
Returns the OR'ed id of the compound class given by its name.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_SHIP
is an arbitrary ship
@ SVC_PRIVATE
private vehicles
@ SVC_VIP
vip vehicles
@ SVC_HOV
vehicle is a HOV
@ SVC_TRUCK
vehicle is a large transport vehicle
@ SVC_ROAD_CLASSES
classes which drive on roads
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_CUSTOM2
is a user-defined type
@ SVC_WHEELCHAIR
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_RAIL_CLASSES
classes which drive on tracks
@ SVC_COACH
vehicle is a coach
@ SVC_CABLE_CAR
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_CONTAINER
@ SVC_SCOOTER
@ SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
@ SVC_TRAILER
vehicle is a large transport vehicle
@ SVC_CUSTOM1
is a user-defined type
@ SVC_ARMY
army vehicles
@ SVC_DRONE
@ SVC_RAIL_ELECTRIC
rail vehicle that requires electrified tracks
@ SVC_NON_ROAD
classes which (normally) do not drive on normal roads
@ SVC_DELIVERY
vehicle is a small delivery vehicle
@ SVC_RAIL_URBAN
vehicle is a city rail
@ SVC_MOTORCYCLE
vehicle is a motorcycle
@ SVC_EMERGENCY
public emergency vehicles
@ SVC_MOPED
vehicle is a moped
@ SVC_AUTHORITY
authorities vehicles
@ SVC_VULNERABLE
@ SVC_TRAM
vehicle is a light rail
@ SVC_PUBLIC_CLASSES
public transport
@ SVC_TAXI
vehicle is a taxi
@ SVC_BUS
vehicle is a bus
@ SVC_E_VEHICLE
is an electric vehicle
@ SVC_AIRCRAFT
@ SVC_SUBWAY
@ SVC_PEDESTRIAN
pedestrian
const double DEFAULT_CONTAINER_TRANSHIP_SPEED
const SUMOVehicleClass SUMOVehicleClass_MAX
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand=false)
Returns the ids of the given classes, divided using a ' '.
const std::string DEFAULT_BIKETYPE_ID
std::pair< int, double > MMVersion
(M)ajor/(M)inor version for written networks and default version for loading
Definition StdDefs.h:67
const MMVersion NETWORK_VERSION(1, 20)
Static storage of an output device and its base (abstract) implementation.
Encapsulated SAX-Attributes.
stop offset
void setOffset(const double offset)
set offset
StopOffset()
constructor
bool isDefined() const
check if stopOffset was defined
void reset()
reset stopOffset
SVCPermissions getPermissions() const
get permissions
void setExceptions(const std::string permissions)
set exceptions (used in netedit)
SVCPermissions myPermissions
permissions (allowed)
double myOffset
offset
std::string getExceptions() const
get exceptions (used in netedit)
void setPermissions(const SVCPermissions permissions)
update permissions
bool operator==(StopOffset const &other) const
comparator
bool operator!=(StopOffset const &other) const
comparator
double getOffset() const
get offset