MontiSim is an autonomous vehicle simulator. Its goal is to test the behavior of autopilots in a virtual environment.
Autopilots
The autopilots can be programmed in Java, C++ or with EmbeddedMontiArc (EMA) models. The C++ and EMA autopilots benefit from execution time simulation through a hardware emulator. An autopilot can be integrated with various configurable components inside a vehicle. Components include communication bus models (CAN, FlexRay), sensors (position, speed, ...), actuators (steering, gas, brakes), a navigation system (GPS-like) and more.
World
The vehicles move around in a world that can be loaded from Open Street Maps (OSM). These maps can be directly exported from www.openstreetmap.org as .osm
files and used in the simulator.
Scenarios
Simulations are described using scenario files, which can be a JSON file (quite verbose) or specialized SimLang (TODO link) and CarLang (TODO link) files. SimLang and CarLang are Domain Specific Languages (DSL) created (and processed) using MontiCore (TODO link). The scenario files contain a simulation configuration and vehicle configurations. The simulation configuration specifies general settings for the simulation such as which OSM map to use and global simulation constraints (maximum simulation duration, ...). The vehicle configurations specifies all the components and properties for a vehicle, as well as its Tasks (drive from A to B, ...).
Simulation Setups
The simulator core can be set-up in different ways. The server project allows the setup of distributed simulation instances on different computers. This is done through docker containers, such as an http server for controlling the simulation, different simulator instances and different hardware_emulator instances. This allows the scaling up of the simulation.
A simpler and local alternative is the basic-simulator project, which runs entirely on one machine and proposes different visualizations of the simulation.
Next: The basic-simulator