esmini is a basic OpenSCENARIO player
It contains the following main modules:
- RoadManager. A library providing an interface to road networks described in the OpenDRIVE format.
- ScenarioEngine. A library providing an interface to traffic scenarios described in the OpenSCENARIO format.
- ViewerBase. A library based on OpenSceneGraph providing a simple visualization of the road and scenario.
- ScenarioEngineDLL. A library packaging the above three modules into a single library with a simplified API.
and a few applications that can be used as is or provide ideas for customized solutions:
- EnvironmentSimulator. A simple scenario player linking ScenarioEngine and Viewer modules statically.
- ScenarioViewer. A minimalistic example using the scenarioengine DLL to play OpenSCENARIO files.
- EgoSimulator. An example of how to integrate a simple Ego vehicle with the scenario engine.
- OdrPlot. Produces a data file from OpenDRIVE for plotting the road network in Python.
- OpenDriveViewer. Visualize OpenDRIVE road network with populated dummy traffic.
- Replayer. Re-play previously executed scenarios.
Repository: https://github.com/esmini/esmini
Pre-built demo packages are available here. Unzip, navigate to "esmini\run\EgoSimulator" and run any of the example scripts. See more info below under "Binaries and demos".
Please note: From version 1.5 esmini only supports OpenSCENARIO v1.0. All demo scenarios has been updated from 0.9.1 to 1.0. ASAM provides a transformation scheme (migration0_9_1to1_0.xslt, part of the OpenSCENARIO 1.0 release bundle) that can be used with tools for automatic migration of XML files.
The code was initially a result from the Swedish collaborative research project Simulation Scenarios, and is now further developed based on users need and OpenSCENARIO development.
The purpose of this implementation was to explore and get familiar with the emerging OpenSCENARIO data format. The development aimed at supporting various platforms such as Windows, Mac, Linux, and Android. Tool integration and portability were high priorities, the project outcomes should be capable of incorporation in native C++ applications as well as other frameworks like Unity3D (C#) and MATLAB/Simulink, among many others.
Although allowed by the license this implementation is not primarily intended for production use. The code was developed ad hoc to answer research questions connected with the ongoing project. Therefore, code quality, as expected from standard production applications, is lacking when it comes to clarity, structure, comments, error handling and coding guidelines.
OpenSCENARIO coverage is limited as it was developed on demand and defined by the research scope. Moreover, since the Simulation Scenarios project is closed, no formal support should be expected from the initial contributors.
Nevertheless, regarding the above stated limitations, it was decided to release the code as is, as a public outcome from the project. It can hopefully serve as guidance or just inspiration for those aspiring to build similar tools, or even get accustomed with the OpenSCENARIO format. And of course, all contributions to further development are welcome!
Windows, Linux and Mac supported
Latest release including source, binaries and demo packages is found here: https://github.com/esmini/esmini/releases/latest
On Mac the zip-package might be put in quarantine, to release it:
xattr -d com.apple.quarantine file.zip
or even better:
xattr -c file.zip
3D models used by the example scenarios are included in the demo packages. They are also available here. Unpack into esmini/resources. These assets works on all platforms. Environment models (roads, landscape, buildings...) have been created using VIRES Road Network Editor.
If you want to build yourself, please find some instructions here.
Either get the demo or build yourself. To run demos:
- Navigate to run/EgoSimulator
- Run any of the provided batch-script examples (double click on or run from command line)
Further info:
The easiest way of integrating esmini in your custom application is to link the all inclusive shared library ScenarioEngineDLL. In spite of the name it's available also on Linux and Mac. See this "Hello World" tutorial on how to create a minimalistic application based on it.
pyoscx is a Python based scenario creation framework. The idea is to write scenarios in a high-level script format and automatically generate the OpenSCENARIO 1.0 XML counterpart.
pyodrx is a Python based road network creation framework. The idea is to write road networks in a high-level script format and automatically generate the OpenDRIVE (1.4 as of today) XML counterpart.
esmini-visualizer is a tool to automatically generate video visualizations of scenarios.
Note that it does not seem to work with Anti-Alias filtering. Therefore make sure to run EgoSimulator without Anti-Alias by providing argument "--aa_mode 0".
RControlStation scenario editor. An embryo to an OpenSCENARIO editor, part of Self-Driving Model Vehicle Platform (SDVP).
Instruction:
- git clone https://github.com/vedderb/rise_sdvp
- cd rise_sdvp/Linux/RControlStation
- git clone https://github.com/esmini/esmini esmini
- Edit RControlStation.pro and uncomment the line: #DEFINES += HAS_SIM_SCEN
- Build the project. The editor is the last tab in RControlStation.
The implementation is very limited at this point, but some things can be edited and the scenario can be executed and observed from above, as well as exported to the other tools. You have to start by importing one of the existing scenarios into the editor, as it cannot make a scenario from scratch.
Carla is an Unreal based open source simulator worth to check out.
OpenDRIVE describes the road network, the static part of a scenario.
OpenSCENARIO describes the dynamic content on top of a road network, e.g. traffic maneuvers and weather conditions.