COLAW - Simulation Code and Supplemental Material
In order to analyze the effectiveness of our location proof system (add link) we used the Artery framework to simulate the V2X communication between the vehicles according to the ETSI ITS-G5 protocols. In the following, the official installation and configuration guide is presented. Further instructions about the location proof system can be found under scenarios/artery/README.md and information about the evaluation of the generated data under scenarios/artery/results/README.md.
TL;DR
Notes on build process
Artery doesn't build on Fedora, the recommended distribution is Ubuntu. The build process succeded with Ubuntu 18.04.
OMNeT++ (Ubuntu)
For other OS or distributions have a look at the official installation guide. First install the necessary dependencies:
sudo apt-get update
sudo apt-get install build-essential gcc g++ bison flex perl python python3 qt5-default libqt5opengl5-dev tcl-dev tk-dev libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0 openmpi-bin libopenmpi-dev openscenegraph-plugin-osgearth libosgearth-dev
Download the latest OMNeT++ version here and setup your OMNeT++ environment:
tar xvfz omnetpp-5.\*-src-linux.tgz
cd omnetpp-5.\*
. setenv
Add export PATH=$HOME/omnetpp-5.*/bin:$PATH to your ~/.bashrc file and reopen your terminal. Finish the installation with:
./configure WITH_TKENV=no WITH_QTENV=no
make
SUMO (Ubuntu)
For other OS or distributions have a look at the official installation guide
NOTE: Artery requires SUMO 1.0 or later since its TraCI protocol is not compatible with earlier versions anymore.
sudo add-apt-repository ppa:sumo/stable
sudo apt-get update
sudo apt-get install sumo sumo-tools sumo-doc
Add export SUMO_HOME=usr/share/sumo to your ~/.bashrc file and reopen your terminal.
Location Proof System
git clone https://gitlab.lrz.de/tum-ei-esi/automotive-consensus.git
git submodule update --init --recursive
Veins
In the root directory execute:
make veins
Vanetza
Install the necessary dependencies and in the root directoy execute:
sudo apt-get install cmake libboost-all-dev geographiclib-tools libcrypto++-dev libcrypto++-doc libcrypto++-utils
make vanetza
INET
In the root directory execute:
make inet
Artery
In the root directory execute:
mkdir build
cd build
cmake ..
cmake --build .
After setting up your environment you can now run the LPS simulation with:
cmake --build build --target run_example
For further information about the LPS and the possible scenario configurations read /scenarios/artery/README.md. If you want Artery to start SUMO with a graphical user interface, you can uncomment following line in your scenarios/artery/omnetpp.ini:
.traci.launcher.sumo = "sumo-gui"
Artery (official)
Artery enables V2X simulations based on ETSI ITS-G5 protocols like GeoNetworking and BTP. Single vehicles can be equipped with multiple ITS-G5 services through Artery's middleware, which also provides common Facilities for these services.
Artery started as an extension of the Veins framework but can be used independently nowadays. Please refer to its documentation for details about Veins.
Requirements
You need a C++ Compiler with C++11 support, Boost and Vanetza libraries for building Artery along with Veins. Artery and Veins build upon the discrete event simulator OMNeT++, which you need to obtain as well. We have tested Artery with OMNeT++ 5.4, GNU GCC 7.3 and Boost 1.65.1 successfully. SUMO 1.0 or later is required since its TraCI protocol is not compatible with earlier versions anymore. Only CMake is the officially supported way for building Artery.
Compatible versions of INET, Veins, Vanetza, and other components are managed as git submodules in the extern subdirectory. Please make sure to fetch these submodules when cloning our repository!
git clone --recurse-submodule https://github.com/riebl/artery.git
Alternatively, you can also load these submodules after cloning:
git submodule update --init --recursive
You might obtain more recent versions from their upstream repositories:
Build instructions
Veins and Vanetza need to be built before Artery itself.
For this purpose, a Makefile is located in Artery's root directory.
The following steps assume you have cloned the Artery repository on your (preferably Linux) machine and you have moved your terminal to this clone's directory.
You can build all of these external project dependencies at once via the default make all
target.
Veins
Please make sure you have all dependencies of Veins installed and set up OMNeT++ beforehand. If you have any doubts, refer to the Veins tutorial. The bundled version of Veins is then built with following steps:
cd extern/veins
./configure
make
Alternatively, you can also just invoke make veins
in the root directory of Artery, which executes exactly these steps but saves you some typing.
Vanetza
Similarly, you can simply call make vanetza
in the root directory and it will try to build Vanetza for you in extern/vanetza/build.
Of course, you need to install Vanetza's dependencies first.
See the Vanetza Readme for details.
INET
As the next step, you need to build INET. Make sure you are in the root directory of Artery and simply call make inet
there.
INET's build dependencies are listed in its install manual.
Artery
Are you still with us? Congratulations, you are almost done!
mkdir build
cd build
cmake ..
cmake --build .
These steps create a build directory for Artery, configure the build directory and finally build Artery there.
Running Artery
When you have finished building Artery, you can give the shipped example a try to see if everything runs smoothly. With current Artery versions there is no need to start Veins' sumo-launchd script any more. Instead, Artery will start a SUMO instance on its own with appropriate parameters. You can start the example scenario of Artery (located in scenarios/artery) simply by calling the run_example target from Artery's root directory:
cmake --build build --target run_example
Please make sure that sumo can be executed within in your environment because this is the default SUMO executable used by Artery. You can, however, specify which SUMO executable shall be used explicilty. If you want Artery to start SUMO with a graphical user interface, you can put the following line in your omnetpp.ini:
*.traci.launcher.sumo = "sumo-gui"