Vsimrti User Manual 18.0
vsimrti-user-manual-18.0
User Manual:
Open the PDF directly: View PDF .
Page Count: 141
Download | |
Open PDF In Browser | View PDF |
VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure User Documentation Michalis Adamidis Manuel Bock Jan Henning Sven Erik Jeroschewski Robert Protzmann Stefan Rulewitz Sebastian Dunkel Adrian Herrmann Jiajun Hu Franz Kage Bernard Ladenthin Tobias Queck Alexander Scheck Julia Ullrich Roland Cristea Stefan Reichel Erik Schleiff Sascha-Gaetano Urso Version 18.0 April 24, 2018 Karl Hübner Nico Naumann David Rieck Björn Schünemann Michael Weiner Abstract The Vehicle-2-X Simulation Runtime Infrastructure (VSimRTI) enables the preparation and execution of Vehicle-2-X (V2X) simulations. It is a flexible system which simulates traffic flow dynamically. VSimRTI couples different simulators and thus allows the simulation of the various aspects of intelligent transportation systems. The easy integration and exchangeability of simulators enables the utilization of the most relevant simulators for a realistic presentation of vehicle traffic, emissions, wireless communication and the execution of V2X applications. The developer alliance The developer alliance consists of Fraunhofer-Institut für Offene Kommunikationssysteme (FOKUS), Daimler Center for Automotive Information Technology Innovations (DCAITI) and Automotive Services and Communication Technologies (ASCT). Contact information VSimRTI Mailing List (developer team) vsimrti@fokus.fraunhofer.de VSimRTI: Smart Mobility Simulation http://www.dcaiti.tu-berlin.de/research/simulation Fraunhofer FOKUS: ASCT Competence Center https://www.fokus.fraunhofer.de/asct DCAITI http://www.dcaiti.tu-berlin.de Contents 1 Introduction 1.1 Overview . . . . . . . . . . . . . . . 1.2 Download and install . . . . . . . . 1.3 Update . . . . . . . . . . . . . . . . 1.4 License . . . . . . . . . . . . . . . . 1.5 Concept . . . . . . . . . . . . . . . . 1.5.1 Federates and Ambassadors 1.5.2 Scenario configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 2 3 3 3 2 Run simulations 2.1 Run a single simulation via CLI . 2.1.1 VSimRTIEmbeddedStarter 2.2 Results . . . . . . . . . . . . . . . 2.2.1 Logging . . . . . . . . . . . 2.3 Run a simulation set via CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 7 7 8 3 Simulators 3.1 Kinds of simulators . . . . . . . . . . . . . . . . . . . 3.1.1 Network simulators . . . . . . . . . . . . . . . 3.1.2 Traffic simulators . . . . . . . . . . . . . . . . 3.1.3 Application simulators . . . . . . . . . . . . . 3.1.4 VSimRTI communication simulators . . . . . 3.1.5 Environment simulators . . . . . . . . . . . . 3.1.6 Electricity simulators . . . . . . . . . . . . . . 3.2 OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 omnetpp-ambassador folder structure . . . 3.2.2 Installation . . . . . . . . . . . . . . . . . . . . 3.3.3 Installation in Docker environment . . . . . 3.2.4 Configuration . . . . . . . . . . . . . . . . . . 3.3 ns-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 ns3-ambassador folder structure . . . . . . . 3.3.2 Installation . . . . . . . . . . . . . . . . . . . . 3.3.3 Installation in Docker environment . . . . . 3.3.4 Configuration . . . . . . . . . . . . . . . . . . 3.4 SUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 sumo-ambassador folder structure . . . . . 3.4.2 Installation . . . . . . . . . . . . . . . . . . . . 3.4.3 Configuration . . . . . . . . . . . . . . . . . . 3.4.4 Using the SUMO GUI with VSimRTI . . . . . 3.4.5 Routes and Vehicle Types . . . . . . . . . . . 3.4.6 Further information . . . . . . . . . . . . . . 3.4.7 VSimRTI specific information . . . . . . . . . 3.5 VSimRTI Application Simulator . . . . . . . . . . . . 3.5.1 applicationNT-ambassador folder structure 3.5.2 Installation . . . . . . . . . . . . . . . . . . . . 3.5.3 Libraries . . . . . . . . . . . . . . . . . . . . . 3.5.4 Basic functionality . . . . . . . . . . . . . . . 3.5.5 Gather information in an application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 10 10 10 11 11 12 12 13 19 15 16 17 17 19 20 22 22 22 23 23 23 24 24 25 25 25 25 25 26 . . . . . Contents 3.6 3.7 3.8 3.9 Contents 3.5.6 Equipped units . . . . . . . . . . . . . . . . . . . . 3.5.7 Technical details . . . . . . . . . . . . . . . . . . . 3.5.8 Configuration . . . . . . . . . . . . . . . . . . . . . 3.5.9 Development of applications . . . . . . . . . . . . 3.5.10 Debugging of applications . . . . . . . . . . . . . . 3.5.11 Internal ETSI applications . . . . . . . . . . . . . . 3.5.12 Sending Cooperative Awareness Messages (CAM) 3.5.13 Access SUMO TraCI from applications . . . . . . . 3.5.14 Navigation . . . . . . . . . . . . . . . . . . . . . . . 3.5.15 Mapping 3 . . . . . . . . . . . . . . . . . . . . . . . VSimRTI Cellular Simulator . . . . . . . . . . . . . . . . . 3.6.1 cell2-ambassador folder structure . . . . . . . . . 3.6.2 Installation . . . . . . . . . . . . . . . . . . . . . . . 3.6.3 Configuration . . . . . . . . . . . . . . . . . . . . . 3.6.4 Operation . . . . . . . . . . . . . . . . . . . . . . . VSimRTI Simple Network Simulator . . . . . . . . . . . . 3.7.1 sns-ambassador folder structure . . . . . . . . . . 3.7.2 Installation . . . . . . . . . . . . . . . . . . . . . . . 3.7.3 Configuration . . . . . . . . . . . . . . . . . . . . . 3.7.4 Operation . . . . . . . . . . . . . . . . . . . . . . . VSimRTI Eventserver . . . . . . . . . . . . . . . . . . . . . 3.8.1 eventserver-ambassador folder structure . . . . . 3.8.2 Installation . . . . . . . . . . . . . . . . . . . . . . . 3.8.3 Configuration . . . . . . . . . . . . . . . . . . . . . VSimRTI Battery Simulator . . . . . . . . . . . . . . . . . 3.9.1 battery-ambassador folder structure . . . . . . . 3.9.2 Installation . . . . . . . . . . . . . . . . . . . . . . . 3.9.3 Introduction . . . . . . . . . . . . . . . . . . . . . . 3.9.4 Vehicle model . . . . . . . . . . . . . . . . . . . . . 3.9.5 Battery model . . . . . . . . . . . . . . . . . . . . . 3.9.6 Environment model . . . . . . . . . . . . . . . . . 3.9.7 Sample configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 26 27 29 30 31 32 32 33 36 36 37 37 40 41 41 41 41 42 44 44 44 44 45 45 45 45 45 45 46 46 4 Tutorial Tiergarten 4.1 Mapping Configuration . . . . . . . 4.2 Inter-Vehicle Communication . . . . 4.3 Intra-Vehicle Communication . . . . 4.3.1 The traffic light application . 4.4 Interpretation of simulation results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48 49 53 54 55 5 Tutorial Barnim 5.1 Overview . . . . . . . . . . . . . . 5.2 Mapping configuration . . . . . . 5.3 VSimRTI configuration . . . . . . 5.4 Applications . . . . . . . . . . . . 5.4.1 DEN-Message handling . 5.4.2 Cellular Communication . 5.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 56 57 58 58 59 59 60 6 Tutorial Traffic Lights 6.1 Use scenario-convert to export traffic lights . . . . . . . . . . . . . . . . . 6.2 Determine the traffic lights that should be equipped with applications . 6.3 Configure the mapping for traffic lights . . . . . . . . . . . . . . . . . . . 6.4 The Traffic Light API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 61 62 62 63 . . . . . . . . . . . . . . 7 Tutorial LuST 64 7.1 Execute the LuST scenario with VSimRTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 4 Contents Contents 7.2 Current limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 8 Create a new scenario 8.1 Road network data . . . . . . . . . 8.1.1 Using OpenStreetMap data 8.2 Vehicles and Routes . . . . . . . . . 8.3 VSimRTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 66 66 68 69 9 Visualizers 9.1 Kinds of Visualizers . . . . . . . . . . . . . . . . . . . . . . . . 9.2 VSimRTI WebSocket Visualizer . . . . . . . . . . . . . . . . . 9.3 VSimRTI File Visualizer . . . . . . . . . . . . . . . . . . . . . . 9.3.1 Configuring the File Visualizer . . . . . . . . . . . . . 9.4 VSimRTI Integrated Test and Evaluation Framework (ITEF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 73 74 74 78 10Run simulation series 10.1 Simulation Runner . . . . . . . 10.1.1 Usage . . . . . . . . . . . 10.1.2 Configuration . . . . . . 10.1.3 Parametrization . . . . . 10.1.4 Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 80 80 81 83 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Additional tools 86 11.1 scenario-convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 12VSimRTI configuration 12.1 Overview . . . . . . . . . . 12.2 Federates configuration . 12.2.1 Federate priorities 12.3 Host configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 90 90 91 91 13Additional information 92 13.1 PATH configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 14List of Acronyms 94 A VSimRTI deployment 96 A.1 VSimRTI Folder Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 A.2 File listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 B Example scenario Barnim 108 B.1 Folder Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 B.2 File listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 C Example scenario Tiergarten 123 C.1 Folder Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 C.2 File listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 D Package Additional Examples 126 E Configuration Schemata 128 F References 134 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 5 1 Introduction 1.1 Overview This documentation is part of the current release of VSimRTI and aims at supporting users in their first steps with the software. We try to explain most of VSimRTI’s features and configurations by providing two tutorials named Barnim (see chapter 5) and Tiergarten (see chapter 4). If you need more information regarding VSimRTI or a specific configuration, we ask you to take a look at the Doxygen documentation provided alongside the current release. Documentation is available for all JSON style configs. Apart from that the appendix provides information for the respective XML style configurations. If you have any questions or need further support, please feel free to contact our support team via our mailing list. Please attach relevant log files and scenario files to your inquiry. We look forward to receiving your feedback concerning further improvements of the VSimRTI documentation as well as the installation and configuration process. VSimRTI at a glance VSimRTI was built to provide users with the flexibility to perform various V2X simulations with their own choice of simulators. In order to provide the flexibility to exchange a simulator without changing the underlying infrastructure, VSimRTI offers several interfaces for the integration of different simulators, e.g. for network, traffic, and environment simulations. For the synchronization and the communication purposes, the implemented infrastructure uses common concepts defined in the Institute of Electrical and Electronics Engineers (IEEE) standard for modelling and simulation (M&S) High-Level Architecture (HLA). Thus, the runtime infrastructure VSimRTI allows a flexible combination of time-discrete simulators for V2X simulations. Based on the (possibly differing) requirements of a specific scenario, arbitrary simulators can be added to VSimRTI and are executed together. VSimRTI is written in the programming language Java and deployed as Java Archive (JAR) files. Consequently, a compatible Java Runtime Environment (JRE) for your operating system must be installed to execute VSimRTI. Currently, Java version 8 is required to run VSimRTI. 1.2 Download and install • Download vsimrti-bin-18.0.zip from the DCAITI website . • The package vsimrti-bin-18.0.zip has to be extracted to an arbitrary path. This installation path is referenced as vsimrti throughout the entire document. 1 Introduction 1.3 Update 1.3 Update In order to update VSimRTI to a new version, please perform the following steps manually: • Backup your personal simulation scenarios from VSimRTI’s scenarios directory. • Remove your old VSimRTI installation completely. • Install VSimRTI according to the previous section. • Copy your simulation scenarios back to VSimRTI’s scenarios directory. • Migrate your scenarios to individual changes in the new VSimRTI version according to the vsimrti-conversion-guide-18.0.pdf , which can be found on the DCAITI website . 1.4 License The licensing mechanism was introduced for a better release control. It improves user support whilst helping our developer team to deactivate outdated releases which cannot be maintained anymore. Every user needs to be registered at the license server to obtain a license. 1. Running the firstStart script in the VSimRTI root folder causes the file vsimrti/systeminfo.txt to be generated. This file is also generated when VSimRTI is run without a valid license file or an invalid user. 2. The created file contains basic information in plain text about the machine on which VSimRTI was executed and is used to identify the user. The system info needs to be sent to the VSimRTI mailing list. A staff member registers the new user at the VSimRTI license server as soon as possible, usually within one workday. When your license is active, an email containing your user id will be sent to you. 3. The following information is stored to identify your machine: • central processing unit (CPU) model id • CPU cores • CPU architecture • Media Access Control (MAC) addresses • operating system name • operating system version • random-access memory (RAM) size • sockets • hashed user id • VSimRTI version VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 2 1 Introduction 1.5 Concept 4. Your license will be activated directly after confirmation by the VSimRTI team. On the next VSimRTI run with an available Internet connection to the VSimRTI license server a valid license is generated and a local copy is stored in the VSimRTI folder. 5. The local license files vsimrti/vsimrti-license.lcs and vsimrti/vsimrti.dat are valid for the next 14 days. In this period no Internet connection is needed for the execution of VSimRTI. Every time when an Internet connection to the license server can be established, the local license file will be renewed for another 14 days. Notice: You should not backup the license files. If you have a registered account and a valid license is present on the license server, you will always receive a new license file. Notice: If you encounter any problems with corrupt license files, you can also use the firstStart script to reset the local license files and retrieve a new copy during the next run. Notice: If the firstStart script does not result in a vsimrti/systeminfo.txt file, please check if you have sufficient rights on your machine. You can also try to start the vsimrti script instead, by calling vsimrti.sh -u-s Barnim. This command will always fail, due to the missing license, however, it may generate the required systemInfo.txt. 1.5 Concept In contrast to existing fixed simulator couplings VSimRTI allows easy integration and exchangeability of simulators. Depending on your specific requirements, the high flexibility of VSimRTI enables you to couple the most appropriate simulators for a realistic presentation of vehicle traffic, emissions, wireless communication, and the execution of V2X applications. 1.5.1 Federates and Ambassadors VSimRTI uses the federate-ambassador concept inspired by the concept of the HLA. Using this concept, it is possible to couple different simulation systems with a remote control interface. Attaching an additional simulator only requires implementation of the appropriate ambassador interface and the possiblity to execute its specified commands. 1.5.2 Scenario configuration Any scenario needs to be configured with a configuration file. The specific path to this file is vsimrti/scenarios/ /vsimrti/vsimrti_config.xml . VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 3 2 Run simulations Notice: Install the required simulators for the specific scenario and have a valid license (see section 1.4). 2.1 Run a single simulation via CLI To run a single simulation via Command Line Interface (CLI) calling the VSimRTI start script with the following command line arguments. The VSimRTI start script supports following arguments. -c, - -configuration The pendent and located includes other primary in necessary VSimRTI the according configuration configuration scenario files. file which folder. is This Usually you will scenario file de- transitively use the file your scenario is lo- VSimRTI (i.e. vsimrti/scenarios/ /vsimrti/vsimrti_config.xml . -s, - -scenario If cated in the the VSimRTI default configuration scenario file directory of of in vsimrti/scenarios/ /vsimrti/vsimrti_config.xml ), this option can be used instead of the -c option by passing only the scenario name (-s ). -u, - -userid The id of the VSimRTI user which was assigned with the authentication for the VSimRTI release area. For better release control and support of VSimRTI users, a user id is needed to start a simulation. The user id is connected to a dedicated VSimRTI license. -w, - -watchdog-interval The interval of the internal alive check (in seconds) which is used by VSimRTI to detect execution stalls. This parameter is not mandatory and it is also possible to turn off the watchdog (-w 0) for debug sessions. -o, - -loggingLevelOverride Override all specified logging-levels. This option is useful for debugging simulations. For example logging every possible event would be done with -o TRACE. -g, - -performance-GUI Opens a GUI Panel which provides several charts regarding the current simulation run, such as the progression of the Real Time Factor or memory consumption of the simulation. -b, - -realtimeBrake With this parameter, the simulation will be slowed done to a desired Real Time Factor, if possible. When simulations already run slower than real time, this factor will have no effect. For example, use -b 1 to execute the simulation in real time. -v, - -start-visualizer Opens a page in your default browser which visualizes all vehicle movements of the simulation on a map. This option only works, if your scenario has configured the websocket visualizer (see section 9.2). 2 Run simulations 2.1 Run a single simulation via CLI GNU/Linux Listing 2.1: VSimRTI GNU/Linux start command. ./ vsimrti . sh -c ./ scenarios / < scenario name >/ vsimrti / vsimr ti_con fig . xml -u userid Microsoft Windows Listing 2.2: VSimRTI Microsoft Windows start command. vsimrti . bat -c .\ scenarios \ < scenario name >\ vsimrti \ vs imrti_ confi g . xml -u userid 2.1.1 VSimRTIEmbeddedStarter The VSimRTIEmbeddedStarter is a customizeable Java start program. You can also use this program as template to embed VSimRTI in your Java application. The VSimRTIEmbeddedStarter is much more powerful than the start scripts. E.g. the VSimRTIEmbeddedStarter can search in configuration files for the given scenario id. The embedded starter has a user friendly CLI and many options. Listing 2.3: VSimRTI VSimRTIEmbeddedStarter help command. usage : java - jar V s i m r t i E m b e d d e d S t a r t e r . jar -b , - - realtimeBrake < REALTIMEFACTOR > Set value for real time brake . -c , - - config < PATH > Path to Scenario configuration file ( vs imrti_ config . xml ) . Can be used instead of " -s " parameter . ( mandatory ) . -- classpaths Class paths . Default is " . " ( working directory ) . -d , - - defaults - file < PATH > Path to VSimRTI configuration file ( default : etc / defaults . xml ) -e , - - exte r n a l W a t c h D o g < PORTNUMBER > Specific external watchdog port number -g , - - performance - GUI Opens performance GUI -h , - - hosts < PATH > Path to host configuration file ( default : etc / hosts . json ) -- help Shows this help information . -l , - - logger < PATH > Path to logback configuration file ( default : etc / logback . xml ) -- logback - path < PATH > Use specific logback . xml -o , - - l o g g i n g L e v e l O v e r r i d e < LOGLEVEL > Overrides the log level to new value ( e . g . DEBUG ) -p , - - process - builder Start VSimRTI using P rocess Builde r . -- pipe Use pipe redirect ( only for -- process - builder -- print - jar - files Print the found jar files . -- print - parameter Print the parameter before start . -s , - - scenario < NAME > The name of the VSimRTI scenario . Can be used instead of " -c " parameter . ( mandatory ) -- simrun Use the VSimRTI simulation runner . -- strict - configuration - path The starter pass - through the configuration path as it is . -u , - - user < USERID > Your UserId ( mandatory ) . Please read the user manual if you do not have a UserId yet . -v , - - start - visualizer Starts the web socket visualizer . -- verbose Print information at start . -- version Print the version information and exits . -w , - - watchdog - interval < SECONDS > Kill VSimRTI process after n seconds if a federate is not responding . 0 disables the watchdog . ( default : 30) VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 5 2 Run simulations 2.1 Run a single simulation via CLI Listing 2.4: VSimRTI VSimRTIEmbeddedStarter start command. java - jar VsimrtiEmbeddedStarter -18.0. jar -u userid -n scenarioId While VSimRTI is running, it prints some information on the command line: _ X [user@gnulinux vsimrti]$ ./vsimrti -u userid -c scenarios/Schwanebeck/vsimrti/vsimrti_config.xml 2012-10-08 11:39:06,442 INFO c - License valid 2012-10-08 11:39:06,449 INFO FederationManagement - Federation with id= Schwanebeck is started 2012-10-08 11:39:06,451 INFO FederationManagement - join federate with id swans 2012-10-08 11:39:06,733 INFO FederationManagement - Start swans local in ./tmp/swans 2012-10-08 11:39:06,939 INFO FederationManagement - join federate with id sumo 2012-10-08 11:39:07,029 INFO FederationManagement - Start sumo local in ./tmp/sumo 2012-10-08 11:39:07,029 INFO FederationManagement - join federate with id application 2012-10-08 11:39:07,252 INFO FederationManagement - Start application local in ./tmp/application 2012-10-08 11:39:07,588 INFO FederationManagement - join federate with id navigation 2012-10-08 11:39:07,589 INFO FederationManagement - join federate with id eworld 2012-10-08 11:39:07,857 INFO FederationManagement - Start eworld local in ./tmp/eworld eworld 2012-10-08 11:39:11,095 INFO FederationManagement - join federate with id mapping 2012-10-08 11:39:11,096 INFO FederationManagement - join federate with id visualizer 11:39:21.371 - Loading Database: 100% 2012-10-08 11:39:28,613 INFO SequentialTimeManagement - Simulating: 25000000000ns (25.0s)-62.0% (RTF:1,96, ETC:15s) Figure 2.1: Output of VSimRTI while running The current simulation progress is shown in the following format. • current wallclock time • log level • unit name • current simulation time in [ns] and [s] • progress in % • Real Time Factor (RTF) • Estimated Time to Completion (ETC) The RTF is the ratio of simulated time to simulation duration in wallclock time, e.g. a real time factor greater than 1 means, the simulation is running faster than real time. Both RTF and ETC are calculated based on the performance of the last five seconds of the simulation and should only give a rough overview, how long a simulation can take. Depending on the simulation setup, the values can differ heavily between start and end of a simulation. Gather results To get results from a simulation, the combined simulators have to be properly configured or a federate has to be integrated that generates global results. For detailed information and visualization possibilities, e.g. the FileVisualizer for detailed simulation data. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 6 2 Run simulations 2.2 Results 2.2 Results VSimRTI generates logfiles for each simulation run. Logs are generated for the ambassadors of each coupled federate respectively simulator and for VSimRTI itself. The logfiles are stored in the folder vsimrti/logs/log- . For each simulation run a new folder is created. In addition to standard logging output for each federate there is a statistics.csv file which contains detailed information about sent and received VSimRTI messages. This file can be used to trace a simulation run. log- appsNT ............................................................................. _ ................. Detailed application specific logs for each unit. OperatingSystem.log ................. Detailed operating system logs for the unit. ExampleApp.log ............. Detailed application specific logs for each application. ApplicationNT.log ...................... Information about the application ambassador. Battery.log ................... Battery ambassador log for simulation of electric vehicles. Cell2.log ....................................................... Cellular network log. ChargingStation.log ................................ ChargingStation ambassador log. Communication.log ........................ (Ad hoc) network simulation ambassador log. CommunicationDetails.log .... Detailed output of network simulator (ns-3 or OMNeT++). Environment.log ................................ Logs of the environmental eventserver. Mapping.log .............................................. Mapping configuration logs. Navigation.log . Detailed logs about navigation component in the application ambassador. statistics.csv .................. Simulation overview in comma separated value-format. Traffic.log ................................... Traffic simulation log (SUMO or others). visualizer.csv ........................... Recorded data of the VSimRTI File Visualizer. VSimRTI.log ............ General VSimRTI information, e.g. startup sequence information. Figure 2.2: VSimRTI log folder structure 2.2.1 Logging The main configuration file is vsimrti/etc/logback.xml . In this file, each output can be configured in great detail. This file can be adjusted to your needs, e.g. you can set up a more detailed logging for communication components but set a less verbose output for VSimRTI internal messages or traffic simulation depending on your simulation focus. VSimRTI uses logback as logging framework and it is suggested to use logback for the other simulators as well. Logback offers a lot of parameters to adapt the output to your needs. Please refer to (http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout) for a detailed overview of parameters you can use in the logback.xml file. Please note that you can adjust the output to your needs by setting different log levels (ERROR, INFO, DEBUG etc.) for each component in the file under vsimrti/etc/logback.xml . This might also influence the simulation performance because of a possibly high amount of data to be logged. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 7 2 Run simulations 2.3 Run a simulation set via CLI Federate specific logging Depending on the simulation purpose, further configuration possibilities for federate specific logging may be of interest. For instance, OMNeT++ exhibits an elaborated logging concept. The omnetpp.ini in the scenario folder includes options to adjust the logging levels. The outputs of this federate are written into Communica- tionDetails.log. 2.3 Run a simulation set via CLI Notice: The following options are only available with a commercial license of VSimRTI. For further information on licenses, please refer to our mailing list . A common objective when running simulations is to assess the impact of different parameter settings for a specific scenario on the results of the simulation. To this end, the simulation-runner is a tool to apply different configurations to a scenario, after which a series of simulations is executed via CLI by calling the simulation-runner start script. Please refer to 10.1. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 8 3 Simulators VSimRTI couples different simulators and can’t be run alone. Therefore, it requires pre-installed simulators. In this chapter we give an overview of common simulators already supported as well as basic configuration help. For further information and configuration options, please see the javadoc documentation provided on the VSimRTI website . To run other simulators than the provided ones, an additional component has to be written, which couples the simulator to VSimRTI. If you have any questions or need further support, please feel free to contact our support team via our mailing list. 3.1 Kinds of simulators The figure 3.1 gives an overview of the currently available simulators for VSimRTI vsimrti network simulators ...................................................... (see 3.1.1) Objective Modular Network Testbed in C++ (OMNeT++) ................. (see 3.2) network simulator 3 (ns-3) ............................................ (see 3.3) traffic simulators ...................................................... (see 3.1.2) Simulation of Urban Mobility (SUMO) .................................. (see 3.4) application simulators .................................................. (see 3.1.3) VSimRTI Application Simulator (built in) ............................ (see 3.5) VSimRTI Mapping (built in) ...................................... (see 3.5.15) VSimRTI navigation simulator (built in) ....................... (see 3.5.14) VSimRTI communication simulators ...................................... (see 3.1.4) VSimRTI Cellular Simulator (built in) ............................... (see 3.6) VSimRTI Simple Network Simulator (SNS) (built in) .................. (see 3.7) environment simulators .................................................. (see 3.1.5) VSimRTI Eventserver (built in) ....................................... (see 3.8) electricity simulators .................................................. (see 3.1.6) VSimRTI Battery Simulator (built in) ................................ (see 3.9) Figure 3.1: VSimRTI simulator structure 3.1.1 Network simulators A network simulator is a piece of software modeling the behavior of a network by calculating the interactions between all participating entities. For VSimRTI and, more specifically, the communication in a V2X environment this refers to simulations of the wireless transmissions taking place between the various simulated entities. The provided simulators are prepared to simulate a communication stack basing on the IEEE 802.11p network interfaces with IP and UDP on top. However, according to their model base, 3 Simulators 3.1 Kinds of simulators alternative set ups are possible. Currently, VSimRTI supports the commonly known network simulators OMNeT++ and ns-3, and the built in communication simulator SNS. 3.1.2 Traffic simulators A traffic simulator is a software modeling the movements of users in a traffic system. Users can mean cars, pedestrians, trains, ships, planes etc. Traffic simulators can be discriminated by various measures, of which one is the used scope: Microscopic models Simulate each car individually and through the interaction of multiple cars also traffic flows. They are commonly used for situations such as a traffic crossing or an on-ramp situation. Macroscopic models Models of a traffic flow without the modelling of individual cars. Instead the traffic flow is computed using models derived from fluid dynamics or gas-kinetics. By this the simulation is computationally far less expensive, so more cars and wider areas can be simulated. An example would be the prediction of traffic jams. Mesoscopic models Try to bridge the gap between macroscopic and microscopic simulation using individual vehicles that are being actuated by macroscopic control variables. Sub-Microscopic models Used to simulate a car in as much detail as possible. The prediction of the behavior is the most precise of all models, but also computationally the most expensive. The currently supported traffic simulator SUMO is a microscopic traffic simulator. 3.1.3 Application simulators An application simulator is an important component enabling the simulation and creation of V2X applications. It follows the European Telecommunications Standards Institute (ETSI) standards for Vehicle-to-Vehicle (V2V) communication. These standards contain message definitions like Decentralized Environmental Notification Messages (DENM) and Cooperative Awareness Messages (CAM) and also a general application container design. 3.1.4 VSimRTI communication simulators For different reasons of convenience or extended analysis capabilities, VSimRTI ships with two additional communication simulators: • The Cellular Simulator is a special case of network simulator to simulate the communication taking place within a cellular network, such as Universal Mobile Telecommunications System (UMTS) and Long Term Evolution (LTE). • The Simple Network Simulator is written in Java and already tightly integrated in VSimRTI. It offers a lightweight and fast solution for simulation of ad hoc communication. The provided VSimRTI communication simulators can be used as an alternative (SNS) or addition (Cell2) to classic network simulators. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 10 3 Simulators 3.1 Kinds of simulators 3.1.5 Environment simulators This kind of simulator simulates certain environmental events such as rain, fog, snow, etc.. 3.1.6 Electricity simulators In connection with VSimRTI, electricity simulators enable investigations in the field of electric mobility. For this purpose, VSimRTI ships with the built in VSimRTI Battery Simulator. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 11 3 Simulators 3.2 OMNeT++ 3.2 OMNeT++ OMNeT++ itself is solely the simulation platform for discrete-event systems. Even though it is primarily targeted at simulating computer networks and distributed systems, it cannot be used without any extensions for wireless communication. For this kind of simulations, external model frameworks have to be included. Currently there are two prominent model frameworks which cover whole model suites for according focus of wireless research. These are the Mobility Framework and the OMNeT++ - Model library for wired, wireless and mobile networks (INET) Framework. As INET provides all models necessary for simulating Vehicle-2-X communication, it is selected for the integration to VSimRTI. For more information on the INET extension you should look closer on the website https://inet.omnetpp.org. Software information Developer(s) OMNeT++ Community and OpenSim Ltd. Written in C++ Operating system Windows (mingw), Linux License open source for academic use Website http://www.omnetpp.org/ https://inet.omnetpp.org Supported version(s) OMNeT++ 4.6 INET 3.0 Dependencies libprotobuf 3.3.0 Installation via released installation script Table 3.1: Software information: OMNeT++ 3.2.1 omnetpp-ambassador folder structure The omnetpp.ini file has to be located in the omnetpp folder of the scenario configuration. omnetpp .......................................................................... omnetpp_config.json .............................. Ambassador configuration file omnetpp.ini ................................. OMNeT++ federate configuration file Figure 3.2: omnetpp-ambassador folder structure VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 12 3 Simulators 3.2 OMNeT++ 3.2.2 Installation The VSimRTI all-in-one package comes with an installation script for the bash-shell, which automates the task of the OMNeT++/INET installation. Prerequisites The OMNeT++/INET federate furthermore depends upon: • libprotobuf 3.3.0 Please make sure these libraries are installed before running the installation script. Installation shell script vsimrti bin fed omnetpp Dockerfile ......................... Docker file for OMNeT++/INET federate omnet_installer.sh .................. Installation script for OMNeT++/INET Figure 3.3: OMNeT++ folder structure Please execute the following steps for installing the OMNeT++/INET federate: 1. Follow the link and download the source code of OMNeT++ 4.6 (omnetpp-4.6-src.tgz) : https://omnetpp.org/omnetpp/download/30-omnet-releases/2290-omnet-4-6-source-ide-tgz 2. Make the installation script executable: chmod 755 omnet_installer.sh 3. Make sure all dependencies are met by your system. 4. Run the script to install OMNeT++/INET: ./omnet_installer.sh -s /path/to/omnetpp-4.6-src.tgz VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 13 3 Simulators 3.2 OMNeT++ 3.2.3 Installation in Docker environment Notice: This is an experimental feature. Please refer to our mailing list if you experience any problems. This guide gives instructions to execute the OMNeT++ federate inside a docker container. If you already installed OMNeT++ on your machine following the steps before, you can skip this section. Docker1 is a new approach to execute software. More precisely, it "wraps software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, and system libraries". As a result, the software is executed within a container and its execution does not rely on the environment the container is running in. In context of VSimRTI, this approach allows to execute OMNeT++ within a docker container. The user does not need to manually install OMNeT++ and can even run OMNeT++ on Windows hosts. 1. Install Docker ≥ 1.13 on your machine. 2. To get everything work, please make sure to execute the following steps depending on your operating system: • Windows - In the settings, share the drive where VSimRTI is installed on. You may need to restart docker in the reset tab. • Linux - Make sure your user account belongs to the unix-group "docker". You may need to restart your machine. 3. Switch to the location of the Dockerfile in vsimrti/bin/fed/omnetpp 4. Follow the link and download the source code of OMNeT++ 4.6 (omnetpp-4.6-src.tgz) and place the downloaded file into the vsimrti/bin/fed/omnetpp directory: https://omnetpp.org/omnetpp/download/30-omnet-releases/2290-omnet-4-6-source-ide-tgz 5. Execute the following command on command line: docker build -t omnetpp-federate:18.0 . This could take a while to finish. 6. Enter the name of the docker image etc/defaults.xml in the omnetpp-section into the tag dockerImage: < federate class = " ... " > < id >omnetpp id > ... < dockerImage >omnetpp-federate:18.0 dockerImage > ... federate > You can test the installation of your docker image with the Tiergarten scenario, by activating omnetpp in the vsimrti_config.xml. 1 https://www.docker.com/ VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 14 3 Simulators 3.2 OMNeT++ 3.2.4 Configuration The whole OMNeT++ specific configuration is done via the omnetpp.ini file. It covers static parts for the simulator coupling as the specific VSimRTI Event Scheduler and the ScenarioManager. Furthermore, logging configurations and the typical parameters for the communication layers (MAC, PHY and Radio Channel) are addressed. The communication parameters are different for vehicles and RSUs. Please refer to the OMNeT++ documentation on the OMNeT++ homepage for further information about the structure of the omnetpp.ini file. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 15 3 Simulators 3.3 ns-3 3.3 ns-3 The ns-3 is a discrete-event network simulator, that was started as an open-source project by a team led by Tom Henderson from the University of Washington in July 2006 and made its first release in June 2008. ns-3 is targeted primarily towards research and educational use and thereby, also offers a vital community of developers and maintainers. It was developed as a replacement for the popular network simulator 2 (ns-2) and mainly focuses upon improving the core architecture, software integration, models, and educational components for real-world network devices and protocols (regardless, ns-2 still remains in active use and will continued to be maintained in the near future). It simulates both unicast and multicast protocols and is used extensively in research on mobile ad-hoc networks Like other network simulators, ns-3 has a relatively steep learning curve, especially compared to GUIbased simulators. If you have no prior experience with ns-3, we recommend to familiarize yourself with the ns-3 simulation environment and the ns-3 simulation basics first. The ns-3 documentation can be found under: http://www.nsnam.org/documentation To take your first steps with ns-3, you might want to download2 the latest version, build a copy of ns-3 (it uses the Python-based build-system waf) and take a look at the examples, that are shipped within most of the ns-3 source code repositories and packages. You might also examine the simulation output and try to adjust it. Typically, a ns-3 user will work under a Linux environment. For those running under Windows, there do exist environments which simulate the Linux environment to various degrees. The ns-3 project has in the past (but not presently) supported the Cygwin environment for these users (see http://www. cygwin.com for details on downloading). MiniGW is presently not officially supported. According to the ns-3 installation guide, the officially supported platforms include (please note, that plenty of other distributions are likely to work with ns-3 regardless): • Fedora • Ubuntu • OS X Mountain Lion, Snow Leopard, ... • FreeBSD • Cygwin Important: As stated above, ns-3 is primarily developed on and for GNU/Linux platforms. Since Windows is such a widely used platform and Cygwin is not a perfect emulation of any Linux, we highly recommended for non-Linux users to consider the installation of a Linux virtual machine with a virtual machine environment, such as VMware3 or VirtualBox4 . 2 Please note, that downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you. 3 http://www.nsnam.org/wiki/index.php/HOWTO_use_VMware_to_set_up_virtual_networks_(Windows) 4 http://www.nsnam.org/wiki/index.php/HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 16 3 Simulators 3.3 ns-3 Software information Developer(s) Tom Henderson, Mathieu Lacage, George Riley, Mitch Watrous, Gustavo Carneiro, Tommaso Pecorella and others Written in C++ (core) and Python (bindings) Operating system GNU/Linux FreeBSD Mac OS X License free software: GNU GPLv2 Website http://www.nsnam.org/ Supported version(s) 3.25 Dependencies libprotobuf 3.3.0 libxml2 libsqlite3 Deployed in VSimRTI all-in-one no (and need a patch to link) Table 3.2: Software information: ns-3 3.3.1 ns3-ambassador folder structure ns3 ns3_config.json .................................. Ambassador configuration file configTechnologies.xml .......................... ns-3 federate configuration file confWifi.xml ..................................... ns-3 federate configuration file Figure 3.4: ns3-ambassador folder structure 3.3.2 Installation VSimRTI offers support for the current stable release of ns-3 (3.25), that was released in March 2016. Older versions of ns-3 (prior to 3.25) are not supported. However, also for newer versions we cannot guarantee the correct operation. The coupling to VSimRTI is designed in a manner of minimal code changes on the ns-3 simulator itself to keep the update capabilities for future versions. Prerequisites For GNU/Linux platforms, the minimal requirements to run basic simulations are a gcc or clang compiler and a Python interpreter. At least you need the following packages to be installed: Listing 3.1: ns-3: Minimum requirements gcc g ++ python python - dev VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 17 3 Simulators 3.3 ns-3 For a complete list of required packages for different distributions, please refer to the ns-3 installation guide: http://www.nsnam.org/wiki/index.php/Installation For the connection to VSimRTI, the ns-3 federate furthermore depends upon • libxml2 • libsqlite3 • libprotobuf 3.3.0 Please make sure these libraries are installed before running the installation script. Run the installation script Important: ns-3 requires several packages to be installed on your computer. You will need to ensure, that all required libraries are present on your system before proceeding. You may need superuser permissions to install packages. To ease the installation of ns-3 for VSimRTI, the installation process has been delegated to an installation script, that can be found in the associated ns-3 federate folder. vsimrti bin fed ns3 Dockerfile.sh ................................. Dockerfile for ns-3 federate ns3_installer.sh ............................... Installation script for ns-3 Figure 3.5: ns3-ambassador federate folder structure The ns-3 installation script accomplishes the following tasks: 1. Download ns-3 tarball from the offical sources 2. Download the ns-3 federate for VSimRTI. 3. Apply a patch to ns-3 in order to make it work with VSimRTI. 4. Add the ns-3 federate to the waf build system. 5. Configure and build the patched ns-3 with the ns-3 federate. In order to start the simulation, the following steps need to be performed: 1. Set up the confWifi.xml-file in the scenario folder (see section 3.3.4). An example confWifi.xmlfile is shipped with the Tiergarten scenario. 2. For reasonable result logging, the logger-configuration in vsimrti/etc/logback.xml has to be adapted to support the ns-3 ambassador and federate. 3. At last ns-3 has to be activated in the vsimrti_config.xml and the simulation can be started. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 18 3 Simulators 3.3 ns-3 3.3.3 Installation in Docker environment Notice: This is an experimental feature. Please refer to our mailing list if you experience any problems. This guide gives instructions to execute the ns-3 federate inside a docker container. If you already installed ns-3 on your machine following the steps before, you can skip this section. Docker5 is a new approach to execute software. More precisely, it "wraps software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, and system libraries". As a result, the software is executed within a container and its execution does not rely on the environment the container is running in. In context of VSimRTI, this approach allows to execute ns-3 within a docker container. The user does not need to manually install ns-3 and can even run ns-3 on Windows hosts. 1. Install Docker ≥ 1.13 on your machine. 2. To get everything work, please make sure to execute the following steps depending on your operating system: • Windows - In the settings, share the drive where VSimRTI is installed on. You may need to restart docker in the reset tab. • Linux - Make sure your user account belongs to the unix-group "docker". You may need to restart your machine. 3. Switch to the location of the Dockerfile in vsimrti/bin/fed/ns3 4. Execute the following command on command line: docker build -t ns3-federate:18.0 . This could take a while to finish. 5. Enter the name of the docker image etc/defaults.xml in the ns3-section into the tag dockerImage: < federate class = " ... " > < id >ns3 id > ... < dockerImage >ns3-federate:18.0 dockerImage > ... federate > You can test the installation of your docker image with the Tiergarten scenario, by activating ns3 in the vsimrti_config.xml. 5 https://www.docker.com/ VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 19 3 Simulators 3.3 ns-3 3.3.4 Configuration The whole ns-3 specific configuration is done via the confWifi.xml and configTechnologies.xml files. Listing 3.2: confWifi.xml xml version = " 1.0 " encoding = " UTF -8 " standalone = " no " ? > < wifi > < ipConfig u ra ti o n > < ip address = " 192.168.0.0 " mask = " 255.255.0.0 " / > ipConf i gu ra t io n > < propagationDelayModel > < delay model = " n s 3 : : N o n e P r o p a g a t i o n D e l a y M o d e l " / > p r o p a g a t i o n D e l a y M o d e l > < propagationLossModel > < loss model = " n s 3 : : F r i i s P r o p a g a t i o n L o s s M o d e l " / > p r o p a g a t i o n L o s s M o d e l > < wif iCo n f i g u r a t i o n > < wifiMac property = " type " value = " n s 3 : : A d h o c W i f i M a c " / > < wifiManager property = " phyMode " value = " O fdmRat e54Mbp s " / > < wifiManager property = " type " value = " n s 3 : : C o n s t a n t R a t e W i f i M a n a g e r " / > < wifiPhy property = " E n e r g y D e t e c t i o n T h r e s h o l d " value = " -81.0 " / > < wifiPhy property = " C c a M o d e 1 T h r e s h o l d " value = " -99.0 " / > < wifiPhy property = " TxGain " value = " 0.0 " / > < wifiPhy property = " RxGain " value = " 0.0 " / > < wifiPhy property = " TxPowerLevels " value = " 1 " / > < wifiPhy property = " TxPowerEnd " value = " 17.0 " / > < wifiPhy property = " TxPowerStart " value = " 17.0 " / > < wifiPhy property = " RxNoiseFigure " value = " 0.0 " / > < wifiPhy property = " ChannelNumber " value = " 1 " / > wi fiC o n f i g u r a t i o n > wifi > The IP configuration information includes the network address and network mask. The ns-3 propagation module defines two generic interfaces, namely PropagationLossModel and PropagationDelayModel, for the modelling of propagation loss respectively propagation delay. In the default confWifi.xml, the Wi-Fi device uses the ns-3 standard propagation delay model ns3::ConstantSpeedPropagationDelayModel and the ns-3 standard propagation loss model ns3::FriisPropagationLossModel. Radio propagation models in ns-3 can easily be exchanged with VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 20 3 Simulators 3.3 ns-3 the ns-3 class registration system (see the ns-3 documentation for details). The Wi-Fi configuration includes additional parameters, like sending power and antenna gain. Listing 3.3: configTechnologies.xml xml version = " 1.0 " encoding = " UTF -8 " standalone = " no " ? > < ns3Config u r a t i o n > < installers > < installer type = " n s 3 : : W i f i V e h i c l e I n s t a l l e r " name = " WifiVehicle " file = " confWifi . xml " ⤦ Ç default = " true " / > < installer type = " n s 3 : : M o b i l i t y M o d e l I n s t a l l e r " name = " Mobility " default = " true " / > installers > ns3Confi g u r a t i o n > The configuration manager of the ns-3 federate defines, which installer should be loaded for the Wi-Fi device (refering to the confWifi.xml) and the mobility model. Usually, you don’t need to take any changes and simply use the default configuration file, that ships with the ns-3 federate. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 21 3 Simulators 3.4 SUMO 3.4 SUMO SUMO is an highly portable, microscopic and continuous road traffic simulation package. It is designed to handle large road networks faster than real-time. Each vehicle has an own route and is simulated individually. Software information Developer(s) German Aerospace Center Written in C++ Operating system GNU/Linux and Microsoft Windows License free software: GNU GPLv2 since 0.31.0: EPL-2.0 Website http://sumo.dlr.de/ Supported version(s) 0.30.0 . . . 0.32.0 Deployed in VSimRTI all-in-one no Table 3.3: Software information: SUMO Important: Please note that VSimRTI only supports SUMO 0.30.0 or higher. 3.4.1 sumo-ambassador folder structure This ambassador can be configured with a configuration file. The specific path is vsimrti/scenarios/ /sumo/sumo_config.json sumo ............................................................................. .nod.xml ............................................. Node file .edg.xml .............................................. Edge file .con.xml ........................................ Connection file .net.xml ........................................... Network file .rou.xml ............................................. Route file .sumo.cfg ............................... sumo configuration file sumo_config.json ................................. ambassador configuration file Figure 3.6: sumo-ambassadorfolder structure 3.4.2 Installation For Microsoft Windows operating systems download and extract sumo_winbin.zip from the SUMO website. For GNU/Linux operating systems download and extract the provided GNU/Linux binaries or build sumo by yourself. Please refer to the SUMO Wiki for further information. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 22 3 Simulators 3.4 SUMO In order to run SUMO with VSimRTI you need to make the SUMO binaries available system wide by adding the SUMO binary folder to your PATH environment variable (see section 13.1). 3.4.3 Configuration Notice: The documentation for the VSimRTI specific component is freely available on the DCAITI website , explaining all available options. The SUMO configuration consists of sumo specific config files and the sumo-ambassador configuration file. vsimrti/scenarios/ /sumo . Your main configuration file name must end with the suffix *.cfg . The SUMO Wiki covers more information and also a tutorial about the different configuration files. Route-, network- and SUMO configuration files have been generated (using scenarioconvert or by yourself). The last step is the creation of a sumo-ambassadorconfiguration file. In contrast to standard traffic simulations using SUMO only, VSimRTI handles the SUMO files in a slight different way , i.e. the route file for a simulation is created at runtime to enable dynamic routing. To get correct simulation results, we recommend using the scenario-convert tool to create the SUMO files out of OpenStreetMap data (see section 11.1). 3.4.4 Using the SUMO GUI with VSimRTI It is also possible to use the Graphical User Interface (GUI) of SUMO in order to visualize and interact with the simulation. To achieve this, VSimRTI can be configured that it starts the GUI process of SUMO as the federate rather than the command line interface. In order to use the SUMO GUI with VSimRTI, please open the file vsimrti/etc/defaults.xml and replace the entry com.dcaiti.vsimrti.fed.sumo.ambassador.SumoAmbassador with com.dcaiti.vsimrti.fed.sumo.ambassador.SumoGUIAmbassador . Afterwards VSimRTI can be executed as usual. However, the traffic simulation has to be triggered manually within the GUI window of SUMO. Additionally, the field Delay within the GUI can be used to slow down the simulation. For further information about the graphical interface please consider the SUMO documentation. Notice: Keep in mind to launch VSimRTI with the argument -w 0 in order to disable the watchdog timer. Otherwise it would shutdown VSimRTI if you pause the simulation in the SUMO GUI. 3.4.5 Routes and Vehicle Types For the simulation the traffic simulator SUMO is started as a background process. In preparation, VSimRTI automatically generates all files needed, such as routes and vehicle types definition. In particular, VSimRTI generates a *.rou.xml which contains all vehicle types from the mapping3 configuration and all routes from the scenario database. This also means, that any route referenced by the mapping3 configuration must be available in the scenario database. Additionally, the *.rou.xml in the scenario configuration of SUMO will always be overwritten by VSimRTI at the start of the simulation. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 23 3 Simulators 3.4 SUMO If you want to use SUMO specific parameters for the vehicle types (e.g. to define the car following model or the emission class), you can predefine them in the file .rou.xml of your scenario. All parameters you define their will be used when the route file is generated for the simulation (except all paramaters which are defined in the mapping3 configuration such as accel, decel, tau, etc.). The Tiergarten scenario provides such example file. 3.4.6 Further information Notice: We recommend to use the 64 bit version of SUMO if you want to simulate scenarios with a big traffic network. 3.4.7 VSimRTI specific information Notice: The SumoAmbassador broadcasts VehicleMovements in fixed time steps and also sends a TrafficLightUpdate message, when the tl-state change was initiated in the previous step. For dynamic change of vehicle behavior during simulation, SUMO subscribes to the messages VehicleTypesInitMessage , VehiclePathsInitMessage , ChangeSpeed , SlowDown , PropagateNewRoute , ChangeStaticRoute and ChangeTrafficLightsState. Important: Even though the SumoAmbassador is able to receive ChangeRoute messages which will result in using the internal Re-route feature of SUMO, it is strongly recommended to use the navigation functionality of the ApplicationNTAmbassador by using the provided API. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 24 3 Simulators 3.5 VSimRTI Application Simulator 3.5 VSimRTI Application Simulator The application simulator is a sophisticated simulator to provide simulation units (e.g. vehicles, road side units, traffic lights, charging stations) an interface to run their logic. The latest application simulator has been developed from scratch and is called ApplicationSimulatorNT. 3.5.1 applicationNT-ambassador folder structure This ambassador can be configured with a configuration file. The specific path is vsimrti/scenarios/ /applicationNT/applicationNT_config.json applicationNT ................................................................... applications ................................................................. applicationNT_config.json ............... Configuration file for the ambassador. .db ................................. Database file for navigation. mapping3 ........................................................................ mapping_config.json ...................... Configuration file for the ambassador. Figure 3.7: applicationNT-ambassador folder structure 3.5.2 Installation This simulator does not need to be installed. It is delivered as part of the VSimRTI-installation package. 3.5.3 Libraries To develop applications you need to reference to jar files you will find in the following directories: • vsimrti/bin/ambassadors/applicationNT-ambassador-18.0.jar • vsimrti/bin/ambassadors/lib/*.jar • vsimrti/bin/lib/*.jar • vsimrti/bin/core/vsimrti-18.0.jar 3.5.4 Basic functionality Each logical unit is recognized as a separate simulation unit. The application simulator can load different applications for each simulation unit. For each application there is a general class and an extension for the particular type of the simulation unit (e.g. Vehicle extends SimulationUnit). This application may request information from an object and wants to control this. For each simulation object, an operating system will be created. For each application, there is an operating system and an extension of the operating system for the particular type (e.g. VehicleApplication extends AbstractApplication ). VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 25 3 Simulators 3.5 VSimRTI Application Simulator 3.5.5 Gather information in an application To gather information in an application from a simulation unit, there exist typically two different ways. React on changes Applications will be notified on changes. All applications must implement methods that are called before and after a change. Typically, these methods are named before* and after*. Please note that not all changes of information notify applications through this mechanism. Some information must be evaluated by sampling. As an example, the method getStateOfEnvironmentSensor could not notify the application by changing its state. Sample information The sampling of information at specific times can be done by requesting future events. Self events An event is a notification with information at a future point in the simulation. With a self-event, applications can wake up themselves at certain time steps. An event can be requested at any simulation point to trigger an event execution. 3.5.6 Equipped units All units are generally classified into two types, units that have application logic or not. Equipped vehicles can also use a predefined ETSI application. 3.5.7 Technical details • The simulator does not use concurrent processing. • The logs are based on the application name. 3.5.8 Configuration Notice: The documentation for the VSimRTI specific component is freely available on the DCAITI website , explaining all available options. Most of the actual configuration of the applications is done by the mapping-simulator. The mappingsimulator is responsible for spawning the entities of the simulation and therefore also decide which application to map onto which entity. To deploy an application you have to put it into the appropriate subdirectory for the simulated unit. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 26 3 Simulators 3.5 VSimRTI Application Simulator 3.5.9 Development of applications Overview Developing custom applications in VSimRTI is rather easy. The best way to learn is by looking at the source code of actual applications. For this purpose, we provide the source code of all tutorial applications and further examples. You can find the source code on the DCAITI website . For an easy understanding of the application API, the following questions and their answers should help: • What is required to get my own application run in VSimRTI? In VSimRTI it is very easy to build your own application. First, it needs to inherit from the Ab- stractApplication class (see following section). Secondly, the application must be mapped to a vehicle (or RSU, or traffic light, . . . ) via the mapping configuration (see section 3.5.15). Finally, the application must be compiled as a Jar-File and placed into the application directory of your scenario. • How can I access vehicle functions from within the application, such as sending V2X messages? Every applications has access to the OperatingSystem of the underlying unit which allows to change its state or to initiate actions, such as sending messages to other vehicles. • How can I react on events during the simulation, such as receiving V2X messages? For each application you decide, which events the application should listening to. For example, if your application needs to react upon incoming V2X messages, it simply implements the Com- municationApplication interface. In the following section you can find all available interfaces applications can implement. Create a ’Hello world’ application using eclipse Create a new project in eclipse (File ↦ New ↦ Java Project). Name your application HelloWorldApp . Confirm the creation of the project. Right click on the project and choose "Properties" to open the project specific configuration options. In the dialog window select "Java Build Path" and click on the Libraries tab. Choose "Add external JARs" and navigate to your vsimrti installation folder. Choose the following JARs and add them to your project: • vsimrti/bin/ambassadors/applicationNT-ambassador-18.0.jar • vsimrti/bin/ambassadors/lib/*.jar • vsimrti/bin/lib/*.jar • vsimrti/bin/core/vsimrti-18.0.jar Right click on the "Hello world" Project and choose (New ↦ Package). age something like com.mycompany.vsimrti.applications . age and chose (New ↦ Class). Name the class Name the pack- Right click on the pack- HelloWorldApp , extend from the Class [..]applicationNT.ambassador.simulationUnit.applications.AbstractApplication and confirm. Afterwards, you need to specify the type of operating system your application is VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 27 3 Simulators 3.5 VSimRTI Application Simulator running on by parameterizing the extended AbstractApplication by one of the following classes6 : • VehicleOperatingSystem - for applications mapped to normal vehicles. • ElectricVehicleOperatingSystem - for applications for vehicles with electro mobility features. • RoadSideUnitOperatingSystem - for applications mapped to Road Side Units (RSU)s. • TrafficLightOperatingSystem - for applications mapped to traffic lights. • ChargingStationOperatingSystem - for applications mapped to charging stations. Furthermore, your application can implement the following interfaces7 in order to get informed on specific events: • VehicleApplication - get informed when information about the vehicles state is updated. • ElectricVehicleApplication - get informed on electric vehicle specific events. • CommunicationApplication - react on incoming V2X messages. • VSimRTIApplication - get informed on VSimRTI internal events. • TrafficLightApplication - get noticed when the traffic light program is changed. • ChargingStationApplication - react on state changes of the charging station. You can now continue and make modifications. To deploy the application you have to export the project (File ↦ Export ↦ Java/Jar File) and put the JAR in the folder vsimrti/scenarios/ /applicationNT/applications . Notice: You can download the example Application HelloWorldApp , which is part of the AdditionalExamples package, from the website. In the following picture you can find the example application HelloWorldApp opened in eclipse. 6 See package com.dcaiti.vsimrti.fed.applicationNT.ambassador.simulationUnit.operatingSystem.* 7 See package com.dcaiti.vsimrti.fed.applicationNT.ambassador.simulationUnit.applicationInterfaces.* VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 28 3 Simulators 3.5 VSimRTI Application Simulator Figure 3.8: HelloWorldApp 3.5.10 Debugging of applications To debug an application, remote debugging needs to be used. The following steps need to be performed in order to debug the application: 1. Open the application in your IDE 2. Modify your vsimrti.sh or vsimrti.bat, depending on if you are on windows or a Unix-like system. Examples can be found below. 3. Add a new debug profile for remote debugging, make sure port 4100 (or whichever was provided in the call to VSimRTI) 4. Launch VSimRTI with the argument -w 0 to disable the watchdog timer will interfere with debugging VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 29 3 Simulators 3.5 VSimRTI Application Simulator Listing 3.4: "vsimrti.sh on Unix-like systems" #!/ bin / bash set -e source common . sh ja vaM emo ry S i z e X m s = " " ja vaM emo ry S i z e X m x = " " ja vaP rox yS e t t i n g s = " - Djava . net . u s e S y s t e m P r o x i e s = true " ja vaD ebu gS e t t i n g s = " - agentlib:jdwp = transport = dt_socket , server =y , suspend =y , address =4100 " cmd = " java ${ j a v a P r o x y S e t t i n g s } ${ j a v a M e m o r y S i z e X m s } ${ j a v a D e b u g S e t t i n g s } ${ j a v a M e m o r y S i z e X m x } ⤦ Ç - cp . : ${ core } : ${ libs } : ${ ambassadors } : ${ am ba s sa d or _l i bs } : ./ etc - Djava . library . path =./ lib ⤦ Ç com . dcaiti . vsimrti . start . X ML C on f ig Ru n ne r $* " $ cmd Listing 3.5: "vsimrti.bat on windows systems" @ECHO OFF SetLocal E n a b l e D e l a y e d E x p a n s i o n call common . bat set jav aM e m o r y S i z e X m s = set jav aM e m o r y S i z e X m x = set jav aP r o x y S e t t i n g s = - Djava . net . u s e S y s t e m P r o x i e s = true set jav aD e b u g S e t t i n g s = - Xdebug - X r u n j d w p : t r a n s p o r t = dt_socket \ , server = y \ , suspend = y \ , address =4100 java % ja va P r o x y S e t t i n g s % % j a v a D e b u g S e t t i n g s % % j a v a M e m o r y S i z e X m s % % j a v a M e m o r y S i z e X m x % - cp ! libs ⤦ Ç ! - Djava . library . path =./ lib com . dcaiti . vsimrti . start . X ML Co n fi g Ru nn e r %* EndLocal exit / b % errorlevel % 3.5.11 Internal ETSI applications We provide ETSI conform applications which implement specific CAM generation rules. You can find them in the package • com.dcaiti.vsimrti.fed.applicationNT.etsiApplications.impl . ETSI Application (Vehicle) For example, to provide ETSI functionality for your vehicle, you can load the ETSI application com.dcaiti.vsimrti.fed.applicationNT.etsiApplications.impl.Vehicle . This application generates ETSI data for its simulation unit (e.g. heading, position, speed and time for vehicles). According to its configuration, the application then sends out CAMs to other vehicles in range. Note that the messages are only send when the time lies between the configured minimum and maximum interval. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 30 3 Simulators 3.5 VSimRTI Application Simulator Default configuration Without explicit configuration for the ETSI a default configuration is loaded. For the ETSI interceptor have a look at the class CEtsi . Notice: For more information about this component, please have a look at the javadoc (doxygen) documentation. Currently, the default configuration for the ETSI application looks like this: { " maxStart Offset " : 1000000000 , " minInterval " : 100000000 , " maxInterval " : 1000000000 , " position Change " : 4 , " headingChange " : 4 , " velocity Change " : 0.5 } In general, the numeric values should be interpreted as time delta. E.g., if the ETSI values change by the given amount, a new CAM is sent. The only exceptions are the minimum and maximum intervals. If the time lies over the maximum interval, a CAM is sent even if the difference between the ETSI values isn’t high enough. If the difference is high enough but the minimum interval isn’t surpassed, no message will be sent. 3.5.12 Sending Cooperative Awareness Messages (CAM) The following section will show how CAMs are implemented in VSimRTI and how you can alter them. CAMs consist of four parts: • Header with generic information • MessageBody • ServiceList • TaggedValue list First of all generic information like protocol version, creation time stamp are transmitted. Normally this data set follows a network beacon, already containing data like position and speed. Nevertheless this functionality must be implemented in the network layer, that means in the network simulator. At the moment this is not supported and is therefore compensated in the next message part, the message body. The body can contain either RSU or Vehicle awareness data. In the first case, only the RSU type is submitted, but this probably changes with a new CAM specification. In the second case, we provide data like vehicle width, length, position, speed, type and heading. However, the specification is not completely implemented, especially acceleration data, as well as light and brake status are missing. The third part of the CAM specification, the service list, is also not implemented. This will probably change, when a list of services is defined by the ETSI. Last but not least a message can contain optional data. This is fully implemented and is used for our traffic light CAM messages, which provide the traffic light status. The CAM sending interval can be configured, more information can be found in the configuration section of the application simulator. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 31 3 Simulators 3.5 VSimRTI Application Simulator 3.5.13 Access SUMO TraCI from applications If SUMO is used as a traffic simulator and a special functionality is required, the sendSumoTraciByteAr- rayMessage function in the OperatingSystem can be used. The function expects a string (a unique identifier which will be assigned to the response) and a byte array (representing the complete Traffic Control Interface (TraCI) request including the header). The message identifier can be an empty string. In all cases the command will trigger a response. The application can receive the response from the method onSumoTraciByteArrayMessageResponse. This method will receive a SumoTraciByteArrayMes- sageResponse object. This response contains the specified identifier. The application must handle the identification process of the response itself. Notice: A response is delivered to every application. To prevent unintentional delivery each application request should use an immutable universally unique identifier (UUID). Important: Be careful when using this interface and the TraCI commands. The commands are delivered to TraCI without any prior checks. Notice: You can find the example application TestSumoTraciByteArrayMessageApp in the additional examples bundle on the DCAITI website . 3.5.14 Navigation The navigation of vehicles is handled completely by the application simulator. Each vehicle is equipped with a navigation system which provides all required information and functions for navigational purposes: • Retrieve the current position and heading of the vehicle. • Get the target of the vehicle. • Calculate various routes from the current position to an arbitrary target. • Choose a suitable route out of existing ones from the current position to an arbitrary target. • Switch onto a specific route. In order to provide routing functionality, a map model based on Open Street Map data is used, which needs to be transformed before the simulation using scenario-convert. The map data including initial routes for vehicles is provided with the database file which needs to be located in vsimrti/scenarios/ /applicationNT/ .db VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 32 3 Simulators 3.5 VSimRTI Application Simulator Configuration If the database needs to be located somewhere else, the path can be specified in vsimrti/scenarios/ /applicationNT/applicationNT_config.json: { ... " navigationConfiguration ": { " databaseFile " : " path / to / scenario . db " } } Usage The following snippet show, how the navigation system can be used within an application: // get navigation module IN avi gat io n M o d u l e n a v i g a t i o n M o d u l e = g e t O p e r a t i n g S y s t e m () . g e t N a v i g a t i o n M o d u l e () ; // choose target position to current target RoutingPos i ti o n targe tPosit ion = new Ro u ti ng P os it i on ( n a v i g a t i o n M o d u l e . g e t T a r g e t P o s i t i o n () ) ; // set routing parameters to fastest route search Ro uti ngP ar a m e t e r s params = new R o u t i n g P a r a m e t e r s () . costFunction ( I R o u t i n g C o s t F u n c t i o n . Fastest ) ; // calculate routes RoutingRes p on s e response = n a v i g a t i o n M o d u l e . c a lc ul a te R ou te s ( targetPosition , params ) ; // switch to best route if ( response . getBestRoute () != null ) { boolean routeSwitched = n a v i g a t i o n M o d u l e . switchRoute ( response . getBestRoute () ) ; ... } 3.5.15 Mapping 3 The mapping configuration is used to define how many vehicles of a specific type should drive in a simulation. You can choose between a deterministic mapping (producing the exact same sequence of mapped vehicles in every simulation run with regard to the given ratios at each point in time the simulation) and a stochastic mapping (resulting in a random order of mapped vehicles). The new mapping ambassador was built to simplify the configuration of complex scenarios. It is not as tightly linked to the database as its predecessor and relies on JSON rather than Extensible Markup Language (XML) for configuration. The configuration for the Mapping3-Federate is located in vsimrti/scenarios/ /mapping3/mapping_config.json . In this file an object is described in JavaScript Object Notation (JSON), which will at runtime be parsed using the MappingFramework-Class. Notice: The documentation for the VSimRTI specific component is freely available on the DCAITI website , explaining all available options. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 33 3 Simulators 3.5 VSimRTI Application Simulator The Mapping-Framework-Class The main class for the Mapping3-Configuration is the MappingFramework-Class. It is divided into six parts: prototypes, rsus, tls, vehicles, matrixMappers and config. In prototypes you can define models for other objects, which can later be reused in the other sections. This makes it possible to reuse the definition of certain vehicles or the combination of multiple applications, reducing redundancies. The rsus-section offers the possibility to define instances of RSU’s. To reuse a prototype simply specify its name in the name-property. All relevant properties will then be automatically filled in. At least, you must define a position for every RSU. In the tls-section traffic lights can be defined. The traffic lights themselves are already specified in the database of the scenario. Here applications can be mapped to them. Two different modes are offered for that: You can map the entities to individual traffic lights by specifying the name of the traffic light in the tlName-property. Alternatively you can define weights for the specified traffic lights, which will then be the base for a random distribution through all traffic lights. The weights do not have to add up to 100 or 1. Consequently all traffic lights will be mapped using the specified prototypes as soon as one weight differs from zero. So in case you don’t want all traffic lights to have applications running on them you have to define one traffic light without any applications and add a weight to it. The vehicles-section is the centerpiece of the configuration. Here the departures, routes and types of the vehicles are defined. It is divided into VehicleSpawner. These spawners are designed to produce a traffic stream with the given traffic density (in vehicles/hour). By specifying a maximum number of vehicles to be created you can also spawn individual vehicles. A VehicleSpawner offers the possibility to combine multiple vehicle types. By specifying weights for the different vehicle types the ratios between them can be defined. If no weights are defined they are assumed to be equal. Note: If at least one vehicle type has a weight defined this does not apply! In that case all types without a defined weight are ignored. Instead of specifying a route you can also choose two points (given in long/lat). If no radius for the point is specified the closest point to the given position will be chosen. Otherwise a point inside the radius will be select randomly. It is also possible to define and use OD-Matrices. To do so add a ODMatrixMapper to the matrixMapperslist. Each MatrixMapper consists of a list of points, the vehicle-types to be used and the actual flow-values between each of the points. It is possible to define multiple matrices. This way distinctively different compositions of the vehicle flows can be achieved. The MatrixMapper will be called before the actual execution of the simulation and will generate vehicle-spawners for the flow between each of the points. Thus the MatrixMapper is just a way to save work. If you want to use the extra-option that multiple vehicleSpawners offer you should use them. In the config extra options are defined. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 34 3 Simulators 3.5 VSimRTI Application Simulator Mapping and Identifier Every traffic object in VSimRTI has a globally unique string identifier. These identifiers are used to identify a traffic object in VSimRTI as well as in different ambassadors. From user’s aspect, these identifiers will be seen in the log files which are generated after a simulation. Therefore, it should be explained, which identifier belongs to which traffic object. Traffic Object VSimRTI Internal ID Vehicle veh_[seqNr] RSU rsu_[rsuName] Traffic Light tl_[groupId] Table 3.4: Mapping aspects • seqNr is the sequence number of simulated vehicles, which starts from zero. • rsuName is the element name defined by the user for the attribute RsuPosition. • groupId is the group id of the traffic light. Notice: For more information about this component, please have a look at the javadoc (doxygen) documentation. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 35 3 Simulators 3.6 VSimRTI Cellular Simulator 3.6 VSimRTI Cellular Simulator The VSimRTI built-in Cellular Simulator enables the applications to use cellular network communication. The simulation of cellular communication in VSimRTI consists of two parts: 1. The Cellular Simulator itself and 2. The applications that can communicate over cellular networks in the Application Simulator These changes are done in a generic way, making the cellular simulator exchangeable. Users interested in a different kind of simulation of cellular communication may use other simulators and develop ambassadors connecting them to VSimRTI. The Cellular Simulator in the current state consists of three main modules: 1. Uplink Module 2. Geocaster Module 3. Downlink Module The Geocaster module simulates a mandatory component for ITS communication. It is inspired by the several architectures from research projects as simTD or CONVERGE to enable ITS use cases over cellular networks. It mainly takes over the task of an addressing and routing component with geographic knowledge to support geo-addressing. However, it also supports regular topological addressing. The Uplink and Downlink Module are responsible for the transmission simulation. They account for the aspects of transmission delays, packet losses and available data rates. In this context, Uplink and Downlink always refer to the direction towards respectively from the Geocaster. For instance, a transmission from an Internet-based server towards a vehicle would include an Uplink between the server and the Geocaster and a Downlink between the Geocaster and the vehicle. While the Uplink direction only allows point-to-point communication (Unicast), the Downlink supports point-to-point (Unicast) as well as point-to-multipoint (Multicast). 3.6.1 cell2-ambassador folder structure The VSimRTI cellular simulator can be configured via three distinct configuration files, which can be found within the scenarios folder structure: cell2 cell2_config.json ......................... Cellular ambassador configuration file network.json ......................................... Network configuration file regions.json .......................................... Regions configuration file Figure 3.9: cell2-ambassador folder structure The network and regions configuration files are referenced in the cellular ambassador configuration file. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 36 3 Simulators 3.6 VSimRTI Cellular Simulator 3.6.2 Installation This simulator does not need to be installed. It is delivered as part of the VSimRTI-installation package. 3.6.3 Configuration We provide a cellular configuration file in the example scenarios of Tiergarten and Barnim. Please note that in the default configuration of this scenario the Cellular Simulator is deactivated. To activate the cellular simulator just add < federate id = " cell2 " active = " true " / > to the vsimrti_config.xml (or, if this line already exist, make sure ’active’ is set to ’true’). With this done you now can deactivate all network simulators if only cellular simulation is intended in the investigated scenario. However, it is also possible to use multiple communication technologies (of ad hoc and cellular) in a hybrid scenario. The central configuration for the cellular simulator in the file vsimrti/scenarios/ /cell2/cell2_config.json could look like this: { " debug Ge o ca st i ng " : false , " visua l i z e R e g i o n s " : true , " n e t w o r k C o n f i g u r a t i o n F i l e " : " network . json " , " r e g i o n C o n f i g u r a t i o n F i l e " : " regions . json " } The visualizeRegions-option from the cell2_config.json is used to write a KML-file that visualizes the used cell regions. Google Earth can be used to display it. The configuration for the global network in the cellular simulator in the file vsimrti/scenarios/ /cell2/network.json could look like this: { # global region has no area " globalRegion " : { " uplink " : { " delay " : { " type " : " delay " : " prpl " : 0, " retries " : 2 } " capacity " : }, " downlink " : { " unicast " : { " delay " : { " type " : " delay " : " prpl " : " retries " : } }, " multicast " : { " delay " : { " type " : definition ( is the default region ) " ConstantDelay " , 100 , 28000000 " ConstantDelay " , 50 , 0, 2 " ConstantDelay " , VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 37 3 Simulators 3.6 VSimRTI Cellular Simulator " delay " : " prpl " : }, " us ableCa pacit y " : }, " capacity " : 100 , 0 0.6 42200000 } } Note that all bandwidths are given in bit per second and all delays in milliseconds. Also, every json configuration goes through a minifier, so comments are allowed in the configuration files. An example would be the comment before the globalRegion option. Delay regions Additionally the user has the option to define regions with individual delays. This can be used to simulate areas with bad reception, crowded areas etc. The regions should be stored in vsimrti/scenarios/ /cell2/regions.json. An example definition for a single region called Ernst-Reuter-Platz could look like this: { " regions " : [ { " id " : " Ernst - Reuter - Platz " , " area " : { " nw " : { " lon " :13 .3249 , " lat " :52 .5131 } , " se " : { " lon " :13 .3273 , " lat " :52 .5125 } }, " uplink " : { " delay " : { " type " : " SimpleRandomDelay ", " steps " : 4, " minDelay " : 50 , " maxDelay " : 200 , " prpl " : 0.8 , " retries " : 2 }, " capacity " : 28000000 }, " downlink " : { " unicast " : { " delay " : { " type " : " SimpleRandomDelay ", " steps " : 3, " minDelay " : 100 , " maxDelay " : 200 , " retries " : 2 } }, " multicast " : { " delay " : { " type " : " SimpleRandomDelay ", " steps " : 3, " minDelay " : 120 , " maxDelay " : 220 , " prpl " : 0.8 }, " us ableCa pacit y " : 0.6 }, " capacity " : 42200000 } VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 38 3 Simulators 3.6 VSimRTI Cellular Simulator } ] } Note that nw represents the upper-left (north-west) point of the rectangle and se the lower-right (southeast). For further information about the possible options, please refer to the VSimRTI API documentation. The actual configuration of the uplink and the downlink modules for each region exhibits the identical format as configuration of the globalRegion in the network.json. When no regions are found, or if a node (a vehicle) is not within a specified region, the globalRegion defined in the network.json-File will be used as the delay model. Transmission simulation One of the most important feature of the cellular simulator is an estimation of the delay experienced through the transport over the cellular network. The cellular simulator offers various modes to estimate the delay of the transmissions. The type of estimation is specified with by delayType for the uplink and downlink for each region. • delay.type = ’ConstantDelay’: The message is transmitted with the latency being exactly equal to delay. • delay.type = ’SimpleRandomDelay’: The latency can assume different (randomly generated and uniformly distributed) values between minDelay and maxDelay. The number of different values is determined by steps. • delay.type = ’GammaRandomDelay’: A gamma distribution is used to estimate the latency, with α = 2 and β = 2. The minimum delay minDelay is added to the result. The curve is fitted so that the maximum likelihood for the delay is exactly equal to expDelay. • delay.type = ’GammaSpeedDelay’: This mode closely resembles the GammaRandomDelay. Additionally, a penalty for the velocity with which the node is moving is calculated. This penalty is then added to the original delay. The GammaRandomDelay and the GammaSpeedDelay are derived from a measurement campaign during a research project at the DCAITI. The two different modes for the downlink are unicast and multicast which are configured separately. Multicast aims to simulate the features of Multimedia Broadcast Multicast Service (MBMS). The main difference in terms of the transmission for unicast and multicast is the handling of undeliverable messages. For unicast, the options prpl and retries are used. Pr is short for packet retransmit and denotes the probability for a failed delivery and a subsequent retransmit. The maximum number of retries for the retransmit is configured through the retries-option. The probability of a successful retransmit is recalculated on every try. In case of multicast the prpl is used as packet loss rate. The value is factored into the delay calculation. In contrast to the unicast, just one transmission attempt is made for multicast. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 39 3 Simulators 3.6 VSimRTI Cellular Simulator 3.6.4 Operation Beside the transmission simulation, the Addressing and Routing is the other important aspect of the Cellular Simulator. This task is enabled by the Geocaster. The Geocaster evaluates the message headers for cellular messages, which are created by the communicating applications in the Application Simulator. It supports the following addressing and casting schemes. CellTopocast is the normal unicast, where the Geocaster simply resolves the single receiver via the IPResolver. Hence, the CellTopocast directly routes the message further. Currently, Topocast doesn’t allow broadcast or anycast addresses, but any transmission protocols (tcp, udp). CellGeoUnicast addresses every node in the destination area is individually. In this way it takes a geographic address and results in a loop to generate multiple unicasts. CellGeoBroadcast, which is basically MBMS, uses one broadcast to all nodes in the destined regions. The MBMS uses the different transmission mode of multicast in the downlink. CellGeoUnicast as well as CellGeoBroadcast require broadcast, but don’t allow tcp (as ack for broadcasts is denied). VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 40 3 Simulators 3.7 VSimRTI Simple Network Simulator 3.7 VSimRTI Simple Network Simulator As well as the network simulators OMNeT++ and ns-3, the VSimRTI built-in Simple Network Simulator (SNS) aims at simulating ad hoc communication for V2X scenarios. In contrast to the other simulators, SNS is already bundled with VSimRTI and can be used directly out off the box, and due to Java language, in an operating system independent way. SNS implements abstract communication models to support the following important communication principles for V2X applications: TopoCast currently implemented as Singlehop Topocast, to communicate either to all or an individual destination node in the direct communication range of the sender. GeoCast to communicate, similar to Georouting, to nodes in a certain geographic destination area, with the options of unicast (to address one node), broadcast (to address all nodes) and anycast (to address the first one of all reachable nodes). SNS does not implement a full featured IEEE 802.11p communication stack, as the other simulators could do. It does not consider particular detailed properties of the communication, e.g. signal fading models, PHY Layer reception, MAC Layer scheduling, detailed Geo Routing protocols etc. Due to this, SNS is an interesting alternative several reasons and suited for users aiming for quick and easy use without the need of detailed models. However, when detailed communication charactersitcs need to be considered, the other simulators are the better choice. 3.7.1 sns-ambassador folder structure The SNS can be configured via the sns_config.json which can be found within the scenarios folder structure: sns sns_config.json .......................................... SNS configuration file Figure 3.10: sns-ambassador folder structure 3.7.2 Installation This simulator does not need to be installed. It is delivered as part of the VSimRTI-installation package. 3.7.3 Configuration The SNS configuration basically consists of the two components for singlehop (direct Topocast) and multihop (Georouting) transmission. Each of these transmission modes base on the delay configuration, which is already known from the Cell2 Simulator (3.6). VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 41 3 Simulators 3.7 VSimRTI Simple Network Simulator The singlehop component additionally includes the singlehop radius, which actually is the direct communication range of the sender - meaning that all nodes within this distance can successfully receive the according message. In the context of the fundamental Freespace Model, which is implemented by the classic network simulators OMNeT++ and ns-3 this value results from the carrier frequency, transmission power, receiver sensitivity and antenna properties (gains) etc. Additionally, the delay supports the value for packet retransmission and packet loss (prpl), which allows the simulation of packet errors within the communication range. However, in contrast to fading models as the Rayleigh or Rice Fading, the simulated packet errors in SNS are distributed uniformly over the whole communication range and do not, for instance, increase with higher distances (which would be more realistic. The multihop component only consists of the delay configuration including the value for prpl and according transmission retries. In this case, the destined communication area is determined by the dissemination area in the GeocastDestinationAddress. An example definition for SNS, with relatively short delays in the order of microseconds or low milliseconds for direct singlehop and slightly higher delays for multihop could look like this: { " version " : " 0.16.0 " , " singlehop " : { " _singlehop radius in m " : 0 , " radius " : 509.4 , " _delay config according to vsimrti - communication " : 0 , " delay " : { " type " : " SimpleRandomDelay ", " steps " : 5, " minDelay " : 0.4 , " maxDelay " : 2.4 , " prpl " : 0, " retries " : 0 } }, " multihop " : { " _delay config according to vsimrti - communication " : 0 , " delay " : { " type " : " GammaRandomDelay ", " minDelay " : 10 , " expDelay " : 30 , " prpl " : 0, " retries " : 2 } } } 3.7.4 Operation The individual steps of operation for the two modes of Topocast (direct singlehop) and Geocast (georouting with multihop) transmission are as following. Simulation of direct singlehop transmission 1. get transmission radius from configuration (to simulate tx power, carrier frequency and antenna properties etc.) VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 42 3 Simulators 3.7 VSimRTI Simple Network Simulator 2. determine potential receiver nodes in the sending radius (without original sender) 3. calculate equal delay for all nodes 4. simulate successful message transmission (via prpl) for each node Simulation of geocast routing transmission 1. get destination area from geocast header in message (to simulate georouting) 2. determine potential receiver nodes in the destination area (including original sender due to rebroadcasting in geocast) 3. calculate specific delay for each node 4. simulate successful message transmission (with packet loss and possible retransmissions via prpl) for each node VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 43 3 Simulators 3.8 VSimRTI Eventserver 3.8 VSimRTI Eventserver 3.8.1 eventserver-ambassador folder structure This ambassador can be configured with a configuration file. The specific path is vsimrti/scenarios/ /eventserver/eventserver_config.json eventserver ..................................................................... eventserver_config.json .......................... Eventserver configuration file Figure 3.11: eventserver-ambassador folder structure 3.8.2 Installation This simulator does not need to be installed. It is delivered as part of the VSimRTI-installation package. 3.8.3 Configuration Notice: The documentation for the VSimRTI specific component is freely available on the DCAITI website , explaining all available options. The root node of the configuration is a list of environment events. Each event require the type of the event, a rectangle area, a strength and the time window. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 44 3 Simulators 3.9 VSimRTI Battery Simulator 3.9 VSimRTI Battery Simulator 3.9.1 battery-ambassador folder structure This ambassador can be configured with a configuration file. The specific path is vsimrti/scenarios/ /battery/battery_config.json battery .......................................................................... battery_config.json .............................. ambassador configuration file Figure 3.12: battery-ambassador folder structure 3.9.2 Installation This simulator does not need to be installed. It is delivered as part of the VSimRTI-installation package. 3.9.3 Introduction The VSimRTI Battery Simulator is used to simulate electric vehicles. It takes environment, vehicle characteristics and the battery itself into account. The main feature of the battery ambassador is that it can utilize dynamic class loading to use a battery model provided by the user, depending on the given needs. This also holds true for the environment model and the vehicle model. However, simple models for vehicle, environment and the battery are provided and will be briefly explained in the following sections. 3.9.4 Vehicle model The vehicle model holds the general properties of a vehicle. Examples would be the weight of the vehicle and the voltage at which the electric engine operates. However, as with the other models, the provided class for the vehicle model direct affects what can be configured here. If other properties are needed for the vehicle, this is the right place to put them. To implement an own vehicle, the class AVehicleModel has to be extended. 3.9.5 Battery model The battery model defines the battery used by the vehicle itself. Useful properties could be the number of cells and their capacity. As with the vehicle, this class can be freely defined and use configuration values placed in the batteryModelConfig-area. To implement an own battery model, the class ABat- teryModel needs to be extended. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 45 3 Simulators 3.9 VSimRTI Battery Simulator 3.9.6 Environment model Normally environmental factors like rolling resistance of the given underground or air drag go into this section. At the current state, just a minimal environment model is bundled with the battery ambassador, mainly to show what is possible. To implement a custom environment model, AEnvironmentModel has to be extended. 3.9.7 Sample configuration { " v eh icl e M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . vehicle . ElectricSmart " , " ve h ic l e M o d e l C o n f i g " : { " Mass " : 1060 , " ReferenceArea " : 1.95 , " Dr a gC oe f fi ci e nt " : 0.375 , " T a n k T o W h e e l E f f i c i e n c y " : 0.7 , " E l e t r i c M o t o r O p e r a t i n g V o l t a g e " : 350 , " C o n s u m e r O p e r a t i n g V o l t a g e " : 12 }, " b at ter y M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . battery . ⤦ Ç VerySimpleBatteryModel ", " ba t te r y M o d e l C o n f i g " : { " NumberOfCells " : 93 , " CellVoltage " : 4.3 , " C e l l C a p a c i t y I n A h " : 50 , " eff_Summer " : 0.8448 , " Re chargi ngType " : 2 , " MinSOC " : 0.30 , " MaxSOC " : 0.70 }, " e n v i r o n m e n t M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . environment . ⤦ Ç DefaultEnvironment ", " environmentModelConfig ": { " Gravity " : 9.81 , " FluidDensity " : 1.293 , " R o l l i n g R e s i s t a n c e C o e f f i c i e n t " : 0.01 }, " consumers " : [ { " Radio " : 10 } , { " HeadLight " : 100 } ] } This listing shows how the vehicle, environment and battery model classes for the bundled models are configured. Additionally, an arbitrary number of consumers can be configured that draw additional power from the battery. In this case, headlights and a radio are pre-defined. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 46 4 Tutorial Tiergarten This tutorial aims to provide a general overview of the VSimRTI application concept and shows two examples that involve ad hoc communication via IEEE 802.11p between different participants and message passing from one application to another that run on the same vehicle. Additionally, a short introduction will be given on Traffic Lights, with a more in-depth description following in Chapter 6. The tutorial is split up into five main parts: 1. How to equip a vehicle with one or more applications. This process is called mapping. 2. An example application that shows how to implement communication between different vehicles via a wireless ad hoc network. 3. The next part of the tutorial shows how to accomplish message passing between two applications that run on the same vehicle. 4. An overview of the traffic light application and a summary about what can be done with the traffic light from within the application. 5. The last part of the tutorial shows how to retrieve the results of a simulation run. The scenario itself consists of three vehicles that drive down a road in consecutive order and pass a Road Side Unit (RSU) that emits messages in a fixed interval. The vehicles will receive the messages from the RSU as soon as they are in communication range. After completing this tutorial the reader should be Figure 4.1: Overview of Tiergarten tutorial scenario able to deploy own applications according to his needs and make use of ad hoc communication among vehicles and intra-vehicle communication among applications on the same vehicle. The VSimRTI cell simulator that is used to simulate cellular network communication will be covered in tutorial 2. 4 Tutorial Tiergarten 4.1 Mapping Configuration 4.1 Mapping Configuration In order to use applications they have to be assigned (mapped in VSimRTI terminology) to a simulation entity. In this tutorial, we will assign applications to a RSU that is placed along the road (the red symbol in picture 4.1) and to the vehicles. In order to do this the following steps are necessary: 1. Navigate to the mapping3 folder of the tiergarten tutorial scenario. 2. Edit the mapping_config.json to let it point to the correct classes for your application, define prototypes and to add entities to the simulation. The mapping is already configured correctly, so we will continue with a description of the important parts of the mapping configuration. Prototype Section This section contains the properties of the simulated entities, including their applications. You can, for example, configure the maximum speed and the length of a vehicle. Normally, the default values are fine here. In order to map one or more applications you have to fill in the complete class identifier including the package in the applications array. In this tutorial, we have mapped two applications to the vehicles and one application to the RSU. Mapping for the vehicles: "applications":["com.dcaiti.vsimrti.app.tutorials.tiergarten.TiergartenVehicle", "com.dcaiti.vsimrti.app.tutorials.tiergarten.TiergartenVehicleSlave"] Mapping for the RSU: "applications":["com.dcaiti.vsimrti.app.tutorials.tiergarten.TiergartenRSU"] In order for VSimRTI to be able to locate these classes, the resulting .jar archive should be placed in the applicationNT folder of your scenario. For our tutorial we have packaged the needed classes TiergartenVehicle, TiergartenVehicleSlave and TiergartenRSU into one .jar file. However, this isn’t a strict requirement. What these classes actually do and how they are implemented will be covered in the next two parts of this tutorial. Vehicle and RSU sections This part of the mapping is used to actually bring entities like vehicles and RSUs into the simulation. For example, we placed the RSU that is equipped with the TiergartenRSU application at the specific geo coordinate with latitude = 52.5130607 and longitude = 13.328910. Usually, this and the mapping of its application is all that is necessary to make use of an RSU. For this tutorial we go with just one RSU but analogous to adding multiple vehicles we could also add more of them if the need arises. Spawning vehicles is a little bit more complex than adding a RSU. Vehicles are configured as groups from which we have three in this tutorial scenario. Exemplary, we will describe one of these groups in more detail: VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 48 4 Tutorial Tiergarten 4.2 Inter-Vehicle Communication " vehicles " : [ { " startingTime " :1 .0 , " route " :0 , " max N u m b e r V e h i c l e s " :1 , " types " : [{ " name " : " PKW " }] }, ... ] Listing 4.1: Example Vehicle Group • startingTime: Defines at which second the vehicle is spawned, in this case one second after the beginning of the simulation. • route: Describes which route these vehicle group should use. For now it is sufficient to know that there is one route with the id 0 that leads the vehicles near the RSU that is already defined in this tutorial scenario. • maxNumberVehicles: Used to determine how many vehicles should be in that group. Here, we go with just one single vehicle. • types: This array maps to the defined PKW (german for passenger car) prototype from the proto- types-section of the mapping. 4.2 Inter-Vehicle Communication This second part describes the TiergartenVehicle and TiergartenRSU applications which are used for inter-vehicle communication in more detail. As a coarse overview, the TiergartenRSU application sends out a defined message at a fixed interval. These messages are received and written to the log file by the TiergartenVehicle application. First, we start off with the class definition and will run through the methods we have to implement in order to get the communication working. Class definition public class T i e r g a r t e n V e h i c l e extends AbstractApplication < VehicleOperatingSystem > implements ⤦ Ç VehicleApplication , C o m m u n i c a t i o n A p p l i c a t i o n Listing 4.2: TiergartenVehicle: Class definition for a vehicle application In general, every vehicle application will extend the AbstractApplication abstract class with the VehicleOperatingSystem type parameter. The VehicleOperatingSystem is the main way to interact with the underlying vehicle and gives a wide array of functionality to the user. Also, depending on the needs of the application, several interfaces have to be implemented. For our scenario we implement VehicleAppli- cation to denote that the application is intended to run on a vehicle and CommunicationApplication to be able to use the actual communication facilities we need for this tutorial. In general, it makes sense to let the IDE generate the bodies of the methods that need implementation and fill them with functionality if needed or letting them empty otherwise. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 49 4 Tutorial Tiergarten 4.2 Inter-Vehicle Communication Application initialization During the initialization procedure of communicating applications, the communication modules (WLANModule or CellModule) need to be activated. For example, activating the WLAN module can be achieved with the following code snipped: @Override public void setup () { getLog () . infoSimTime ( this , " Initialize application " ) ; g et O pe r a t i n g S y s t e m () . getAd HocMod ule () . enable ( new A d H o c M o d u l e C o n f i g u r a t i o n () . addRadio () . channel ( AdHocChannel . CCH ) . power (50) . create () ); getLog () . infoSimTime ( this , " Activated AdHoc Module " ) ; } Listing 4.3: TiergartenVehicle activate WLAN module Since we want to communicate over ad hoc Wifi we have to turn on the Wifi-module of the car. Here you can specify the mode of operation. The first argument says if the vehicle should be able to receive messages, how strong the Wifi antenna is (50mW in this case) and which ad hoc channel to use. Note: The honoring of these arguments depends on the underlying network simulator. Currently, ns-3 and OMNeT++ make use of these arguments. Receiving the V2X messages In order to act upon received messages from other simulation entities, the receiveV2XMessage from the CommunicationApplication interface is used. In our tutorial scenario we don’t do something special upon message receiving and just write the name of the sender into the log file. @Override public void r e c e i v e V 2 X M e s s a g e ( R e c e i v e d V 2 X M e s s a g e r e c e i v e d V 2 X M e s s a g e ) { getLog () . infoSimTime ( this , " Received V2X Message from {} " , r ec e iv e d V 2 X M e s s a g e . getMessage () . getRouting () . g e t S o u r c e A d d r e s s C o n t a i n e r () . getSourceName () ) ; } Listing 4.4: TiergartenVehicle: Class definition for a vehicle application This is basically all it takes to receive messages from another simulation entity. Normally, the application author uses an own message class that derives from V2XMessage and casts it to his specific class in order to handle messages easier. Sending the V2X messages Since the receiving application is now set up we move on to the sending side of this tutorial. The sending takes place from the RSU via a broadcast, so every vehicle in transmission range will receive the message sent by it. Picture 4.2 shows the communication range of the RSU which is dependent from the settings in the communication simulator. The actual sending takes place in the TiergartenRSU application which is equipped to the RSU via the mapping configuration. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 50 4 Tutorial Tiergarten 4.2 Inter-Vehicle Communication Figure 4.2: Example of RSU communication range ApplicationNT event model In order to send messages at a fixed interval we make use of the event based model of the VSimRTI application simulator. A high level description in what we need to do in order to send messages at a specific interval can be summarized as follows: 1. Line up an event every X seconds. For this tutorial an interval of two seconds was chosen. 2. Once the event gets processed in the processEvent()-method the actual sending of the message will be triggered. 3. All information necessary for the sending will be assembled in sendAdHocBroadcast() and the message gets actually sent out. Application Setup @Override public void setUp () { getLog () . infoSimTime ( this , " Initialize application " ) ; g et O pe r a t i n g S y s t e m () . getA dHocMo dule () . enable ( new A d H o c M o d u l e C o n f i g u r a t i o n () . addRadio () . channel ( AdHocChannel . CCH ) . power (50) . create () ); getLog () . infoSimTime ( this , " Activated WLAN Module " ) ; sample () ; } Listing 4.5: TiergartenRSU: Setup for the RSU application The setup for the RSU is the same as for the vehicle where we activate the Wifi module. Additionally, the sample() method gets called which is responsible for the events. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 51 4 Tutorial Tiergarten 4.2 Inter-Vehicle Communication Event scheduling The next step is to line up the event at the interval we desire. The method we use for that, sample(), looks like this: public void sample () { final Event event = new Event ( g e t O p e r a t i n g S y s t e m () . g e t S i m u l a t i o n T i m e () + TIME_INTERVAL , ⤦ Ç this ) ; g et O pe r a t i n g S y s t e m () . g e tE ve n tM an a ge r () . addEvent ( event ) ; getLog () . infoSimTime ( this , " Sending out AdHoc broadcast " ) ; s en d Ad H o c B r o a d c a s t () ; } Listing 4.6: TiergartenRSU: Event sampling Here, an Event is created which will be received at the current time in simulation plus the defined interval which is set to two seconds. The second argument for the event creation is a reference to the originating class instance. For our tutorial, the this reference is sufficient here. After we created the event, it is added to the event queue via addEvent() which will result in a call to processEvent() at the given interval. Message sending After we made sure the method that does the actual sending of the message is called at the specified interval, we take a closer look at the sendAdHocBroadcast() method we defined in the TiergartenRSU class: private void s e n d A d H o c B r o a d c a s t () { final T o p o c a s t D e s t i n a t i o n A d d r e s s tda = T o p o c a s t D e s t i n a t i o n A d d r e s s . g e t B r o a d c a s t S i n g l e H o p ⤦ Ç () ; final D e s t i n a t i o n A d d r e s s C o n t a i n e r dac = D e s t i n a t i o n A d d r e s s C o n t a i n e r . ⤦ Ç c r e a t e T o p o c a s t D e s t i n a t i o n A d d r e s s A d H o c ( tda ) ; final Me ssageR outing routing = new Mes sageRo uting ( dac , g e t O p e r a t i n g S y s t e m () . ⤦ Ç g e n e r a t e S o u r c e A d d r e s s C o n t a i n e r () ) ; final In t er Ve h ic le M sg message = new In t er Ve h ic le M sg ( routing , g e t O p e r a t i n g S y s t e m () . ⤦ Ç getPosition () ) ; g et O p e r a t i n g S y s t e m () . getAd HocMod ule () . sen dV2XMe ssage ( message ) ; } Listing 4.7: TiergartenRSU: Event sampling We step through this method line by line and explain what each statement does: 1. The destination address for this method is constructed in the first line. We use the helper-method getBroadcastSingleHop() to denote that we want to send a single hop broadcast. 2. After that, we wrap the destination address in a container that is created via createTopocastDes- tinationAddressAdHoc(). Since we use ad hoc wifi for this tutorial this method will suffice. 3. The next step is to create the routing for the message. The routing basically ties together a destination address and a source address. We use the destination address we created in the first two lines and use the default source address that can be created with the generateSourceAddress- Container() method. 4. The last step in crafting the message is to create an instance of our custom message class InterVe- hicleMsg. The actual payload is the position of the sender, other payloads are possible depending on the requirements of the application. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 52 4 Tutorial Tiergarten 4.3 Intra-Vehicle Communication 5. The message is sent out using the sendV2XMessage()-method that is provided by the operating system. These steps conclude the sending of the message. The procedure is the same for sending messages from a vehicle instead of a RSU. 4.3 Intra-Vehicle Communication This part of the tutorial describes the steps necessary for letting two applications to communicate with each other on the same vehicle. Here, we use the TiergartenVehicle application as the sender and TiergartenVehicleSlave as the receiver. In general, the approach is similar to the sending of a V2X message and also makes use of the event system. Message sending First, we start off with the sending side. The event code should look familiar: @Override public void a f t e r U p d a t e V e h i c l e I n f o () { final List extends Application > applications = g e t O p e r a t i n g S y s t e m () . g e tA pp l ic at i on s () ; final In tr a Ve h ic le M sg message = new In tr a Ve h ic le M sg ( g e t O p e r a t i n g S y s t e m () . getId () , random . nextInt ( MAX_ID ) ) ; for ( Application application : applications ) { final Event event = new Event ( g e t O p e r a t i n g S y s t e m () . g e t S i m u l a t i o n T i m e () + 1 , application ⤦ Ç , message ) ; this . g e t O p e r a t i n g S y s t e m () . g et E ve n tM an a ge r () . addEvent ( event ) ; } } Listing 4.8: TiergartenVehicle: Sending intra application message One noteworthy thing is that we use the afterUpdateVehicleInfo()-method to line up a new event. This method is called automatically if the vehicle info (for example, speed or heading) gets updated, which usually takes place at every time step of the simulation. The general approach works like this: 1. Get a list of all applications that run on the vehicle using getApplications(). 2. Create a new message. Here we use our own custom message called IntraVehicleMsg which takes an randomly generated id and the name of the vehicle as payload. Again, this is for tutorial purposes and could be anything. 3. After that we iterate over every applications that runs on the vehicle, in this case two: Tiergarten- Vehicle and TiergartenVehicleSlave. 4. Then, an event is constructed for each app running on the vehicle and added to the event queue the same way as in the inter-vehicle example. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 53 4 Tutorial Tiergarten 4.3 Intra-Vehicle Communication Receiving the message The actual receiving of the message takes place in the TiergartenVehicleSlave application. Since the intra vehicle messages are basically treated as an event, the code is straight forward here: @Override public void processEvent ( Event event ) throws Exception { Object resource = event . getResource () ; if ( resource != null && resource instanceof Int raVehi cleMs ) { final In tr a Ve h ic le M sg message = ( In t ra Ve h ic l eM sg ) resource ; if ( message . getOrigin () . equals ( g e t O p e r a t i n g S y s t e m () . getId () ) ) { getLog () . infoSimTime ( this , " Received message from another application " ) ; } } } Listing 4.9: TiergartenVehicleSlave: Receiving intra application message The general concept here is that the payload is wrapped as an object in the actual event. The procedure here is as follows: 1. Retrieve the resource from the event using getResource() 2. Check if there is actually some kind of payload 3. Make sure the payload is of the expected type 4. Cast the payload to an actual class and do something with it. 4.3.1 The traffic light application As can be seen in the mapping configuration there is an additional prototype defined for traffic lights: { " applications " : [ " com . dcaiti . vsimrti . app . tutorials . tiergarten . trafficLight . ⤦ Ç T ra ff i cL ig h tA p p " ] , " name " : " TrafficLight " } Listing 4.10: Traffic Light Prototype These prototype is used to map the referenced application onto two specific traffic lights, as shown in the following listing. tls " : [ { " tlName " : " 27011311 " , " name " : " TrafficLight " }, { " tlName " : " 252864801 " , " name " : " TrafficLight " } ] Listing 4.11: Traffic Light Mapping VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 54 4 Tutorial Tiergarten 4.4 Interpretation of simulation results The use case shown for tutorial purposes here is simple: The two traffic lights referenced in the mapping default to always red. Their application then waits for a V2X message with a “secret” payload in it (the GreenWaveMsg) and switches the traffic light program to always green upon receiving that message. The application mapped onto the traffic light then switches back to its previous program after 20 simulation time steps have passed. An in-depth explanation of traffic light functionality can be found in Chapter 6. 4.4 Interpretation of simulation results The last part of the tutorial describes how to retrieve the actual simulation results. For this tutorial, the results are quite simple and simply show the arrival of the Inter- and IntraVehicle messages. So after executing the simulation using the following command: ./ vsimrti . sh -u < user > -s Tiergarten Listing 4.12: Running the simulation with the Tiergarten scenario (Unix machine) vsimrti . bat -u < user > -s Tiergarten Listing 4.13: Running the simulation with the Tiergarten scenario (Windows machine) Afterwards, in the log directory of VSimRTI a new folder should be created containing all log files of the simulation run. Within, the sub-folder appsNT contains the log files for each simulation unit and its application. For example, for the vehicles we end up with two log files: TiergartenVehicle.log and TiergartenVehicleSlave.log. This following snippet shows the receiving of the V2X messages that were sent by the RSU: INFO INFO INFO INFO - Initialize application ( at simulation time 6.000 ,000 ,000 s ) Activated AdHoc Module ( at simulation time 6.000 ,000 ,000 s ) Received V2X Message from rsu_0 ( at simulation time 18.000 ,400 ,000 s ) Received V2X Message from rsu_0 ( at simulation time 20.000 ,400 ,000 s ) Listing 4.14: Snippet from TiergartenVehicle.log Next, we see the contents of the IntraVehicleMessage that originates from another app on the vehicle: INFO INFO - Initialize application ( at simulation time 2.000 ,000 ,000 s ) - Received message from another application: I n tr aV e hi cl e Ms g { origin = ’ veh_0 ’ , id =631} ... Listing 4.15: Snippet from TiergartenVehicleSlave.log The following log was generated by the RSU application and logs the sending of each ad hoc broadcast: INFO INFO INFO INFO - Initialize application ( at simulation time 0.000 ,000 ,000 s ) Activated WLAN Module ( at simulation time 0.000 ,000 ,000 s ) Sending out AdHoc broadcast ( at simulation time 0.000 ,000 ,000 s ) Sending out AdHoc broadcast ( at simulation time 2.000 ,000 ,000 s ) Listing 4.16: Snippet from TiergartenRSU.log This concludes the first tutorial and hopefully gave an idea on how to use the VSimRTI application simulator to send out and receiving messages to other simulation entities or inside the same vehicle. The OperatingSystem.log files do not contain specific application output and is mainly used for debugging purposes and won’t be discussed in this tutorial. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 55 5 Tutorial Barnim The following tutorial shows some of the more advanced features of VSimRTI and will take a closer look at different federates. The term federates describes the High Level Architecture and basically denotes a dedicated simulator with whom the simulation infrastructure can communicate. The following topics will be covered in this tutorial: • How to use and react to DENMs Decentralized Environmental Notification Message. • Enabling and using a different communication simulator on the basis of the VSimRTI cell simulator. • The integration of electric mobility aspects into a simulation. Note: The topics from the last tutorial, especially how to map applications and the basics of how to implement them are not covered in this tutorial. If you are not yet familiar with these concepts you should have a look at the preceding tutorials. 5.1 Overview The scenario used for this tutorial is more complex than the Tiergarten tutorial; thus, we will provide you a short explanation. Picture 5.1 shows an overview of the Barnim scenario, exhibiting an icy road section along the highway. Figure 5.1: Overview of Barnim tutorial scenario 5 Tutorial Barnim 5.2 Mapping configuration In this scenario, several cars drive on the blue route and are forced to slow down in a specific section due to icy conditions. The rest of the scenario can be described as follows: 1. A car (Car A) which is equipped with ad hoc communication (WiFi) capabilities detects an environmental hazard - in this case an icy section of the road. 2. Car A now sends out a DENM which reaches other cars in its (relatively small) dissemination area. With multi hop routing, the DENM message is transported upstream towards other vehicles. 3. Cars that do not have any form of communication equipment are not warned and drive towards the icy part of the road. Since they have careful and responsible drivers they slow down to avoid accidents. 4. Cars that are equipped with the appropriate communication equipment are able to receive the DENM, which induces them to use a different route (green) which is safer and faster due to the lack of ice on it. 5. Last but not least, the WeatherServer (technically implemented as an RSU) propagates information over the cellular network and could therefore be located virtually everywhere. We also have some electric vehicles here, mainly to demonstrate how the VSimRTI battery ambassador works. Later in this tutorial, we will show you how to access statistics such as the state of charge of the battery from within an application. 5.2 Mapping configuration This section gives a short explanation of the mapping we use in this scenario. First of all we use five different types of entities. One RSU which acts as the WeatherServer and four types of cars, each of them loaded with different applications. As usual, the configuration takes place in mapping3/mapping_- config.json in your scenario folder. 1. Normal vehicles which cannot communicate shall demonstrate how to use electric vehicles in a scenario (60% of all vehicles). They are only equipped with the com.dcaiti.vsimrti.app. tutorials.barnim.SlowDownApp-application which induces them to reduce their speed as soon as their onboard sensors detect hazardous conditions. After leaving the hazardous area, they will resume by increasing their speed again. 2. Vehicles equipped with ad hoc wifi. They might not be able to receive the DENM due to range limitations and drive into the icy section nonetheless. They are equipped with the com.dcaiti.vsimrti.app.tutorials.barnim.WeatherWarningApp-application and the com. dcaiti.vsimrti.app.tutorials.barnim.SlowDownApp-application (20% of all vehicles). 3. Cellular communication enabled vehicles which are able to communicate with the WeatherServer. These vehicles are equipped with the com.dcaiti.vsimrti.app.tutorials.barnim. WeatherWarningAppCell-application, which is a specialized form of the normal weather warning application that can make use of cellular communication. They are also equipped with the com.dcaiti.vsimrti.app.tutorials.barnim.SlowDownApp-application (10% of all vehicles). VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 57 5 Tutorial Barnim 5.3 VSimRTI configuration 4. Electric vehicles cannot communicate since they are only equipped with the com.dcaiti. vsimrti.app.tutorials.barnim.SlowDownApp-application. Apart from that, they also incorporate an electrical battery which empties during driving (10% of all vehicles). 5. The WeatherServer is only equipped with cellular equipment. Despite the greater distance it is able to warn vehicles that can also make use of cellular communication. 5.3 VSimRTI configuration Since several applications are mapped, we need to make sure that the corresponding simulators are enabled. This is done in the main VSimRTI configuration file that resides in vsimrti/vsimrti_con- fig.xml in your scenario. The last part of that configuration file is used to enable and disable certain simulators according to the needs of the user. Per default, any simulation of cellular communication is disabled. In order to enable communication via cellular networks in this scenario, you need to enable the cell2 simulator by setting the field active to true: < federate id = " cell2 " active = " true " / > Listing 5.1: VSimRTI configuration for barnim example scenario 5.4 Applications This section deals with the specific details of the WeatherWarningApplication. We will cover in particular how to enable and use cellular communication, how to react to DEN-Messages and how the user can achieve a re-routing of vehicles. Overview Here we will explain the application logic and the main ideas behind it in general terms and will go into the implementation details in the following sections. All of the subsequent points stay the same regardless of what form of communication is used. • If the sensor picks up an event, the vehicle sends out a DEN-message (via cellular communication or ad hoc) with the position that was recorded in order to warn other vehicles. • The application also contains code to react upon DENMs received from other vehicles. Depending on the configured behavior of the application, either a slow down or a re-routing is performed. Most of the things that are happening here like re-routing, interval-handling and sending out ad hoc messages were already covered in the first tutorial and will not be discussed in detail in this tutorial. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 58 5 Tutorial Barnim 5.4 Applications 5.4.1 DEN-Message handling Receiving First of all, we look at the receiving side of the DENM here. Since the message is a normal V2X message it is received through the receiveV2XMessage()-method which is part of the application interface. if (!( msg instanceof DENM ) ) { getLog () . info ( " Ignoring message of type : {} " , msg . getClassName () ) ; return ; } Listing 5.2: Testing wether or not message is a DENM Analogous to a normal message, we check with instanceof, if it is of a type that we are interested in, in this case DENM. Afterwards, we perform a potential route change if not already done. Sending In case the sensor detects an environmental hazard the vehicle sends out a DEN-message to warn other vehicles. If WeatherWarningAppCell is mapped, cellular communication is used, in case of WeatherWarningApp ad hoc WiFi is used as described in the Tiergarten tutorial. 5.4.2 Cellular Communication We will now take a closer look at how the communication via the VSimRTI cellular simulator works. The application we point to in the mapping is a specialized form of the normal WeatherWarningApplication and can be found under its full identifier com.dcaiti.vsimrti.app.tutorials.barnim. WeatherWarningAppCell. It overloads the useCellNetwork-method which returns a constant true in order to indicate that we want to use cellular communication inside the base application. The reason for this overloading is to provide a distinct class to which we can point in the mapping. The actual logic that is required to send messages via cell is done in the base WeatherWarning application, so the overloading just signals that we want to use cellular communication. The method where the actual sending takes place is called reactOnEnvironmentData(). The following code snippet shows the steps necessary to send a DEN-message via the cellular network: GeoCircle dest = new GeoCircle ( v_longLat , 3000) ; G e o c a s t D e s t i n a t i o n A d d r e s s gda = G e o c a s t D e s t i n a t i o n A d d r e s s . c r ea te B ro ad c as t ( dest ) ; final D e s t i n a t i o n A d d r e s s C o n t a i n e r dac ; if ( useCell Netwo rk () ) { dac = D e s t i n a t i o n A d d r e s s C o n t a i n e r . c r e a t e G e o U n i c a s t D e s t i n a t i o n A d d r e s s C e l l ( gda ) ; } else { dac = D e s t i n a t i o n A d d r e s s C o n t a i n e r . c r e a t e G e o c a s t D e s t i n a t i o n A d d r e s s A d H o c ( gda ) ; } MessageRou ting mr = new M essage Routin g ( dac , g e t O p e r a t i n g S y s t e m () . g e n e r a t e S o u r c e A d d r e s s C o n t a i n e r ⤦ Ç () ) ; DENM denm = new DENM ( mr , g e t O p e r a t i n g S y s t e m () . g e t S i m u l a t i o n T i m e () , v_longLat , roadId , type , ⤦ Ç strength , newSpeed , 0.0 f ) ; g et O pe r at i n g S y s t e m () . getA dHocMo dule () . sen dV2XMe ssage ( denm ) ; Listing 5.3: Example for sending over cellular networks VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 59 5 Tutorial Barnim 5.5 Conclusion The sending is the same as in the Tiergarten tutorial, except that we decide via an if-statement whether or not cellular communication or ad hoc WiFi is used. Note the two different methods - one is ending with Cell the other with AdHoc, depending on what we want to use in the application. 5.5 Conclusion This concludes the description of the VSimRTI tutorial scenarios Tiergarten and Barnim. The following list sums up the things we have covered in this tutorial series: • Getting a general idea on how to configure VSimrti, especially how to enable and disable different, coupled simulators. • How to map different applications to a vehicle or a road side unit • Achieving inter- and intra-application communication... • ... via cellular networks or AdHoc wifi • Receiving and handling of messages • Basic interaction with the OperatingSystem by means of changing a route • How to find and process the results of a simulation run with the help of generated log files. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 60 6 Tutorial Traffic Lights In this brief tutorial we will discuss how to interact with traffic lights via VSimRTI. Usually the position and the lanes they control are coming from the OpenStreetmap-data, which we will also assume during this tutorial. Note that this tutorial is intended to be used with the Tiergarten scenario described in the first tutorial in Chapter 4, so creating a new scenario for is not necessary here and the Traffic Light data is already exported. At first we cover the general steps necessary to enable traffic lights and eventually “map” applications onto them. Each step is described in more detail later on. 1. Tell scenario-convert to export the traffic light information into the database 2. Determine the node ids of the traffic lights which should have applications on them 3. Adjust the mapping configuration of VSimRTI accordingly and assign the desired application(s) onto one or more traffic lights. Additional information on how to use traffic lights, how they are modeled within sumo and how their phases work can be found in the sumo wiki under http://sumo.dlr.de/wiki/Simulation/Traffic_Lights 6.1 Use scenario-convert to export traffic lights Although the Tiergarten scenario which we are focusing on in this tutorial already has the traffic lights exported from the .osm file, this step is important if you desire to set up an own scenario. For the Tiergarten example, the scenario-convert command line looks like this: scenario - convert -18.0. jar -- osm2sumo -d tiergarten . db -i tiergarten . osm -l -n Listing 6.1: Export of traffic lights using scenario-convert Note the -l switch here that actually exports the traffic light information from the .osm file to the tiergarten.db database. If this command line switch is omitted the traffic lights will not be available in the scenario. More information on how traffic lights are handled by Open Streetmap can be found in their wiki: http://wiki.openstreetmap.org/wiki/Tag:highway%3Dtraffic_signals 6 Tutorial Traffic Lights 6.2 Determine the traffic lights that should be equipped with applications 6.2 Determine the traffic lights that should be equipped with applications The next step is to decide which traffic lights should have applications on them. Since their ID(s) have to be referenced in the mapping, we will have to determine them first. There are several ways to do this, e.g. taking them directly from the database using a tool like sqlitebrowser or extract them directly with a text editor from the .net.xml file that gets generated by scenario-convert for usage with sumo. However, here we will focus on a graphical approach using sumo-gui since it is the easiest way to determine the exact traffic lights we want to map applications too. Figure 6.1: Locating traffic lights in sumo gui Figure 6.1 shows how to locate a specific traffic light, or more precise, a traffic light group. The process is as simple as scrolling to the desired traffic light, right click on it and write down the number behind tlLogic in the drop down menu or use the copy to clipboard feature of the sumo gui. This id is then used in the next section which explains how to actually map applications to a traffic light. 6.3 Configure the mapping for traffic lights Now that we have the ids of the traffic lights we can modify the mapping to assign application(s) to them. Note that the tutorial scenario already has applications assigned to two arbitrary traffic lights, so the mapping file bundled with it can also be used as a starting point here. In general, the mapping looks the same as for vehicles or RSUs. First, we define a prototype that is used for all subsequent traffic lights: 1 { 2 " prototypes " : [ { " applications " : [ " com . vsimrti . applications . a d d i t i o n a l s a m p l e s . misc . ⤦ Ç TrafficLightExample "], " name " : " TrafficLight " } ] 3 4 5 6 7 8 } Listing 6.2: Protype for traffic light VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 62 6 Tutorial Traffic Lights 6.4 The Traffic Light API The listing 6.2 shows an additional prototype called TrafficLight that gets associated with the Traffi- cLightExample application. Note that the application that should run on the traffic light has to extend AbstractApplication in order to work. The next step is to use this prototype and assign it to a traffic light we found in the section before using the sumo gui: 1 2 3 4 5 6 7 8 9 10 " tls " : [ { " tlName " : " 2 7 0 1 1 3 1 1 " , " name " : " TrafficLight " }, { " tlName " : " 2 5 2 8 6 4 8 0 1 " , " name " : " TrafficLight " } ] Listing 6.3: Example mapping of traffic lights Listing 6.3 shows as an example how this prototype is assigned via the name attribute to specific traffic lights. The important aspect here is that tlName refers to the id of the traffic light we found via the sumo gui in section 6.2 which must exactly match each other. 6.4 The Traffic Light API In order to access the traffic light functionality from within an application it must extend the AbstractApplication abstract class. There are two main functionalities provided by it, reachable from the application operating system that can be acquired by using the getOperatingSystem() method: • Change the currently active traffic light program via setProgramById() • Adjust the remaining time of the currently active phase via setPhaseRemainingDuration() However, adding a new traffic light program from within the application at runtime using the VSimRTI application interface is currently not possible and has to be done beforehand via sumo as described here: http://sumo.dlr.de/wiki/Simulation/Traffic_Lights. The two main ways of doing this is to use an additional-file or the tls_csv2SUMO.py tool bundled with sumo. However, it is possible to add a new program by using the TraCI interface as described here: http://sumo.dlr.de/wiki/TraCI/ Change_Traffic_Lights_State. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 63 7 Tutorial LuST The Luxembourg SUMO Traffic (LuST) scenario is a traffic simulation scenario which aims to provide realistic traffic patterns of a common mid-size European city during an average day [4]. This traffic simulation scenario for SUMO has been developed by Lara Codecá et al. and is publicly available via GitHub1 . The following tutorial shows, how the LuST scenario can be integrated into VSimRTI in order to assess your own mobile application at large scale. Notice: Also, you can use this scenario as a blueprint for integrating your own prepared SUMO scenarios into VSimRTI. Figure 7.1: Overview of the simulation site of the LuST scenario [4] • Area: 156 km2 • Number of intersections: 4.473 • Total length of all roads: 930 km • Number of traffic lights: 203 • Total length of highways: 89 km • Number of vehicles during 24h of simulation time: 215.526 1 https://github.com/lcodeca/LuSTScenario 7 Tutorial LuST 7.1 Execute the LuST scenario with VSimRTI 7.1 Execute the LuST scenario with VSimRTI You can find a prepared VSimRTI scenario for the LuST scenario in the pre-installed scenario directory. However, to get this scenario working, you need to execute the following steps: 1. In the subdirectory sumo of the LuST scenario directory, you can find several scripts which will help you to download the actual SUMO scenario from the official sources on GitHub. Depending on which operating system you use and which version control system client you have installed, you can use one of the provided batch or shell script files. If you do not have a git or svn client installed, you can also manually download and unzip the SUMO scenario from https://github. com/lcodeca/LuSTScenario . Please note that the SUMO scenario must be placed inside the sumo subdirectory of the scenario. 2. In order to execute VSimRTI with the scenario, you need to pass the given defaults.xml to the executable. On Windows, this can be done by executing VSimRTI as follows: vsimrti . bat -u < user - id > -s LuST -d scenarios / LuST / defaults . xml -w 0 Please note that the execution of this scenario might take a long time, due to the massive amount of vehicles simulated in this scenario. If you want to assess your mobility applications in combination with further simulators (e.g. Cell2), the simulation might slow down even more. Finally, you can map your own applications onto vehicles using the prepared mapping_config.json. Please note that applications can only be mapped for each vehicle type (see limitations below). Furthermore, you can activate any communication simulator, such as Cell2 or SNS, to integrate communication simulation into your assessment. 7.2 Current limitations The integration of the LuST scenario is currently a work in progress and therefore not all features are available. The following limitations currently exist: • No mapping of applications on single vehicles. It is currently not possible to map applications on single vehicles. Instead, only vehicle types can be mapped with them. Of course, the applications are running solely on each simulated vehicle which belongs to the respective vehicle type the application is mapped on. • No definition of own vehicle spawner. Currently, all simulated vehicles are spawned by the SUMO traffic scenario itself. There is no way to add additional vehicles via the mapping_config.json. • No routing capabilities in applications. Applications cannot use the navigation module of the vehicle. Furthermore, detailed information about the current route or the road position (upcoming nodes, type of the current road) is also not available to the applications. This is due to the missing scenario-database, which is currently not possible to create from the LuST road network. • No valid support of traffic light applications. The mapping of applications onto traffic lights has not yet been tested. • There may be more limitations we are currently not aware of. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 65 8 Create a new scenario This chapter is intended to act as a checklist for all tasks, needed to create a new scenario. Basically, a new scenario means that the simulation is performed in a different road network where vehicles have different routes. Moreover, the number of vehicles can also vary. 8.1 Road network data The first step always is to prepare a road network the simulation should take place in. While in general it is not relevant where the network data is coming from, we only provide ready to go import functions for OpenStreetMap (OSM) data which is freely available and comprehensive. Also if data in the target area is not up to date or needs to be adapted to the specific needs this can be done without problems. In case there are ready to go scenarios for supported traffic simulators like SUMO we also try to support that. Nevertheless, we cannot guarantee to support all tool specific functions, so we really recommend using OpenStreetMap data as source. If you already have data from other sources or want to use another data provider, additional steps might be necessary. If you have any questions or need further support, please feel free to contact our support team via our mailing list. 8.1.1 Using OpenStreetMap data Preparing the data source For this approach, simply download the *.osm file of the desired region using the openstreetmap.org website or any other tool that supports *.osm file export (e.g. josm1 or merkaartor2 ) and save it. Be aware that we currently do not support the binary version *.pbf or any compressed versions. Make sure that the file only contains complete ways. This means the file should not contain ways which reference nodes that are outside the target areas bounds. Usually this only has to be checked if the downloaded data was manually cropped with tools like osmosis3 . Such tools usually also have an option that will remove such ways (for osmosis this is completeWays=yes). It is best practice to not let the source file contain roads clearly not usable (like bicycle or pedestrian ways). This is to not clutter the simulation with unnecessary data resulting in a serious slow down for some aspects of the simulation like routing. There are several ways to filter OpenStreetMap files, the most convenient way is included in the tool we provide to process the source file, we will get back to that 1 https://josm.openstreetmap.de/ 2 http://merkaartor.be/ 3 http://wiki.openstreetmap.org/wiki/Osmosis 8 Create a new scenario 8.1 Road network data in a minute. If you need more control over the filter process we recommend to use osmosis or one of the editors already mentioned. Processing the data VSimRTI uses a database for internal storage of map and route data. Therefore it is necessary to convert OpenStreetMap data into the VSimRTI specific database format. While converting we filter out unnecessary information about the road network and prepare the data in a way, that allows us to provide routing functionality and create a common base for other components in the simulation like the traffic simulator. To be able to do this we provide the tool scenario-convert which can be found in vsimrti/bin/tools. As already mentioned this tool also provides a basic filtering for OpenStreetMap input. The usual command to use in this case is: java - jar scenario - convert -18.0. jar -- osm2db -i path / to / source . osm -o In this command -o provides the default filtering which filters out every street below type tertiary. Executing this will generate you a new file with file ending .db which will be named the same as your *.osm file. So for the given command it would generate a source.db in the directory source.osm is found. Additionally a second *.osm file with the suffix _cleaned will be created which is the filtered source data actually used in the import process. With -d you can provide a custom file name for the database alongside a path where it should be placed. If you provide a name please do so without the file extension, the correct one will be added automatically. Now you should have a brand new database which contains the road network. In the next step you need to export the data in a format that can be understood by the traffic simulator to be used and still matches the information in the database. To do so export that data from the database like this: java - jar scenario - convert -18.0. jar -- db2sumo -d path / to / database . db -n The example execution should have created a number of SUMO specific network files (nodes, edges and connections). The parameter -n automatically executes SUMOs netconvert command after the export to create the needed netfile (requires SUMO to be in the systems path). If you want to have traffic lights generated by netconvert, you need to add the option --export-traffic-lights to the command above. Now you have processed the road network to be in formats usable by VSimRTI and its connected simulators. Regarding files, the output of these two steps should be the following: • .db - scenario database (including road network) • .nod.xml - SUMO node file • .edg.xml - SUMO edge file • .con.xml - SUMO connection file • .net.xml - SUMO network file (after executing netconvert) • .sumo.cfg - SUMO configuration file VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 67 8 Create a new scenario 8.2 Vehicles and Routes 8.2 Vehicles and Routes VSimRTI contains a navigation component which supports the usage of different routes, vehicles can be mapped to. In order to make the routes accessible for the simulation in VSimRTI, they have to be available in the scenario database. There are two ways to achieve this: • Generate routes with scenario-convert or • Import an existing SUMO route file Generate routes scenario-convertoffers possibilities to generate routes for the simulation. With the following command you can generate routes from one geo-point (latitude,longitude) to another: java - jar scenario - convert -18.0. jar -d path / to / database . db -g -- route - begin - latlon LAT , LON -- ⤦ Ç route - end - latlon LAT , LON If geo-points are given as input, the route generation might fail due to unmatchable points. In this case, you may use the following command in order to calculate routes from one street node to another: java - jar scenario - convert -18.0. jar -d path / to / database . db -g -- route - begin - node - id NODE_ID -- ⤦ Ç route - end - node - id NODE_ID The required node ids can be determined from the source OSM file or the generated SUMO network file. For more than one route between the given points/nodes, the parameter –number-of-routes NUMBER can be used. The calculated routes are directly written into the database. If you need to export them into a SUMO readable format, you can use the command: java - jar scenario - convert -18.0. jar -- db2sumo -d path / to / databsae . db -r < scenarioname >. rou . xml Import routes from SUMO route file If you want to use the tools provided by SUMO, e.g. duarouter4 , to calculate a set of routes for the simulation, you need to import the resulting routes into the scenario-database of VSimRTI. Note, if you use such tools, please always use the network file generated by scenario-convert. The route file (*.rou.xml) generated by those tools can be directly imported into the database by using scenarioconvert. For this purpose, you can use the following command: java - jar scenario - convert -18.0. jar -- sumo2db -r routefile . rou . xml -d path / to / databsae This command will read the routes in the route file and write them in the supplied database file. The database file needs be the same you used to export the network file. If the route file also contained vehicle definitions these will be converted into a mapping3 configuration file. You will need to adapt this file later on to achieve a meaningful mapping between vehicles and applications. For more information regarding this please refer to chapter 3.5.15. 4 http://sumo.dlr.de/wiki/DUAROUTER VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 68 8 Create a new scenario 8.3 VSimRTI 8.3 VSimRTI Now you have everything you need to create a configuration set that VSimRTI will recognize as a scenario. A scenario is generally a folder structure that reflects the different components usually found in a simulation. The example tutorials of Barnim and Tiergarten also follow this specific folder structure. The complete set of components is depicted in the Listing 8.1. applicationNT battery eventserver cell2 mapping3 ns3 omnetpp sources sns sumo visualizer vsimrti Figure 8.1: Scenario: folder structure for complete component set However, a subset of all components already allows reasonable simulations. The most important components are mentioned in the following part. Applications and Mapping (applicationNT, mapping3) Usually you want the simulated vehicles to be equipped with some kind of applications that influence the vehicles behavior. To do that you copy the jar files of your applications to the folder application/ap- plications. To further configure the behavior of the application simulator have a look at chapter 3.5. Having the applications in place you will have to copy your mapping file to the folder mapping3. If you don’t have one by now have a look at the configuration for the default simulations provided with VSimRTI. For further information on controlling the mapping see chapter 3.5.15. Navigation (applicationNT) The generated database file .db needs to moved into the applicationNT folder. As long as you only have one database file in this folder you don’t need to do anything more. VSimRTI will recognize the file automatically. For further info on navigation in the application simulator have a look at chapter 3.5.14. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 69 8 Create a new scenario 8.3 VSimRTI Traffic Simulator (sumo) The generated files for the used traffic simulator go into the folder named after that simulator e.g. SUMO. In the folder should be a configuration file that needs to be adapted, to point to the correct simulator specific network file, e.g. .sumo.cfg. For further info on this type of simulators have a look at chapters 3.4. Communication Simulator (cell2, ns3, omnetpp, sns) There is an extensive default configuration provided in the simulators folder in the tutorials of Barnim and Tiergartenfor all communication simulators. Depending on the simulator you will need to tell the simulator the geographic extend of the simulation area. You can find that data in the traffic simulators network file, e.g. SUMOs *.net.xml contains this information in the convBoundary attribute of the location tag. • For OMNeT++, it concerns the values of constraintArea in the omnetpp.ini. • For the CELL simulator, the expansions do not need to be configured directly. However, the areas of the configured regions (in regions.json) have to be in line with the scenario location. • The SNS also comes without an additional expansion definition. Important: Larger values for the spatial expansion of the simulation area are also usually possible for the communication simulators. However, much larger this might decrease the performance. Smaller values lead to wrong behavior and will crash the simulation! For further information on the communication simulators, have a look at Chapters 3.2, 3.3, 3.6, and 3.7. VSimRTI config Having done that you are now ready to adapt the vsimrti/vsimrti_config.xml file to your needs. This usually contains of setting the scenario id (recommended to use the scenarios folder name), adapting the end time to cover everything you want to analyze. An important setting is the transformation configuration, as this will control how geographic coordinates will be converted to cartesians and back. Having a correct setting here is crucial to get correct results that map to real world coordinates so the simulation results can be visualized in some way. The center coordinate will be used to determine the correct UTMZone, the cartesianOffset can be determined by having a look at the traffic simulators network file, e.g. SUMOs *.net.xml contains this information in the netOffset attribute of the location tag. Within the IPResolverConfig tag the address resolution scheme is specified. The subnets for all node types are described in JSON format. Last but not least make sure, that the correct simulators are activated and unused deactivated in the last section of the configuration. To simulate a generated scenario, copy the now ready scenario into the vsimrti/scenarios folder. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 70 8 Create a new scenario 8.3 VSimRTI Further components Several components (as the battery configuration or the visualizer configuration) are generally scenario independent and can be copied from the existing tutorial scenarios Barnim and Tiergarten. The event server component (to simulate an icy road etc.) obviously also depends on the scenario location. The position of the event should be in line with and be located in the area of the scenario. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 71 9 Visualizers 9.1 Kinds of Visualizers VSimRTI provides several ways of data evaluation by so called visualizers. To visualize a scenario, different visualizers can connect to a running simulation. Figure 9.1 gives a overview about the current coupled visualizers. More than one visualizer of the same type can be defined. vsimrti VSimRTI WebSocket Visualizer ............................................. (see 9.2) VSimRTI File Visualizer .................................................. (see 9.3) VSimRTI Integrated Test and Evaluation Framework (ITEF) .............. (see 9.4) user defined visualizer .......................................................... Figure 9.1: VSimRTI visualizer structure The visualization ambassador provides several ways to visualize and/or trace the activities that happen during the simulation. The here explained visualization federate is responsible for providing data (in form of subscribed messages) to the visualization component. The kind of visualization is completely dependent on the component itself. The VSimRTI File Visualizer aims to collect and format data for further processing after simulation. To get an instant impression of a simulation, the WebSocket Visualizer shows vehicle movements on a Google Map. The visualizers are integrated into the simulation with a visualization ambassador. 9 Visualizers 9.2 VSimRTI WebSocket Visualizer 9.2 VSimRTI WebSocket Visualizer To get a simple and instant impression of a simulation or to get an idea of how fast it runs or where a simulation is located, the WebSocket Visualizer was created. It shows a Google Map with markers, indicating the positions of all vehicles, updated as the simulation progresses. To start the visualization, simply open the visualizer.html in your browser. The WebSocket Visualizer is enabled by default. As soon, as the simulation is running, you can see the vehicle markers moving around. You can also start the visualization at each simulation run, using the command line parameter -v. Important: By default, the WebSocket Visualizer does not work on Microsoft Edge. UWP (Universal Windows Platform) apps on Windows 10 do not have direct network access but are subject to a network isolation for security reasons, preventing localhost loopback by default. While Microsoft Edge itself does allow localhost access, it treats localhost as an Internet site, which leads to restrictions e.g. for IPC over IP. To prevent this, an exception for Edge must be added to the network isolation via the following command in an elevated command prompt: C h e c k N e t I s o l a t i o n Loopba ckExem pt -a -n = " Microsoft . M i c r o s o f t E d g e _ 8 w e k y b 3 d 8 b b w e " VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 73 9 Visualizers 9.3 VSimRTI File Visualizer 9.3 VSimRTI File Visualizer The File Visualizer is a tool which gives you the opportunity to log specific VSimRTI message types. 9.3.1 Configuring the File Visualizer • The main configuration file is located at vsimrti/scenarios/ /visualizer/visualizer_config.xml message record • Each message record is derived from a certain message type and composed of several entries, which are separated by Element separator. A more detailed overview about the visualizable message types in VSimRTI is given in the next chapter Results. The configuration of the file visualizer is explained at the example of the VehicleMovements message. • Attribute id indicates the message type, namely the class name of the message. • Message has also an attribute enabled. • The element entries defines the format and content of the finally visualized message record. • The element entries is composed of several sub-elements entry, which correspond to columns of a message record and the sequence of the columns is the same as that of sub-elements entry. entry Basically, there are totally three types of entry: Just look at an example: xml version = " 1.0 " encoding = " UTF -8 " ? > < message id = " V e h i c l e M o v e m e n t s " > < entries > < entry >" MOVE_VEHICLE " entry > < entry > TimeInSec entry > < entry > Updated:Id entry > < entry > U p d a t e d : A p p l i c a t i o n N r entry > < entry > U p d a t e d : P o s i t i o n . Latitude entry > < entry > U p d a t e d : P o s i t i o n . Longitude entry > entries > message > Listing 9.1: Specific Configuration for message. Constant Every quoted entry is defined as a constant. The content inside the quotation will be directly visualized into each corresponding message record. < entry >" MOVE_VEHICLE " entry > Listing 9.2: An example for constant type entry. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 74 9 Visualizers 9.3 VSimRTI File Visualizer Basic Method The other two types of entry originate from the getXXX() methods of a certain object. For an entry, the root object for method invoking is the corresponding message class, here VehicleMovements . If a null object is returned before the last method of cascaded methods is invoked, then ”null” will be written to the corresponding field. If a null object is returned by iteration method, then all fields involving this iteration method will be set ”null”. Iteration < entry > Updated:Id entry > Listing 9.3: An example for method type entry with iteration. The first part of this example is Updated , which means to invoke the getUpdated method of class VehicleMovements . Then a list of VehicleInfo objects is returned. Then ;Id remains. The semicolon is an operator for iteration, which means for each of the VehicleInfo objects in the returned list invoking getId method. Cascading < entry > Upd a t e d : P o s i t i o n . Latitude entry > Listing 9.4: An example for method type entry with iteration and cascading. In this example, there is a dot operation. It is a cascade operation. Here getPosition method of VehicleInfo class is called and a GlobalPosition object is returned. Then we continuously invoke the getLatitude method of this GlobalPosition object. Extended Method All the methods involved above are the basic methods. There are also some functionality, which we can’t extract from these existing methods. So an extended method set is offered to meet these requirements and also as an extension point in the future. simple extended method < entry > TimeInSec entry > Listing 9.5: An example for simple extended method type entry. With existing methods of VehicleMovements and its super class Message , we can’t get the timestamp of a message in second. (only Message.getTime , which returns a time in ns, is available). Here, getTimeInSec is a method extension for Message class. The extended method set will be listed later. assisting extended method < entry > Updated:Type entry > Listing 9.6: An example for assisting extended method type entry. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 75 9 Visualizers 9.3 VSimRTI File Visualizer There are also methods both in the simple and extended method set. Taking getType method of VehicleInfo as an example. If the type of a VehicleInfo object has not been set, this method will return null. But we can take advantage of AddedVehiclesMapping messages to get its type. Thus, an extended getType will be invoked if VehicleInfo.getType returns null. Iteration Basically, the method type of entry definition supports cascaded iteration as follows: < entry > Lis t1:Lis t2:Id entry > Listing 9.7: An example for cascaded iteration. What we haven’t met yet, is that, if in the definition of entries, several different iterating operations exists, for example: < entry > Senders:Id entry > < entry > Receivers:Id entry > Listing 9.8: An example for multi-level iteration. getSenders() and getReceivers() are two different iterations. In this case, a product of Ids in both list will be generated. The result may look like this: sender1 , receiver1 sender1 , receiver2 sender2 , receiver1 sender2 , receiver2 Listing 9.9: Visualising result of the above listing. Note: the longest matched prefix will be considered as the same iterating operation, which means, they are in the same level of iteration structure. Method Sets Method Type Info Message.getTimeInSec() long Message.getTimeInMS() long ReceiveV2Xmessage.getType() String SendV2Xmessage.getType() String VehicleInfo.getApplicationNr() int VehicleInfo.getType() UnitType @Deprecated VehicleInfo.getTypeInOrdinal() int @Deprecated Table 9.1: A list of all extended methods VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 76 9 Visualizers 9.3 VSimRTI File Visualizer Method Type VehicleMovements.getUpdated() List VehicleInfo.getId() String VehicleInfo.getPosition() GlobalPosition GlobalPosition.getLatitude() double Message.getTime() long VehicleInfo.getType() UnitType Table 9.2: A list of some basic methods VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 77 9 Visualizers 9.4 VSimRTI Integrated Test and Evaluation Framework (ITEF) 9.4 VSimRTI Integrated Test and Evaluation Framework (ITEF) Notice: ITEF is only available with a commercial license of VSimRTI. For further information on licences, please refer to our mailing list . The Integrated Test and Evaluation Framework (ITEF) is a webtool for planning and evaluating vehicular communication scenarios. It is suited for field operational tests as well as simulations. ITEF also offers a variety of visualization features, making a comparison of different vehicles or between equipped and unequipped vehicles easy. It is structured into 4 screens, whereas the following 3 screens are intended for the visualization. The Replay screen (see Figure 9.2) is intended to be used for an initial overview of the test run. The main feature is the display of the vehicle movements on a map, while the player can be used to playback the movement situation. In this manner, the ITEF allows a location and time dependent evaluation of simulation test runs. The Evaluate screen (see Figure 9.3) allows the detailed investigation of the correlations in a test run. The main feature of this screen is to display the behavior summarized over the whole run. The structure of this screen with is similar to the Replay screen. However, the focus here is on the detailed (statistical) summary of evaluated metrics. Finally, the Statistics screen (see Figure 9.4) provides statistical evaluations of the test and simulation run. Currently, statistics on Vehicle Speed, Travel Time, Travel Distance and several more are supported. Figure 9.2: ITEF Replay Screen VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 78 9 Visualizers 9.4 VSimRTI Integrated Test and Evaluation Framework (ITEF) Figure 9.3: ITEF Evaluate Screen Figure 9.4: ITEF Statistics Screen VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 79 10 Run simulation series 10.1 Simulation Runner Notice: The simulation runner is only available with a commercial license of VSimRTI. For further information on licences, please refer to our mailing list . The simulation runner is a tool for automatic simulation parametrization and execution. Accordingly, a comfortable way exists to configure the execution of multiple simulations, e.g. of simulation series including several runs where only few parameters are changed in each run. With the simulation runner, a simulation series can be defined, for example, where the V2X penetration rate is changed in each simulation run. As a result, VSimRTI starts all simulation runs automatically according to the defined parameters. 10.1.1 Usage The simulation runner is started as follows: GNU/Linux ./ simrun . sh -c / scenarios / < scenario name >/ vsimrti / simrun_config . xml -p ⤦ Ç numberofparallelsimulations Listing 10.1: VSimRTI simulation runner start command for GNU/Linux. GNU/Linux java - jar VsimrtiEmbeddedStarter - x . x . x . jar -s -u userid -- strict - configuration - path -c ⤦ Ç scenarios / < scenario name >/ vsimrti / simrun_config . xml Listing 10.2: VSimRTI VSimRTIEmbeddedStarter simulation runner start command for GNU/Linux. Microsoft Windows simrun . bat -c \ scenarios \ < scenario name >\ vsimrti \ simrun_config . xml -p ⤦ Ç numberofparallelsimulations Listing 10.3: VSimRTI simulation runner start command for Microsoft Windows. Microsoft Windows java - jar VsimrtiEmbeddedStarter - x . x . x . jar -u userid -s -- strict - configuration - path -c ⤦ Ç scenarios \ < scenario name >\ vsimrti \ simrun_config . xml Listing 10.4: VSimRTI VSimRTIEmbeddedStarter simulation runner start command for Microsoft Windows. 10 Run simulation series 10.1 Simulation Runner Configuration file The configuration file vsimrti/scenarios/ /vsimrti/simrun_config.xml contains the parameterization information. 10.1.2 Configuration The example in listing 10.5 shows a complete configuration. Using this configuration the simulationrunner would try to run a scenario called Barnim while adapting the mapping (see 3.5.15), the configuration file of SNS, and VSimRTI (see 8.3) configuration files. The actual simulation is triggered by generating an adapted scenario folder and calling the same executable the user would normally trigger himself. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // www . dcaiti . tu - berlin . de / research / simulation / download / ⤦ Ç get / scenarios / scenarioname / vsimrti / simrun_config . xsd " > < vsimrti location = " / path / to / vsim rti_fo lder " executable = " vsimrti . sh " username = " user_id " / > < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / v simrti _confi g . xml " persistent = " ⤦ Ç false " repetitions = " 1 " > - o TRACE argument --> - w 0 argument --> scenario > < dimension name = " P e n e t r a t i o n R a t e s " > < parameter name = " V 2 X V e h i c l e P e r c e n t a g e " file = " mapping3 / mappi ng_con fig . json " fileFormat = " ⤦ Ç json " item = " vehicles [0]. types [0]. weight " type = " ValueList " > < value > 0.0 value > < value > 0.5 value > < value > 0.75 value > parameter > < parameter name = " C l a s s i c V e h i c l e P e r c e n t a g e " file = " mapping3 / mappi ng_con fig . json " ⤦ Ç fileFormat = " json " item = " vehicles [0]. types [1]. weight " type = " ValueList " > < value >1 value > < value > 0.5 value > < value > 0.25 value > parameter > < parameter name = " Si mulati ontime " file = " vsimrti / vsim rti_co nfig . xml " fileFormat = " xml " item ⤦ Ç = " // simulation / endtime " type = " ValueList " > < value > 100 value > < value > 100 value > < value > 100 value > parameter > dimension > < parameter name = " Si n gl eh o pR ad i us " file = " sns / sns_config . json " fileFormat = " json " item = " ⤦ Ç singlehop . radius " type = " ValueList " > < value > 500 value > < value > 600 value > parameter > configuration > Listing 10.5: Simulation Runner configuration example The configuration contains three distinct parts of configuration. The system specific definition, the scenario definition and the parametrization. While the first two parts will be explained as part of this section, the parametrization will be explained in it’s own section. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 81 10 Run simulation series 10.1 Simulation Runner system specific definition 1 2 < vsimrti location = " / path / to / vsim rti_fo lder " executable = " vsimrti . sh " username = " user_id " p a r a l l e l S i m u l a t i o n s = " 1 " / > Listing 10.6: example of system specific definition in configuration file The system specific part of the configuration (see listing 10.6) is the only part of the configuration that can be overwritten using a second configuration file. It contains the following values: • location of the VSimRTI installation to use (can be relative or absolute). • executable used to start the simulation. This value is optional and will automatically be set to the default *.bat or *.sh file when omitted. • username needed to check the license against. This is the user name given to you when registering your system with us. • parallelSimulations defines how many simulations are started in parallel to speed up things. This value is optional and defaults to 1. Be aware that you should only use this if you have multiple cores available. This might also coincide with the threads option in the VSimRTI configuration. scenario definition 1 2 3 4 < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / vs imrti_ config . xml " persistent = " false ⤦ Ç " repetitions = " 1 " > - o TRACE argument -- > - w 0 argument -- > scenario > Listing 10.7: example of scenario definition in configuration file The scenario definition (see listing 10.7) contains everything needed to identify the scenario to execute along with parameters that needs to passed to the VSimRTI executable. It contains the following values: • name of the simulation to run. This is expected to be the same as the scenarios folder name and is used to automatically generate the path pointing to the scenarios vsimrti_config.xml in a default case. It can be omitted if the config option is set. • config is an optional value containing the concrete path to the scenarios vsimrti_config.xml. This can be used if the scenario is not placed in the default scenarios folder (which is discouraged) and overwrites the path generated by the name attribute. Either name or config have to be defined! • persistent defines if the generated scenario folders (containing the adapted configuration files for every single simulation to be executed) will be kept after simulation (value true) or deleted (value false). • repetitions is an optional value containing the number of times each simulation should be repeated. Setting this to a value other than 1 only makes sense if some part of the simulation follows stochastic models (like non deterministic vehicle spawning). The configuration can also contain a number of additional arguments that are passed to the executable without any changes, separated by spaces. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 82 10 Run simulation series 10.1 Simulation Runner 10.1.3 Parametrization The heart of this tool is the parametrization of simulations. Using this, one can define values in the default configuration that are adapted between simulation runs. How many simulation runs are performed is defined by the number of changes configured enriched with the information about simulation repetitions. For the example in listing 10.5 it is expected that the mapping file to be changed has one vehicles definition spawning multiple cars with a weighted type distribution defining first the equipped and then the unequipped vehicles. Parameters 1 2 3 4 5 6 < parameter name = " V 2 X V e h i c l e P e r c e n t a g e " file = " mapping3 / mappin g_conf ig . json " fileFormat = " json " item = " vehicles [0]. types [0]. weight " type = " ValueList " > < value >0 value > < value > 50 value > < value > 75 value > parameter > Listing 10.8: example of a parametrization for a single value Each value that should be changed in a run is defined by a parameter element identified by a name (see listing 10.8). The base value is the file which should be changed (relative to the scenario folder). Currently it is needed to define what fileFormat is expected from that file, which has impact on the syntax of the item definition which denotes what part of this file should be changed (this will be explained in a bit). The final value is the type which denotes how the value change behaves. The child elements depend on this definition and will also be explained in a bit. fileFormat can be one of xml or json. The item syntax is as followed: • xml: contains an XPath1 expression • json: contains an array-style definition of the target value. The value in listing 10.8 would change line 13 in listing 10.9. (In the first entry of vehicles the attribute weight of the types first entry). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 { " prototypes " :[{ " name " : " PKW " }] , " vehicles " :[ { " startingTime " : 5.0 , " targetDensity " :1200 , " m a x N u m b e r V e h i c l e s " : 250 , " route " : " 1 " , " types " :[ { " applications " :[ " com . dcaiti . vsimrti . app . W e a t h e r W a r n i n g A p p . W e a t h e r W a r n i n g A p p " ] , " name " : " PKW " , " weight " :0.2 }, { " name " : " PKW " , " weight " :0.8 } 1 https://en.wikipedia.org/wiki/XPath VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 83 10 Run simulation series 19 20 21 22 10.1 Simulation Runner ] } ] } Listing 10.9: mapping file expected for example type can currently only have two entries: • ValueList: This expects a list of values as child elements of the parameter. Each value will be used for at least one permutation. • IntegerGenerator: This automatically generates integer values to write as values. The generated numbers can be configured by adding these attributes to the parameter element: – offset denoting a minimal number where generation should start (this will be the first value), default is 0. – step denoting the number that will be added to the previous value to generate the new one, default is 1. In contrast to ValueList this can create an infinite number of values. Permutation of parameters When multiple such parameter elements are defined, a permutation for each specific value definition is generated. Lets say defined are parameters A and B and each parameter has values a and b. The resulting permutations would be: 1 2 3 4 A =a , A =a , A =b , A =b , B=a B=b B=a B=b Dimensions Sometimes it is wanted to group some value changes. This can be necessary when changed values need to sum up to a specific value or when specific (named) output files need to be defined. This can be done by enclosing the affected parameters into a dimension definition. Doing this the values of each parameter are connected by their index. For this to work the number of values for each parameter have to be the same. The example in listing 10.5 utilizes this function to make sure the vehicle percentages sum up to 100. The generated permutations for the dimension enclosed parameters are: 1 2 3 V 2 X V e h i c l e P e r c e n t a g e =0 , C l a s s i c V e h i c l e P e r c e n t a g e =100 V 2 X V e h i c l e P e r c e n t a g e =50 , C l a s s i c V e h i c l e P e r c e n t a g e =50 V 2 X V e h i c l e P e r c e n t a g e =75 , C l a s s i c V e h i c l e P e r c e n t a g e =25 When additionally parameters are defined which are not enclosed in the dimension tag or another dimension tag is defined, then the permutations will be extended even further. The full permutation for listing 10.5 is as follows: VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 84 10 Run simulation series 1 2 3 4 5 6 Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =0 , C l a s s i c V e h i c l e P e r c e n t a g e =100) , Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =0 , C l a s s i c V e h i c l e P e r c e n t a g e =100) , Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =50 , C l a s s i c V e h i c l e P e r c e n t a g e =50) , Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =50 , C l a s s i c V e h i c l e P e r c e n t a g e =50) , Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =75 , C l a s s i c V e h i c l e P e r c e n t a g e =25) , Penetra t i o n R a t e s ( V 2 X V e h i c l e P e r c e n t a g e =75 , C l a s s i c V e h i c l e P e r c e n t a g e =25) , 10.1 Simulation Runner Si ng l eh op R ad i us =500 Si ng l eh op R ad i us =600 Si ng l eh op R ad i us =500 Si ng l eh op R ad i us =600 Si ng l eh op R ad i us =500 Si ng l eh op R ad i us =600 10.1.4 Additional Information These are some side effects to remember when working with this tool. Ports: The Simulation Runner supports automatic assigning of free ports for federates. This means that all federates configured in the defaults.xml will get a free port configured by default. This enables multiple simulations to be run simultaneously as long as the federates are started by VSimRTI. If some federates are not started through VSimRTI but are already running, this will not work. Paths: Relative paths of the files to be modified will be expanded with the deployment directory of the current simulation run to an absolute one. Adaptations: All values will be modified in copies of the original scenario. The copies will be placed in the simrunner folder in the VSimRTI base directory and will be (if not deactivated by configuration) deleted upon completion of the simulation. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 85 11 Additional tools 11.1 scenario-convert scenario-convert is a tool used to work with a scenarios database by importing and exporting data from external sources like OpenStreetMap SUMO etc. This database is the basis for all map-related tasks, which can be performed by VSimRTI (e.g. navigation, route calculation...). Based on a VSimRTI database, scenario-convert can export the data to SUMO input formats, which then can be used in the simulation. To enable dynamic rerouting of vehicles, scenario-convert generates, exports and imports route data from and to SUMO. This way, one can choose, whether to use generated routes (all possible routes between a point A and B), use existing routes and import them via scenario-convert or build own routes via the route generation tools supplied with the standard SUMO installation. Workflow An example workflow to create a valid map database would be as follows: • get OpenStreetMap file of the desired region • import OpenStreetMap file and export to SUMO using scenario-convert • create routes using existing tools or manually in sumo • import created routes back into database using scenario-convert • start simulation using the database, which now contains all relevant map data and route information The example scenario-convert call for this workflow would be as follows in listing 1: 1 scenariocon v er t -- osm2sumo -i < osmFile > -d < dbFile > -n -- export - traffic - lights -- generate - ⤦ Ç routes -- route - begin - latlon 50.429997 ,8.6567009 -- route - end - latlon 50.429024 ,8.6642044 Listing 11.1: Exemplary call of scenario-convert.jar . (import OpenStreetMap file to database, generate routes by given coordinates, generate network with sumo-netconvert and export to SUMO configuration files). 11 Additional tools 11.1 scenario-convert Usage The following listing 2 provides an overview about the scenario-convert functions. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 Usage : scenario - convert [ OPERATION ] -d < DATABASEFILE > [ OPTIONS ]* Examples ( options in [] are optional ) : 1. Import an osm file and write data into database scenario - convert -- osm2db -i < OSMFILE > [ - o ] [ - d < DATABASE >] 2. Export db content to sumo - readable files scenario - convert -- db2sumo -d < DATABASE > [ - s < SUMOPREFIX >] [ - n ] 3. Reimport a sumo routefile into a database scenario - convert -- sumo2db -d < DATABASE > -r < ROUTEFILE > 4. Combine steps 1 and 2 scenario - convert -- osm2sumo -d < DATABASE > -i < OSMFILE > [ - s < SUMOPREFIX >] 5. Export db content to Shapefile format scenario - convert -- db2shp -d < DATABASE > 6. Import an srtm file and write elevation data to nodes of an existing database scenario - convert -- srtm2db -i < SRTMFILE > -d < DATABASE > ------------------------------------------------------------------------------CONFIGURATION FILE : -c , -- config - file FILE OPERATIONS : -- osm2db -i [ - o ] [ - d ] -- srtm2db -i [ - d ] -- db2sumo -d [ - s ] [ - n ] [ - l ] -- sumo2db [ - i ] [ - r -d ] -- osm2sumo -- db2shp -d -- osm2shp -d -- srtm2db -i -d -- update -d CONFIGURATION OPTIONS : -i , -- input - file FILE -d , -- database FILE -s , -- sumo - prefix SUMOPREFIX -- import - zone -- import - lon / - - import - lat -r , -- route - file FILE -- export - routes -f , -- force Optional , refers to a configuration file which contains all parameters in JSON format . Single options can be set by the following parameters . Imports an OSM file creating a new database . Imports an SRTM file creating a new database . Exports the network to SUMO node and edge files . Imports a SUMO Network / Routefile . Be aware that you have to re - export an imported network ! Combination of osm2db and db2sumo . Exports the network into Shapefile format . Combination of osm2db and db2shp . Imports an SRTM file and writes elevation data to nodes . Updates the given database to the current scheme . Defines an input file to use in an import . File type is dependend on the import operation . ( OSM File / Database file / SUMO net file ) When importing : file to import to . Either omit the file extension or set it to ’. db ’. For export operations : file to load from . For update operations : file to update . Prefix for the generated sumo files ( uses database name when not defined ) . UTM zone of location for projecting coords in default format ( e . g . 32 n ) . center longitude / latitude of imported region to project coordinates . ATTENTION : Zone and coordinate parameters are mutually exclusive alternatives ! Sumo *. rou . xml file location Export existing route data to *. rou . xml ( only in combination with db2sumo ) . Force overwrite of existing files ( do not increment file names ) . INTERNAL ROUTE GENERATION ( If you use this , a route file containing these routes will be generated too ) VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 87 11 Additional tools 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 11.1 scenario-convert -g , -- generate - routes Generate routes based on the given options . Please see below for possible options , You will at least need start and end coordinates Start of route : -- route - begin - lat -- route - begin - lon -- route - begin - latlon Latitude of point , needs longitude defined ! Longitude of point , needs latitude defined ! Combined value in format [ latitude ] ,[ longitude ] ( this is an alternative to separate definition !) OSM node id as start point ( this is an alternative to the options above !) -- route - begin - node - id End of route : -- route - end - lat -- route - end - lon -- route - end - latlon Latitude of point , needs longitude defined ! Longitude of point , needs latitude defined ! Combined value in format [ latitude ] ,[ longitude ] ( this is an alternative to separate definition !) OSM node id as start point ( this is an alternative to the options above !) -- route - end - node - id -- number - of - routes INT Optional , limits the maximum number of generated routes . Default is 1. ADDITIONAL TOOLS -o , -- execute - osmosis Execute osmosis to apply automatic filters to the given osm file ( only for osm2xxx ) . Write osm building information in database Ignore all defined turn restrictions on OSM import . Turns off the removal of unconnected parts from the main traffic network graph . Since several components of VSimRTI require one main graph without disconnected ways and nodes , this option should be used only if the cleanup procedure is faulty . Automatically start sumo netconvert after export to create netfile ( only with xxx2sumo ) export traffic light information for nodes Define a property file which contains speed information which are used to set the speed for OSM ways without a max speed tag . ( only with osm2xxx ) If set to true , the maxspeed tags of ways are ignored and replaced by either default values , or by speed information defined via the -- osm - speeds - file option . ( only with osm2xxx ) export traffic light information for nodes Print current version number -b , -- import - buildings -- ignore - turn - restrictions -- disable - graph - cleanup -n , -- execute - netconvert -l , -- export - traffic - lights -- osm - speeds - file -- osm - speeds - overwrite -l , -- export - traffic - lights -v , -- version Listing 11.2: Overview about scenario-convert options. The following listing 3 shows a JSON example file which can be used with the -c option of scenarioconvert. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 { " operati ng_mod e " : " osm2db " , " input_path " : " database_path " : " path / to / input . osm " , " path / to / database . db " , " sumo_prefix " : " SUMO_PREFIX " , " e xe c u t e _ n e t c o n v e r t " : " export_traffic_lights ": " export_routes " : " impor t _ b u i l d i n g s " : " force _ ov er w ri te " : " disable_graph_cleanup ": " ignore_turn_restrictions ": true , true , true , false , false , false , false , " gener a te _r o ut es " : " numbe r _ o f _ r o u t e s " : true , 2, VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 88 11 Additional tools 19 20 21 22 23 24 25 26 11.1 scenario-convert " route _ be gi n _l at " : " route _ be gi n _l on " : " route_end_lat " : " route_end_lon " : 52.5 , 13.4 , 52.2 , 13.1 , " osm_overwrite_speeds ": " osm_s p ee ds _ fi le " : false , " path / to / speeds . properties " } Listing 11.3: Example file for scenario-convert configuration with JSON Furthermore, in listing 4 you can find a properties file which can be used during the import of OSM data in order to define speeds for ways, which do not have a maxspeeds-tag defined. For this purpose use the option - -osm-speeds-file . In the speed properties file, for each way type a speed value can be defined, according to the OSM highway key 1 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 # the unit the speed values are defined in [ kmh , ms ] speed . unit = kmh # the default speed for all way types which are not defined here speed . default = 30 # autobahn highway . motorway = 130 highway . motorway_link = 70 # bundesstrasse ( germany ) highway . trunk = 70 highway . trunk_link = 65 # linking bigger town highway . primary = 65 highway . primary_link = 60 # linking towns + villages highway . secondary = 60 highway . secon dary_l ink = 50 # streets without middle line separation highway . tertiary = 50 highway . tertiary_link = 40 highway . residential = 30 # special roads highway . living_street = 5 highway . service = 20 # unclassified roads highway . unclassified = 30 highway . road = 20 # forest tracks highway . track 15 Listing 11.4: Example file which can be used to configure speeds for ways during OSM import 1 http://wiki.openstreetmap.org/wiki/Key:highway VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 89 12 VSimRTI configuration 12.1 Overview VSimRTI can be configured by adapting the files in the /vsimrti/etc directory. The following technical aspects of VSimRTI can be configured: • vsimrti/etc/defaults.xml - Configuration of all federates which are coupled with VSimRTI. • vsimrti/etc/hosts.json - Configuration of the machines the simulations are executed on. • vsimrti/etc/logback.xml - Logging configuration of VSimRTI and its federates. A full example of the default configuration files can be found in A.2. 12.2 Federates configuration This part of software can be configured with a configuration file. The specific path is vsimrti/etc/defaults.xml This file is used for configuring all federates and simulators coupled with VSimRTI. For each federate you can define various aspects: • What’s the id and class of the federate? • On which host is the federate running? • How is the federate started? • What is the name of the configuration file for the federate? • For which messages is the federate subscribing? • The priority of the federate when it comes to message distribution. A detailed description of the various parameters can be found in the documentation available on the DCAITI website . 12 VSimRTI configuration 12.3 Host configuration 12.2.1 Federate priorities There might be cases where it is important that a certain federate receives messages with equal timestamps before or after the other ones. In the context of VSimRTI for example, it is often desirable that the Application Simulator receives the vehicle movements-message after the traffic simulator to avoid problematic behavior in the first simulator. The configuration file defaults.xml allows for a fine grained adjustment of the federate priorities. For example, a federate with a certain priority looks like this: . That means that the Sumo Ambassador has an priority of 20, where the following rules apply to the priorities: • Priorities range from 0 to 100. • 0 is the highest priority, e.g. the federate with this priority assigned will receive the message first. • The default priority if none is given is 50. Note that VSimRTI ships with sane default values for the priority and a modification is only necessary in rare cases. 12.3 Host configuration This part of software can be configured with a configuration file. The specific path is vsimrti/etc/hosts.json Notice: The documentation for the VSimRTI specific component is freely available on the DCAITI website , explaining all available options. This file is used for configuring simulation runs using multiple machines. Under normal circumstances it is not necessary to change this file. In VSimRTI there are two kinds of hosts: local and remote hosts. All hosts have to be identified with a unique string that is valid for the remainder of the configuration to reference a defined host. For a local host additionally the operating system and a name of a directory that is used to deploy needed federates is necessary. Values for operating systems are "linux" or "windows". The syntax for referenced paths has to be chosen according to operating system standards (e.g. /vsimrti/temp for GNU/Linux and C:\vsimrti\temp for Microsoft Windows). Note that also relative paths are possible. For remote hosts SSH and SFTP is used to deploy and start federates. Therefore the address of the host as well as the port, user name, and password for an SSH connection must additionally be given. VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 91 13 Additional information Here you find helpful information regarding VSimRTI and its configuration. 13.1 PATH configuration PATH is an environment variable on operating systems, specifying a set of directories where executable programs are located. GNU/Linux On GNU/Linux operating system you can edit you local .bash_profile in your home directory with your favorite CLI editor e.g. Vi IMproved (VIM) or Nano’s ANOther editor (NANO). 1 2 3 4 5 6 7 8 9 10 11 12 # . bash_profile # Get the aliases and functions if [ -f ~/. bashrc ]; then . ~/. bashrc fi # User specific environment and startup programs PATH = $PATH : $HOME / bin : $HOME / sumo / export PATH Listing 13.1: Add the SUMO location to PATH on GNU/Linux. On most GNU/Linuxdistibutions you must log out and login to refresh the PATH variable. You can check your path with the shell command echo $PATH . 13 Additional information 13.1 PATH configuration Microsoft Windows For Microsoft Windows please follow the instructions below. 1. Select “Computer” from the start menu. Choose “Properties” from the context menu. 2. Click “Advanced system settings” and switch to the “Advanced” tab in “System Properties”. 3. Click on “Environment Variables”. 4. Find “Path”, and click on it (choose it). 5. Click “Edit”. 6. Modify Path by adding the absolute location to the value for Path. (Don’t forget a semicolon to seperate). 7. Click “OK”, click “OK”, click “OK”, . . . . 3 2 1 6 7 4 5 8 Figure 13.1: Edit PATH variable in Microsoft Windows VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 93 14 List of Acronyms ASCT Automotive Services and Communication Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 CAM Cooperative Awareness Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 CLI Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 CPU central processing unit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 DCAITI Daimler Center for Automotive Information Technology Innovations . . . . . . . . . . . . . . . . . . . . 2 DENM Decentralized Environmental Notification Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ETC Estimated Time to Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ETSI European Telecommunications Standards Institute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 EPL Eclipse Public License FOKUS Fraunhofer-Institut für Offene Kommunikationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 GUI Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 GNU GNU’s Not Unix! GPL GNU General Public License HLA High-Level Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 IEEE Institute of Electrical and Electronics Engineers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 INET OMNeT++ - Model library for wired, wireless and mobile networks . . . . . . . . . . . . . . . . . . . . . 12 ITEF Integrated Test and Evaluation Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 JAR Java Archive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 JRE Java Runtime Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 JSON JavaScript Object Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 LTE Long Term Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 LuST Luxembourg SUMO Traffic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 M&S modelling and simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 MAC Media Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 MBMS Multimedia Broadcast Multicast Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 NANO Nano’s ANOther editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 ns-2 network simulator 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ns-3 network simulator 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 OMNeT++ Objective Modular Network Testbed in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 OSM Open Street Map RAM random-access memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 RSU Road Side Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 RTF Real Time Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 SNS Simple Network Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 SUMO Simulation of Urban Mobility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 TraCI Traffic Control Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 UMTS Universal Mobile Telecommunications System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 14 List of Acronyms 14 List of Acronyms UUID universally unique identifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 V2V Vehicle-to-Vehicle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 V2X Vehicle-2-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 VIM Vi IMproved. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 VSimRTI Vehicle-2-X Simulation Runtime Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 XML Extensible Markup Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 95 Appendix A VSimRTI deployment You will find a collection of all relevant data. A.1 VSimRTI Folder Structure The VSimRTI all-in-one package has a clear separation of binary files, general VSimRTI configuration files and simulation scenario specific configuration files in different folders. The vsimrti/bin folder contains all binary files needed for execution of VSimRTI. Normally, you do not have to make changes here. General VSimRTI configuration files, which are used through all scenarios can be found in the vsimrti/etc folder. These files contain information about how simulators interact, which remote hosts exists etc.. If you only want to perform simulations using the preconfigured simulators in the all-in-one package you do not need to make changes here. In the vsimrti/scenarios folder you can find the scenario specific configuration files, separated by component, e.g. traffic simulator or communication simulator. This configuration can be changed in the file vsimrti/etc/defaults.xml (see A.1). For normal usage of VSimRTI, this configuration does not need to be changed. Please edit this file only, if you know what you are doing, as unwanted side effects might occur. The configuration of VSimRTI ambassadors is done by using configuration files in the folder vsimrti/scenarios/ / . To configure ulators should scenario be specific active in VSimRTI a options, simulation e.g. scenario, vsimrti/scenarios/ /vsimrti/vsimrti_config.xml to you define which sim- can adjust the file located in vsimrti/scenarios/ /vsimrti . The overall folder structure is as follows: Appendix A VSimRTI deployment A.1 VSimRTI Folder Structure vsimrti bin ........................................................ path containing binary files etc .......................................... path containing general configuration files defaults.xml ............................................................ (see A.1) hosts.json .............................................................. (see A.2) logback.xml ............................................................. (see A.3) lib ................................... path containing system specific (non JAR) libraries logs .............................................................. path for all log files scenarios .................................. path for scenario specific configuration files Barnim .................................... path containing Barnim example scenario Tiergarten ............................. path containing Tiergarten example scenario tmp ......................................... path for temporary files during a simulation simrun.sh ........................................ shell script to start a simulation series simrun.bat ...................................... batch script to start a simulation series systeminfo.txt ............................................................. (see A.4) vsimrti.sh ...................................... shell script to start a single simulation vsimrti.bat ..................................... batch script to start a single simulation vsimrti.dat ...................................................... VSimRTI license file vsimrti-license.lcs ............................................. VSimRTI license file Figure A.1: VSimRTI folder structure VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 97 Appendix A VSimRTI deployment A.2 File listings A.2 File listings etc/defaults.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // www . dcaiti . tu - berlin . de / research / ⤦ Ç simulation / download / get / etc / defaults . xsd " > < federates > < federate class = " com . dcaiti . vsimrti . fed . omnetpp . ambassador . O m n e t p p A m b a s s a d o r " > < id > omnetpp id > < deploy > true deploy > < start > true start > < host > local host > < port > 4998 port > < dockerImage > dockerImage > < config > omn etpp_c onfig . json config > < messages > < message > AddedVehicle message > < message > AddedRsu message > < message > A d d e d T r a f f i c L i g h t message > < message > V e h i c l e M o v e m e n t s message > < message > SendV 2XMess age message > < message > C o n f i g u r e A d H o c C o m m u n i c a t i o n message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . ns3 . ambassador . Ns3Ambassador " > < id > ns3 id > < deploy > true deploy > < start > true start > < host > local host > < port > 5011 port > < dockerImage > dockerImage > < config > ns3_config . json config > < messages > < message > AddedVehicle message > < message > AddedRsu message > < message > A d d e d T r a f f i c L i g h t message > < message > V e h i c l e M o v e m e n t s message > < message > SendV 2XMess age message > < message > C o n f i g u r e A d H o c C o m m u n i c a t i o n message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . sns . ambassador . SnsAmbassador " > < id > sns id > < deploy > false deploy > < start > false start > < host > local host > < config > sns_config . json config > < messages > < message > AddedVehicle message > < message > AddedRsu message > < message > A d d e d T r a f f i c L i g h t message > < message > V e h i c l e M o v e m e n t s message > < message > SendV 2XMess age message > < message > C o n f i g u r e A d H o c C o m m u n i c a t i o n message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . sumo . ambassador . SumoA mbassa dor " > < id > sumo id > < deploy > true deploy > < start > true start > < host > local host > < port >0 port > < config > sumo_config . json config > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 98 Appendix A VSimRTI deployment 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 A.2 File listings < messages > < message > V e h i c l e T y p e s I n i t M e s s a g e message > < message > V e h i c l e P a t h s I n i t M e s s a g e message > < message > AddedVehicle message > < message > SetMaxSpeed message > < message > SlowDown message > < message > P r o p a g a t e N e w R o u t e message > < message > C h a n g e S t a t i c R o u t e message > < message > C h a n g e S t a t i c R o u t e B y E d g e message > < message > ChangeLane message > < message > C h a n g e T r a f f i c L i g h t s S t a t e message > < message > Stop message > < message > Resume message > < message > S u m o T r a c i B y t e A r r a y M e s s a g e message > < message > E n a b l e D i s t a n c e S e n s o r s message > < message > C h a n g e V e h i c l e P a r a m e t e r s message > < message > ChangeSpeed message > < message > Vehic leCont rol message > < message > V e h i c l e M o v e m e n t s message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . applicationNT . ambassador . ⤦ Ç ApplicationNTAmbassador "> < id > applicationNT id > < deploy > false deploy > < start > false start > < host > local host > < port >0 port > < config > a p p l i c a t i o n N T _ c o n f i g . json config > < messages > < message > AddedRsu message > < message > A d d e d C h a r g i n g S t a t i o n message > < message > A d d e d T r a f f i c L i g h t message > < message > AddedVehicle message > < message > A p p l i c a t i o n S p e c i f i c M e s s a g e message > < message > C h a n g e V e h i c l e S t a t e message > < message > C h a r g i n g S t a t i o n U p d a t e message > < message > C h a r g i n g R e j e c t e d message > < message > V e h i c l e E l e c t r i c I n f o r m a t i o n M e s s a g e message > < message > P r o p a g a t e N e w R o u t e message > < message > R e c e i v e V 2 X M e s s a g e message > < message > R e c e i v e F u l l V 2 X M e s s a g e message > < message > A c k n o w l e d g e V 2 X M e s s a g e message > < message > SensorData message > < message > S u m o T r a c i B y t e A r r a y M e s s a g e R e s p o n s e C o n t a i n e r message > < message > U p d a t e T r a f f i c L i g h t message > < message > V e h i c l e M o v e m e n t s message > < message > V e h i c l e P a t h s I n i t M e s s a g e message > < message > V e h i c l e T y p e s I n i t M e s s a g e message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . eventserver . ambassador . E v e n t s e r v e r A m b a s s a d o r " > < id > eventserver id > < deploy > false deploy > < start > false start > < host > local host > < config > e v e n t s e r v e r _ c o n f i g . json config > < messages > < message > S e n s o r R e g i s t r a t i o n message > < message > V e h i c l e M o v e m e n t s message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . mapping3 . M a p p i n g A m b a s s a d o r " > < id > mapping3 id > < deploy > false deploy > < start > false start > < host > local host > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 99 Appendix A VSimRTI deployment 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 A.2 File listings < config > map ping_c onfig . json config > < messages > < message > V e h i c l e P a t h s I n i t M e s s a g e message > < message > S c e n a r i o T r a f f i c L i g h t s message > < message > S c e n a r i o A d d e d V e h i c l e message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . cell2 . ambassador . Ce ll 2 Am ba s sa do r " > < id > cell2 id > < deploy > false deploy > < start > false start > < host > local host > < config > cell2_config . json config > < messages > < message > AddedVehicle message > < message > AddedRsu message > < message > A d d e d T r a f f i c L i g h t message > < message > A d d e d C h a r g i n g S t a t i o n message > < message > V e h i c l e M o v e m e n t s message > < message > SendV 2XMess age message > < message > C o n f i g u r e C e l l C o m m u n i c a t i o n message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . battery . ambassador . B a t t e r y A m b a s s a d o r " > < id > battery id > < deploy > false deploy > < start > false start > < host > local host > < config > bat tery_c onfig . json config > < messages > < message > AddedVehicle message > < message > V e h i c l e M o v e m e n t s message > < message > C ha r gi ng S ta rt e d message > < message > C ha r gi ng S to pp e d message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . c ha r gi n gs ta t io n . ambassador . ⤦ Ç ChargingStationAmbassador "> < id > c h ar g in gs t at io n id > < deploy > false deploy > < start > false start > < host > local host > < config > c h a r g i n g s t a t i o n _ c o n f i g . json config > < messages > < message > A d d e d C h a r g i n g S t a t i o n message > < message > ChargeRequest message > < message > S t o p C h a r g e R e q u e s t message > < message > C h a r g i n g S t a t i o n U p d a t e message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . visual . V i s u a l i z a t i o n A m b a s s a d o r " > < deploy > false deploy > < start > false start > < id > visualizer id > < host > local host > < port > 5099 port > < update >1 update > < config > v i s u a l i z e r _ c o n f i g . xml config > < messages > < message > V e h i c l e T y p e s I n i t M e s s a g e message > < message > V e h i c l e P a t h s I n i t M e s s a g e message > < message > AddedVehicle message > < message > AddedRsu message > < message > A d d e d T r a f f i c L i g h t message > < message > A d d e d C h a r g i n g S t a t i o n message > < message > V e h i c l e M o v e m e n t s message > < message > SensorData message > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 100 Appendix A VSimRTI deployment 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 A.2 File listings < message > V e h i c l e E l e c t r i c I n f o r m a t i o n M e s s a g e message > < message > U p d a t e T r a f f i c L i g h t message > < message > C h a r g i n g S t a t i o n U p d a t e message > < message > SetMaxSpeed message > < message > SlowDown message > < message > ChangeRoute message > < message > C h a n g e S t a t i c R o u t e message > < message > ChangeLane message > < message > C h a n g e T r a f f i c L i g h t s S t a t e message > < message > A p p l i c a t i o n I t e f M e s s a g e message > < message > SendV 2XMess age message > < message > R e c e i v e V 2 X M e s s a g e message > < message > D e l e t e V 2 X M e s s a g e message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . phabmacs . ambassador . P h a b m a c s A m b a s s a d o r " > < id > phabmacs id > < deploy > true deploy > < start > true start > < host > local host > < port > 50423 port > < config > p h ab m ac s_ c on fi g . json config > < j a v a M e m o r y S i z e X m s > 100 j a v a M e m o r y S i z e X m s > < j a v a M e m o r y S i z e X m x > 4086 j a v a M e m o r y S i z e X m x > < classpath >../../../../ federates / phabmacs / phabmacs - federate / target / classes ⤦ Ç classpath > javaClasspathEntries > --> - Xdebug - X r u n j d w p : t r a n s p o r t = dt_socket \ , server = y \ , suspend = n ⤦ Ç \ , address =8086 customJavaArgument > --> < messages > < message > V e h i c l e T y p e s I n i t M e s s a g e message > < message > V e h i c l e P a t h s I n i t M e s s a g e message > < message > AddedVehicle message > < message > AddedRsu message > < message > ChangeSpeed message > < message > S et A cc el e ra ti o n message > < message > SetMaxSpeed message > < message > SlowDown message > < message > C h a n g e S t a t i c R o u t e message > < message > C h a n g e S t a t i c R o u t e B y E d g e message > < message > ChangeLane message > < message > Stop message > < message > Resume message > < message > C h a n g e T r a f f i c L i g h t s S t a t e message > < message > P r o p a g a t e N e w R o u t e message > < message > SetActuators message > < message > SendV 2XMess age message > < message > R e c e i v e V 2 X M e s s a g e message > < message > CurrentEvents message > < message > Vehic leCont rol message > < message > V e h i c l e M o v e m e n t s message > messages > federate > < federate class = " com . dcaiti . vsimrti . fed . phasca . ambassador . P h a s c a A m b a s s a d o r " > < id > phasca id > < deploy > true deploy > < start > false start > < host > local host > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 101 Appendix A VSimRTI deployment 259 260 261 262 263 264 265 A.2 File listings < config > phasca_config . json config > < messages > < message > AddedVehicle message > messages > federate > federates > configuration > Listing A.1: VSimRTI: file listing: etc/defaults.xml VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 102 Appendix A VSimRTI deployment A.2 File listings etc/hosts.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 { " localHosts " : [ { " id " : " local " , " w o r k i n g D i r e c t o r y " : " ./ tmp " , " address " : " localhost " , " op er a ti ng S ys t em " : " linux " } ], " remoteHosts " : [ { " id " : " remote " , " w o r k i n g D i r e c t o r y " : " / home / vsimrti / test / tmp " , " address " : " 192.168.0.1 " , " op er a ti n gS ys t em " : " linux " , " user " : " username " , " password " : " password " , " port " : 22 } ] } Listing A.2: VSimRTI: file listing: etc/hosts.json etc/logback.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // www . dcaiti . tu - berlin . de / research / ⤦ Ç simulation / download / get / etc / logback . xsd " > < if condition = ’ isDefined (" logDirectory ") ’ > < then > < property name = " logDirectory " value = " ${ logDirectory } " / > < appender name = " STDOUT " class = " ch . qos . logback . core . C o ns o le Ap p en de r " > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " STDOUT - TimeAdvance " class = " ch . qos . logback . core . Co ns o le Ap p en de r " > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date { HH:mm:ss } - % msg pattern > encoder > appender > < appender name = " STDOUT - DbLoading " class = " ch . qos . logback . core . C on so l eA p pe nd e r " > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date { HH:mm:ss . SSS } - % msg pattern > encoder > appender > < appender name = " STDOUT - MessageOnly " class = " ch . qos . logback . core . Co ns o le Ap p en d er " > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% msg % n pattern > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 103 Appendix A VSimRTI deployment 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 A.2 File listings encoder > appender > < appender name = " VsimrtiLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ VSimRTI . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " TrafficLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Traffic . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > < append > false append > appender > < appender name = " C o m m u n i c a t i o n L o g " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Communication . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " C o m m u n i c a t i o n D e t a i l s L o g " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ C o m m u n i c a t i o n D e t a i l s . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% msg % n pattern > encoder > < append > false append > appender > < appender name = " A p p l i c a t i o n N T L o g " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ ApplicationNT . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " A p p l i c a t i o n N t L o g D e l e g a t i o n " class = " ch . qos . logback . classic . sift . ⤦ Ç S if t in gA p pe nd e r " > < discriminator > < key > path key > < defaultValue > unknown defaultValue > discriminator > < sift > < appender name = " FILE -${ unitId } " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ appsNT /${ path }. log file > < layout class = " ch . qos . logback . classic . PatternLayout " > < pattern >% date % -5 level - % msg % n pattern > layout > appender > sift > appender > < appender name = " G e n e r a l P u r p o s e A m b a s s a d o r " class = " ch . qos . logback . classic . sift . ⤦ Ç S if t in gA p pe nd e r " > < discriminator > < key > loggerId key > < defaultValue > unknown defaultValue > discriminator > < sift > < appender name = " FILE -${ loggerId } " class = " ch . qos . logback . core . FileAppender " ⤦ Ç > < file > ${ logDirectory }/ loggerId -${ loggerId }. log file > < layout class = " ch . qos . logback . classic . PatternLayout " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > layout > appender > sift > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 104 Appendix A VSimRTI deployment 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 A.2 File listings appender > < appender name = " StatisticsLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ statistics . csv file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} [% thread ] - % msg % n pattern > encoder > appender > < appender name = " MappingLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Mapping . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < logger name = " d b L o a d i n g P r o g r e s s " additivity = " false " level = " INFO " > < appender - ref ref = " STDOUT - DbLoading " / > logger > < appender name = " NavigationLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Navigation . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " Env ironme ntLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Environment . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " Cell2Log " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Cell2 . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " BatteryLog " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ Battery . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < appender name = " C h a r g i n g S t a t i o n L o g " class = " ch . qos . logback . core . FileAppender " > < file > ${ logDirectory }/ C h ar gi n gS t at io n . log file > < encoder class = " ch . qos . logback . classic . encoder . P a t t e r n L a y o u t E n c o d e r " > < pattern >% date % -5 level % logger {0} - % msg % n pattern > encoder > appender > < logger name = " VSimRT IStar ter " additivity = " false " level = " INFO " > < appender - ref ref = " VsimrtiLog " / > logger > < logger name = " com . dcaiti . vsimrti . docker " additivity = " false " level = " INFO " > < appender - ref ref = " VsimrtiLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . sumo " additivity = " false " level = " INFO " > < appender - ref ref = " TrafficLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . omnetpp " additivity = " false " level = " INFO " > < appender - ref ref = " C o m m u n i c a t i o n L o g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . ns3 " additivity = " false " level = " INFO " > < appender - ref ref = " C o m m u n i c a t i o n L o g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . sns " additivity = " false " level = " INFO " > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 105 Appendix A VSimRTI deployment 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 A.2 File listings < appender - ref ref = " C o m m u n i c a t i o n L o g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . ns3 . ambassador . N s 3 A m b a s s a d o r O u t p u t " ⤦ Ç additivity = " false " level = " INFO " > < appender - ref ref = " C o m m u n i c a t i o n D e t a i l s L o g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . omnetpp . ambassador . O m n e t p p A m b a s s a d o r O u t p u t " ⤦ Ç additivity = " false " level = " INFO " > < appender - ref ref = " C o m m u n i c a t i o n D e t a i l s L o g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . applicationNT . ambassador . navigation " ⤦ Ç additivity = " false " level = " INFO " > < appender - ref ref = " NavigationLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . applicationNT " additivity = " false " level = " INFO ⤦ Ç "> < appender - ref ref = " A p p l i c a t i o n N T L o g " / > logger > < logger name = " A p p l i c a t i o n N t L o g D e l e g a t e " additivity = " false " level = " INFO " > < appender - ref ref = " A p p l i c a t i o n N t L o g D e l e g a t i o n " / > logger > < logger name = " com . dcaiti . vsimrti . fed . eventserver " additivity = " false " level = " INFO " > < appender - ref ref = " E nviron mentLo g " / > logger > < logger name = " com . dcaiti . vsimrti . fed . mapping3 " additivity = " false " level = " INFO " > < appender - ref ref = " MappingLog " / > logger > < logger name = " com . dcaiti . vsimrti . lib . routing " additivity = " false " level = " INFO " > < appender - ref ref = " NavigationLog " / > logger > < logger name = " com . graphhopper " additivity = " false " level = " INFO " > < appender - ref ref = " NavigationLog " / > logger > < logger name = " net . sf . jsi " additivity = " false " level = " OFF " > < appender - ref ref = " NavigationLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . cell2 " additivity = " false " level = " INFO " > < appender - ref ref = " Cell2Log " / > logger > < logger name = " com . dcaiti . vsimrti . fed . battery " additivity = " false " level = " INFO " > < appender - ref ref = " BatteryLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . phabmacs " additivity = " false " level = " INFO " > < appender - ref ref = " TrafficLog " / > logger > < logger name = " com . dcaiti . vsimrti . fed . ch a rg i ng st a ti on " additivity = " false " level = " ⤦ Ç INFO " > < appender - ref ref = " C h a r g i n g S t a t i o n L o g " / > logger > < logger name = " statistics " additivity = " false " level = " OFF " > < appender - ref ref = " StatisticsLog " / > logger > < logger name = " com . dcaiti . vsimrti . rti . services . time " additivity = " false " level = " INFO ⤦ Ç "> < appender - ref ref = " STDOUT - TimeAdvance " / > logger > < logger name = " com . dcaiti . vsimrti . start " additivity = " false " level = " INFO " > < appender - ref ref = " STDOUT - MessageOnly " / > logger > < root level = " INFO " > < appender - ref ref = " STDOUT " / > < appender - ref ref = " VsimrtiLog " / > root > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 106 Appendix A VSimRTI deployment 227 228 229 230 A.2 File listings then > if > configuration > Listing A.3: VSimRTI: file listing: etc/logback.xml systeminfo.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 { " userid " : " 0 " , " version " : " 1.0 " , arch " : " i686 " , " os " : " Linux " , " osversion " : " 12.04 " , " cpumodel " : " atom ( tm ) cpun270@1 .60 ghz " , " sockets " :1 , " cores " :2 , " memory " :1024 , " type " : " checkin " , " loginmd5 " : " 7 f e 5 b 9 b 9 3 0 5 c e 3 f f c d 1 8 e 3 2 b f 0 f 0 b 9 d 9 " , " simulatio nuuid " : " " , " macs " : [ " 00 : 22 :0 0 :0 0: 0 e: 0 0 " ," 00 : 00 :5 4 :0 0 :0 0: 0 0 " ]} Listing A.4: VSimRTI: file listing: systeminfo.txt VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 107 Appendix B Example scenario Barnim You will find a collection of all relevant data. B.1 Folder Structure Barnim applicationNT ..................................................................... applications ................................................................... Barnim.db ............................................... not listed (binary content) battery ............................................................................ battery_config.json .................................................... (see B.1) eventserver ....................................................................... eventserver_config.json ............................. not listed (in this release) cell2 .............................................................................. cell2_config.json ...................................................... (see B.2) network.json ............................................................ (see B.3) regions.json ............................................................ (see B.4) mapping3 ........................................................................... mapping_config.json .................................................... (see B.5) sns ................................................................................ sns_config.json ........................................................ (see B.6) sources ............................................................................ Barnim_fixed.osm .......................................... partially listed (see B.7) sumo ............................................................................... Barnim.edg.xml ............................................ partially listed (see B.8) Barnim.net.xml ............................................ partially listed (see B.9) Barnim.nod.xml ........................................... partially listed (see B.10) Barnim.rou.xml ........................................................ (see B.11) Barnim.sumo.cfg ....................................................... (see B.12) sumo_config.json ...................................................... (see B.13) visualizer ........................................................................ visualizer_config.xml ................................................ (see B.14) vsimrti ............................................................................ vsimrti_config.xml .................................................... (see B.15) simrun_config.xml ..................................................... (see B.16) Figure B.1: Scenario Barnim: folder structure Appendix B Example scenario Barnim B.2 File listings B.2 File listings battery/battery_config.json 1 2 3 4 5 6 7 8 9 10 11 { " v ehi cl e M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . vehicle . ElectricSmart " , " ve h ic l e M o d e l C o n f i g " : { " Mass " : 1060 , " ReferenceArea " : 1.95 , " Dr ag C oe ff i ci e nt " : 0.375 , " T a n k T o W h e e l E f f i c i e n c y " : 0.7 , " E l e t r i c M o t o r O p e r a t i n g V o l t a g e " : 350 , " C o n s u m e r O p e r a t i n g V o l t a g e " : 12 }, " b att er y M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . battery . ⤦ Ç VerySimpleBatteryModel ", " ba t te r y M o d e l C o n f i g " : { " NumberOfCells " : 93 , " CellVoltage " : 4.3 , " C e l l C a p a c i t y I n A h " : 50 , " eff_Summer " : 0.8448 , " Re chargi ngType " : 2 , " MinSOC " : 0.30 , " MaxSOC " : 0.70 }, " e n v i r o n m e n t M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . environment . ⤦ Ç DefaultEnvironment ", " environmentModelConfig ": { " Gravity " : 9.81 , " FluidDensity " : 1.293 , " R o l l i n g R e s i s t a n c e C o e f f i c i e n t " : 0.01 }, " consumers " : [ { " Radio " : 10 } , { " HeadLight " : 100 } ] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 } Listing B.1: Scenario Barnim: file listing: battery/battery_config.json cell2/cell2_config.json 1 2 3 4 5 6 { " debug G eo ca s ti ng " : false , " visua l i z e R e g i o n s " : false , " n e t w o r k C o n f i g u r a t i o n F i l e " : " network . json " , " r e g i o n C o n f i g u r a t i o n F i l e " : " regions . json " } Listing B.2: Scenario Barnim: file listing: cell2/cell2_config.json cell2/network.json 1 2 3 4 5 6 7 8 9 10 { " globalRegion " : { " uplink " : { " delay " : { " type " : " delay " : " prpl " : " retries " : }, " capacity " : " ConstantDelay " , 100 , 0, 2 28000000 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 109 Appendix B Example scenario Barnim 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 B.2 File listings }, " downlink " : { " unicast " : { " delay " : { " type " : " delay " : " prpl " : " retries " : } }, " multicast " : { " delay " : { " type " : " delay " : " prpl " : }, " usable Capac ity " : }, " capacity " : } " ConstantDelay " , 100 , 0, 2 " ConstantDelay " , 100 , 0 0.6 42200000 } } Listing B.3: Scenario Barnim: file listing: cell2/network.json cell2/regions.json 1 2 3 4 { " regions " : [ ] } Listing B.4: Scenario Barnim: file listing: cell2/regions.json mapping3/mapping_config.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 { " prototypes " :[ { " name " : " PKW " , " accel " :2.6 , " decel " :4.5 , " length " :5.00 , " maxSpeed " :70.0 , " minGap " :2.5 , " sigma " :0.5 , " tau " :1 }, { " name " : " electricPKW " , " vehicleClass " : " El e ct ri c Ve hi c le " , " accel " :2.6 , " decel " :4.5 , " length " :5.00 , " maxSpeed " :40.0 , " minGap " :2.5 , " sigma " :0.5 , " tau " :1 }, { " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . WeatherServer " ] , VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 110 Appendix B Example scenario Barnim 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 " name " : " WeatherServer " } ], " rsus " :[ { " lat " :52.65027421760045 , " lon " :13.545005321502686 , " name " : " WeatherServer " } ], " vehicles " :[ { " startingTime " : 5.0 , " targetDensity " :1200 , " m a x N u m b e r V e h i c l e s " : 120 , " route " : " 1 " , " types " :[ { " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . W e a t h e r W a r n i n g A p p C e l l " ⤦ Ç , " com . dcaiti . vsimrti . app . tutorials . barnim . SlowDownApp " ] , " name " : " PKW " , " weight " :0.1 }, { " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . W e a t h e r W a r n i n g A p p " , " ⤦ Ç com . dcaiti . vsimrti . app . tutorials . barnim . SlowDownApp " ] , " name " : " PKW " , " weight " :0.2 }, { " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . SlowDownApp " ] , " name " : " PKW " , " weight " :0.6 }, { " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . SlowDownApp " ] , " name " : " electricPKW " , " weight " :0.1 } ] } ] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 B.2 File listings } Listing B.5: Scenario Barnim: file listing:mapping3/mapping_config.json VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 111 Appendix B Example scenario Barnim B.2 File listings sns/sns_config.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 { " version " : " 0.16.0 " , " singlehop " : { " _singlehop radius in m " : 0 , " radius " : 509.4 , " _delay config according to vsimrti - communication " : 0 , " delay " : { " type " : " SimpleRandomDelay ", " steps " : 5, " minDelay " : 0.4 , " maxDelay " : 2.4 , " prpl " : 0, " retries " : 0 } }, " multihop " : { " _delay config according to vsimrti - communication " : 0 , " delay " : { " type " : " GammaRandomDelay ", " minDelay " : 10 , " expDelay " : 30 , " prpl " : 0, " retries " : 2 } } } Listing B.6: Scenario Barnim: file listing: sns/sns_config.json sources/Barnim_fixed.osm Note: This file is partially listed. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 xml version = ’ 1.0 ’ encoding = ’UTF -8 ’? > < osm version = ’ 0.6 ’ upload = ’ true ’ generator = ’ JOSM ’ > < bounds minlat = ’ 52.59241 ’ minlon = ’ 13.51215 ’ maxlat = ’ 52.65827 ’ maxlon = ’ 13.6227 ’ origin = ’ ⤦ Ç CGImap 0.3.3 (11990 thorn -02. openstreetmap . org ) ’ / > < node id = ’ 9671195 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 43566 ’ user = ’ anbr ’ visible = ’ true ’ ⤦ Ç version = ’4 ’ changeset = ’ 2383615 ’ lat = ’ 52.5798854 ’ lon = ’ 13.6374307 ’ / > < node id = ’ 9671197 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 43566 ’ user = ’ anbr ’ visible = ’ true ’ ⤦ Ç version = ’5 ’ changeset = ’ 14033189 ’ lat = ’ 52.5905574 ’ lon = ’ 13.6219588 ’ / > < node id = ’ 9671202 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’5 ’ changeset = ’ 13985567 ’ lat = ’ 52.6051075 ’ lon = ’ 13.5993505 ’ / > < node id = ’ 21508739 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 43566 ’ user = ’ anbr ’ visible = ’ true ’ ⤦ Ç version = ’6 ’ changeset = ’ 17739489 ’ lat = ’ 52.6639091 ’ lon = ’ 13.5696135 ’ / > < node id = ’ 21508746 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 118278 ’ user = ’ Panketaler ’ visible = ⤦ Ç ’ true ’ version = ’ 12 ’ changeset = ’ 19973396 ’ lat = ’ 52.6240762 ’ lon = ’ 13.5434165 ’ / > < node id = ’ 21508747 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 118278 ’ user = ’ Panketaler ’ visible = ⤦ Ç ’ true ’ version = ’ 27 ’ changeset = ’ 4921151 ’ lat = ’ 52.6297992 ’ lon = ’ 13.5459023 ’ / > < node id = ’ 21508748 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 118278 ’ user = ’ Panketaler ’ visible = ⤦ Ç ’ true ’ version = ’4 ’ changeset = ’ 4746323 ’ lat = ’ 52.6392207 ’ lon = ’ 13.5605381 ’ / > < node id = ’ 21508756 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 118278 ’ user = ’ Panketaler ’ visible = ⤦ Ç ’ true ’ version = ’6 ’ changeset = ’ 19973383 ’ lat = ’ 52.6266342 ’ lon = ’ 13.5441771 ’ / > < node id = ’ 21508757 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 43566 ’ user = ’ anbr ’ visible = ’ true ’ ⤦ Ç version = ’4 ’ changeset = ’ 17739489 ’ lat = ’ 52.662124 ’ lon = ’ 13.569613 ’ / > < node id = ’ 21508763 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’8 ’ changeset = ’ 18626470 ’ lat = ’ 52.614571 ’ lon = ’ 13.5536105 ’ / > < node id = ’ 26971235 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’9 ’ changeset = ’ 16740262 ’ lat = ’ 52.6126837 ’ lon = ’ 13.5681426 ’ / > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 112 Appendix B Example scenario Barnim 15 16 17 18 19 20 21 22 B.2 File listings < node id = ’ 26971236 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’9 ’ changeset = ’ 16740262 ’ lat = ’ 52.6124118 ’ lon = ’ 13.5701801 ’ / > < node id = ’ 26971237 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 579301 ’ user = ’ Lamarqe ’ visible = ’ ⤦ Ç true ’ version = ’5 ’ changeset = ’ 12440961 ’ lat = ’ 52.6236544 ’ lon = ’ 13.5757994 ’ / > < node id = ’ 26971240 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’5 ’ changeset = ’ 13985567 ’ lat = ’ 52.6137568 ’ lon = ’ 13.564784 ’ / > < node id = ’ 26971241 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 90528 ’ user = ’ Peter Maiwald ’ ⤦ Ç visible = ’ true ’ version = ’4 ’ changeset = ’ 8364243 ’ lat = ’ 52.6135612 ’ lon = ’ 13.565324 ’ / > < node id = ’ 26971244 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’6 ’ changeset = ’ 13985567 ’ lat = ’ 52.614347 ’ lon = ’ 13.5636669 ’ / > < node id = ’ 26971267 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’9 ’ changeset = ’ 18626470 ’ lat = ’ 52.6141673 ’ lon = ’ 13.5561542 ’ / > < node id = ’ 26971272 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’ 11 ’ changeset = ’ 12771612 ’ lat = ’ 52.6131516 ’ lon = ’ 13.5672267 ’ / > < node id = ’ 26971273 ’ timestamp = ’ 2014 -03 -25 T09:54:31Z ’ uid = ’ 429794 ’ user = ’ SennaHB ’ visible = ’ ⤦ Ç true ’ version = ’ 14 ’ changeset = ’ 18626470 ’ lat = ’ 52.6150704 ’ lon = ’ 13.5439418 ’ / > Listing B.7: Scenario Barnim: file listing: sources/Barnim_fixed.osm sumo/Barnim.edg.xml Note: This file is partially listed. 1 2 3 4 5 < edges > < edge id = " 23995140 _ 2 6 0 1 6 2 5 3 9 _ 2 6 0 1 6 2 5 5 4 _ 2 6 0 1 6 2 5 3 9 " from = " 260162539 " to = " 260162554 " numLanes = ⤦ Ç " 1 " speed = " 8.33 " / > < edge id = " 23995140 _ 2 6 0 1 6 2 5 3 9 _ 2 6 0 1 6 2 5 5 8 _ 2 6 0 1 6 2 5 3 9 " from = " 260162539 " to = " 260162558 " numLanes = ⤦ Ç " 1 " speed = " 8.33 " / > < edge id = " 116570245 _ 1 3 1 3 8 8 5 5 0 9 _ 8 6 6 6 1 4 4 8 8 _ 1 3 1 3 8 8 5 5 0 9 " from = " 1313885509 " to = " 866613837 " ⤦ Ç numLanes = " 2 " speed = " 22.22 " / > < edge id = " 116570245 _ 1 3 1 3 8 8 5 5 0 9 _ 8 6 6 6 1 4 4 8 8 _ 8 6 6 6 1 3 8 3 7 " from = " 866613837 " to = " 2026362890 " ⤦ Ç numLanes = " 2 " speed = " 22.22 " / > Listing B.8: Scenario Barnim: file listing: sumo/Barnim.edg.xml sumo/Barnim.net.xml Note: This file is partially listed. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi =" http: // www . w3 . org /2001/ XMLSchema - instance " ⤦ Ç x s i : n o N a m e s p a c e S c h e m a L o c a t i o n =" http: // sumo . dlr . de / xsd / n e t c o n v e r t C o n f i g u r a t i o n . xsd " > < input > < node - files value =" D: \ dev \ scenarios \ Barnim - Startaufgabe \ applicationNT \ Barnim . nod . xml ⤦ Ç "/ > < edge - files value =" D: \ dev \ scenarios \ Barnim - Startaufgabe \ applicationNT \ Barnim . edg . xml ⤦ Ç "/ > < connection - files value =" D: \ dev \ scenarios \ Barnim - Startaufgabe \ applicationNT \ Barnim . con ⤦ Ç . xml "/ > input > < output > < output - file value =" D: \ dev \ scenarios \ Barnim - Startaufgabe \ applicationNT \ Barnim . net . xml ⤦ Ç "/ > output > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 113 Appendix B Example scenario Barnim 18 19 20 21 22 23 24 25 26 27 28 29 30 B.2 File listings configuration > --> < net version = " 0.27 " xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " ⤦ Ç x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // sumo . dlr . de / xsd / net_file . xsd " > < location netOffset = " -397957.77 , -5826114.68 " convBoundary = " 0.00 ,0.00 ,9905.80 ,10297.64 " ⤦ Ç origBoundary = " 397957.77 ,5826114.68 ,407863.57 ,5836412.32 " projParameter = " ! " / > < edge id = " :1003778301_0 " function = " internal " > < lane id = " :1 00 3 77 8 30 1_ 0 _0 " index = " 0 " speed = " 8.33 " length = " 0.29 " shape = " ⤦ Ç 1221.68 ,7155.88 ,68.90 1221.42 ,7155.74 ,68.90 " / > edge > < edge id = " :1003778301_1 " function = " internal " > < lane id = " :1 00 3 77 8 30 1_ 1 _0 " index = " 0 " speed = " 8.33 " length = " 0.31 " shape = " ⤦ Ç 1223.08 ,7152.88 ,68.90 1223.34 ,7153.03 ,68.90 " / > edge > Listing B.9: Scenario Barnim: file listing: sumo/Barnim.net.xml sumo/Barnim.nod.xml Note: This file is partially listed. 1 2 3 4 5 < nodes > < node < node < node < node id = " 866613617 " x = " 401721.2894 " y = " 5830383.5757 " z = " 58.9788 " type = " priority " / > id = " 2632245436 " x = " 399909.1546 " y = " 5834705.7934 " z = " 60.0000 " type = " priority " / > id = " 41240371 " x = " 405205.4892 " y = " 5835368.8690 " z = " 69.9442 " type = " priority " / > id = " 268746480 " x = " 402891.3857 " y = " 5833194.2388 " z = " 68.1866 " type = " priority " / > Listing B.10: Scenario Barnim: file listing: sumo/Barnim.nod.xml sumo/Barnim.rou.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi =" http: // www . w3 . org /2001/ XMLSchema - instance " ⤦ Ç x s i : n o N a m e s p a c e S c h e m a L o c a t i o n =" http: // sumo - sim . org / xsd / d u a r o u t e r C o n f i g u r a t i o n . xsd " > < input > < trip - files value =".\ trips . xml "/ > input > < output > < output - file value =" Barnim . rou . xml "/ > output > configuration > --> < routes xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " ⤦ Ç http: // sumo - sim . org / xsd / routes_file . xsd " > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 114 Appendix B Example scenario Barnim 23 24 < route Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç < route Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç B.2 File listings id = " 1 " edges = " 4067968 _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 2 4 5 0 9 3 8 9 1 4 4067968 ⤦ _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 6 0 6 3 5 6 2 9 4067968 _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 2 6 7 9 2 5 2 5 1 4067968 ⤦ _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 5 9 9 8 2 6 2 3 0 62710154 _ 3 9 9 3 3 9 2 7 _ 3 9 9 3 3 9 2 1 _ 3 9 9 3 3 9 2 7 73017982 ⤦ _ 3 9 9 3 3 9 2 1 _ 2 0 2 6 3 6 2 9 4 0 _ 3 9 9 3 3 9 2 1 73017982 _ 3 9 9 3 3 9 2 1 _ 2 0 2 6 3 6 2 9 4 0 _ 2 0 2 6 3 6 2 9 4 3 -3366 ⤦ _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 0 2 6 3 6 2 9 4 0 -3366 _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 0 2 6 3 6 2 9 3 8 -3366 ⤦ _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 3 6 4 4 7 4 8 5 1 -3366 _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 1 3 1 3 8 8 5 4 4 2 -3366 ⤦ _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 0 2 6 3 6 2 9 3 4 -3366 _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 3 6 4 4 7 4 8 5 0 -3366 ⤦ _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 0 2 6 3 6 2 9 3 0 -3366 _ 2 0 2 6 3 6 2 9 4 0 _ 1 3 1 3 8 8 5 5 0 2 _ 2 0 2 6 3 6 2 9 2 9 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 1 3 1 3 8 8 5 5 0 2 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 2 3 6 4 4 7 4 8 4 9 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 1 3 1 3 8 8 5 4 9 3 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 2 3 6 4 4 7 4 8 4 7 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 1 3 1 3 8 8 5 4 5 5 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 1 3 1 3 8 8 5 4 5 2 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 4 2 1 8 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 1 3 1 3 8 8 5 4 7 4 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 4 1 2 7 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 4 3 7 9 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 4 7 6 0 73017981 _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 3 7 6 1 73017981 ⤦ _ 1 3 1 3 8 8 5 5 0 2 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 4 2 5 4 116570220 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 4 5 2 6 116570220 ⤦ _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 3 6 1 1 _ 1 3 1 3 8 8 5 3 8 3 116570220 _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 3 6 1 1 _ 2 3 1 4 3 7 4 8 3 0 116570220 ⤦ _ 8 6 6 6 1 4 5 2 6 _ 8 6 6 6 1 3 6 1 1 _ 2 0 2 6 3 6 2 9 1 8 73017984 _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 3 6 1 1 73017984 ⤦ _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 2 5 3 8 5 7 4 1 9 1 73017984 _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 1 3 1 3 8 8 5 5 2 1 73017984 ⤦ _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 1 3 1 3 8 8 5 4 8 9 73017984 _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 3 6 2 73017984 ⤦ _ 8 6 6 6 1 3 6 1 1 _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 7 0 0 106057563 _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 4 7 4 _ 8 6 6 6 1 3 6 9 3 106057563 ⤦ _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 4 7 4 _ 8 6 6 6 1 4 2 0 7 106057563 _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 4 7 4 _ 1 3 1 3 8 8 5 4 1 3 106057563 ⤦ _ 8 6 6 6 1 3 6 9 3 _ 8 6 6 6 1 4 4 7 4 _ 1 3 1 3 8 8 5 4 5 1 116570250 _ 8 6 6 6 1 4 4 7 4 _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 4 4 7 4 116570250 ⤦ _ 8 6 6 6 1 4 4 7 4 _ 8 6 6 6 1 3 8 3 3 _ 2 0 2 6 3 6 2 8 5 5 116570250 _ 8 6 6 6 1 4 4 7 4 _ 8 6 6 6 1 3 8 3 3 _ 1 3 1 3 8 8 5 4 7 3 116570237 ⤦ _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 3 8 3 3 116570237 _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 1 3 1 3 8 8 5 4 8 4 116570237 ⤦ _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 2 0 2 6 3 6 2 8 4 2 116570237 _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 1 3 1 3 8 8 5 3 8 6 116570237 ⤦ _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 1 3 1 3 8 8 5 5 2 4 116570237 _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 1 9 5 116570237 ⤦ _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 5 7 0 116570237 _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 1 3 1 3 8 8 5 4 4 1 116570237 ⤦ _ 8 6 6 6 1 3 8 3 3 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 3 4 9 7 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 8 6 6 6 1 3 9 9 2 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 8 6 6 6 1 4 6 8 4 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 5 4 8 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 5 3 1 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 2 0 2 6 3 6 2 8 4 7 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 5 1 1 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 2 0 2 6 3 6 2 8 4 8 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 5 1 5 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 4 7 1 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 4 3 5 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 3 9 3 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 4 9 2 165881196 _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 4 5 4 165881196 ⤦ _ 8 6 6 6 1 3 9 9 2 _ 8 6 6 6 1 4 3 2 0 _ 1 3 1 3 8 8 5 4 1 5 232375390 _ 8 6 6 6 1 4 3 2 0 _ 8 6 6 6 1 4 3 2 3 _ 8 6 6 6 1 4 3 2 0 232375390 ⤦ _ 8 6 6 6 1 4 3 2 3 _ 8 6 6 6 1 4 0 6 2 _ 8 6 6 6 1 4 3 2 3 248048346 _ 8 6 6 6 1 4 0 6 2 _ 8 6 6 6 1 3 5 0 6 _ 8 6 6 6 1 4 0 6 2 248048344 ⤦ _ 8 6 6 6 1 3 5 0 6 _ 8 6 6 6 1 3 5 5 5 _ 8 6 6 6 1 3 5 0 6 245434998 _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 8 6 6 6 1 3 5 5 5 245434998 ⤦ _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 2 3 8 9 9 8 6 8 1 8 245434998 _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 8 6 6 6 1 3 9 0 5 116570222 ⤦ _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 1 3 1 3 8 8 5 5 3 2 116570222 _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 1 3 1 3 8 8 5 4 3 1 ⤦ 116570222 _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 2 0 2 6 3 6 2 8 2 7 116570222 ⤦ _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 2 0 2 6 3 6 2 8 2 1 192079314 _ 2 0 2 6 3 6 2 8 1 4 _ 6 9 2 7 5 5 3 8 1 _ 2 0 2 6 3 6 2 8 1 4 ⤦ 192079314 _ 2 0 2 6 3 6 2 8 1 4 _ 6 9 2 7 5 5 3 8 1 _ 2 5 1 0 5 7 5 5 6 7 182262835 _ 6 9 2 7 5 5 3 8 1 _ 4 9 8 3 2 2 9 8 _ 6 9 2 7 5 5 3 8 1 " / > id = " 2 " edges = " 4067968 _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 2 4 5 0 9 3 8 9 1 4 4067968 ⤦ _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 6 0 6 3 5 6 2 9 4067968 _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 2 6 7 9 2 5 2 5 1 4067968 ⤦ _ 2 8 8 3 0 2 1 9 _ 3 9 9 3 3 9 2 7 _ 5 9 9 8 2 6 2 3 0 5477467 _ 3 9 9 3 3 9 2 7 _ 3 3 5 3 7 6 8 9 1 _ 3 9 9 3 3 9 2 7 5477467 ⤦ _ 3 9 9 3 3 9 2 7 _ 3 3 5 3 7 6 8 9 1 _ 3 9 9 3 4 0 6 5 5477467 _ 3 9 9 3 3 9 2 7 _ 3 3 5 3 7 6 8 9 1 _ 2 6 7 9 2 3 7 3 7 5477467 ⤦ _ 3 9 9 3 3 9 2 7 _ 3 3 5 3 7 6 8 9 1 _ 2 6 7 9 2 3 7 3 9 5477467 _ 3 9 9 3 3 9 2 7 _ 3 3 5 3 7 6 8 9 1 _ 2 6 7 9 2 3 7 4 1 166752304 ⤦ _ 3 3 5 3 7 6 8 9 1 _ 3 9 9 3 3 9 1 7 _ 3 3 5 3 7 6 8 9 1 166752304 _ 3 9 9 3 3 9 1 7 _ 7 5 6 6 6 5 9 4 _ 3 9 9 3 3 9 1 7 166752304 ⤦ _ 3 9 9 3 3 9 1 7 _ 7 5 6 6 6 5 9 4 _ 5 6 4 0 0 6 5 8 0 166752304 _ 7 5 6 6 6 5 9 4 _ 7 5 6 7 3 0 5 7 _ 7 5 6 6 6 5 9 4 166752304 ⤦ _ 7 5 6 6 6 5 9 4 _ 7 5 6 7 3 0 5 7 _ 7 6 5 6 5 7 0 1 166752304 _ 7 5 6 6 6 5 9 4 _ 7 5 6 7 3 0 5 7 _ 7 3 9 3 5 6 8 4 7 166752304 ⤦ _ 7 5 6 6 6 5 9 4 _ 7 5 6 7 3 0 5 7 _ 2 1 5 0 8 7 4 8 166752304 _ 7 5 6 6 6 5 9 4 _ 7 5 6 7 3 0 5 7 _ 7 3 9 3 5 6 8 3 9 166752304 ⤦ _ 7 5 6 7 3 0 5 7 _ 3 0 3 1 8 4 5 1 9 _ 7 5 6 7 3 0 5 7 166752304 _ 7 5 6 7 3 0 5 7 _ 3 0 3 1 8 4 5 1 9 _ 7 3 9 3 5 6 8 3 0 166752304 ⤦ _ 3 0 3 1 8 4 5 1 9 _ 1 7 8 1 9 6 3 8 8 7 _ 3 0 3 1 8 4 5 1 9 166752301 _ 1 7 8 1 9 6 3 8 8 7 _ 7 3 5 8 6 2 6 8 _ 1 7 8 1 9 6 3 8 8 7 166752301 ⤦ _ 1 7 8 1 9 6 3 8 8 7 _ 7 3 5 8 6 2 6 8 _ 2 2 5 0 6 8 3 3 8 7 30602177 _ 7 3 5 8 6 2 6 8 _ 7 5 6 7 9 6 4 4 _ 7 3 5 8 6 2 6 8 30602177 ⤦ _ 7 3 5 8 6 2 6 8 _ 7 5 6 7 9 6 4 4 _ 7 6 5 9 6 5 5 1 1 229068361 _ 7 5 6 7 9 6 4 4 _ 2 1 5 0 8 7 4 7 _ 7 5 6 7 9 6 4 4 229068361 ⤦ _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 1 5 0 8 7 4 7 229068361 _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 7 6 5 9 6 5 5 0 9 229068361 ⤦ _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 5 9 8 2 3 3 3 229068361 _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 1 1 5 3 0 1 0 229068361 ⤦ _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 1 1 5 3 0 0 9 229068361 _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 1 1 5 3 0 0 3 229068361 ⤦ _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 1 1 5 2 9 9 9 229068361 _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 7 3 5 8 6 2 6 4 229068361 ⤦ _ 2 1 5 0 8 7 4 7 _ 2 6 2 1 1 5 2 9 8 6 _ 2 1 5 0 8 7 5 6 229068361 _ 2 6 2 1 1 5 2 9 8 6 _ 2 6 2 1 1 5 2 9 8 3 _ 2 6 2 1 1 5 2 9 8 6 111283478 ⤦ _ 2 6 2 1 1 5 2 9 8 3 _ 2 6 2 1 1 5 2 9 7 4 _ 2 6 2 1 1 5 2 9 8 3 111283478 _ 2 6 2 1 1 5 2 9 8 3 _ 2 6 2 1 1 5 2 9 7 4 _ 2 6 2 1 1 5 2 9 7 7 ⤦ 111283478 _ 2 6 2 1 1 5 2 9 8 3 _ 2 6 2 1 1 5 2 9 7 4 _ 2 6 2 1 1 5 2 9 7 5 229068360 ⤦ _ 2 6 2 1 1 5 2 9 7 4 _ 2 6 2 1 1 5 2 9 7 2 _ 2 6 2 1 1 5 2 9 7 4 229068360 _ 2 6 2 1 1 5 2 9 7 2 _ 2 1 5 0 8 7 4 6 _ 2 6 2 1 1 5 2 9 7 2 229068360 ⤦ _ 2 6 2 1 1 5 2 9 7 2 _ 2 1 5 0 8 7 4 6 _ 6 0 1 0 5 9 3 5 2 229068360 _ 2 6 2 1 1 5 2 9 7 2 _ 2 1 5 0 8 7 4 6 _ 1 6 0 0 9 9 1 1 5 8 229068360 ⤦ _ 2 6 2 1 1 5 2 9 7 2 _ 2 1 5 0 8 7 4 6 _ 1 6 0 0 9 9 1 1 6 0 229068357 _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 2 1 5 0 8 7 4 6 229068357 ⤦ _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 1 6 0 0 9 9 1 1 5 9 229068357 _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 1 6 0 0 9 9 1 1 5 5 229068357 ⤦ _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 2 3 7 7 0 5 0 4 0 2 229068357 _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 1 6 0 0 9 9 1 1 5 7 229068357 ⤦ VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 115 Appendix B Example scenario Barnim Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç Ç 25 26 27 28 B.2 File listings _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 6 6 1 7 4 9 2 4 0 229068357 _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 4 1 6 0 6 5 9 5 9 229068357 ⤦ _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 1 6 0 0 9 9 1 1 5 4 229068357 _ 2 1 5 0 8 7 4 6 _ 2 5 1 0 5 6 4 8 0 6 _ 6 6 1 7 4 9 2 3 7 146875503 ⤦ _ 2 5 1 0 5 6 4 8 0 6 _ 2 7 0 3 1 2 3 2 _ 2 5 1 0 5 6 4 8 0 6 146875503 _ 2 5 1 0 5 6 4 8 0 6 _ 2 7 0 3 1 2 3 2 _ 1 6 0 0 9 9 1 1 5 3 146875503 ⤦ _ 2 5 1 0 5 6 4 8 0 6 _ 2 7 0 3 1 2 3 2 _ 1 6 0 0 9 9 1 1 5 6 146875503 _ 2 5 1 0 5 6 4 8 0 6 _ 2 7 0 3 1 2 3 2 _ 1 5 8 7 7 0 0 3 4 2 146875503 ⤦ _ 2 5 1 0 5 6 4 8 0 6 _ 2 7 0 3 1 2 3 2 _ 2 5 1 0 5 6 4 8 0 4 146871033 _ 2 7 0 3 1 2 3 2 _ 2 7 0 3 1 2 2 9 _ 2 7 0 3 1 2 3 2 227901601 ⤦ _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 2 7 0 3 1 2 2 9 227901601 _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 2 5 2 6 3 9 0 8 5 9 227901601 ⤦ _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 8 6 6 6 1 3 7 9 9 227901601 _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 8 6 6 6 1 4 0 0 8 227901601 ⤦ _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 1 3 1 3 8 8 5 4 3 9 227901601 _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 1 3 1 3 8 8 5 5 2 7 227901601 ⤦ _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 1 3 1 3 8 8 5 4 3 6 227901601 _ 2 7 0 3 1 2 2 9 _ 8 6 6 6 1 3 8 4 1 _ 8 6 6 6 1 3 7 8 6 245432872 ⤦ _ 8 6 6 6 1 3 8 4 1 _ 8 6 6 6 1 4 5 7 8 _ 8 6 6 6 1 3 8 4 1 116570239 _ 8 6 6 6 1 4 5 7 8 _ 8 6 6 6 1 3 5 5 5 _ 8 6 6 6 1 4 5 7 8 116570239 ⤦ _ 8 6 6 6 1 4 5 7 8 _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 4 5 6 245434998 _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 8 6 6 6 1 3 5 5 5 245434998 ⤦ _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 2 3 8 9 9 8 6 8 1 8 245434998 _ 8 6 6 6 1 3 5 5 5 _ 1 3 1 3 8 8 5 5 3 2 _ 8 6 6 6 1 3 9 0 5 116570222 ⤦ _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 1 3 1 3 8 8 5 5 3 2 116570222 _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 1 3 1 3 8 8 5 4 3 1 ⤦ 116570222 _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 2 0 2 6 3 6 2 8 2 7 116570222 ⤦ _ 1 3 1 3 8 8 5 5 3 2 _ 2 0 2 6 3 6 2 8 1 4 _ 2 0 2 6 3 6 2 8 2 1 192079314 _ 2 0 2 6 3 6 2 8 1 4 _ 6 9 2 7 5 5 3 8 1 _ 2 0 2 6 3 6 2 8 1 4 ⤦ 192079314 _ 2 0 2 6 3 6 2 8 1 4 _ 6 9 2 7 5 5 3 8 1 _ 2 5 1 0 5 7 5 5 6 7 182262835 _ 6 9 2 7 5 5 3 8 1 _ 4 9 8 3 2 2 9 8 _ 6 9 2 7 5 5 3 8 1 " / > Standard route ⤦ Ç --> Ausweichroute ⤦ Ç --> routes > Listing B.11: Scenario Barnim: file listing: sumo/Barnim.roud.xml sumo/Barnim.sumo.cfg 1 2 3 4 5 6 7 8 9 10 < configuration > < input > < route - files value = " Barnim . rou . xml " / > input > < time > < begin value = " 0 " / > < end value = " 10000 " / > time > configuration > Listing B.12: Scenario Barnim: file listing: sumo/Barnim.sumo.cfg sumo/sumo_config.json 1 2 3 { " s u m o C o n f i g u r a t i o n F i l e " : " Barnim . sumo . cfg " } Listing B.13: Scenario Barnim: file listing: sumo/sumo_config.json VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 116 Appendix B Example scenario Barnim B.2 File listings visualizer/visualizer_config.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 ïż£ xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // www . dcaiti . tu - berlin . de / research / ⤦ Ç simulation / download / get / scenarios / scenarioname / visualizer / ⤦ Ç v i s u a l i z e r _ c o n f i g . xsd " > < visualizer id = " fi levisu alizer " enabled = " true " update = " 5 " loader = " com . dcaiti . vsimrti . fed . ⤦ Ç visualizer . F i l e V i s u a l i z e r C o n f i g " > < filename > visualizer . csv filename > < directory >. directory > < separator >; separator > < messages > < message id = " V e h i c l e M o v e m e n t s " > < entries > < entry >" MOVE_VEHICLE " entry > < entry > Time entry > < entry > Updated:Name entry > < entry > U p d a t e d : P o s i t i o n . Latitude entry > < entry > U p d a t e d : P o s i t i o n . Longitude entry > < entry > Updated:Speed entry > < entry > U pd at e d: H ea di n g entry > entries > message > < message id = " R e c e i v e V 2 X M e s s a g e " > < entries > < entry >" RECV_MESSAGE " entry > < entry > Time entry > < entry > MessageId entry > < entry > ReceiverName entry > < entry > Type entry > entries > message > < message id = " S endV2X Messag e " > < entries > < entry >" SEND_MESSAGE " entry > < entry > Time entry > < entry > MessageId entry > < entry > SourceName entry > < entry > Type entry > Destination . Position . Latitude entry > --> Destination . Position . Longitude entry > --> Destination . Radius entry > --> entries > message > < message id = " AddedVehicle " enabled = " true " > < entries > < entry >" ADDED_VEHICLE " entry > < entry > Time entry > < entry > A p p l i c a t i o n V e h i c l e . Name entry > < entry > A p p l i c a t i o n V e h i c l e . Applications entry > < entry > A p p l i c a t i o n V e h i c l e . VehicleType . Name entry > entries > message > < message id = " A d d e d T r a f f i c L i g h t " > < entries > < entry >" A D D E D _ T R A F F I C L I G H T " entry > < entry > Time entry > < entry > A p p l i c a t i o n T r a f f i c L i g h t . Name entry > < entry > A p p l i c a t i o n T r a f f i c L i g h t . Applications entry > < entry > T r a f f i c L i g h t G r o u p . FirstPosition . Latitude entry > < entry > T r a f f i c L i g h t G r o u p . FirstPosition . Longitude entry > entries > message > < message id = " AddedRsu " > < entries > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 117 Appendix B Example scenario Barnim 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 B.2 File listings < entry >" ADDED_RSU " entry > < entry > Time entry > < entry > Applic ationR su . Name entry > < entry > Applic ationR su . Applications entry > < entry > Applic ationR su . Position . Latitude entry > < entry > Applic ationR su . Position . Longitude entry > entries > message > messages > visualizer > < visualizer id = " eworld " enabled = " false " loader = " com . dcaiti . vsimrti . fed . visualizer . e w o r l d v i s u a l i z e r . config . ⤦ Ç EworldVisualizerConfig "> < synchronized > true synchronized > < host > local host > < port > 50500 port > < messages > < message id = " A d d e d T r a f f i c L i g h t " > message > < message id = " AddedRsu " > message > < message id = " AddedVehicle " > message > < message id = " V e h i c l e M o v e m e n t s " > message > messages > visualizer > < visualizer id = " websocket " enabled = " true " loader = " com . dcaiti . vsimrti . fed . visualizer . ⤦ Ç WebsocketVisualizerConfig "> < synchronized > true synchronized > < port > 46587 port > < messages > < message id = " V e h i c l e M o v e m e n t s " enabled = " true " > message > < message id = " R e c e i v e V 2 X M e s s a g e " enabled = " true " > message > < message id = " S endV2X Messag e " enabled = " true " > message > < message id = " R e c e i v e C e l l M e s s a g e " enabled = " false " > message > < message id = " Se n dC el l Me s sa ge " enabled = " false " > message > < message id = " AddedVehicle " enabled = " true " > message > < message id = " AddedRsu " enabled = " true " > message > < message id = " A d d e d T r a f f i c L i g h t " enabled = " false " > message > < message id = " A d d e d C h a r g i n g S t a t i o n " enabled = " false " > message > < message id = " C h a r g i n g S t a t i o n U p d a t e " enabled = " false " > message > messages > visualizer > configuration > Listing B.14: Scenario Barnim: file listing: visualizer/visualizer_config.xml VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 118 Appendix B Example scenario Barnim B.2 File listings vsimrti/vsimrti_config.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ïż£ xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " https: // www . dcaiti . tu - berlin . de / research / ⤦ Ç simulation / download / get / scenarios / scenarioname / vsimrti / v simrti _confi g . ⤦ Ç xsd " > < simulation > < id > Barnim id > < starttime >0 starttime > < endtime > 1200 endtime > < randomSeed > 268965854 randomSeed > < WGS84UTMTransformConfig > { " centerCoordinates ": { " longitude " : 13.56 , " latitude " : 52.63 }, " ca r te si a nO ff s et " : { " x " : -397957.77 , " y " : -5826114.68 } } W G S 8 4 U T M T r a n s f o r m C o n f i g > < IPResolverConfig > { netMask: " 255.255.0.0 " , vehicleNet: " 10.1.0.0 " , rsuNet: " 10.2.0.0 " , tlNet: " 10.3.0.0 " , csNet: " 10.4.0.0 " , serverNet: " 10.5.0.0 " } I P R e s o l v e r C o n f i g > < threads >1 threads > simulation > < federates > < federate id = " cell2 " active = " false " / > < federate id = " omnetpp " active = " false " / > < federate id = " ns3 " active = " false " / > < federate id = " sns " active = " true " / > < federate id = " sumo " active = " true " / > < federate id = " applicationNT " active = " true " / > < federate id = " eventserver " active = " true " / > < federate id = " battery " active = " true " / > < federate id = " ch ar g in g st at i on " active = " false " / > < federate id = " mapping3 " active = " true " / > < federate id = " visualizer " active = " true " / > federates > configuration > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 119 Appendix B Example scenario Barnim B.2 File listings Listing B.15: Scenario Barnim: file listing: vsimrti/vsimrti_config.xml vsimrti/simrun_config.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 xml version = " 1.0 " encoding = " UTF -8 " ? > < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance " x s i : n o N a m e s p a c e S c h e m a L o c a t i o n = " http: // www . dcaiti . tu - berlin . de / research / simulation / download / ⤦ Ç get / scenarios / scenarioname / vsimrti / simrun_config . xsd " > < vsimrti location = " / path / to / your / vs imrti_ folder " executable = " vsimrti . sh " username = " ⤦ Ç your_user_id " / > < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / v simrti _confi g . xml " persistent = " ⤦ Ç false " repetitions = " 1 " progr essLog ger = " true " > - o TRACE argument --> - w 0 argument --> scenario > < dimension name = " Si mulati onRuns " > < parameter name = " V 2 X V e h i c l e P e r c e n t a g e " file = " mapping3 / mappi ng_con fig . json " fileFormat = " ⤦ Ç json " item = " vehicles [0]. types [0]. weight " type = " ValueList " > < value >0 value > < value > 50 value > < value > 75 value > < value >0 value > < value >0 value > parameter > < parameter name = " C e l l V e h i c l e P e r c e n t a g e " file = " mapping3 / mappi ng_con fig . json " fileFormat ⤦ Ç = " json " item = " vehicles [0]. types [0]. weight " type = " ValueList " > < value >0 value > < value >0 value > < value >0 value > < value > 50 value > < value > 75 value > parameter > < parameter name = " C l a s s i c V e h i c l e P e r c e n t a g e " file = " mapping3 / mappi ng_con fig . json " ⤦ Ç fileFormat = " json " item = " vehicles [0]. types [2]. weight " type = " ValueList " > < value > 100 value > < value > 50 value > < value > 25 value > < value > 50 value > < value > 25 value > parameter > < parameter name = " Si mulati ontim e " file = " vsimrti / vsim rti_co nfig . xml " fileFormat = " xml " item ⤦ Ç = " // simulation / endtime " type = " ValueList " > VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 121 Appendix B Example scenario Barnim 120 121 122 123 124 125 126 127 128 129 130 131 132 133 B.2 File listings < value > 100 value > < value > 100 value > < value > 100 value > < value > 100 value > < value > 100 value > parameter > dimension > < parameter name = " Si n gl eh o pR ad i us " file = " sns / sns_config . json " fileFormat = " json " item = " ⤦ Ç singlehop . radius " type = " ValueList " > < value > 500 value > < value > 600 value > parameter > configuration > Listing B.16: Scenario Barnim: file listing: vsimrti/simrun_config.xml VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 122 Appendix C Example scenario Tiergarten You will find a collection of all relevant data. C.1 Folder Structure Tiergarten applicationNT ..................................................................... applications ................................................................... applicationNT_config.json ............................. not listed (in this release) tiergarten.db .......................................... not listed (binary content) cell2 .............................................................................. cell2_config.json ...................................... not listed (in this release) network.json ............................................ not listed (in this release) regions.json ............................................ not listed (in this release) mapping3 ........................................................................... mapping_config.json .................................... not listed (in this release) omnetpp ............................................................................ omnetpp.ini ............................................................. (see C.1) ns3 ................................................................................ configTechnologies.xml ................................ not listed (in this release) confWifi.xml ............................................ not listed (in this release) sns ................................................................................ sns_config.json ........................................ not listed (in this release) sources ............................................................................ tiergarten.osm ......................................... not listed (in this release) sumo ............................................................................... sumo_config.json ....................................... not listed (in this release) tiergarten.edg.xml ..................................... not listed (in this release) tiergarten.net.xml ..................................... not listed (in this release) tiergarten.nod.xml ..................................... not listed (in this release) tiergarten.rou.xml ..................................... not listed (in this release) tiergarten.sumo.cfg .................................... not listed (in this release) visualizer ........................................................................ visualizer_config.xml ................................. not listed (in this release) vsimrti ............................................................................ vsimrti_config.xml ..................................... not listed (in this release) Figure C.1: Scenario Tiergarten: folder structure Appendix C Example scenario Tiergarten C.2 File listings C.2 File listings omnetpp/omnetpp.ini 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [ General ] # SimulationParameters # -------------------# network *. ned - file and time - scale in nanoseconds network = Simulation simtime - scale = -9 # EventSchedul er # -------------# scheduler - class and debugging option for more verbose logging scheduler - class = " V S i m R T I E v e n t S c h e d u l e r " vsimrtieventscheduler - debug = false # connection settings , when omnetpp - federate is started manually vsimrtieventscheduler - host = " localhost " vsimrtieventscheduler - port = 4998 # RecordingModi # ------------record - eventlog = false cmdenv - express - mode = false cmdenv - event - banners = false # random numbers # ------------num - rngs = 3 Simulation . mobility . rng -0 = 1 Simulation . wlan [*]. mac . rng -0 = 2 # general logging output # -------------*. mgmt . cmdenv - ev - output = true *. mgmt . debug = false *. veh [*].**. cmdenv - ev - output = false *. rsu [*].**. cmdenv - ev - output = false # ########## application settings ############ Simulation . rsu [*]. udpApp . maxProcDelay = 1e -3 Simulation . veh [*]. udpApp . maxProcDelay = 1e -3 # ########## UDP Settings ## # ## # ## ## # ## ## # ########## network layer settings ########## # ########## mac and phy settings ############ **. wlan0 . opMode = " p " **. wlan0 . bitrate = 6 Mbps **. wlan0 . mac . basicBitrate = 3 Mbps # we have to set this explicitly because the default value ⤦ Ç of 1 Mbps is not part of 802.11 p **. wlan0 . mac . con trolBi trate = 3 Mbps **. wlan0 . mac . retryLimit = 7 **. wlan0 . mac . maxQueueSize = 10 **. wlan0 . mac . cwMinData = 15 **. wlan0 . mac . cwM inMult icast = 31 **. wlan0 . radio . bandName = " 5.9 GHz " # this string actually selects the band from {2.4; 5; 5.9} ⤦ Ç ( see " IIeee 80211B and . h ") **. wlan0 . radio . c a r r i e r F r e q u e n c y = 5.9 GHz VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 124 Appendix C Example scenario Tiergarten 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 C.2 File listings **. wlan0 . radio . bandwidth = 10 MHz **. wlan0 . radio . receiver . snirThreshold = 4 dB **. wlan0 . radio . receiver . sensitivity = -81 dBm **. wlan1 . opMode = " p " **. wlan1 . bitrate = 6 Mbps **. wlan1 . mac . basicBitrate = 3 Mbps # we have to set this explicitly because the default value ⤦ Ç of 1 Mbps is not part of 802.11 p **. wlan1 . mac . con trolBi trate = 3 Mbps **. wlan1 . mac . retryLimit = 7 **. wlan1 . mac . maxQueueSize = 10 **. wlan1 . mac . cwMinData = 15 **. wlan1 . mac . cwM inMult icast = 31 **. wlan1 . radio . bandName = " 5.9 GHz " # this string actually selects the band from {2.4; 5; 5.9} ⤦ Ç ( see " IIeee 80211B and . h ") **. wlan1 . radio . c a r r i e r F r e q u e n c y = 5.9 GHz **. wlan1 . radio . bandwidth = 10 MHz **. wlan1 . radio . receiver . snirThreshold = 4 dB **. wlan1 . radio . receiver . sensitivity = -81 dBm # ########## radio medium settings ########### Simulation . radioMedium . r ad io M od e Fi lt e r = true # use this filter for increased performance -> ⤦ Ç does not compute transmissions to receivers whose radio is turned off Simulation . radioMedium . l is te n in g Fi lt e r = true # second filter that may improve performance Simulation . radioMedium . b ac kg r ou n dN oi s e . power = -110 dBm Simulation . radioMedium . m e d i u m L i m i t C a c h e . c a r r i e r F r e q u e n c y = 5.9 GHz Simulation . radioMedium . p ro pa g at i on Ty p e = " C o n s t a n t S p e e d P r o p a g a t i o n " Simulation . radioMedium . pathLossType = " F r e e S p a c e P a t h L o s s " Simulation . radioMedium . o b s t a c l e L o s s T y p e = " " # ########## mobility ################### **. mobility . c o n s t r a i n t A r e a M i n X = 0 m **. mobility . c o n s t r a i n t A r e a M i n Y = 0 m **. mobility . c o n s t r a i n t A r e a M i n Z = 0 m **. mobility . c o n s t r a i n t A r e a M a x X = 5000 m **. mobility . c o n s t r a i n t A r e a M a x Y = 5000 m **. mobility . c o n s t r a i n t A r e a M a x Z = 0 m Listing C.1: Scenario Tiergarten: file listing: omnetpp/omnetpp.ini VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 125 Appendix D Package Additional Examples Appendix D Package Additional Examples Appendix D Package Additional Examples This package shows different sample applications for several application spectrum. Here you can download the AdditionalExamples-18.0-sources.zip file: https://www.dcaiti.tu-berlin.de/research/simulation/download/ The following table describes these applications. Applications from the "Additional Examples" package HelloWorldApp This is a simple Hello World application. It prints a hello world string in an interval. Interconnect This simple application demonstrates an interconnection between applications which are running on same units. IntervalSampling This simple application demonstrates a sampling in a specific interval. When the simulation starts it initialise with a random generated offset (e.g. 150 ms). Afterwards a fixed interval will be invoked (e.g. 1 second). For example there are the following time steps: t = {0 ms, 150 ms, 1150 ms, 2150 ms, ...} MultithreadSampling This simple application demonstrates a concurrency task. In a scenario may exist many vehicles (e.g. veh_0, veh_1, veh_2, ...). This application demonstrate the following behavior: veh_0, veh_1, veh_2, ... start a thread veh_0, veh_1, veh_2, ... do some logic parallel to each other veh_0, veh_1, veh_2, ... join the thread MyMessage This application shows how to create a message. RandomSampling This application demonstrates a sampling in a random interval. One random simulation point will be choosen when the initialisation starts. For example: t = {0 ms, 300 ms, 967 ms, 1487 ms, ...} TestSumoTraciMsg This sample shows the interaction between an application and the TraCI interface of SUMO. UpdateVehicleInfo This application reacts on a vehicle info update. Mostly a vehicle info will be triggered from a traffic simulator (e.g. SUMO). UserTaggedValueRoundtrip If the control of every byte is not needed, the DefaultObjectSerial- ization can be used. This class converts an object into a byte field and obversely. VSimRTIMessage This simple application shows how to create a VSimRTI-message and sends it to all simulators. This application could also react on Appli- cationSpecificMessage s. VehicleConfiguration This simple application demonstrates a configurable application. Table D.1: Applications from the "Hello world package VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 127 Appendix E Configuration Schemata Some of the required JSON configuration files are automatically validated by VSimRTI and, therefore, must follow a specific schema1 . If you have problems with VSimRTI accepting your configuration files, please make sure they follow the respective schema: JSON Schema for cell2/cell2_config.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 { " $schema " : " http :// json - schema . org / schema # " , " type " : " object " , " properties " : { " b a n d w i d t h M e a s u r e m e n t I n t e r v a l " : { " type " : " number " , " minimum " : 1 } , " bandwidthMeasurements ": { " type " : " array " , " items " : [ { " type " : " object " , " properties " : { " fromRegion " : { " type " : " string " } , " toRegion " : { " type " : " string " } , " transmissionMode ": { " type " : " string " , " enum " : [ " UplinkUnicast " , " D o wn li n kU n ic as t " , " D o w n l i n k M u l t i c a s t " ⤦ Ç ] } }, " required " : [ " fromRegion " , " toRegion " , " t r a n s m i s s i o n M o d e " ] } ] }, " n e t w o r k C o n f i g u r a t i o n F i l e " : { " type " : " string " } , " r e g i o n C o n f i g u r a t i o n F i l e " : { " type " : " string " } }, " required " : [ " networkConfigurationFile " ] } Listing E.1: JSON Schema for cell2_config.json 1 The schemata listed here follow the specification at http://json-schema.org/documentation.html Appendix E Configuration Schemata Appendix E Configuration Schemata JSON Schema for cell2/network_config.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 { " $schema " : " http :// json - schema . org / schema # " , " type " : " object " , " properties " : { " globalRegion " : { " type " : " object " , " properties " : { " uplink " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } , " capacity " : { " $ref " : " #/ definitions / capacity " } }, " required " : [ " delay " , " capacity " ] }, " downlink " : { " type " : " object " , " properties " : { " unicast " : { " $ref " : " #/ definitions / unicast " } , " multicast " : { " $ref " : " #/ definitions / multicast " } , " capacity " : { " $ref " : " #/ definitions / capacity " } }, " required " : [ " unicast " , " multicast " , " capacity " ] } } } }, " required " : [ " globalRegion " ] , " definitions " : { " delay " : { " oneOf " : [ { " type " : " object " , " properties " : { " type " : { " type " : " string " , " enum " : [ " G a m m a R a n d o m D e l a y " , " G a mm aS p ee dD e la y " ]} , " minDelay " : { " type " : " number " , " minimum " : 0} , " expDelay " : { " type " : " number " , " minimum " : 0} , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " minDelay " , " expDelay " , " prpl " ] }, { " type " : " object " , " properties " : { " type " : { " type " : " string " , " enum " : [ " ConstantDelay " ]} , " delay " : { " type " : " number " , " minimum " : 0} , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " delay " , " prpl " ] }, { " type " : " object " , " properties " : { VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 129 Appendix E Configuration Schemata 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 Appendix E Configuration Schemata " type " : { " type " : " string " , " enum " : [ " S i m p l e R a n d o m D e l a y " ]} , " steps " : { " type " : " number " , " minimum " : 0} , " minDelay " : { " type " : " number " , " minimum " : 0} , " maxDelay " : { " type " : " number " , " minimum " : 0} , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " steps " , " minDelay " , " maxDelay " , " prpl " ] } ] }, " unicast " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } }, " required " : [ " delay " ] }, " multicast " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } , " usable Capac ity " : { " type " : " number " , " minimum " : 0.0 , " maximum " : 1.0} }, " required " : [ " delay " , " u sableC apacit y " ] }, " capacity " : { " oneOf " : [ { " type " : " integer " , " minimum " : 0 }, { " type " : " string " , " pattern " : " ^ unlimited$ " } ] } } } Listing E.2: JSON Schema for network_config.json VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 130 Appendix E Configuration Schemata Appendix E Configuration Schemata JSON Schema for cell2/regions_config.json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 { " $schema " : " http :// json - schema . org / schema # " , " type " : " object " , " properties " : { " regions " : { " type " : " array " , " items " : [ { " type " : " object " , " properties " : { " polygon " : { " type " : " object " , " coordinates " : [ { " $ref " : " #/ definitions / geopoint " } ], " required " : [ " coordinates " ] }, " area " : { " type " : " object " , " properties " : { " nw " : { " $ref " : " #/ definitions / geopoint " } , " se " : { " $ref " : " #/ definitions / geopoint " } }, " required " : [ " nw " , " se " ] }, " id " : { " type " : " string " } , " uplink " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } , " capacity " : { " $ref " : " #/ definitions / capacity " } }, " required " : [ " delay " , " capacity " ] }, " downlink " : { " type " : " object " , " properties " : { " unicast " : { " $ref " : " #/ definitions / unicast " } , " multicast " : { " $ref " : " #/ definitions / multicast " } , " capacity " : { " $ref " : " #/ definitions / capacity " } }, " required " : [ " unicast " , " multicast " , " capacity " ] } }, " anyOf " : [ { " required " : [ " area " , " id " , " uplink " , " downlink " ]} , { " required " : [ " polygon " , " id " , " uplink " , " downlink " ]} ] } ] } }, " definitions " : { " delay " : { " oneOf " : [ { " type " : " object " , " properties " : { " type " : { " type " : " string " , " enum " : [ " G a m m a R a n d o m D e l a y " , " G a mm aS p ee dD e la y " ]} , " minDelay " : { " type " : " number " , " minimum " : 0 , " e x c l u s i v e M i n i m u m " : true } , " expDelay " : { " type " : " number " , VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 131 Appendix E Configuration Schemata 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 Appendix E Configuration Schemata " minimum " : 0 , " e x c l u s i v e M i n i m u m " : true } , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " minDelay " , " expDelay " , " prpl " ] }, { " type " : " object " , " properties " : { " type " : { " type " : " string " , " enum " : [ " ConstantDelay " ]} , " delay " : { " type " : " number " , " minimum " : 0 , " e x c l u s i v e M i n i m u m " : true } , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " delay " , " prpl " ] }, { " type " : " object " , " properties " : { " type " : { " type " : " string " , " enum " : [ " S i m p l e R a n d o m D e l a y " ]} , " steps " : { " type " : " number " , " minimum " : 0} , " minDelay " : { " type " : " number " , " minimum " : 0 , " e x c l u s i v e M i n i m u m " : true } , " maxDelay " : { " type " : " number " , " minimum " : 0 , " e x c l u s i v e M i n i m u m " : true } , " prpl " : { " type " : " number " , " minimum " : 0} , " retries " : { " type " : " number " , " minimum " : 0} }, " required " : [ " type " , " steps " , " minDelay " , " maxDelay " , " prpl " ] } ] }, " unicast " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } }, " required " : [ " delay " ] }, " multicast " : { " type " : " object " , " properties " : { " delay " : { " $ref " : " #/ definitions / delay " } , " usabl eCapac ity " : { " type " : " number " , " minimum " : 0.0 , " maximum " : 1.0} }, " required " : [ " delay " , " u sableC apacit y " ] }, " geopoint " : { " type " : " object " , " properties " : { " lon " : { " type " : " number " } , VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 132 Appendix E Configuration Schemata 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 Appendix E Configuration Schemata " lat " : { " type " : " number " } }, " required " : [ " lon " , " lat " ] }, " capacity " : { " oneOf " : [ { " type " : " integer " , " minimum " : 0 }, { " type " : " string " , " pattern " : " ^ unlimited$ " } ] } } } Listing E.3: JSON Schema for regions_config.json VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 133 F References [1] B ENZ, Thomas ; S CHÜNEMANN, Björn ; K ERNCHEN, Ralf ; K ILLAT, Moritz ; R ICHTER, Andreas: A Comprehensive Simulation Tool Set for Cooperative Systems. In: Advanced Microsystems for Automotive Applications 2010 : Smart Systems for Green Cars and Safe Mobility (2010), May, S. 411–422. ISBN 978–3–642–12647–5 [2] B ISSMEYER, Norbert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja ; S CHMIDT, Christian: Simulation of attacks and corresponding driver behavior in vehicular ad hoc networks with VSimRTI. In: Proceedings of the 4th International ICST Conference on Simulation Tools and Techniques. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2011 (SIMUTools ’11). – ISBN 978–1–936968–00–8, 162–167 [3] C HUANG, David ; S CHÜNEMANN, Björn ; R IECK, David ; R ADUSCH, Ilja: GRIND: An Generic Interface for Coupling Power Grid Simulators with Traffic, Communication and Application Simulation Tools. In: SIMUL 2013, The Fifth International Conference on Advances in System Simulation, 2013. – ISBN 978–1–61208–308–7, S. 174–177 [4] C ODECÁ, Lara ; F RANK, Raphaël ; FAYE, Sébastien ; E NGEL, Thomas: Luxembourg SUMO Traffic (LuST) Scenario: Traffic Demand Evaluation. In: IEEE Intelligent Transportation Systems Magazine 9 (2017), Nr. 2, S. 52–63 [5] H ÜBNER, Karl ; C RISTEA, Roland ; RULEWITZ, Stefan ; R ADUSCH, Ilja ; S CHÜNEMANN, Björn: Implementation of Cognitive Driver Models in Microscopic Traffic Simulations. In: Proceedings of the 9th EAI International Conference on Simulation Tools and Techniques. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2016 (SIMUTOOLS’16). – ISBN 978–1–63190–120–1, 104–111 [6] H ÜBNER, Karl ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: Sophisticated Route Calculation Approaches for Microscopic Traffic Simulations. In: Proceedings of the 8th International Conference on Simulation Tools and Techniques. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2015 (SIMUTools ’15). – ISBN 978–1–63190–079–2, 147–154 [7] H ÜBNER, Karl ; S CHÜNEMANN, Börn ; S CHILLING, Tom ; R ADUSCH, Ilja: On assessing road safety aspects of a cycling router application. In: 2017 15th International Conference on ITS Telecommunications (ITST), 2017, S. 1–8 [8] K ATSAROS, Konstantinos ; K ERNCHEN, Ralf ; D IANATI, Mehrdad ; R IECK, David ; Z INOVIOU, Charalambos: Application of vehicular communications for improving the efficiency of traffic in urban areas. In: Wireless Communications and Mobile Computing 11 (2011), Nr. 12, S. 1657–1667 F References F References [9] L OBACH, S. ; R ADUSCH, I.: Integration of Communication Security into Advanced Simulation Environments for ITS. In: Vehicular Technology Conference (VTC Fall), 2011 IEEE, 2011. – ISSN 1090–3038, S. 1 –6 [10] N AUMANN, Nico ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: VSimRTI - Simulation Runtime Infrastructure for V2X Communication Scenarios. In: Proceedings of the 16th World Congress and Exhibition on Intelligent Transport Systems and Services (ITS Stockholm 2009), ITS Stockholm 2009, September 2009 [11] N AUMANN, Nico ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja ; M EINEL, Christoph: Improving V2X Simulation Performance with Optimistic Synchronization. In: Services Computing Conference, 2009. APSCC 2009. IEEE Asia-Pacific, 2009. – ISBN 978–1–4244–5338–2, S. 52–57 [12] P ROTZMANN, R. ; M AHLER, K. ; O LTMANN, K. ; R ADUSCH, I.: Extending the V2X simulation environment VSimRTI with advanced communication models. In: ITS Telecommunications (ITST), 2012 12th International Conference on, 2012, S. 683–688 [13] P ROTZMANN, Robert ; M ASSOW, Kay ; R ADUSCH, Ilja: An Evaluation Environment and Methodology for Automotive Media Streaming Applications. In: Innovative Mobile and Internet Services in Ubiquitous Computing (IMIS), 2014 Eighth International Conference on IEEE, 2014, S. 297–304 [14] P ROTZMANN, Robert ; M ASSOW, Kay ; R ADUSCH, Ilja: On performance estimation of prefetching algorithms for streaming content in automotive environments. In: Wireless On-demand Network Systems and Services (WONS), 2014 11th Annual Conference on IEEE, 2014, S. 147–147 [15] P ROTZMANN, Robert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: The influences of communication models on the simulated effectiveness of V2X applications. In: Vehicular Networking Conference (VNC), 2010 IEEE, 2010. – ISBN 978–1–4244–9526–9, S. 102 –109 [16] P ROTZMANN, Robert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: The influences of communication models on the simulated effectiveness of V2X applications. In: Communications Magazine, IEEE 49 (2011), november, Nr. 11, S. 149 –155. http://dx.doi.org/10.1109/MCOM.2011.6069722. – DOI 10.1109/MCOM.2011.6069722. – ISSN 0163–6804 [17] P ROTZMANN, Robert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: Effects of Random Number Generators on V2X Communication Simulation. In: TAN, Gary (Hrsg.) ; Y EO, GeeKin (Hrsg.) ; T URNER, StephenJohn (Hrsg.) ; T EO, YongMeng (Hrsg.): AsiaSim 2013 Bd. 402, Springer Berlin Heidelberg, 2013 (Communications in Computer and Information Science). – ISBN 978–3–642–45036–5, 200-211 [18] P ROTZMANN, Robert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: On Site-Specific Propagation Models for the Evaluation of V2X Applications. In: Communication Technologies for Vehicles (Nets4CarsFall), 2014 7th International Workshop on IEEE, 2014, S. 35–39 [19] P ROTZMANN, Robert ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: A Sensitive Metric for the Assessment of Vehicular Communication Applications. In: Advanced Information Networking and Applications (AINA), 2014 IEEE 28th International Conference on IEEE, 2014, S. 697–703 [20] QUECK, Tobias ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: Runtime Infrastructure for Simulating Vehicle-2-X Communication Scenarios. In: VANET ’08: Proceedings of the fifth ACM international workshop on VehiculAr Inter-NETworking. New York, NY, USA : ACM, 2008. – ISBN 978–1–60558– 191–0, S. 78–79 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 135 F References F References [21] QUECK, Tobias ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja ; M EINEL, Christoph: Realistic Simulation of V2X Communication Scenarios. In: APSCC ’08: Proceedings of the 2008 IEEE Asia-Pacific Services Computing Conference. Washington, DC, USA : IEEE Computer Society, 2008. – ISBN 978–0–7695– 3473–2, S. 1623–1627 [22] R IECK, David ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja ; M EINEL, Christoph: Efficient traffic simulator coupling in a distributed V2X simulation environment. In: SIMUTools ’10: Proceedings of the 3rd International ICST Conference on Simulation Tools and Techniques. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2010. – ISBN 978–963–9799–87–5, S. 1–9 [23] S CHÜNEMANN, Björn: V2X simulation runtime infrastructure VSimRTI: An assessment tool to design smart traffic management systems. In: Computer Networks 55 (2011), October, 3189– 3198. http://dx.doi.org/http://dx.doi.org/10.1016/j.comnet.2011.05.005. – DOI http://dx.doi.org/10.1016/j.comnet.2011.05.005. – ISSN 1389–1286 [24] S CHÜNEMANN, Björn ; M ASSOW, Kay ; R ADUSCH, Ilja: A Novel Approach for Realistic Emulation of Vehicle-2-X Communication Applications. In: Vehicular Technology Conference, 2008. VTC Spring 2008. IEEE, 2008. – ISSN 1550–2252, S. 2709–2713 [25] S CHÜNEMANN, Björn ; M ASSOW, Kay ; R ADUSCH, Ilja: Realistic Simulation of Vehicular Communication and Vehicle-2-X Applications. In: Simutools ’08: Proceedings of the 1st international conference on Simulation tools and techniques for communications, networks and systems & workshops. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, SocialInformatics and Telecommunications Engineering), 2008. – ISBN 978–963–9799–20–2, S. 1–9 [26] S CHÜNEMANN, Björn ; R IECK, David ; R ADUSCH, Ilja: Performance and scalability analyses of federation-based V2X simulation systems. In: Ad Hoc Networking Workshop (Med-Hoc-Net), 2012 The 11th Annual Mediterranean, 2012. – ISBN 978–1–4673–2038–2, S. 119 –126 [27] S CHÜNEMANN, Björn ; W EDEL, Jan W. ; R ADUSCH, Ilja: V2X-Based Traffic Congestion Recognition and Avoidance. In: Tamkang Journal of Science and Engineering 13 (2010), March, Nr. 1, 63-70. http://www2.tku.edu.tw/~tkjse/13-1/catology.htm. – ISSN 1560–6686 [28] W EDEL, Jan W. ; S CHÜNEMANN, Björn ; R ADUSCH, Ilja: V2X-Based Traffic Congestion Recognition and Avoidance. In: Parallel Architectures, Algorithms, and Networks, International Symposium on 0 (2009), S. 637–641. http://dx.doi.org/http://doi.ieeecomputersociety.org/10.1109/ I-SPAN.2009.71. – DOI http://doi.ieeecomputersociety.org/10.1109/I–SPAN.2009.71. ISBN 978–0– 7695–3908–9 VSimRTI: Vehicle-2-X Simulation Runtime Infrastructure 136
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 141 Page Mode : UseOutlines Author : Title : Subject : Creator : LaTeX with hyperref package Producer : pdfTeX-1.40.18 Create Date : 2018:04:24 11:34:33+02:00 Modify Date : 2018:04:24 11:34:33+02:00 Trapped : False PTEX Fullbanner : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3EXIF Metadata provided by EXIF.tools