ETSI ITS-G5 application layer for Veins
C++ CMake Python Other
Latest commit 6a5cef7 Feb 1, 2017 @riebl cmake: convert get_ned_folders to function
Reduces side effects because of recursive call.

Change-Id: I762f8591b4386a1129320aa3cb927d9ef9423ce0


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 is an extension to the Veins framework. Please refer to its documentation for details about Veins.


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.0, GNU GCC 5.4 and Boost 1.60 successfully. Only CMake is the officially supported way for building Artery.

Compatible versions of Veins and Vanetza are part of the Artery repository, see the extern subdirectory. These dependencies are managed with the help of git-subrepo, i.e. you can just clone our Artery repository and get appropriate Veins and Vanetza sources automatically. 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.


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

Alternatively, you can also just invoke make veins in the root directory of Artery, which executes exactly these steps but saves you some typing.


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.


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 the INET Install manual.


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. First, start Veins' sumo-launchd script. You can do this either manually or simply use the integrated launch_sumo target, e.g. when you have used CMake's default Makefile generator:

cd build
make launch_sumo

You are only required to start the SUMO launcher once because it keeps running in the background. The run_example target starts the Artery example scenario located in scenarios/artery.