MontiSim is an autonomous vehicle simulator. Its goal is to test the behavior of autopilots in a virtual environment.
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) and a navigation system (GPS-like).
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.
A simulation is described using a scenario file, which can be a JSON file (quite verbose) or specialized SimLang and CarLang files. SimLang and CarLang are Domain Specific Languages (DSL) created (and processed) using MontiCore. 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 configuration specifies all the components and properties for a vehicle, as well as its objectives (drive from A to B, ...).
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