1 /****************************************************************************/ 2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo 3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others. 4 // This program and the accompanying materials 5 // are made available under the terms of the Eclipse Public License v2.0 6 // which accompanies this distribution, and is available at 7 // http://www.eclipse.org/legal/epl-v20.html 8 // SPDX-License-Identifier: EPL-2.0 9 /****************************************************************************/ 10 /// @file SUMOVehicleParameter.h 11 /// @author Daniel Krajzewicz 12 /// @author Jakob Erdmann 13 /// @author Axel Wegener 14 /// @author Michael Behrisch 15 /// @date 2006-01-24 16 /// @version $Id$ 17 /// 18 // Structure representing possible vehicle parameter 19 /****************************************************************************/ 20 #ifndef SUMOVehicleParameter_h 21 #define SUMOVehicleParameter_h 22 23 24 // =========================================================================== 25 // included modules 26 // =========================================================================== 27 #include <config.h> 28 29 #include <string> 30 #include <utils/common/Parameterised.h> 31 #include <utils/common/RGBColor.h> 32 #include <utils/common/SUMOTime.h> 33 #include <utils/common/SUMOVehicleClass.h> 34 35 36 // =========================================================================== 37 // class declarations 38 // =========================================================================== 39 class OutputDevice; 40 class OptionsCont; 41 42 43 // =========================================================================== 44 // value definitions 45 // =========================================================================== 46 const int VEHPARS_COLOR_SET = 1; 47 const int VEHPARS_VTYPE_SET = 2; 48 const int VEHPARS_DEPARTLANE_SET = 2 << 1; 49 const int VEHPARS_DEPARTPOS_SET = 2 << 2; 50 const int VEHPARS_DEPARTSPEED_SET = 2 << 3; 51 const int VEHPARS_END_SET = 2 << 4; 52 const int VEHPARS_NUMBER_SET = 2 << 5; 53 const int VEHPARS_PERIOD_SET = 2 << 6; 54 const int VEHPARS_VPH_SET = 2 << 7; 55 const int VEHPARS_PROB_SET = 2 << 8; 56 const int VEHPARS_ROUTE_SET = 2 << 9; 57 const int VEHPARS_ARRIVALLANE_SET = 2 << 10; 58 const int VEHPARS_ARRIVALPOS_SET = 2 << 11; 59 const int VEHPARS_ARRIVALSPEED_SET = 2 << 12; 60 const int VEHPARS_LINE_SET = 2 << 13; 61 const int VEHPARS_FROM_TAZ_SET = 2 << 14; 62 const int VEHPARS_TO_TAZ_SET = 2 << 15; 63 const int VEHPARS_FORCE_REROUTE = 2 << 16; 64 const int VEHPARS_PERSON_CAPACITY_SET = 2 << 17; 65 const int VEHPARS_PERSON_NUMBER_SET = 2 << 18; 66 const int VEHPARS_CONTAINER_NUMBER_SET = 2 << 19; 67 const int VEHPARS_DEPARTPOSLAT_SET = 2 << 20; 68 const int VEHPARS_ARRIVALPOSLAT_SET = 2 << 21; 69 const int VEHPARS_VIA_SET = 2 << 22; 70 71 const int STOP_INDEX_END = -1; 72 const int STOP_INDEX_FIT = -2; 73 74 const int STOP_END_SET = 1; 75 const int STOP_START_SET = 2; 76 const int STOP_TRIGGER_SET = 2 << 1; 77 const int STOP_PARKING_SET = 2 << 2; 78 const int STOP_EXPECTED_SET = 2 << 3; 79 const int STOP_CONTAINER_TRIGGER_SET = 2 << 4; 80 const int STOP_EXPECTED_CONTAINERS_SET = 2 << 5; 81 const int STOP_TRIP_ID_SET = 2 << 6; 82 83 84 // =========================================================================== 85 // enum definitions 86 // =========================================================================== 87 /** 88 * @enum DepartDefinition 89 * @brief Possible ways to depart 90 */ 91 enum DepartDefinition { 92 /// @brief The time is given 93 DEPART_GIVEN, 94 /// @brief The departure is person triggered 95 DEPART_TRIGGERED, 96 /// @brief The departure is container triggered 97 DEPART_CONTAINER_TRIGGERED, 98 /// @brief The vehicle is discarded if emission fails (not fully implemented yet) 99 DEPART_NOW, 100 /// @brief Tag for the last element in the enum for safe int casting 101 DEPART_DEF_MAX 102 }; 103 104 105 /** 106 * @enum DepartLaneDefinition 107 * @brief Possible ways to choose a lane on depart 108 */ 109 enum DepartLaneDefinition { 110 /// @brief No information given; use default 111 DEPART_LANE_DEFAULT, 112 /// @brief The lane is given 113 DEPART_LANE_GIVEN, 114 /// @brief The lane is chosen randomly 115 DEPART_LANE_RANDOM, 116 /// @brief The least occupied lane is used 117 DEPART_LANE_FREE, 118 /// @brief The least occupied lane from lanes which allow the continuation 119 DEPART_LANE_ALLOWED_FREE, 120 /// @brief The least occupied lane from best lanes 121 DEPART_LANE_BEST_FREE, 122 /// @brief The rightmost lane the vehicle may use 123 DEPART_LANE_FIRST_ALLOWED, 124 /// @brief Tag for the last element in the enum for safe int casting 125 DEPART_LANE_DEF_MAX 126 }; 127 128 129 /** 130 * @enum DepartPosDefinition 131 * @brief Possible ways to choose the departure position 132 */ 133 enum DepartPosDefinition { 134 /// @brief No information given; use default 135 DEPART_POS_DEFAULT, 136 /// @brief The position is given 137 DEPART_POS_GIVEN, 138 /// @brief The position is chosen randomly 139 DEPART_POS_RANDOM, 140 /// @brief A free position is chosen 141 DEPART_POS_FREE, 142 /// @brief Back-at-zero position 143 DEPART_POS_BASE, 144 /// @brief Insert behind the last vehicle as close as possible to still allow the specified departSpeed. Fallback to DEPART_POS_BASE if there is no vehicle on the departLane yet. 145 DEPART_POS_LAST, 146 /// @brief If a fixed number of random choices fails, a free position is chosen 147 DEPART_POS_RANDOM_FREE, 148 /// @brief Tag for the last element in the enum for safe int casting 149 DEPART_POS_DEF_MAX 150 }; 151 152 153 /** 154 * @enum DepartPosDefinition 155 * @brief Possible ways to choose the departure position 156 */ 157 enum DepartPosLatDefinition { 158 /// @brief No information given; use default 159 DEPART_POSLAT_DEFAULT, 160 /// @brief The position is given 161 DEPART_POSLAT_GIVEN, 162 /// @brief At the rightmost side of the lane 163 DEPART_POSLAT_RIGHT, 164 /// @brief At the center of the lane 165 DEPART_POSLAT_CENTER, 166 /// @brief At the leftmost side of the lane 167 DEPART_POSLAT_LEFT, 168 /// @brief The lateral position is chosen randomly 169 DEPART_POSLAT_RANDOM, 170 /// @brief A free lateral position is chosen 171 DEPART_POSLAT_FREE, 172 /// @brief If a fixed number of random choices fails, a free lateral position is chosen 173 DEPART_POSLAT_RANDOM_FREE, 174 /// @brief Tag for the last element in the enum for safe int casting 175 DEPART_POSLAT_DEF_MAX 176 }; 177 178 179 /** 180 * @enum DepartSpeedDefinition 181 * @brief Possible ways to choose the departure speed 182 */ 183 enum DepartSpeedDefinition { 184 /// @brief No information given; use default 185 DEPART_SPEED_DEFAULT, 186 /// @brief The speed is given 187 DEPART_SPEED_GIVEN, 188 /// @brief The speed is chosen randomly 189 DEPART_SPEED_RANDOM, 190 /// @brief The maximum speed is used 191 DEPART_SPEED_MAX, 192 /// @brief Tag for the last element in the enum for safe int casting 193 DEPART_SPEED_DEF_MAX 194 }; 195 196 197 /** 198 * @enum ArrivalLaneDefinition 199 * @brief Possible ways to choose the arrival lane 200 */ 201 enum ArrivalLaneDefinition { 202 /// @brief No information given; use default 203 ARRIVAL_LANE_DEFAULT, 204 /// @brief The arrival lane is given 205 ARRIVAL_LANE_GIVEN, 206 /// @brief The current lane shall be used 207 ARRIVAL_LANE_CURRENT, 208 /// @brief Tag for the last element in the enum for safe int casting 209 ARRIVAL_LANE_DEF_MAX 210 }; 211 212 213 /** 214 * @enum ArrivalPosDefinition 215 * @brief Possible ways to choose the arrival position 216 */ 217 enum ArrivalPosDefinition { 218 /// @brief No information given; use default 219 ARRIVAL_POS_DEFAULT, 220 /// @brief The arrival position is given 221 ARRIVAL_POS_GIVEN, 222 /// @brief The arrival position is chosen randomly 223 ARRIVAL_POS_RANDOM, 224 /// @brief Half the road length 225 ARRIVAL_POS_CENTER, 226 /// @brief The maximum arrival position is used 227 ARRIVAL_POS_MAX, 228 /// @brief Tag for the last element in the enum for safe int casting 229 ARRIVAL_POS_DEF_MAX 230 }; 231 232 233 /** 234 * @enum ArrivalPosLatDefinition 235 * @brief Possible ways to choose the departure position 236 */ 237 enum ArrivalPosLatDefinition { 238 /// @brief No information given; use default 239 ARRIVAL_POSLAT_DEFAULT, 240 /// @brief The position is given 241 ARRIVAL_POSLAT_GIVEN, 242 /// @brief At the rightmost side of the lane 243 ARRIVAL_POSLAT_RIGHT, 244 /// @brief At the center of the lane 245 ARRIVAL_POSLAT_CENTER, 246 /// @brief At the leftmost side of the lane 247 ARRIVAL_POSLAT_LEFT, 248 /// @brief Tag for the last element in the enum for safe int casting 249 ARRIVAL_POSLAT_DEF_MAX 250 }; 251 252 253 /** 254 * @enum ArrivalSpeedDefinition 255 * @brief Possible ways to choose the arrival speed 256 */ 257 enum ArrivalSpeedDefinition { 258 /// @brief No information given; use default 259 ARRIVAL_SPEED_DEFAULT, 260 /// @brief The speed is given 261 ARRIVAL_SPEED_GIVEN, 262 /// @brief The current speed is used 263 ARRIVAL_SPEED_CURRENT, 264 /// @brief Tag for the last element in the enum for safe int casting 265 ARRIVAL_SPEED_DEF_MAX 266 }; 267 268 269 // =========================================================================== 270 // struct definitions 271 // =========================================================================== 272 /** 273 * @class SUMOVehicleParameter 274 * @brief Structure representing possible vehicle parameter 275 * 276 * When used within a vehicle, parameter are usually const except for selected items 277 * adaptable via TraCI which are flagged as mutable below 278 * The fields yielding with "Procedure" describe whether the according value 279 * shall be used or another procedure is used to choose the value. 280 * @see DepartLaneDefinition 281 * @see DepartPosDefinition 282 * @see DepartSpeedDefinition 283 */ 284 class SUMOVehicleParameter : public Parameterised { 285 public: 286 /** @brief Constructor 287 * 288 * Initialises the structure with default values 289 */ 290 SUMOVehicleParameter(); 291 292 /// @brief Destructor 293 virtual ~SUMOVehicleParameter(); 294 295 /** @brief Returns whether the given parameter was set 296 * @param[in] what The parameter which one asks for 297 * @return Whether the given parameter was set 298 */ wasSet(int what)299 bool wasSet(int what) const { 300 return (parametersSet & what) != 0; 301 } 302 303 304 /** @brief Writes the parameters as a beginning element 305 * 306 * @param[in, out] dev The device to write into 307 * @param[in] oc The options to get defaults from 308 * @param[in] tag The "root" tag to write (defaults to vehicle) 309 * @param[in] tag The typeID to write (defaults to member vtypeid) 310 * @exception IOError not yet implemented 311 */ 312 void write(OutputDevice& dev, const OptionsCont& oc, const SumoXMLTag tag = SUMO_TAG_VEHICLE, const std::string& typeID = "") const; 313 314 315 /** @brief Returns whether the defaults shall be used 316 * @param[in] oc The options to get the options from 317 * @param[in] optionName The name of the option to determine whether its value shall be used 318 * @return Whether the option is set and --defaults-override was set 319 */ 320 bool defaultOptionOverrides(const OptionsCont& oc, const std::string& optionName) const; 321 322 323 324 /// @name Depart/arrival-attributes verification 325 /// @{ 326 327 /** @brief Validates a given depart value 328 * @param[in] val The depart value to parse 329 * @param[in] element The name of the type of the parsed element, for building the error message 330 * @param[in] id The id of the parsed element, for building the error message 331 * @param[out] depart The parsed depart time, if given 332 * @param[out] dd The parsed departProcedure definition 333 * @param[out] error Error message, if an error occures 334 * @return Whether the given value is a valid depart definition 335 */ 336 static bool parseDepart(const std::string& val, const std::string& element, const std::string& id, 337 SUMOTime& depart, DepartDefinition& dd, std::string& error); 338 339 340 /** @brief Validates a given departLane value 341 * @param[in] val The departLane value to parse 342 * @param[in] element The name of the type of the parsed element, for building the error message 343 * @param[in] id The id of the parsed element, for building the error message 344 * @param[out] lane The parsed lane, if given 345 * @param[out] dld The parsed departLane definition 346 * @param[out] error Error message, if an error occures 347 * @return Whether the given value is a valid departLane definition 348 */ 349 static bool parseDepartLane(const std::string& val, const std::string& element, const std::string& id, 350 int& lane, DepartLaneDefinition& dld, std::string& error); 351 352 353 /** @brief Validates a given departPos value 354 * @param[in] val The departPos value to parse 355 * @param[in] element The name of the type of the parsed element, for building the error message 356 * @param[in] id The id of the parsed element, for building the error message 357 * @param[out] pos The parsed position, if given 358 * @param[out] dpd The parsed departPos definition 359 * @param[out] error Error message, if an error occures 360 * @return Whether the given value is a valid departPos definition 361 */ 362 static bool parseDepartPos(const std::string& val, const std::string& element, const std::string& id, 363 double& pos, DepartPosDefinition& dpd, std::string& error); 364 365 366 /** @brief Validates a given departPosLat value 367 * @param[in] val The departPosLat value to parse 368 * @param[in] element The name of the type of the parsed element, for building the error message 369 * @param[in] id The id of the parsed element, for building the error message 370 * @param[out] pos The parsed position, if given 371 * @param[out] dpd The parsed departPos definition 372 * @param[out] error Error message, if an error occures 373 * @return Whether the given value is a valid departPos definition 374 */ 375 static bool parseDepartPosLat(const std::string& val, const std::string& element, const std::string& id, 376 double& pos, DepartPosLatDefinition& dpd, std::string& error); 377 378 379 /** @brief Validates a given departSpeed value 380 * @param[in] val The departSpeed value to parse 381 * @param[in] element The name of the type of the parsed element, for building the error message 382 * @param[in] id The id of the parsed element, for building the error message 383 * @param[out] speed The parsed speed, if given 384 * @param[out] dsd The parsed departSpeed definition 385 * @param[out] error Error message, if an error occures 386 * @return Whether the given value is a valid departSpeed definition 387 */ 388 static bool parseDepartSpeed(const std::string& val, const std::string& element, const std::string& id, 389 double& speed, DepartSpeedDefinition& dsd, std::string& error); 390 391 392 /** @brief Validates a given arrivalLane value 393 * @param[in] val The arrivalLane value to parse 394 * @param[in] element The name of the type of the parsed element, for building the error message 395 * @param[in] id The id of the parsed element, for building the error message 396 * @param[out] lane The parsed lane, if given 397 * @param[out] ald The parsed arrivalLane definition 398 * @param[out] error Error message, if an error occures 399 * @return Whether the given value is a valid arrivalLane definition 400 */ 401 static bool parseArrivalLane(const std::string& val, const std::string& element, const std::string& id, 402 int& lane, ArrivalLaneDefinition& ald, std::string& error); 403 404 405 /** @brief Validates a given arrivalPos value 406 * @param[in] val The arrivalPos value to parse 407 * @param[in] element The name of the type of the parsed element, for building the error message 408 * @param[in] id The id of the parsed element, for building the error message 409 * @param[out] pos The parsed position, if given 410 * @param[out] apd The parsed arrivalPos definition 411 * @param[out] error Error message, if an error occures 412 * @return Whether the given value is a valid arrivalPos definition 413 */ 414 static bool parseArrivalPos(const std::string& val, const std::string& element, const std::string& id, 415 double& pos, ArrivalPosDefinition& apd, std::string& error); 416 417 418 /** @brief Validates a given arrivalPosLat value 419 * @param[in] val The arrivalPosLat value to parse 420 * @param[in] element The name of the type of the parsed element, for building the error message 421 * @param[in] id The id of the parsed element, for building the error message 422 * @param[out] pos The parsed position, if given 423 * @param[out] apd The parsed arrivalPos definition 424 * @param[out] error Error message, if an error occures 425 * @return Whether the given value is a valid arrivalPos definition 426 */ 427 static bool parseArrivalPosLat(const std::string& val, const std::string& element, const std::string& id, 428 double& pos, ArrivalPosLatDefinition& apd, std::string& error); 429 430 431 /** @brief Validates a given arrivalSpeed value 432 * @param[in] val The arrivalSpeed value to parse 433 * @param[in] element The name of the type of the parsed element, for building the error message 434 * @param[in] id The id of the parsed element, for building the error message 435 * @param[out] speed The parsed speed, if given 436 * @param[out] asd The parsed arrivalSpeed definition 437 * @param[out] error Error message, if an error occures 438 * @return Whether the given value is a valid arrivalSpeed definition 439 */ 440 static bool parseArrivalSpeed(const std::string& val, const std::string& element, const std::string& id, 441 double& speed, ArrivalSpeedDefinition& asd, std::string& error); 442 /// @} 443 444 445 /** @brief Interprets negative edge positions and fits them onto a given edge 446 * @param[in] pos The position to be interpreted 447 * @param[in] maximumValue The maximum allowed value (edge length) 448 * @param[in] attr The attribute from which the value originated 449 * @param[in] id The id of the object to which this attribute belongs 450 * @return Whether the interpreted position 451 */ 452 static double interpretEdgePos(double pos, double maximumValue, SumoXMLAttr attr, const std::string& id); 453 454 /// @brief The vehicle's id 455 std::string id; 456 457 /// @brief The vehicle's route id 458 std::string routeid; 459 460 /// @brief The vehicle's type id 461 std::string vtypeid; 462 463 /// @brief The vehicle's color, TraCI may change this 464 mutable RGBColor color; 465 466 /// @name Departure definition 467 /// @{ 468 469 /// @brief The vehicle's departure time 470 SUMOTime depart; 471 /// @brief Information how the vehicle shall choose the depart time 472 DepartDefinition departProcedure; 473 /// @brief (optional) The lane the vehicle shall depart from (index in edge) 474 int departLane; 475 /// @brief Information how the vehicle shall choose the lane to depart from 476 DepartLaneDefinition departLaneProcedure; 477 /// @brief (optional) The position the vehicle shall depart from 478 double departPos; 479 /// @brief Information how the vehicle shall choose the departure position 480 DepartPosDefinition departPosProcedure; 481 /// @brief (optional) The lateral position the vehicle shall depart from 482 double departPosLat; 483 /// @brief Information how the vehicle shall choose the lateral departure position 484 DepartPosLatDefinition departPosLatProcedure; 485 /// @brief (optional) The initial speed of the vehicle 486 double departSpeed; 487 /// @brief Information how the vehicle's initial speed shall be chosen 488 DepartSpeedDefinition departSpeedProcedure; 489 /// @} 490 491 /// @name Arrival definition 492 /// @{ 493 494 /// @brief (optional) The lane the vehicle shall arrive on (not used yet) 495 int arrivalLane; 496 /// @brief Information how the vehicle shall choose the lane to arrive on 497 ArrivalLaneDefinition arrivalLaneProcedure; 498 /// @brief (optional) The position the vehicle shall arrive on 499 double arrivalPos; 500 /// @brief Information how the vehicle shall choose the arrival position 501 ArrivalPosDefinition arrivalPosProcedure; 502 /// @brief (optional) The lateral position the vehicle shall arrive on 503 double arrivalPosLat; 504 /// @brief Information how the vehicle shall choose the lateral arrival position 505 ArrivalPosLatDefinition arrivalPosLatProcedure; 506 /// @brief (optional) The final speed of the vehicle (not used yet) 507 double arrivalSpeed; 508 /// @brief Information how the vehicle's end speed shall be chosen 509 ArrivalSpeedDefinition arrivalSpeedProcedure; 510 /// @} 511 512 /// @name Repetition definition 513 /// @{ 514 515 /// @brief The number of times the vehicle shall be repeatedly inserted 516 int repetitionNumber; 517 /// @brief The number of times the vehicle was already inserted 518 int repetitionsDone; 519 /// @brief The time offset between vehicle reinsertions 520 SUMOTime repetitionOffset; 521 /// @brief The probability for emitting a vehicle per second 522 double repetitionProbability; 523 /// @brief The time at which the flow ends (only needed when using repetitionProbability) 524 SUMOTime repetitionEnd; 525 /// @} 526 527 /// @brief The vehicle's line (mainly for public transport) 528 mutable std::string line; 529 530 /// @brief The vehicle's origin zone (district) 531 std::string fromTaz; 532 533 /// @brief The vehicle's destination zone (district) 534 std::string toTaz; 535 536 /** @struct Stop 537 * @brief Definition of vehicle stop (position and duration) 538 */ 539 struct Stop { 540 /// @brief The lane to stop at 541 std::string lane; 542 /// @brief (Optional) bus stop if one is assigned to the stop 543 std::string busstop; 544 /// @brief (Optional) container stop if one is assigned to the stop 545 std::string containerstop; 546 /// @brief (Optional) parking area if one is assigned to the stop 547 std::string parkingarea; 548 /// @brief (Optional) charging station if one is assigned to the stop 549 std::string chargingStation; 550 /// @brief The stopping position start 551 double startPos; 552 /// @brief The stopping position end 553 double endPos; 554 /// @brief The stopping duration 555 SUMOTime duration; 556 /// @brief The time at which the vehicle may continue its journey 557 SUMOTime until; 558 /// @brief whether an arriving person lets the vehicle continue 559 bool triggered; 560 /// @brief whether an arriving container lets the vehicle continue 561 bool containerTriggered; 562 /// @brief whether the vehicle is removed from the net while stopping 563 bool parking; 564 /// @brief IDs of persons the vehicle has to wait for until departing 565 std::set<std::string> awaitedPersons; 566 /// @brief IDs of containers the vehicle has to wait for until departing 567 std::set<std::string> awaitedContainers; 568 /// @brief id of the trip within a cyclical public transport route 569 std::string tripId; 570 /// @brief lanes and positions connected to this stop (only used by duarouter where Stop is used to store stopping places) 571 std::vector<std::tuple<std::string, double, double> > accessPos; 572 /// @brief at which position in the stops list 573 int index; 574 /// @brief Information for the output which parameter were set 575 int parametersSet = 0; 576 577 /** @brief Writes the stop as XML 578 * 579 * @param[in, out] dev The device to write into 580 * @exception IOError not yet implemented 581 */ 582 void write(OutputDevice& dev) const; 583 }; 584 585 /// @brief List of the stops the vehicle will make, TraCI may add entries here 586 mutable std::vector<Stop> stops; 587 588 /// @brief List of the via-edges the vehicle must visit 589 mutable std::vector<std::string> via; 590 591 /// @brief The static number of persons in the vehicle when it departs (not including boarding persons) 592 int personNumber; 593 594 /// @brief The static number of containers in the vehicle when it departs 595 int containerNumber; 596 597 /// @brief Information for the router which parameter were set, TraCI may modify this (whe changing color) 598 mutable int parametersSet; 599 600 protected: 601 /// @brief obtain depart parameter in string format 602 std::string getDepart() const; 603 604 /// @brief obtain depart lane parameter in string format 605 std::string getDepartLane() const; 606 607 /// @brief obtain depart pos parameter in string format 608 std::string getDepartPos() const; 609 610 /// @brief obtain depart pos lat parameter in string format 611 std::string getDepartPosLat() const; 612 613 /// @brief obtain depart speed parameter in string format 614 std::string getDepartSpeed() const; 615 616 /// @brief obtain arrival lane parameter in string format 617 std::string getArrivalLane() const; 618 619 /// @brief obtain arrival pos parameter in string format 620 std::string getArrivalPos() const; 621 622 /// @brief obtain arrival pos lat parameter in string format 623 std::string getArrivalPosLat() const; 624 625 /// @brief obtain arrival speed parameter in string format 626 std::string getArrivalSpeed() const; 627 }; 628 629 #endif 630 631 /****************************************************************************/ 632 633 634