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-2012 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
= 256,
156
SVC_HOV
= 512,
158
SVC_TAXI
= 1024,
160
SVC_BUS
= 2048,
162
SVC_DELIVERY
= 4096,
164
SVC_TRANSPORT
= 8192,
166
SVC_LIGHTRAIL
= 16384,
168
SVC_CITYRAIL
= 32768,
170
SVC_RAIL_SLOW
= 65536,
172
SVC_RAIL_FAST
= 131072,
173
175
SVC_MOTORCYCLE
= 262144,
177
SVC_BICYCLE
= 524288,
179
SVC_PEDESTRIAN
= 1048576
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
301
302
// ===========================================================================
303
// method declarations
304
// ===========================================================================
305
306
// ---------------------------------------------------------------------------
307
// abstract vehicle class / purpose
308
// ---------------------------------------------------------------------------
309
/* @brief SUMOVehicleClass is meant to be OR'ed to combine information about vehicle
310
* ownership and vehicle "size" into one int.
311
* These OR'ed values cannot be translated directly into strings with toString().
312
* The names of all base values are concatenated with '|' as a separator.
313
*/
314
extern
std::string
getVehicleClassCompoundName
(
int
id
);
315
316
321
extern
std::string
getAllowedVehicleClassNames
(
SVCPermissions
permissions);
322
323
328
extern
std::vector<std::string>
getAllowedVehicleClassNamesList
(
SVCPermissions
permissions);
329
334
extern
std::pair<std::string, bool>
getPermissionEncoding
(
SVCPermissions
permissions);
335
336
342
extern
SUMOVehicleClass
getVehicleClassID
(
const
std::string& name);
343
348
extern
int
getVehicleClassCompoundID
(
const
std::string& name);
349
356
extern
SVCPermissions
parseVehicleClasses
(
const
std::string& allowedS);
357
358
361
extern
bool
canParseVehicleClasses
(
const
std::string& classes);
362
372
extern
SVCPermissions
parseVehicleClasses
(
const
std::string& allowedS,
const
std::string& disallowedS);
373
374
378
extern
SVCPermissions
parseVehicleClasses
(
const
std::vector<std::string> &allowedS);
379
380
381
// ---------------------------------------------------------------------------
382
// vehicle shape class
383
// ---------------------------------------------------------------------------
388
extern
std::string
getVehicleShapeName
(
SUMOVehicleShape
id
);
389
390
395
extern
SUMOVehicleShape
getVehicleShapeID
(
const
std::string& name);
396
397
398
// ---------------------------------------------------------------------------
399
// emission class
400
// ---------------------------------------------------------------------------
405
extern
std::string
getVehicleEmissionTypeName
(
SUMOEmissionClass
id
);
406
407
412
extern
SUMOEmissionClass
getVehicleEmissionTypeID
(
const
std::string& name) ;
413
414
415
// ---------------------------------------------------------------------------
416
// default vehicle type parameter
417
// ---------------------------------------------------------------------------
418
extern
const
std::string
DEFAULT_VTYPE_ID
;
419
extern
const
SUMOReal
DEFAULT_VEH_MAXSPEED
;
420
extern
const
SUMOReal
DEFAULT_VEH_ACCEL
;
421
extern
const
SUMOReal
DEFAULT_VEH_DECEL
;
422
extern
const
SUMOReal
DEFAULT_VEH_SIGMA
;
423
extern
const
SUMOReal
DEFAULT_VEH_LENGTH
;
424
extern
const
SUMOReal
DEFAULT_VEH_MINGAP
;
425
extern
const
SUMOReal
DEFAULT_VEH_TAU
;
426
extern
const
SUMOVehicleClass
DEFAULT_VEH_CLASS
;
427
extern
const
SUMOReal
DEFAULT_VEH_PROB
;
428
extern
const
SUMOReal
DEFAULT_VEH_SPEEDFACTOR
;
429
extern
const
SUMOReal
DEFAULT_VEH_SPEEDDEV
;
430
extern
const
SUMOReal
DEFAULT_VEH_WIDTH
;
431
extern
const
SUMOReal
DEFAULT_VEH_HEIGHT
;
432
extern
const
SumoXMLTag
DEFAULT_VEH_FOLLOW_MODEL
;
433
extern
const
std::string
DEFAULT_VEH_LANE_CHANGE_MODEL
;
434
extern
const
SUMOVehicleShape
DEFAULT_VEH_SHAPE
;
435
436
#endif
437
438
/****************************************************************************/
439
build
buildd
sumo-0.15.0~dfsg
src
utils
common
SUMOVehicleClass.h
Generated on Wed Jul 18 2012 22:58:36 for SUMO - Simulation of Urban MObility by
1.8.1.1