Vsimrti User Manual 0.16.2
Vsimrti User Manual 0.16.2
Runtime Infrastructure
User Documentation
Version 0.16.2
October 26, 2016
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 trans-
portation 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.
Contact information
http://www.dcaiti.tu-berlin.de/research/simulation
https://www.fokus.fraunhofer.de/asct
DCAITI
http://www.dcaiti.tu-berlin.de
Contents
1 Introduction 1
1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Download and install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.1 Federates and Ambassadors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.2 Scenario configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Run simulations 4
2.1 Run a single simulation via CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 VSimRTIEmbeddedStarter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Run a simulation set via CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Simulators 9
3.1 Kinds of simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 Network simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 Traffic simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.3 Application simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.4 VSimRTI communication simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.5 Environment simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.6 Electricity simulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 omnetpp-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 ns-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 ns3-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 SUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.1 sumo-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.4 Using the SUMO GUI with VSimRTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.5 Routes and Vehicle Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.6 Further information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.7 VSimRTI specific information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 VSimRTI Application Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.1 applicationNT-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.3 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.4 Basic functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.5 Gather information in an application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5.6 Equipped units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5.7 Technical details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Contents Contents
3.5.8 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5.9 Development of applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5.10 Debugging of applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.11 Internal ETSI applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.5.12 Sending Cooperative Awareness Messages (CAM) . . . . . . . . . . . . . . . . . . . . . 28
3.5.13 Access SUMO TraCI from applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.14 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.15 Mapping 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6 VSimRTI Cellular Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6.1 cell2-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6.4 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 VSimRTI Simple Network Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.1 sns-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.4 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.8 VSimRTI Eventserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8.1 eventserver-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.9 VSimRTI Battery Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.1 battery-ambassador folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.3 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.4 Vehicle model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.5 Battery model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.6 Environment model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.9.7 Sample configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Tutorial Tiergarten 44
4.1 Mapping Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Inter-Vehicle Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Intra-Vehicle Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.1 The traffic light application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4 Interpretation of simulation results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5 Tutorial Barnim 53
5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Mapping configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3 VSimRTI configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4.1 DEN-Message handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4.2 Cellular Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.3 VSimRTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8 Visualizers 67
8.1 Kinds of Visualizers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.2 VSimRTI WebSocket Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.3 VSimRTI File Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.3.1 Configuring the File Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.4 VSimRTI Integrated Test and Evaluation Framework (ITEF) . . . . . . . . . . . . . . . . . . . 73
10Additional tools 81
10.1 scenario-convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11VSimRTI configuration 85
11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.2 Federates configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.3 Host configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
12Additional information 87
12.1 PATH configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
13List of Acronyms 89
A VSimRTI deployment 91
A.1 VSimRTI Folder Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
A.2 File listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
E References 123
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 the VSimRTI features and configurations with tutorials
in the two example scenarios named Barnim (see chapter 5) and Tiergarten (see chapter 4).
Having said that we do not aim to give full disclosure for every configuration option here. If you need
more specific information on a configuration have a look at the javadocs provided alongside the current
release which are available for all JavaScript Object Notation (JSON) style configs or the Appendix for
Extensible Markup Language (XML) style configs.
If you have any questions or need further support please feel free to contact our support team via our
mailing list. Please include logfiles and scenario files in your request, if relevant. We also look forward
to get your feedback for improvements of the VSimRTI documentation as well as the installation and
configuration process.
VSimRTI at a glance
VSimRTI was built to support users performing V2X simulations while maintaining the flexibility to choose
which simulators to use. It offers interfaces for the integration of different simulators, e.g. for network,
traffic, and environment simulations to provide flexibility to exchange a simulator without changing the
underlying infrastructure. For the synchronization and the communication among all components 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. Therefore
for execution a compatible Java Runtime Environment (JRE) for your operating system needs to be
installed.
1.3 Update
In order to update VSimRTI to a new version, following steps must be done manually:
Backup your personal simulation scenarios from the scenarios directory of VSimRTI.
Migrate your scenarios to individual changes in the new VSimRTI version according to the
vsimrti-conversion-guide-0.16.2.pdf , which you can find on the DCAITI website .
1.4 License
The licensing mechanism was introduced for a better release control. It improves the user support
whilst helping the developer team to deactivate outdated releases which cannot be maintained anymore.
Each user needs to be registered at the license server to obtain a license which is a very straightforward
procedure.
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 member of staff registers the new user at the VSimRTI license server as soon as possible,
usually within one workday. When your license is active, you get an email with your userid.
CPU cores
CPU architecture
sockets
hashed user id
VSimRTI version
4. Directly after confirmation by the VSimRTI team the license is activated. 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.
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 problems with corrupted license files you can also use the
firstStart script to reset the local license files and retrieve a new copy in the next run.
1.5 Concept
In contrast to existing fixed simulator couplings VSimRTI allows the easy integration and exchangeability
of simulators. Thus, the high flexibility of VSimRTI enables the coupling of the most appropriate simula-
tors for a realistic presentation of vehicle traffic, emissions, wireless communication, and the execution of
V2X applications. Depending on the specific requirements of a simulation scenario the most appropriate
simulators can be used.
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 that the ambassador interface is implemented and the specified commands can
be executed.
Any scenario needs to be configured with a configuration file. The specific path to this file is
vsimrti/scenarios/<scenarioName>/vsimrti/vsimrti_config.xml .
Notice: Install the required simulators for the specific scenario and have a valid license
(see section 1.4).
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 primary VSimRTI configuration file which is scenario de-
pendent and located in the according scenario folder. This file transitively
includes other necessary configuration files. Usually you will use the file
vsimrti/scenarios/<scenarioName>/vsimrti/vsimrti_config.xml .
-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 debug-
ging 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 move-
ments of the simulation on a map. This option only works, if your scenario has configured the
websocket visualizer (see section 8.2).
2 Run simulations 2.1 Run a single simulation via CLI
GNU/Linux
./ vsimrti . sh -c ./ scenarios / < scenario name >/ vsimrti / vsimr ti_con fig . xml -u userid
Microsoft Windows
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.
_ 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)
log level
unit name
progress in %
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.
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-<timestamp> . 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 con-
tains detailed information about sent and received VSimRTI messages. This file can be used to trace a
simulation run.
log-<timestamp>
appsNT .............................................................................
<unitType>_<unitId> ................. 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.
vsimrti/logs/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 simula-
tors 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.
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.
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 9.1.
VSimRTI couples different simulators and cant be run alone. Therefore, it requires pre-installed sim-
ulators. 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 documen-
tation 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.
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
A network simulator is a piece of software modeling the behavior of a network by calculating the interac-
tions 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.
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.
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.
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.
This kind of simulator simulates certain environmental events such as rain, fog, snow, etc..
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.
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
Written in C++
Website http://www.omnetpp.org/
https://inet.omnetpp.org
The omnetpp.ini file has to be located in the omnetpp folder of the scenario configuration.
<scenarioName>
omnetpp ..........................................................................
omnetpp.ini ....................................... ambassador configuration file
Figure 3.2: omnetpp-ambassador folder structure
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
libprotobuf 2.6.1
Please make sure these libraries are installed before running the installation script.
vsimrti
bin
fed
omnetpp
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
./omnet_installer.sh -s /path/to/omnetpp-4.6-src.tgz
3.2.3 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.
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 GUI-
based 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 download1 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
FreeBSD
Cygwin
Important: As stated above, ns-3 is primarily developed on and for GNU/Linux plat-
forms. 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 VMware2 or VirtualBox3 .
1 Please note, that downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for
you.
2 http://www.nsnam.org/wiki/index.php/HOWTO_use_VMware_to_set_up_virtual_networks_(Windows)
3 http://www.nsnam.org/wiki/index.php/HOWTO_use_VirtualBox_to_run_simulations_on_Windows_machines
Software information
Website http://www.nsnam.org/
<scenarioName>
ns3
configTechnologies.xml
confWifi.xml
Figure 3.4: ns3-ambassador folder structure
Important: Currently, there is no need to configure the ns-3 ambassador with a XML-
configuration file (i.e. the configuration file is not read by the ambassador).
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:
gcc
g ++
python
python - dev
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 2.6.1
Please make sure these libraries are installed before running 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
ns3_installer.sh ............................... Installation script for ns-3
Figure 3.5: ns3-ambassador federate folder structure
5. Configure and build the patched ns-3 with the ns-3 federate.
1. Set up the confWifi.xml-file in the scenario folder (see section 3.3.3). An example confWifi.xml-
file is shipped with the Tiergarten scenario.
3. At last ns-3 has to be activated in the vsimrti_config.xml and the simulation can be started.
3.3.3 Configuration
The whole ns-3 specific configuration is done via the confWifi.xml and configTechnologies.xml
files.
<? xml version = " 1.0 " encoding = " UTF -8 " standalone = " no " ? >
< 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
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.
<? 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 dont need to take any
changes and simply use the default configuration file, that ships with the ns-3 federate.
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
Written in C++
Website http://sumo.dlr.de/
Important: Please note that, due to adaptions in SUMO 0.25.0 regarding angles
according to navigational standards, VSimRTI only supports SUMO 0.25.0 or higher with
correct node headings.
This ambassador can be configured with a configuration file. The specific path is
vsimrti/scenarios/<scenarioName>/sumo/sumo_config.json
<scenarioName>
sumo .............................................................................
<scenarioName>.nod.xml ............................................. Node file
<scenarioName>.edg.xml .............................................. Edge file
<scenarioName>.con.xml ........................................ Connection file
<scenarioName>.net.xml ........................................... Network file
<scenarioName>.rou.xml ............................................. Route file
<scenarioName>.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.
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 12.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/<scenarioName>/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 scenario-
convert 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 10.1).
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.
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.
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 <scenarioName>.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.
Known Issues
With VSimRTI 0.16.0, the heading value for vehicles retrieved from SUMO is handled differently.
Therefore, since VSimRTI 0.16.0 only SUMO > 0.25.0 is supported.
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.
This ambassador can be configured with a configuration file. The specific path is
vsimrti/scenarios/<scenarioName>/applicationNT/applicationNT_config.json
<scenarioName>
applicationNT ...................................................................
applications .................................................................
applicationNT_config.json ............... Configuration file for the ambassador.
<scenarioName>.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-0.16.2.jar
vsimrti/bin/ambassadors/lib/*.jar
vsimrti/bin/lib/*.jar
vsimrti/bin/core/vsimrti-0.16.2.jar
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<VehicleOperatingSystem>).
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, applica-
tions can wake up themselves at certain time steps. An event can be requested at any simulation point to
trigger an event execution.
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.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 mapping-
simulator 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.
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:
How can 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 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
JAR and add it to your project:
vsimrti/bin/ambassadors/applicationNT-ambassador-0.16.2.jar
vsimrti/bin/ambassadors/lib/*.jar
vsimrti/bin/lib/*.jar
vsimrti/bin/core/vsimrti-0.16.2.jar
Right click on the "Hello world" Project and choose (New Package). Name the pack-
age something like com.mycompany.vsimrti.applications . Right click on the pack-
age and chose (New Class). Name the class HelloWorldApp , extend from the Class
[..]applicationNT.ambassador.simulationUnit.applications.AbstractApplication<OS>
and confirm. Afterwards, you need to specify the type of operating system <OS> your application is
Furthermore, your application can implement the following interfaces5 in order to get informed on
specific events:
VehicleApplication - get informed when information about the vehicles state is updated.
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/<scenarioName>/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.
To debug an application, remote debugging needs to be used. The following steps need to be performed
in order to debug the application:
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 debug-
ging
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 = " "
javaMemorySizeMaxPermSize =""
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 "
@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
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 j a v a M e m o r y S i z e M a x P e r m S i z e =
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 % %
j a v a M e m o r y S i z e M a x P e r m S i z e % - cp ! libs ! - Djava . library . path =./ lib com . dcaiti . vsimrti .
start . XM LC o nf ig R un n er %*
EndLocal
exit / b % errorlevel %
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 .
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.
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 isnt
high enough. If the difference is high enough but the minimum interval isnt surpassed, no message will
be sent.
The following section will show how CAMs are implemented in VSimRTI and how you can alter them.
CAMs consist of four parts:
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.
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.
Important: Be careful when using this interface and the TraCI commands. The
commands are delivered to TraCI without any prior checks.
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 pur-
poses:
Choose a suitable route out of existing ones from the current position to an arbitrary target.
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/<scenarioName>/applicationNT/<scenarioName>.db
Configuration
If the database needs to be located somewhere else, the path can be specified in
vsimrti/scenarios/<scenarioName>/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 () ;
// 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 ) ;
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 XML for configuration.
Notice: The documentation for the VSimRTI specific component is freely available on
the DCAITI website , explaining all available options.
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 RSUs. 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 speci-
fied 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 dont 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 matrixMappers-
list. 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.
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 users 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.
Vehicle veh_[seqNr]
RSU rsu_[rsuName]
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.
Notice: For more information about this component, please have a look at the javadoc
(doxygen) documentation.
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:
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).
The VSimRTI cellular simulator can be configured via two distinct configuration files, which can be found
within the scenarios folder structure:
<scenarioName>
cell2
network.json ......................................... Network configuration file
regions.json .......................................... Regions configuration file
Figure 3.9: cell2-ambassador folder structure
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
<! -- Cell federate -- >
< 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.
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.
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.
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 prValue and maxRetries 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 maxRetries-option. The probability of a successful retransmit is
recalculated on every try.
In case of multicast the plValue is used, which stands for packet loss. The value is factored into the
delay calculation. In contrast to the unicast and the prValue, just one transmission attempt is made for
multicast and the plValue.
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.
},
" uplink " : {
" delay " : {
" type " : " SimpleRandomDelay ",
" steps " : 4,
" minDelay " : 50 ,
" maxDelay " : 200 ,
" prValue " : 0.8 ,
" maxRetries " : 2
},
" capacity " : 28000000
},
" downlink " : {
" unicast " : {
" delay " : {
" type " : " SimpleRandomDelay ",
" steps " : 3,
" minDelay " : 100 ,
" maxDelay " : 200 ,
" maxRetries " : 2
}
},
" multicast " : {
" delay " : {
" type " : " SimpleRandomDelay ",
" steps " : 3,
" minDelay " : 120 ,
" maxDelay " : 220 ,
" plValue " : 0.8
},
" us ableCa pacit y " : 0.6
},
" capacity " : 42200000
}
}
]
}
Note that nw represents the upper-left (north-west) point of the rectangle and se the lower-right (south-
east). For further information about the possible options, please refer to the VSimRTI API documenta-
tion.
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.
The visualizeRegions-option is used to write a KML-file that visualizes the used cell regions. Google Earth
can be used to display it.
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 communi-
cating applications in the Application Simulator.
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 doesnt
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 dont allow tcp (as ack for broadcasts is denied).
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:
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.
The SNS can be configured via the sns_config.json which can be found within the scenarios folder
structure:
<scenarioName>
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).
The singlehop component additionally includes the singlehop radius, which actually is the direct com-
munication 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 millisec-
onds for direct singlehop and slightly higher delays for multihop could look like this:
{
" version " : " 0.16.0 " ,
3.7.4 Operation
The individual steps of operation for the two modes of Topocast (direct singlehop) and Geocast (georout-
ing with multihop) transmission are as following.
1. get transmission radius from configuration (to simulate tx power, carrier frequency and antenna
properties etc.)
2. determine potential receiver nodes in the sending radius (without original sender)
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 re-
broadcasting in geocast)
4. simulate successful message transmission (with packet loss and possible retransmissions via prpl)
for each node
This ambassador can be configured with a configuration file. The specific path is
vsimrti/scenarios/<scenarioName>/eventserver/eventserver_config.json
<scenarioName>
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.
This ambassador can be configured with a configuration file. The specific path is
vsimrti/scenarios/<scenarioName>/battery/battery_config.json
<scenarioName>
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.
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.
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.
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.
{
" 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.
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
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
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:
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.
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
isnt a strict requirement. What these classes actually do and how they are implemented will be covered
in the next two parts of this tutorial.
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:
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.
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
In general, every vehicle application will extend the AbstractApplication abstract class with the Vehi-
cleOperatingSystem 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.
Application initialization
During the initialization procedure of communicating applications, the communication modules (WLAN-
Module 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 " ) ;
}
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.
In order to act upon received messages from other simulation entities, the receiveV2XMessage from the
CommunicationApplication interface is used. In our tutorial scenario we dont 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 () ) ;
}
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.
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.
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 () ;
}
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.
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 () ;
}
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 ) ;
}
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 desti-
nation 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.
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.
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 ) ) ;
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.
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.
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 " ) ;
}
}
}
The general concept here is that the payload is wrapped as an object in the actual event. The procedure
here is as follows:
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 "
}
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 "
}
]
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.
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)
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 - Initialize application ( at simulation time 6.000 ,000 ,000 s )
INFO - Activated AdHoc Module ( at simulation time 6.000 ,000 ,000 s )
INFO - Received V2X Message from rsu_0 ( at simulation time 18.000 ,400 ,000 s )
INFO - Received V2X Message from rsu_0 ( at simulation time 20.000 ,400 ,000 s )
Next, we see the contents of the IntraVehicleMessage that originates from another app on the vehicle:
INFO - Initialize application ( at simulation time 2.000 ,000 ,000 s )
INFO - Received message from another application: I n tr aV e hi cl e Ms g { origin = veh_0 , id =631} ...
The following log was generated by the RSU application and logs the sending of each ad hoc broadcast:
INFO - Initialize application ( at simulation time 0.000 ,000 ,000 s )
INFO - Activated WLAN Module ( at simulation time 0.000 ,000 ,000 s )
INFO - Sending out AdHoc broadcast ( at simulation time 0.000 ,000 ,000 s )
INFO - Sending out AdHoc broadcast ( at simulation time 2.000 ,000 ,000 s )
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 wont be discussed in this tutorial.
This next tutorial in the series shows some of the more advanced features of VSimRTI. In it we will take
a closer look at different federates, a term which is used in the High Level Architecture and basically
describes a dedicated simulator to which the simulation infrastructure can talk. The follow topics will be
covered in this tutorial:
Enabling and using a different communication simulator on the basis of the VSimRTI cell simulator.
Note: The topics from the last tutorial, especially how to map applications and the basics of how to
implement them wont be covered in this tutorial. If you arent familiar with these concepts you should
refer to the first tutorial which has them covered.
5.1 Overview
The scenario used for this tutorial is a little bit more complex than the last one from the Tiergarten tutorial,
so we dedicate it its own section. Picture 5.1 shows an overview of the scenario for this tutorial. Note,
there is an icy road along the highway.
In this scenario, several number of cars are emitted and drive on the blue route. Along the highway,
theres an icy road section where vehicles have to slow down to avoid accidents. The further course of the
scenario can be described as follows:
1. A car (Car A) which is equipped with ad hoc communication (WiFi) capabilities detects an environ-
mental hazard of some sort, in this example its ice on 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 dont have any form of communication equipment arent warned and drive into the icy
part of the road. Since they have careful and responsible drivers they slow down to avoid accidents.
4. The cars that can receive the DENM because they have the appropriate equipment however dont
want to waste more time than necessary and decide to use a different route (green) which is safer
and faster due to the lack of ice on it.
5. Last but not least is the WeatherServer (technically implemented as an RSU) that sits somewhere
on the map. This server 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. For avoiding the icy road that isnt important and serves merely to show how to access statistics
such as the state of charge of the battery from within an application. This will be covered in more detail
later on in this tutorial.
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 that arent equipped with an application and therefore cannot communicate. (60%
of all vehicles) just demonstrate how to use electric vehicles in a scenario.
2. Vehicles that are equipped with ad hoc wifi that might not receive the DENM due to range lim-
itations and drive into it nonetheless. They are equipped with the com.dcaiti.vsimrti.app.
tutorials.barnim.WeatherWarningApp-application. (20% of all vehicles)
3. Cellular communication enabled vehicles which are able to communicate with the WeatherServer.
These get 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. (10% of all vehicles)
4. Electric vehicles that arent equipped with an application and therefore cannot communicate but
have 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.
Since the applications are mapped we need to make sure the additional simulators are enabled. This
is done in the main VSimRTI configuration file that resides in vsimrti/vsimrti_config.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:
<! -- Cellular network simulators -- >
< federate id = " cell2 " active = " true " / >
5.4 Applications
This section deals with the specific details of the WeatherWarningApplication. We will cover in partic-
ular how to enable and use cellular communication, how to react on DEN-Messages and how the user
can achieve a re-routing of the vehicle.
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 discussed here stay the
same regardless of what form of communication is used.
The vehicle checks for sensor input at a given interval. This is straight forward and works the same
way as in the first Tiergarten tutorial where the event concept of the VSimRTI application simulator
is explained in more detail, except for an additional method that reads the sensor.
The vehicle decreases its speed in order to safely pass the dangerous spot.
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 wont be discussed in detail in this tutorial.
Receiving
First of all we look at the receiving side of the DENM here. Since that 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 ;
}
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.
We will now take a close 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 WeatherWarning-
Application 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 ) ;
}
The sending is the same as in the Tiergarten tutorial, except we decide via an if-statement whether or
not cellular communication or ad hoc WiFi is used. Note the two different methods either ending with
Cell or 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 the things up we covered in this tutorial series:
Getting a general idea how to configure VSimrti, especially how to enable and disable different,
coupled simulators.
How to find and process the results of a simulation run with the help of the generated log files.
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
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 -0.16.2. jar -- osm2sumo -d tiergarten . db -i tiergarten . osm -l -n
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
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 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.
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 " : [
3 {
4 " applications " : [ " com . vsimrti . applications . a d d i t i o n a l s a m p l e s . misc .
TrafficLightExample "],
5 " name " : " TrafficLight "
6 }
7 ]
8 }
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<TrafficLightOperatingSystem> 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 " tls " : [
2 {
3 " tlName " : " 2 7 0 1 1 3 1 1 " ,
4 " name " : " TrafficLight "
5 },
6 {
7 " tlName " : " 2 5 2 8 6 4 8 0 1 " ,
8 " name " : " TrafficLight "
9 }
10 ]
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.
In order to access the traffic light functionality from within an application it must extend the Abstrac-
tApplication<TrafficLightOperatingSystem> 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:
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.
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.
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.
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=true).
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
7 Create a new scenario 7.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.
VSimRTI uses a database for internal storage of map and route data. Therefore it is necessary to con-
vert 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 -0.16.2. 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 -0.16.2. 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 simula-
tors.
Regarding files, the output of these two steps should be the following:
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:
or
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 -0.16.2. 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 -0.16.2. 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 -0.16.2. jar -- db2sumo -d path / to / databsae . db -r < scenarioname >. rou .
xml
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 scenario-
convert. For this purpose, you can use the following command:
java - jar scenario - convert -0.16.2. 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
7.3 VSimRTI
Now you have everything you need to create a configuration set that VSimRTI will recognize as a sce-
nario. 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.
<scenarioName>
applicationNT
battery
eventserver
cell2
mapping3
ns3
omnetpp
sources
sns
sumo
visualizer
vsimrti
Figure 7.1: Scenario: folder structure for complete component set
However, a subset of all components already allows reasonable simulations. The most important compo-
nents are mentioned in the following part.
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 dont have one by now have a look at the configuration for the default simulations provided with
VSimRTI.
Navigation (applicationNT)
The generated database file <scenarioName>.db needs to moved into the applicationNT folder. As
long as you only have one database file in this folder you dont 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.
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. <scenarioName>.sumo.cfg.
For further info on this type of simulators have a look at chapters 3.4.
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 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.
Important: Larger values for the spatial expansion of the simulation area are also usu-
ally 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.
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 provides several ways of data evaluation by so called visualizers. To visualize a scenario, different
visualizers can connect to a running simulation. Figure 8.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 8.2)
VSimRTI File Visualizer .................................................. (see 8.3)
VSimRTI Integrated Test and Evaluation Framework (ITEF) .............. (see 8.4)
user defined visualizer ..........................................................
Figure 8.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.
8 Visualizers 8.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 commandline parameter -v.
The File Visualizer is a tool which gives you the opportunity to log specific VSimRTI message types.
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.
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 >
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 >
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 >
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 8.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 cant
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.
With existing methods of VehicleMovements and its super class Message , we cant 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.
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 >
What we havent 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 >
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
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
Message.getTimeInSec() long
Message.getTimeInMS() long
ReceiveV2Xmessage.getType() String
SendV2Xmessage.getType() String
VehicleInfo.getApplicationNr() int
Method Type
VehicleMovements.getUpdated() List<VehicleInfo>
VehicleInfo.getId() String
VehicleInfo.getPosition() GlobalPosition
GlobalPosition.getLatitude() double
Message.getTime() long
VehicleInfo.getType() UnitType
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 8.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 8.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 8.4) provides statistical evaluations of the test and simulation run.
Currently, statistics on Vehicle Speed, Travel Time, Travel Distance and several more are supported.
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.
9.1.1 Usage
GNU/Linux
./ simrun . sh -c / scenarios / < scenario name >/ vsimrti / simrun_config . xml -p
numberofparallelsimulations
GNU/Linux
java - jar VsimrtiEmbeddedStarter - x . x . x . jar -s -u userid -- strict - configuration - path -c
scenarios / < scenario name >/ vsimrti / simrun_config . xml
Listing 9.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 9.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 9.4: VSimRTI VSimRTIEmbeddedStarter simulation runner start command for Microsoft Windows.
9 Run simulation series 9.1 Simulation Runner
Configuration file
9.1.2 Configuration
The example in listing 9.5 shows a complete configuration. Using this configuration the simulation-runner
would try to run a scenario called Barnim while adapting the mapping (see 3.5.15), the configuration file
of SNS, and VSimRTI (see 7.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 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 < configuration
3 xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
4 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 " >
5 <! - - basic configuration -->
6 < vsimrti location = " / path / to / vsim rti_fo lder " executable = " vsimrti . sh " username = " user_id " / >
7 < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / v simrti _confi g . xml " persistent = "
false " repetitions = " 1 " >
8 <! - - argument > - o TRACE </ argument -->
9 <! - - argument > - w 0 </ argument -->
10 </ scenario >
11
12 <! - - define connected values for controlled changes -->
13 < dimension name = " P e n e t r a t i o n R a t e s " >
14 < 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 " >
15 < value > 0.0 </ value >
16 < value > 0.5 </ value >
17 < value > 0.75 </ value >
18 </ parameter >
19 < 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 " >
20 < value >1 </ value >
21 < value > 0.5 </ value >
22 < value > 0.25 </ value >
23 </ parameter >
24 < parameter name = " Si mulati ontime " file = " vsimrti / vsim rti_co nfig . xml " fileFormat = " xml " item
= " // simulation / endtime " type = " ValueList " >
25 < value > 100 </ value >
26 < value > 100 </ value >
27 < value > 100 </ value >
28 </ parameter >
29 </ dimension >
30
31 <! - - define values for automatically permuted simulations -->
32 < parameter name = " Si n gl eh o pR ad i us " file = " sns / sns_config . json " fileFormat = " json " item = "
singlehop . radius " type = " ValueList " >
33 < value > 500 </ value >
34 < value > 600 </ value >
35 </ parameter >
36 </ configuration >
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 its own section.
1 < vsimrti location = " / path / to / vsim rti_fo lder " executable = " vsimrti . sh "
2 username = " user_id " p a r a l l e l S i m u l a t i o n s = " 1 " / >
The system specific part of the configuration (see listing 9.6) is the only part of the configuration that can
be overwritten using a second configuration file. It contains the following values:
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 < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / vs imrti_ config . xml " persistent = " false
" repetitions = " 1 " >
2 <! -- argument > - o TRACE </ argument -- >
3 <! -- argument > - w 0 </ argument -- >
4 </ scenario >
The scenario definition (see listing 9.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.
9.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 per-
formed is defined by the number of changes configured enriched with the information about simulation
repetitions.
For the example in listing 9.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 < 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 "
2 fileFormat = " json " item = " vehicles [0]. types [0]. weight " type = " ValueList " >
3 < value >0 </ value >
4 < value > 50 </ value >
5 < value > 75 </ value >
6 </ parameter >
Each value that should be changed in a run is defined by a parameter element identified by a name (see
listing 9.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.
json: contains an array-style definition of the target value. The value in listing 9.8 would change
line 13 in listing 9.9. (In the first entry of vehicles the attribute weight of the types first entry).
1 {
2 " prototypes " :[{ " name " : " PKW " }] ,
3 " vehicles " :[
4 {
5 " startingTime " : 5.0 ,
6 " targetDensity " :1200 ,
7 " m a x N u m b e r V e h i c l e s " : 250 ,
8 " route " : " 1 " ,
9 " types " :[
10 {
11 " 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 " ] ,
12 " name " : " PKW " ,
13 " weight " :0.2
14 },
15 {
16 " name " : " PKW " ,
17 " weight " :0.8
18 }
1 https://en.wikipedia.org/wiki/XPath
19 ]
20 }
21 ]
22 }
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.
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 A =a , B=a
2 A =a , B=b
3 A =b , B=a
4 A =b , 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 9.5 utilizes this function to make sure the vehicle percentages sum
up to 100. The generated permutations for the dimension enclosed parameters are:
1 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
2 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
3 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 9.5 is as follows:
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.
10.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 gen-
erates, 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
start simulation using the database, which now contains all relevant map data and route informa-
tion
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
(import OpenStreetMap file to database, generate routes by given coordinates, generate network with
sumo-netconvert and export to SUMO configuration files).
10 Additional tools 10.1 scenario-convert
Usage
The following listing 3 shows a JSON example file which can be used with the -c option of scenario-
convert.
1 {
2 " operati ng_mod e " : " osm2db " ,
3
4 " input_path " : " path / to / input . osm " ,
5 " database_path " : " path / to / database . db " ,
6
7 " sumo_prefix " : " SUMO_PREFIX " ,
8
9 " e xe c u t e _ n e t c o n v e r t " : true ,
10 " export_traffic_lights ": true ,
11 " export_routes " : true ,
12 " impor t _ b u i l d i n g s " : false ,
13 " force _ ov er w ri te " : false ,
14 " disable_graph_cleanup ": false ,
15 " ignore_turn_restrictions ": false ,
16
17 " gener a te _r o ut es " : true ,
18 " numbe r _ o f _ r o u t e s " : 2,
19 " route _ be gi n _l at " : 52.5 ,
20 " route _ be gi n _l on " : 13.4 ,
21 " route_end_lat " : 52.2 ,
22 " route_end_lon " : 13.1 ,
23
24 " osm_overwrite_speeds ": false ,
25 " osm_s p ee ds _ fi le " : " path / to / speeds . properties "
26 }
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 <FILE>. In the speed properties file, for each way type a speed value can
be defined, according to the OSM highway key 1 .
1 # the unit the speed values are defined in [ kmh , ms ]
2 speed . unit = kmh
3
4 # the default speed for all way types which are not defined here
5 speed . default = 30
6
7 # autobahn
8 highway . motorway = 130
9 highway . motorway_link = 70
10
11 # bundesstrasse ( germany )
12 highway . trunk = 70
13 highway . trunk_link = 65
14
15 # linking bigger town
16 highway . primary = 65
17 highway . primary_link = 60
18
19 # linking towns + villages
20 highway . secondary = 60
21 highway . secon dary_l ink = 50
22
23 # streets without middle line separation
24 highway . tertiary = 50
25 highway . tertiary_link = 40
26 highway . residential = 30
27
28 # special roads
29 highway . living_street = 5
30 highway . service = 20
31
32 # unclassified roads
33 highway . unclassified = 30
34 highway . road = 20
35
36 # forest tracks
37 highway . track 15
Listing 10.4: Example file which can be used to configure speeds for ways during OSM import
1 http://wiki.openstreetmap.org/wiki/Key:highway
11.1 Overview
VSimRTI can be configured by adapting the files in the /vsimrti/etc directory. The following technical
aspects of VSimRTI can be configured:
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:
A detailed description of the various parameters can be found in the documentation available on the
DCAITI website .
11 VSimRTI configuration 11.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. /vsimr-
ti/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.
Here you find helpful information regarding VSimRTI and its 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 Nanos ANOther editor (NANO).
1 # . bash_profile
2
3 # Get the aliases and functions
4 if [ -f ~/. bashrc ]; then
5 . ~/. bashrc
6 fi
7
8 # User specific environment and startup programs
9
10 PATH = $PATH : $HOME / bin : $HOME / sumo /
11
12 export PATH
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 .
12 Additional information 12.1 PATH configuration
Microsoft Windows
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.
5. Click Edit.
6. Modify Path by adding the absolute location to the value for Path.
(Dont forget a semicolon to seperate).
1
6
7
4
5
8
Figure 12.1: Edit PATH variable in Microsoft Windows
V2X Vehicle-2-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
VIM Vi IMproved. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
VSimRTI Vehicle-2-X Simulation Runtime Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
XML Extensible Markup Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
VSimRTI deployment
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.
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/<scenarioName>/<federateid> .
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
etc/defaults.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 <! - - file version: 2013 -04 -13 -->
3 < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
4 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 " >
5 < federates >
6 < federate class = " com . dcaiti . vsimrti . fed . swans . ambassador . S w an s Am ba s sa do r " >
7 < id > swans </ id >
8 < deploy > true </ deploy >
9 < start > true </ start >
10 < host > local </ host >
11 < port >0 </ port >
12 < config > swans_config . xml </ config >
13 < optimistic value = " false " >
14 < window SizeI nNS value = " -1 " / >
15 < s t a t e S a v e M a n a g e r type = " SIMPLE " / >
16 </ optimistic >
17 < ps eudoFe derate > </ pseudo Federa te >
18 < messages >
19 < message > AddedVehicle </ message >
20 < message > AddedRsu </ message >
21 < message > A d d e d T r a f f i c L i g h t </ message >
22 < message > V e h i c l e M o v e m e n t s </ message >
23 < message > SendV 2XMess age </ message >
24 </ messages >
25 </ federate >
26 < 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 " >
27 < id > omnetpp </ id >
28 < deploy > true </ deploy >
29 < start > true </ start >
30 < host > local </ host >
31 < port > 4998 </ port >
32 < config > omnetpp . ini </ config >
33 < ps eudoFe derate > </ pseudo Federa te >
34 < messages >
35 < message > AddedVehicle </ message >
36 < message > AddedRsu </ message >
37 < message > A d d e d T r a f f i c L i g h t </ message >
38 < message > V e h i c l e M o v e m e n t s </ message >
39 < message > SendV 2XMess age </ message >
40 < 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 >
41 </ messages >
42 </ federate >
43 < federate class = " com . dcaiti . vsimrti . fed . ns3 . ambassador . Ns3Ambassador " >
44 < id > ns3 </ id >
45 < deploy > true </ deploy >
46 < start > true </ start >
47 < host > local </ host >
48 < port > 5011 </ port >
49 < config > ns3_config . xml </ config >
50 < ps eudoFe derate > </ pseudo Federa te >
51 < messages >
52 < message > AddedVehicle </ message >
53 < message > AddedRsu </ message >
54 < message > A d d e d T r a f f i c L i g h t </ message >
55 < message > V e h i c l e M o v e m e n t s </ message >
56 < message > SendV 2XMess age </ message >
57 < 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 >
58 </ messages >
59 </ federate >
60 < federate class = " com . dcaiti . vsimrti . fed . sns . ambassador . SnsAmbassador " >
61 < id > sns </ id >
194 < federate class = " com . dcaiti . vsimrti . fed . c ha r gi n gs ta t io n . ambassador .
ChargingStationAmbassador ">
195 < id > c h ar g in gs t at io n </ id >
196 < deploy > false </ deploy >
197 < start > false </ start >
198 < host > local </ host >
199 < config > c h a r g i n g s t a t i o n _ c o n f i g . json </ config >
200 < ps eudoFe derate > </ pseudo Federa te >
201 < messages >
202 < message > A d d e d C h a r g i n g S t a t i o n </ message >
203 < message > ChargeRequest </ message >
204 < message > S t o p C h a r g e R e q u e s t </ message >
205 < message > C h a r g i n g S t a t i o n U p d a t e </ message >
206 </ messages >
207 </ federate >
208 < 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 " >
209 < deploy > false </ deploy >
210 < start > false </ start >
211 < id > visualizer </ id >
212 < host > local </ host >
213 < port > 5099 </ port >
214 < update >1 </ update >
215 < config > v i s u a l i z e r _ c o n f i g . xml </ config >
216 < ps eudoFe derate > </ pseudo Federa te >
217 < messages >
218 < 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 >
219 < 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 >
220 < message > AddedVehicle </ message >
221 < message > AddedRsu </ message >
222 < message > A d d e d T r a f f i c L i g h t </ message >
223 < message > A d d e d C h a r g i n g S t a t i o n </ message >
224 < message > V e h i c l e M o v e m e n t s </ message >
225 < message > SensorData </ message >
226 < 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 >
227 < message > U p d a t e T r a f f i c L i g h t </ message >
228 < message > C h a r g i n g S t a t i o n U p d a t e </ message >
229 < message > SetMaxSpeed </ message >
230 < message > SlowDown </ message >
231 < message > ChangeRoute </ message >
232 < message > C h a n g e S t a t i c R o u t e </ message >
233 < message > ChangeLane </ message >
234 < 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 >
235 < message > A p p l i c a t i o n I t e f M e s s a g e </ message >
236 < message > SendV 2XMess age </ message >
237 < message > R e c e i v e V 2 X M e s s a g e </ message >
238 < message > D e l e t e V 2 X M e s s a g e </ message >
239 </ messages >
240 </ federate >
241 < 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 " >
242 <! - - federate class =" com . dcaiti . vsimrti . fed . phabmacs . ambassador .
O p t i m i s t i c P h a b m a c s A m b a s s a d o r " -->
243 < id > phabmacs </ id >
244 < deploy > true </ deploy >
245 < start > true </ start >
246 < host > local </ host >
247 < port > 50423 </ port >
248 < config > p h ab m ac s_ c on fi g . json </ config >
249 < optimistic value = " false " >
250 < windo wSizeI nNS value = " 1000000000 " / >
251 < s t a t e S a v e M a n a g e r type = " SIMPLE " / >
252 </ optimistic >
253 <! - -
254 < javaMemorySizeXms >100 </ javaMemorySizeXms >
255 < javaMemorySizeXmx >4086 </ javaMemorySizeXmx >
256 < javaMemorySizeMaxPermSize >4086 </ javaMemorySizeMaxPermSize >
257 -->
258 < c u s t o m J a v a A r g u m e n t > - Djava . library . path = " .\\ libs \\ native \\ windows " </
customJavaArgument >
259 <! - - < customJavaArgument > - 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 =8086 </ customJavaArgument > -->
260 < messages >
261 < 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 >
262 < 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 >
263 < message > AddedVehicle </ message >
264 < message > ChangeSpeed </ message >
265 < message > S et A cc el e ra ti o n </ message >
266 < message > SetMaxSpeed </ message >
267 < message > SlowDown </ message >
268 < message > C h a n g e S t a t i c R o u t e </ message >
269 < 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 >
270 < message > ChangeLane </ message >
271 < message > Stop </ message >
272 < message > Resume </ message >
273 < 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 >
274 < message > P r o p a g a t e N e w R o u t e </ message >
275 < message > SetActuators </ message >
276 </ messages >
277 </ federate >
278 </ federates >
279 </ configuration >
etc/hosts.json
1 {
2 " localHosts " : [
3 {
4 " id " : " local " ,
5 " w o r k i n g D i r e c t o r y " : " ./ tmp " ,
6 " address " : " localhost " ,
7 " op er a ti ng S ys t em " : " linux "
8 }
9 ],
10 " remoteHosts " : [
11 {
12 " id " : " remote " ,
13 " w o r k i n g D i r e c t o r y " : " / home / vsimrti / test / tmp " ,
14 " address " : " 192.168.0.1 " ,
15 " op er a ti n gS ys t em " : " linux " ,
16 " user " : " username " ,
17 " password " : " password " ,
18 " port " : 22
19 }
20 ]
21 }
etc/logback.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 <! - - file version: 2013 -04 -05 -->
3 < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
4 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 " >
5 <! - - timestamp key =" timestamp " datePattern =" yyyy - MM - dd - HH:mm:ss " / -->
6
7 <! - - # # # # # # # # # # # # # # # # # # # # # # # # APPENDER # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -->
8 <! - - Console logger -->
9
10 < if condition = isDefined (" logDirectory ") >
11 < then >
12 < property name = " logDirectory " value = " ${ logDirectory } " / >
13 < appender name = " STDOUT " class = " ch . qos . logback . core . C o ns o le Ap p en de r " >
14 < 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 " >
15 < pattern >% date % -5 level % logger {0} - % msg % n </ pattern >
16 </ encoder >
17 </ appender >
18 <! - - Logger for Time Advances -->
19 < appender name = " STDOUT - TimeAdvance " class = " ch . qos . logback . core . Co ns o le Ap p en de r " >
20 < 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 " >
21 <! - - Difference to previous logger: no % n at line end ... -->
22 < pattern >% date { HH:mm:ss } - % msg </ pattern >
23 </ encoder >
24 </ appender >
25 <! - - Logger for DBloading progress -->
26 < appender name = " STDOUT - DbLoading " class = " ch . qos . logback . core . C on so l eA p pe nd e r " >
27 < 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 " >
28 <! - - Difference to previous logger: no % n at line end ... -->
29 < pattern >% date { HH:mm:ss . SSS } - % msg </ pattern >
30 </ encoder >
31 </ appender >
32 <! - - Logger for plain messages -->
33 < appender name = " STDOUT - MessageOnly " class = " ch . qos . logback . core . Co ns o le Ap p en d er " >
34 < 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 " >
35 < pattern >% msg % n </ pattern >
systeminfo.txt
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 ..............................................................................
network.json ............................................................ (see B.2)
regions.json ............................................................ (see B.3)
mapping3 ...........................................................................
mapping_config.json .................................................... (see B.4)
sns ................................................................................
sns_config.json ........................................................ (see B.5)
sources ............................................................................
Barnim_fixed.osm .......................................... partially listed (see B.6)
sumo ...............................................................................
Barnim.edg.xml ............................................ partially listed (see B.7)
Barnim.net.xml ............................................ partially listed (see B.8)
Barnim.nod.xml ............................................ partially listed (see B.9)
Barnim.rou.xml ........................................................ (see B.10)
Barnim.sumo.cfg ....................................................... (see B.11)
sumo_config.json ...................................................... (see B.12)
visualizer ........................................................................
visualizer_config.xml ................................................ (see B.13)
vsimrti ............................................................................
vsimrti_config.xml .................................................... (see B.14)
simrun_config.xml ..................................................... (see B.15)
Figure B.1: Scenario Barnim: folder structure
Appendix B Example scenario Barnim B.2 File listings
battery/battery_config.json
1 {
2 " v ehi cl e M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . vehicle . ElectricSmart " ,
3 " ve h ic l e M o d e l C o n f i g " : {
4 " Mass " : 1060 ,
5 " ReferenceArea " : 1.95 ,
6 " Dr ag C oe ff i ci e nt " : 0.375 ,
7 " T a n k T o W h e e l E f f i c i e n c y " : 0.7 ,
8 " 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 ,
9 " 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
10 },
11 " b att er y M o d e l C l a s s " : " com . dcaiti . vsimrti . fed . battery . sim . models . battery .
VerySimpleBatteryModel ",
12 " ba t te r y M o d e l C o n f i g " : {
13 " NumberOfCells " : 93 ,
14 " CellVoltage " : 4.3 ,
15 " C e l l C a p a c i t y I n A h " : 50 ,
16 " eff_Summer " : 0.8448 ,
17 " Re chargi ngType " : 2 ,
18 " MinSOC " : 0.30 ,
19 " MaxSOC " : 0.70
20 },
21 " 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 ",
22 " environmentModelConfig ": {
23 " Gravity " : 9.81 ,
24 " FluidDensity " : 1.293 ,
25 " 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
26 },
27 " consumers " : [ { " Radio " : 10 } , { " HeadLight " : 100 } ]
28 }
cell2/network.json
1 {
2 " version " : " 0.16.0 " ,
3 " configuration " : {
4 " d eb u gG e oc as t in g " : false
5 },
6 " globalRegion " : {
7 " uplink " : {
8 " delay " : {
9 " type " : " ConstantDelay " ,
10 " delay " : 100 ,
11 " prValue " : 0,
12 " maxRetries " : 2
13 },
14 " capacity " : 28000000
15 },
16 " downlink " : {
17 " unicast " : {
18 " delay " : {
19 " type " : " ConstantDelay " ,
20 " delay " : 100 ,
21 " prValue " : 0,
22 " maxRetries " : 2
23 }
24 },
cell2/regions.json
1 {
2 " version " : " 0.16.0 " ,
3 " visual i z e R e g i o n s " : false ,
4 " regions " : [
5 ]
6 }
mapping3/mapping_config.json
1 {
2 " prototypes " :[
3 {
4 " name " : " PKW " ,
5 " accel " :2.6 ,
6 " decel " :4.5 ,
7 " length " :5.00 ,
8 " maxSpeed " :70.0 ,
9 " minGap " :2.5 ,
10 " sigma " :0.5 ,
11 " tau " :1
12 },
13 {
14 " name " : " electricPKW " ,
15 " vehicleClass " : " El e ct ri c Ve hi c le " ,
16 " accel " :2.6 ,
17 " decel " :4.5 ,
18 " length " :5.00 ,
19 " maxSpeed " :40.0 ,
20 " minGap " :2.5 ,
21 " sigma " :0.5 ,
22 " tau " :1
23 },
24 {
25 " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . WeatherServer " ] ,
26 " name " : " WeatherServer "
27 }
28 ],
29 " rsus " :[
30 {
31 " lat " :52.65027421760045 ,
32 " lon " :13.545005321502686 ,
33 " name " : " WeatherServer "
34 }
35 ],
36 " vehicles " :[
37 {
38 " startingTime " : 5.0 ,
39 " targetDensity " :1200 ,
40 " m a x N u m b e r V e h i c l e s " : 120 ,
41 " route " : " 1 " ,
42 " types " :[
43 {
44 " 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 "
],
45 " name " : " PKW " ,
46 " weight " :0.1
47 },
48 {
49 " applications " :[ " com . dcaiti . vsimrti . app . tutorials . barnim . W e a t h e r W a r n i n g A p p " ] ,
50 " name " : " PKW " ,
51 " weight " :0.2
52 },
53 {
54 " name " : " PKW " ,
55 " weight " :0.6
56 },
57 {
58 " name " : " electricPKW " ,
59 " weight " :0.1
60 }
61 ]
62 }
63 ]
64 }
sns/sns_config.json
1 {
2 " version " : " 0.16.0 " ,
3
4 " singlehop " : {
5 " _singlehop radius in m " : 0 ,
6 " radius " : 509.4 ,
7 " _delay config according to vsimrti - communication " : 0 ,
8 " delay " : {
9 " type " : " SimpleRandomDelay ",
10 " steps " : 5,
11 " minDelay " : 0.4 ,
12 " maxDelay " : 2.4 ,
13 " prpl " : 0,
14 " retries " : 0
15 }
16 },
17
18 " multihop " : {
19 " _delay config according to vsimrti - communication " : 0 ,
20 " delay " : {
21 " type " : " GammaRandomDelay ",
22 " minDelay " : 10 ,
23 " expDelay " : 30 ,
24 " prpl " : 0,
25 " retries " : 2
26 }
27 }
28 }
sources/Barnim_fixed.osm
15 < 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 / >
16 < 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 / >
17 < 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 / >
18 < 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 / >
19 < 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 / >
20 < 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 / >
21 < 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 / >
22 < 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 / >
sumo/Barnim.edg.xml
sumo/Barnim.net.xml
sumo/Barnim.nod.xml
sumo/Barnim.rou.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2
3 <! - - generated on 04/15/14 14 :26:30 by SUMO duarouter Version 0.19.0
4 <? xml version ="1.0" encoding =" UTF -8"? >
5
6 < 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 " >
7
8 < input >
9 <net - file value =".\ Barnim . net . xml "/ >
10 < trip - files value =".\ trips . xml "/ >
11 </ input >
12
13 < output >
14 < output - file value =" Barnim . rou . xml "/ >
15 </ output >
16
17 </ configuration >
18 -->
19
20 < 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 " >
21 <! - - vType model =" SUMO_KRAUSS " id =" PKW " / -->
22
_ 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 " / >
25
26 <! - - vehicle id ="0" type =" PKW " route ="1" depart ="1" repno ="500" period ="5" / > Standard route
-->
27 <! - - vehicle id ="1" type =" PKW " route ="2" depart ="3" repno ="20" period ="20" / > Ausweichroute
-->
28 </ routes >
sumo/Barnim.sumo.cfg
sumo/sumo_config.json
1 {
2 " s u m o C o n f i g u r a t i o n F i l e " : " Barnim . sumo . cfg "
3 }
visualizer/visualizer_config.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 <! - - file version: 2013 -11 -26 -->
3 < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
4 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 " >
5 < 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 " >
6 < filename > visualizer . csv </ filename >
7 < directory >. </ directory >
8 < separator >; </ separator >
9 < messages >
10 < message id = " V e h i c l e M o v e m e n t s " >
11 < entries >
12 < entry >" MOVE_VEHICLE " </ entry >
13 < entry > Time </ entry >
14 < entry > Updated:Name </ entry >
15 < entry > U p d a t e d : P o s i t i o n . Latitude </ entry >
16 < entry > U p d a t e d : P o s i t i o n . Longitude </ entry >
17 < entry > Updated:Speed </ entry >
18 < entry > U pd at e d: H ea di n g </ entry >
19 </ entries >
20 </ message >
21 < message id = " R e c e i v e V 2 X M e s s a g e " >
22 < entries >
23 < entry >" RECV_MESSAGE " </ entry >
24 < entry > Time </ entry >
25 < entry > MessageId </ entry >
26 < entry > ReceiverName </ entry >
27 < entry > Type </ entry >
28 </ entries >
29 </ message >
30 < message id = " S endV2X Messag e " >
31 < entries >
32 < entry >" SEND_MESSAGE " </ entry >
33 < entry > Time </ entry >
34 < entry > MessageId </ entry >
35 < entry > SourceName </ entry >
36 < entry > Type </ entry >
37 <! - - < entry > Destination . Position . Latitude </ entry > -->
38 <! - - < entry > Destination . Position . Longitude </ entry > -->
39 <! - - < entry > Destination . Radius </ entry > -->
40 </ entries >
41 </ message >
42 < message id = " AddedVehicle " enabled = " true " >
43 < entries >
44 < entry >" ADDED_VEHICLE " </ entry >
45 < entry > Time </ entry >
46 < entry > A p p l i c a t i o n V e h i c l e . Name </ entry >
47 < entry > A p p l i c a t i o n V e h i c l e . Applications </ entry >
48 < entry > A p p l i c a t i o n V e h i c l e . VehicleType . Name </ entry >
49 </ entries >
50 </ message >
51 < message id = " A d d e d T r a f f i c L i g h t " >
52 < entries >
53 < entry >" A D D E D _ T R A F F I C L I G H T " </ entry >
54 < entry > Time </ entry >
55 < 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 >
56 < 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 >
57 < entry > T r a f f i c L i g h t G r o u p . FirstPosition . Latitude </ entry >
58 < entry > T r a f f i c L i g h t G r o u p . FirstPosition . Longitude </ entry >
59 </ entries >
60 </ message >
61 < message id = " AddedRsu " >
62 < entries >
vsimrti/vsimrti_config.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 < configuration xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
3 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 " >
4 < simulation >
5 <! - - Scenario name -->
6 < id > Barnim </ id >
7 <! - - Simulation time frame -->
8 < starttime >0 </ starttime >
9 < endtime > 1200 </ endtime >
10 <! - - Seed for pseudo random number generator used by most of the federates -->
11 < randomSeed > 268965854 </ randomSeed >
12 <! - - Projection between global and cartesian coordinates -->
13 <! - - c e n t e r C o o r d i n a t e s : roughly the center of simulation area -->
14 <! - - c a r t e s i a n O f f s e t : can be found in the generated network file for the traffic
simulator , e . g . the . net . xml file for sumo -->
15 < WGS84UTMTransformConfig >
16 {
17 " centerCoordinates ": {
18 " longitude " : 13.56 ,
19 " latitude " : 52.63
20 },
21 " ca r te si a nO ff s et " : {
22 " x " : -397957.77 ,
23 " y " : -5826114.68
24 }
25 }
26 </ W G S 8 4 U T M T r a n s f o r m C o n f i g >
27 <! - - Global IP management -->
28 < IPResolverConfig >
29 {
30 netMask: " 255.255.0.0 " ,
31 vehicleNet: " 10.1.0.0 " ,
32 rsuNet: " 10.2.0.0 " ,
33 tlNet: " 10.3.0.0 " ,
34 csNet: " 10.4.0.0 "
35 }
36 </ I P R e s o l v e r C o n f i g >
37 < threads >1 </ threads >
38 </ simulation >
39 < federates >
40 <! - - Cellular network simulator -->
41 < federate id = " cell2 " active = " false " / >
42 <! - - V2X ( ad hoc ) network simulators -->
43 < federate id = " omnetpp " active = " false " / >
44 < federate id = " ns3 " active = " false " / >
45 < federate id = " sns " active = " true " / >
46 < federate id = " swans " active = " false " / > <! - - SWANS will be removed in future releases -->
47 <! - - Traffic simulators -->
48 < federate id = " sumo " active = " true " / >
49 <! - - Application simulator -->
50 < federate id = " applicationNT " active = " true " / >
51 <! - - Environment simulator -->
52 < federate id = " eventserver " active = " true " / >
53 <! - - Electric mobility simulators -->
54 < federate id = " battery " active = " true " / >
55 < federate id = " ch ar g in g st at i on " active = " false " / >
56 <! - - Mapping -->
57 < federate id = " mapping3 " active = " true " / >
58 <! - - Visualization -->
59 < federate id = " visualizer " active = " true " / >
60 </ federates >
61 </ configuration >
vsimrti/simrun_config.xml
1 <? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 <! - - file version: 2014 -08 -27 -->
3 <! - -
4 This configuration induces the execution of 6 simulations
5 (2 dimensions with 5 parameter for each dimension ) .
6 The simulations will be executed one after another ( sequential mode ) .
7 following simulations would be triggered:
8
9 The parameter set
10 ( V2XVehiclePercentage , CellVehiclePercentage , C l a s s i c V e h i c l e P e r c e n t a g e and S imulat iontim e )
11 nest to parameter
12 ( SinglehopR ad i us ) .
13 They define the dimensions of the simulations matrix .
14
15 ===== 001. simulation =====
16 V 2 X V e h i c l e P e r c e n t a g e =0
17 C e l l V e h i c l e P e r c e n t a g e =0
18 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
19 Simulationtime =100
20 SinglehopRa di u s =500
21
22 ===== 002. simulation =====
23 V 2 X V e h i c l e P e r c e n t a g e =0
24 C e l l V e h i c l e P e r c e n t a g e =0
25 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
26 Simulationtime =100
27 SinglehopRa di u s =600
28
29 ===== 003. simulation =====
30 V 2 X V e h i c l e P e r c e n t a g e =50
31 C e l l V e h i c l e P e r c e n t a g e =0
32 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
33 Simulationtime =100
34 SinglehopRa di u s =500
35
36 ===== 004. simulation =====
37 V 2 X V e h i c l e P e r c e n t a g e =50
38 C e l l V e h i c l e P e r c e n t a g e =0
39 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
40 Simulationtime =100
41 SinglehopRa di u s =600
42
43 ===== 005. simulation =====
44 V 2 X V e h i c l e P e r c e n t a g e =75
45 C e l l V e h i c l e P e r c e n t a g e =0
46 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
47 Simulationtime =100
48 SinglehopRa di u s =500
49
50 ===== 006. simulation =====
51 V 2 X V e h i c l e P e r c e n t a g e =75
52 C e l l V e h i c l e P e r c e n t a g e =0
53 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
54 Simulationtime =100
55 SinglehopRa di u s =600
56
57 ===== 007. simulation =====
58 V 2 X V e h i c l e P e r c e n t a g e =0
59 C e l l V e h i c l e P e r c e n t a g e =50
60 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
61 Simulation time =100
62 SinglehopRa di u s =500
63
64 ===== 008. simulation =====
65 V 2 X V e h i c l e P e r c e n t a g e =0
66 C e l l V e h i c l e P e r c e n t a g e =50
67 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
68 Simulationtime =100
69 SinglehopRa di u s =600
70
71 ===== 009. simulation =====
72 V 2 X V e h i c l e P e r c e n t a g e =0
73 C e l l V e h i c l e P e r c e n t a g e =75
74 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
75 Simulationtime =100
76 SinglehopRa di u s =500
77
78 ===== 010. simulation =====
79 V 2 X V e h i c l e P e r c e n t a g e =0
80 C e l l V e h i c l e P e r c e n t a g e =75
81 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
82 Simulationtime =100
83 SinglehopRa di u s =600
84
85 -->
86 < configuration
87 xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
88 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 " >
89 <! - - basic configuration -->
90 < vsimrti location = " / path / to / your / vs imrti_ folder " executable = " vsimrti . sh " username = "
your_user_id " / >
91 < scenario name = " Barnim " config = " scenarios / Barnim / vsimrti / v simrti _confi g . xml " persistent = "
false " repetitions = " 1 " progr essLog ger = " true " >
92 <! - - argument > - o TRACE </ argument -->
93 <! - - argument > - w 0 </ argument -->
94 </ scenario >
95
96 <! - - define connected values for controlled changes -->
97 < dimension name = " Si mulati onRuns " >
98 < 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 " >
99 < value >0 </ value >
100 < value > 50 </ value >
101 < value > 75 </ value >
102 < value >0 </ value >
103 < value >0 </ value >
104 </ parameter >
105 < 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 " >
106 < value >0 </ value >
107 < value >0 </ value >
108 < value >0 </ value >
109 < value > 50 </ value >
110 < value > 75 </ value >
111 </ parameter >
112 < 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 " >
113 < value > 100 </ value >
114 < value > 50 </ value >
115 < value > 25 </ value >
116 < value > 50 </ value >
117 < value > 25 </ value >
118 </ parameter >
119 < parameter name = " Si mulati ontim e " file = " vsimrti / vsim rti_co nfig . xml " fileFormat = " xml " item
= " // simulation / endtime " type = " ValueList " >
Tiergarten
applicationNT .....................................................................
applications ...................................................................
applicationNT_config.json ............................. not listed (in this release)
tiergarten.db .......................................... not listed (binary content)
cell2 ..............................................................................
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
omnetpp/omnetpp.ini
1 [ General ]
2
3 # SimulationParameters
4 # --------------------
5 # network *. ned - file and time - scale in nanoseconds
6 network = Simulation
7 simtime - scale = -9
8
9 # EventSchedul er
10 # --------------
11 # scheduler - class and debugging option for more verbose logging
12 scheduler - class = " V S i m R T I E v e n t S c h e d u l e r "
13 vsimrtieventscheduler - debug = false
14 # connection settings , when omnetpp - federate is started manually
15 vsimrtieventscheduler - host = " localhost "
16 vsimrtieventscheduler - port = 4998
17
18 # RecordingModi
19 # -------------
20 record - eventlog = false
21 cmdenv - express - mode = false
22 cmdenv - event - banners = false
23
24 # random numbers
25 # -------------
26 num - rngs = 3
27 Simulation . mobility . rng -0 = 1
28 Simulation . wlan [*]. mac . rng -0 = 2
29
30 # general logging output
31 # --------------
32 *. mgmt . cmdenv - ev - output = true
33 *. mgmt . debug = false
34 *. veh [*].**. cmdenv - ev - output = false
35 *. rsu [*].**. cmdenv - ev - output = false
36
37
38 # ########## application settings ############
39 Simulation . rsu [*]. udpApp . maxProcDelay = 1e -3
40 Simulation . veh [*]. udpApp . maxProcDelay = 1e -3
41
42
43 # ########## UDP Settings ## # ## # ## ## # ## ##
44
45 # ########## network layer settings ##########
46
47 # ########## mac and phy settings ############
48 **. wlan0 . opMode = " p "
49 **. wlan0 . bitrate = 6 Mbps
50
51 **. 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
52 **. wlan0 . mac . con trolBi trate = 3 Mbps
53 **. wlan0 . mac . retryLimit = 7
54 **. wlan0 . mac . maxQueueSize = 10
55 **. wlan0 . mac . cwMinData = 15
56 **. wlan0 . mac . cwM inMult icast = 31
57
58
59 **. wlan0 . radio . bandName = " 5.9 GHz " # this string actually selects the band from {2.4; 5; 5.9}
( see " IIeee 80211B and . h ")
60 **. wlan0 . radio . c a r r i e r F r e q u e n c y = 5.9 GHz
This package shows different sample applications for several application spectrum. Here you can down-
load the AdditionalExamples-0.16.2-sources.zip file:
https://www.dcaiti.tu-berlin.de/research/simulation/download/
HelloWorldApp This is a simple Hello World application. It prints a hello world string
in an interval.
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).
[1] B ENZ, Thomas ; S CHNEMANN, Bjrn ; 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.
411422. ISBN 9783642126475
[2] B ISSMEYER, Norbert ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja ; S CHMIDT, Christian: Simulation of
attacks and corresponding driver behavior in vehicular ad hoc networks with VSimRTI. In: Pro-
ceedings of the 4th International ICST Conference on Simulation Tools and Techniques. ICST,
Brussels, Belgium, Belgium : ICST (Institute for Computer Sciences, Social-Informatics and Telecom-
munications Engineering), 2011 (SIMUTools 11). ISBN 9781936968008, 162167
[3] C HUANG, David ; S CHNEMANN, Bjrn ; 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 9781612083087, S. 174177
[4] H BNER, Karl ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: Sophisticated Route Calculation Approaches
for Microscopic Traffic Simulations. In: Proceedings of the 8th International Conference on Sim-
ulation Tools and Techniques. ICST, Brussels, Belgium, Belgium : ICST (Institute for Computer
Sciences, Social-Informatics and Telecommunications Engineering), 2015 (SIMUTools 15). ISBN
9781631900792, 147154
[5] K ATSAROS, Konstantinos ; K ERNCHEN, Ralf ; D IANATI, Mehrdad ; R IECK, David ; Z INOVIOU, Char-
alambos: Application of vehicular communications for improving the efficiency of traffic in urban
areas. In: Wireless Communications and Mobile Computing 11 (2011), Nr. 12, S. 16571667
[6] 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
10903038, S. 1 6
[7] N AUMANN, Nico ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: VSimRTI - Simulation Runtime Infras-
tructure 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
[8] N AUMANN, Nico ; S CHNEMANN, Bjrn ; 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 9781424453382, S. 5257
[9] P ROTZMANN, R. ; M AHLER, K. ; O LTMANN, K. ; R ADUSCH, I.: Extending the V2X simulation environ-
ment VSimRTI with advanced communication models. In: ITS Telecommunications (ITST), 2012
12th International Conference on, 2012, S. 683688
E References E References
[10] 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. 297304
[11] 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. 147147
[12] P ROTZMANN, Robert ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: The influences of communication
models on the simulated effectiveness of V2X applications. In: Vehicular Networking Conference
(VNC), 2010 IEEE, 2010. ISBN 9781424495269, S. 102 109
[13] P ROTZMANN, Robert ; S CHNEMANN, Bjrn ; 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 01636804
[14] P ROTZMANN, Robert ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: Effects of Random Number Gener-
ators 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 9783642450365, 200-211
[15] P ROTZMANN, Robert ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: On Site-Specific Propagation Models
for the Evaluation of V2X Applications. In: Communication Technologies for Vehicles (Nets4Cars-
Fall), 2014 7th International Workshop on IEEE, 2014, S. 3539
[16] P ROTZMANN, Robert ; S CHNEMANN, Bjrn ; 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. 697703
[17] QUECK, Tobias ; S CHNEMANN, Bjrn ; 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 978160558
1910, S. 7879
[18] QUECK, Tobias ; S CHNEMANN, Bjrn ; 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 97807695
34732, S. 16231627
[19] R IECK, David ; S CHNEMANN, Bjrn ; 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 9789639799875, S. 19
[20] S CHNEMANN, Bjrn: 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 13891286
[21] S CHNEMANN, Bjrn ; 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 15502252, S. 27092713
[22] S CHNEMANN, Bjrn ; M ASSOW, Kay ; R ADUSCH, Ilja: Realistic Simulation of Vehicular Commu-
nication 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, Social-
Informatics and Telecommunications Engineering), 2008. ISBN 9789639799202, S. 19
[23] S CHNEMANN, Bjrn ; 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 9781467320382, S. 119 126
[24] S CHNEMANN, Bjrn ; 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 15606686
[25] W EDEL, Jan W. ; S CHNEMANN, Bjrn ; R ADUSCH, Ilja: V2X-Based Traffic Congestion Recognition and
Avoidance. In: Parallel Architectures, Algorithms, and Networks, International Symposium on
0 (2009), S. 637641. http://dx.doi.org/http://doi.ieeecomputersociety.org/10.1109/
I-SPAN.2009.71. DOI http://doi.ieeecomputersociety.org/10.1109/ISPAN.2009.71. ISBN 9780
769539089