SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
SUMOVehicleClass.h
Go to the documentation of this file.
1
/****************************************************************************/
10
// Definitions of SUMO vehicle classes and helper functions
11
/****************************************************************************/
12
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
13
// Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
14
/****************************************************************************/
15
//
16
// This file is part of SUMO.
17
// SUMO is free software: you can redistribute it and/or modify
18
// it under the terms of the GNU General Public License as published by
19
// the Free Software Foundation, either version 3 of the License, or
20
// (at your option) any later version.
21
//
22
/****************************************************************************/
23
#ifndef SUMOVehicleClass_h
24
#define SUMOVehicleClass_h
25
26
27
// ===========================================================================
28
// included modules
29
// ===========================================================================
30
#ifdef _MSC_VER
31
#include <
windows_config.h
>
32
#else
33
#include <
config.h
>
34
#endif
35
36
#include <string>
37
#include <set>
38
#include <limits>
39
#include <
utils/common/UtilExceptions.h
>
40
#include <
utils/common/StringBijection.h
>
41
#include <
utils/xml/SUMOXMLDefinitions.h
>
42
43
// ===========================================================================
44
// enum definitions
45
// ===========================================================================
50
enum
SUMOVehicleShape
{
52
SVS_UNKNOWN
,
54
SVS_PEDESTRIAN
,
56
SVS_BICYCLE
,
58
SVS_MOTORCYCLE
,
60
SVS_PASSENGER
,
62
SVS_PASSENGER_SEDAN
,
64
SVS_PASSENGER_HATCHBACK
,
66
SVS_PASSENGER_WAGON
,
68
SVS_PASSENGER_VAN
,
70
SVS_DELIVERY
,
72
SVS_TRANSPORT
,
74
SVS_TRANSPORT_SEMITRAILER
,
76
SVS_TRANSPORT_1TRAILER
,
78
SVS_BUS
,
80
SVS_BUS_CITY
,
82
SVS_BUS_CITY_FLEXIBLE
,
84
SVS_BUS_OVERLAND
,
86
SVS_BUS_TROLLEY
,
88
SVS_RAIL
,
90
SVS_RAIL_LIGHT
,
92
SVS_RAIL_CITY
,
94
SVS_RAIL_SLOW
,
96
SVS_RAIL_FAST
,
98
SVS_RAIL_CARGO
,
100
SVS_E_VEHICLE
,
102
SVS_ANT
103
};
104
105
106
127
enum
SUMOVehicleClass
{
128
SVC_UNKNOWN
= 0,
129
131
132
134
SVC_PRIVATE
= 1,
136
SVC_PUBLIC_TRANSPORT
= 2,
138
SVC_PUBLIC_EMERGENCY
= 4,
140
SVC_PUBLIC_AUTHORITY
= 8,
142
SVC_PUBLIC_ARMY
= 16,
144
SVC_VIP
= 32,
146
SVC_IGNORING
= 64,
148
149
151
152
154
SVC_PASSENGER
= 128,
156
SVC_HOV
= 256,
158
SVC_TAXI
= 512,
160
SVC_BUS
= 1024,
162
SVC_DELIVERY
= 2048,
164
SVC_TRANSPORT
= 4096,
166
SVC_LIGHTRAIL
= 8192,
168
SVC_CITYRAIL
= 16384,
170
SVC_RAIL_SLOW
= 32768,
172
SVC_RAIL_FAST
= 65536,
173
175
SVC_MOTORCYCLE
= 131072,
177
SVC_BICYCLE
= 262144,
179
SVC_PEDESTRIAN
= 524288
181
};
182
183
extern
const
int
SUMOVehicleClass_MAX
;
184
extern
StringBijection<SUMOVehicleClass>
SumoVehicleClassStrings
;
185
extern
StringBijection<SUMOVehicleShape>
SumoVehicleShapeStrings
;
186
187
/* @brief bitset where each bit declares whether a certain SVC may use this edge/lane
188
*/
189
typedef
int
SVCPermissions
;
190
extern
const
SVCPermissions
SVCFreeForAll
;
191
192
200
enum
SUMOEmissionClass
{
201
SVE_UNKNOWN
= -1,
202
// heavy duty vehicles; 3 clusters
203
SVE_HDV_3_1
= 0,
204
SVE_HDV_3_2
,
205
SVE_HDV_3_3
,
206
// heavy duty vehicles; 6 clusters
207
SVE_HDV_6_1
,
208
SVE_HDV_6_2
,
209
SVE_HDV_6_3
,
210
SVE_HDV_6_4
,
211
SVE_HDV_6_5
,
212
SVE_HDV_6_6
,
213
// heavy duty vehicles; 12 clusters
214
SVE_HDV_12_1
,
215
SVE_HDV_12_2
,
216
SVE_HDV_12_3
,
217
SVE_HDV_12_4
,
218
SVE_HDV_12_5
,
219
SVE_HDV_12_6
,
220
SVE_HDV_12_7
,
221
SVE_HDV_12_8
,
222
SVE_HDV_12_9
,
223
SVE_HDV_12_10
,
224
SVE_HDV_12_11
,
225
SVE_HDV_12_12
,
226
// passenger & light duty vehicles; 7 clusters
227
SVE_P_LDV_7_1
,
228
SVE_P_LDV_7_2
,
229
SVE_P_LDV_7_3
,
230
SVE_P_LDV_7_4
,
231
SVE_P_LDV_7_5
,
232
SVE_P_LDV_7_6
,
233
SVE_P_LDV_7_7
,
234
// passenger & light duty vehicles; 14 clusters
235
SVE_P_LDV_14_1
,
236
SVE_P_LDV_14_2
,
237
SVE_P_LDV_14_3
,
238
SVE_P_LDV_14_4
,
239
SVE_P_LDV_14_5
,
240
SVE_P_LDV_14_6
,
241
SVE_P_LDV_14_7
,
242
SVE_P_LDV_14_8
,
243
SVE_P_LDV_14_9
,
244
SVE_P_LDV_14_10
,
245
SVE_P_LDV_14_11
,
246
SVE_P_LDV_14_12
,
247
SVE_P_LDV_14_13
,
248
SVE_P_LDV_14_14
,
249
// no emissions
250
SVE_ZERO_EMISSIONS
,
251
// heavy duty vehicles, no accel; 3 clusters
252
SVE_HDV_A0_3_1
,
253
SVE_HDV_A0_3_2
,
254
SVE_HDV_A0_3_3
,
255
// heavy duty vehicles, no accel; 6 clusters
256
SVE_HDV_A0_6_1
,
257
SVE_HDV_A0_6_2
,
258
SVE_HDV_A0_6_3
,
259
SVE_HDV_A0_6_4
,
260
SVE_HDV_A0_6_5
,
261
SVE_HDV_A0_6_6
,
262
// heavy duty vehicles, no accel; 12 clusters
263
SVE_HDV_A0_12_1
,
264
SVE_HDV_A0_12_2
,
265
SVE_HDV_A0_12_3
,
266
SVE_HDV_A0_12_4
,
267
SVE_HDV_A0_12_5
,
268
SVE_HDV_A0_12_6
,
269
SVE_HDV_A0_12_7
,
270
SVE_HDV_A0_12_8
,
271
SVE_HDV_A0_12_9
,
272
SVE_HDV_A0_12_10
,
273
SVE_HDV_A0_12_11
,
274
SVE_HDV_A0_12_12
,
275
// passenger & light duty vehicles, no accel; 7 clusters
276
SVE_P_LDV_A0_7_1
,
277
SVE_P_LDV_A0_7_2
,
278
SVE_P_LDV_A0_7_3
,
279
SVE_P_LDV_A0_7_4
,
280
SVE_P_LDV_A0_7_5
,
281
SVE_P_LDV_A0_7_6
,
282
SVE_P_LDV_A0_7_7
,
283
// passenger & light duty vehicles, no accel; 14 clusters
284
SVE_P_LDV_A0_14_1
,
285
SVE_P_LDV_A0_14_2
,
286
SVE_P_LDV_A0_14_3
,
287
SVE_P_LDV_A0_14_4
,
288
SVE_P_LDV_A0_14_5
,
289
SVE_P_LDV_A0_14_6
,
290
SVE_P_LDV_A0_14_7
,
291
SVE_P_LDV_A0_14_8
,
292
SVE_P_LDV_A0_14_9
,
293
SVE_P_LDV_A0_14_10
,
294
SVE_P_LDV_A0_14_11
,
295
SVE_P_LDV_A0_14_12
,
296
SVE_P_LDV_A0_14_13
,
297
SVE_P_LDV_A0_14_14
298
};
299
300
extern
StringBijection<SUMOEmissionClass>
SumoEmissionClassStrings
;
301
302
303
// ===========================================================================
304
// method declarations
305
// ===========================================================================
306
307
// ---------------------------------------------------------------------------
308
// abstract vehicle class / purpose
309
// ---------------------------------------------------------------------------
310
/* @brief SUMOVehicleClass is meant to be OR'ed to combine information about vehicle
311
* ownership and vehicle "size" into one int.
312
* These OR'ed values cannot be translated directly into strings with toString().
313
* The names of all base values are concatenated with '|' as a separator.
314
*/
315
extern
std::string
getVehicleClassCompoundName
(
int
id
);
316
317
322
extern
std::string
getAllowedVehicleClassNames
(
SVCPermissions
permissions);
323
324
329
extern
std::vector<std::string>
getAllowedVehicleClassNamesList
(
SVCPermissions
permissions);
330
335
extern
std::pair<std::string, bool>
getPermissionEncoding
(
SVCPermissions
permissions);
336
337
343
extern
SUMOVehicleClass
getVehicleClassID
(
const
std::string& name);
344
349
extern
int
getVehicleClassCompoundID
(
const
std::string& name);
350
357
extern
SVCPermissions
parseVehicleClasses
(
const
std::string& allowedS);
358
359
362
extern
bool
canParseVehicleClasses
(
const
std::string& classes);
363
373
extern
SVCPermissions
parseVehicleClasses
(
const
std::string& allowedS,
const
std::string& disallowedS);
374
375
379
extern
SVCPermissions
parseVehicleClasses
(
const
std::vector<std::string>& allowedS);
380
381
382
// ---------------------------------------------------------------------------
383
// vehicle shape class
384
// ---------------------------------------------------------------------------
389
extern
std::string
getVehicleShapeName
(
SUMOVehicleShape
id
);
390
391
396
extern
SUMOVehicleShape
getVehicleShapeID
(
const
std::string& name);
397
398
399
// ---------------------------------------------------------------------------
400
// emission class
401
// ---------------------------------------------------------------------------
406
extern
std::string
getVehicleEmissionTypeName
(
SUMOEmissionClass
id
);
407
408
413
extern
SUMOEmissionClass
getVehicleEmissionTypeID
(
const
std::string& name);
414
415
420
extern
bool
isRailway
(
SVCPermissions
permissions);
421
422
423
// ---------------------------------------------------------------------------
424
// default vehicle type parameter
425
// ---------------------------------------------------------------------------
426
extern
const
std::string
DEFAULT_VTYPE_ID
;
427
extern
const
SUMOReal
DEFAULT_VEH_MAXSPEED
;
428
extern
const
SUMOReal
DEFAULT_VEH_ACCEL
;
429
extern
const
SUMOReal
DEFAULT_VEH_DECEL
;
430
extern
const
SUMOReal
DEFAULT_VEH_SIGMA
;
431
extern
const
SUMOReal
DEFAULT_VEH_LENGTH
;
432
extern
const
SUMOReal
DEFAULT_VEH_MINGAP
;
433
extern
const
SUMOReal
DEFAULT_VEH_TAU
;
434
extern
const
SUMOVehicleClass
DEFAULT_VEH_CLASS
;
435
extern
const
SUMOReal
DEFAULT_VEH_PROB
;
436
extern
const
SUMOReal
DEFAULT_VEH_SPEEDFACTOR
;
437
extern
const
SUMOReal
DEFAULT_VEH_SPEEDDEV
;
438
extern
const
SUMOReal
DEFAULT_VEH_WIDTH
;
439
extern
const
SUMOReal
DEFAULT_VEH_HEIGHT
;
440
extern
const
SumoXMLTag
DEFAULT_VEH_FOLLOW_MODEL
;
441
extern
const
std::string
DEFAULT_VEH_LANE_CHANGE_MODEL
;
442
extern
const
SUMOVehicleShape
DEFAULT_VEH_SHAPE
;
443
extern
const
SUMOReal
DEFAULT_VEH_TMP1
;
444
extern
const
SUMOReal
DEFAULT_VEH_TMP2
;
445
extern
const
SUMOReal
DEFAULT_VEH_TMP3
;
446
extern
const
SUMOReal
DEFAULT_VEH_TMP4
;
447
extern
const
SUMOReal
DEFAULT_VEH_TMP5
;
448
449
extern
const
SUMOReal
DEFAULT_PERSON_SPEED
;
450
451
#endif
452
453
/****************************************************************************/
454
build
buildd
sumo-0.17.1~dfsg
src
utils
common
SUMOVehicleClass.h
Generated on Sun Jun 16 2013 17:30:19 for SUMO - Simulation of Urban MObility by
1.8.3.1