SUMO - Simulation of Urban MObility
SUMOVehicleClass.h
Go to the documentation of this file.
00001 /****************************************************************************/
00010 // Definitions of SUMO vehicle classes and helper functions
00011 /****************************************************************************/
00012 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
00013 // Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
00014 /****************************************************************************/
00015 //
00016 //   This file is part of SUMO.
00017 //   SUMO is free software: you can redistribute it and/or modify
00018 //   it under the terms of the GNU General Public License as published by
00019 //   the Free Software Foundation, either version 3 of the License, or
00020 //   (at your option) any later version.
00021 //
00022 /****************************************************************************/
00023 #ifndef SUMOVehicleClass_h
00024 #define SUMOVehicleClass_h
00025 
00026 
00027 // ===========================================================================
00028 // included modules
00029 // ===========================================================================
00030 #ifdef _MSC_VER
00031 #include <windows_config.h>
00032 #else
00033 #include <config.h>
00034 #endif
00035 
00036 #include <string>
00037 #include <set>
00038 #include <limits>
00039 #include <utils/common/UtilExceptions.h>
00040 #include <utils/common/StringBijection.h>
00041 #include <utils/xml/SUMOXMLDefinitions.h>
00042 
00043 // ===========================================================================
00044 // enum definitions
00045 // ===========================================================================
00050 enum SUMOVehicleShape {
00052     SVS_UNKNOWN,
00054     SVS_PEDESTRIAN,
00056     SVS_BICYCLE,
00058     SVS_MOTORCYCLE,
00060     SVS_PASSENGER,
00062     SVS_PASSENGER_SEDAN,
00064     SVS_PASSENGER_HATCHBACK,
00066     SVS_PASSENGER_WAGON,
00068     SVS_PASSENGER_VAN,
00070     SVS_DELIVERY,
00072     SVS_TRANSPORT,
00074     SVS_TRANSPORT_SEMITRAILER,
00076     SVS_TRANSPORT_1TRAILER,
00078     SVS_BUS,
00080     SVS_BUS_CITY,
00082     SVS_BUS_CITY_FLEXIBLE,
00084     SVS_BUS_OVERLAND,
00086     SVS_BUS_TROLLEY,
00088     SVS_RAIL,
00090     SVS_RAIL_LIGHT,
00092     SVS_RAIL_CITY,
00094     SVS_RAIL_SLOW,
00096     SVS_RAIL_FAST,
00098     SVS_RAIL_CARGO,
00100     SVS_E_VEHICLE,
00102     SVS_ANT
00103 };
00104 
00105 
00106 
00127 enum SUMOVehicleClass {
00128     SVC_UNKNOWN = 0,
00129 
00131 
00132 
00134     SVC_PRIVATE = 1,
00136     SVC_PUBLIC_TRANSPORT = 2,
00138     SVC_PUBLIC_EMERGENCY = 4,
00140     SVC_PUBLIC_AUTHORITY = 8,
00142     SVC_PUBLIC_ARMY = 16,
00144     SVC_VIP = 32,
00146     SVC_IGNORING = 64,
00148 
00149 
00151 
00152 
00154     SVC_PASSENGER = 256,
00156     SVC_HOV = 512,
00158     SVC_TAXI = 1024,
00160     SVC_BUS = 2048,
00162     SVC_DELIVERY = 4096,
00164     SVC_TRANSPORT = 8192,
00166     SVC_LIGHTRAIL = 16384,
00168     SVC_CITYRAIL = 32768,
00170     SVC_RAIL_SLOW = 65536,
00172     SVC_RAIL_FAST = 131072,
00173 
00175     SVC_MOTORCYCLE = 262144,
00177     SVC_BICYCLE = 524288,
00179     SVC_PEDESTRIAN = 1048576
00181 };
00182 
00183 extern const int SUMOVehicleClass_MAX;
00184 extern StringBijection<SUMOVehicleClass> SumoVehicleClassStrings;
00185 extern StringBijection<SUMOVehicleShape> SumoVehicleShapeStrings;
00186 
00187 /* @brief bitset where each bit declares whether a certain SVC may use this edge/lane
00188  */
00189 typedef int SVCPermissions;
00190 extern const SVCPermissions SVCFreeForAll;
00191 
00192 
00200 enum SUMOEmissionClass {
00201     SVE_UNKNOWN = -1,
00202     // heavy duty vehicles; 3 clusters
00203     SVE_HDV_3_1 = 0,
00204     SVE_HDV_3_2,
00205     SVE_HDV_3_3,
00206     // heavy duty vehicles; 6 clusters
00207     SVE_HDV_6_1,
00208     SVE_HDV_6_2,
00209     SVE_HDV_6_3,
00210     SVE_HDV_6_4,
00211     SVE_HDV_6_5,
00212     SVE_HDV_6_6,
00213     // heavy duty vehicles; 12 clusters
00214     SVE_HDV_12_1,
00215     SVE_HDV_12_2,
00216     SVE_HDV_12_3,
00217     SVE_HDV_12_4,
00218     SVE_HDV_12_5,
00219     SVE_HDV_12_6,
00220     SVE_HDV_12_7,
00221     SVE_HDV_12_8,
00222     SVE_HDV_12_9,
00223     SVE_HDV_12_10,
00224     SVE_HDV_12_11,
00225     SVE_HDV_12_12,
00226     // passenger & light duty vehicles; 7 clusters
00227     SVE_P_LDV_7_1,
00228     SVE_P_LDV_7_2,
00229     SVE_P_LDV_7_3,
00230     SVE_P_LDV_7_4,
00231     SVE_P_LDV_7_5,
00232     SVE_P_LDV_7_6,
00233     SVE_P_LDV_7_7,
00234     // passenger & light duty vehicles; 14 clusters
00235     SVE_P_LDV_14_1,
00236     SVE_P_LDV_14_2,
00237     SVE_P_LDV_14_3,
00238     SVE_P_LDV_14_4,
00239     SVE_P_LDV_14_5,
00240     SVE_P_LDV_14_6,
00241     SVE_P_LDV_14_7,
00242     SVE_P_LDV_14_8,
00243     SVE_P_LDV_14_9,
00244     SVE_P_LDV_14_10,
00245     SVE_P_LDV_14_11,
00246     SVE_P_LDV_14_12,
00247     SVE_P_LDV_14_13,
00248     SVE_P_LDV_14_14,
00249     // no emissions
00250     SVE_ZERO_EMISSIONS,
00251     // heavy duty vehicles, no accel; 3 clusters
00252     SVE_HDV_A0_3_1,
00253     SVE_HDV_A0_3_2,
00254     SVE_HDV_A0_3_3,
00255     // heavy duty vehicles, no accel; 6 clusters
00256     SVE_HDV_A0_6_1,
00257     SVE_HDV_A0_6_2,
00258     SVE_HDV_A0_6_3,
00259     SVE_HDV_A0_6_4,
00260     SVE_HDV_A0_6_5,
00261     SVE_HDV_A0_6_6,
00262     // heavy duty vehicles, no accel; 12 clusters
00263     SVE_HDV_A0_12_1,
00264     SVE_HDV_A0_12_2,
00265     SVE_HDV_A0_12_3,
00266     SVE_HDV_A0_12_4,
00267     SVE_HDV_A0_12_5,
00268     SVE_HDV_A0_12_6,
00269     SVE_HDV_A0_12_7,
00270     SVE_HDV_A0_12_8,
00271     SVE_HDV_A0_12_9,
00272     SVE_HDV_A0_12_10,
00273     SVE_HDV_A0_12_11,
00274     SVE_HDV_A0_12_12,
00275     // passenger & light duty vehicles, no accel; 7 clusters
00276     SVE_P_LDV_A0_7_1,
00277     SVE_P_LDV_A0_7_2,
00278     SVE_P_LDV_A0_7_3,
00279     SVE_P_LDV_A0_7_4,
00280     SVE_P_LDV_A0_7_5,
00281     SVE_P_LDV_A0_7_6,
00282     SVE_P_LDV_A0_7_7,
00283     // passenger & light duty vehicles, no accel; 14 clusters
00284     SVE_P_LDV_A0_14_1,
00285     SVE_P_LDV_A0_14_2,
00286     SVE_P_LDV_A0_14_3,
00287     SVE_P_LDV_A0_14_4,
00288     SVE_P_LDV_A0_14_5,
00289     SVE_P_LDV_A0_14_6,
00290     SVE_P_LDV_A0_14_7,
00291     SVE_P_LDV_A0_14_8,
00292     SVE_P_LDV_A0_14_9,
00293     SVE_P_LDV_A0_14_10,
00294     SVE_P_LDV_A0_14_11,
00295     SVE_P_LDV_A0_14_12,
00296     SVE_P_LDV_A0_14_13,
00297     SVE_P_LDV_A0_14_14
00298 };
00299 
00300 
00301 
00302 // ===========================================================================
00303 // method declarations
00304 // ===========================================================================
00305 
00306 // ---------------------------------------------------------------------------
00307 // abstract vehicle class / purpose
00308 // ---------------------------------------------------------------------------
00309 /* @brief SUMOVehicleClass is meant to be OR'ed to combine information about vehicle
00310  * ownership and vehicle "size" into one int.
00311  * These OR'ed values cannot be translated directly into strings with toString().
00312  * The names of all base values are concatenated with '|' as a separator.
00313  */
00314 extern std::string getVehicleClassCompoundName(int id);
00315 
00316 
00321 extern std::string getAllowedVehicleClassNames(SVCPermissions permissions);
00322 
00323 
00328 extern std::vector<std::string> getAllowedVehicleClassNamesList(SVCPermissions permissions);
00329 
00334 extern std::pair<std::string, bool> getPermissionEncoding(SVCPermissions permissions);
00335 
00336 
00342 extern SUMOVehicleClass getVehicleClassID(const std::string& name);
00343 
00348 extern int getVehicleClassCompoundID(const std::string& name);
00349 
00356 extern SVCPermissions parseVehicleClasses(const std::string& allowedS);
00357 
00358 
00361 extern bool canParseVehicleClasses(const std::string& classes);
00362 
00372 extern SVCPermissions parseVehicleClasses(const std::string& allowedS, const std::string& disallowedS);
00373 
00374 
00378 extern SVCPermissions parseVehicleClasses(const std::vector<std::string> &allowedS);
00379 
00380 
00381 // ---------------------------------------------------------------------------
00382 // vehicle shape class
00383 // ---------------------------------------------------------------------------
00388 extern std::string getVehicleShapeName(SUMOVehicleShape id);
00389 
00390 
00395 extern SUMOVehicleShape getVehicleShapeID(const std::string& name);
00396 
00397 
00398 // ---------------------------------------------------------------------------
00399 // emission class
00400 // ---------------------------------------------------------------------------
00405 extern std::string getVehicleEmissionTypeName(SUMOEmissionClass id);
00406 
00407 
00412 extern SUMOEmissionClass getVehicleEmissionTypeID(const std::string& name) ;
00413 
00414 
00415 // ---------------------------------------------------------------------------
00416 // default vehicle type parameter
00417 // ---------------------------------------------------------------------------
00418 extern const std::string DEFAULT_VTYPE_ID;
00419 extern const SUMOReal DEFAULT_VEH_MAXSPEED;
00420 extern const SUMOReal DEFAULT_VEH_ACCEL;
00421 extern const SUMOReal DEFAULT_VEH_DECEL;
00422 extern const SUMOReal DEFAULT_VEH_SIGMA;
00423 extern const SUMOReal DEFAULT_VEH_LENGTH;
00424 extern const SUMOReal DEFAULT_VEH_MINGAP;
00425 extern const SUMOReal DEFAULT_VEH_TAU;
00426 extern const SUMOVehicleClass DEFAULT_VEH_CLASS;
00427 extern const SUMOReal DEFAULT_VEH_PROB;
00428 extern const SUMOReal DEFAULT_VEH_SPEEDFACTOR;
00429 extern const SUMOReal DEFAULT_VEH_SPEEDDEV;
00430 extern const SUMOReal DEFAULT_VEH_WIDTH;
00431 extern const SUMOReal DEFAULT_VEH_HEIGHT;
00432 extern const SumoXMLTag DEFAULT_VEH_FOLLOW_MODEL;
00433 extern const std::string DEFAULT_VEH_LANE_CHANGE_MODEL;
00434 extern const SUMOVehicleShape DEFAULT_VEH_SHAPE;
00435 
00436 #endif
00437 
00438 /****************************************************************************/
00439 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines