Projects and sub-projects
These are the main maven/git projects that are used for the simulator.
- commons: Some utility classes, some general classes and some simulator interfaces.
-
simulation
- environment: Has a representation for Worlds in which the cars can drive. Those worlds can be loaded from OSM maps. The World contains roads, buildings and other static objects.
- eesimulator: Contains the EE-System that handles the communication between EE-Components (through event based messages). "EE" comes from "Electrical & Electronic Systems". The sub-project defines the interfaces for such components and also contains implementations for Buses, Actuators, Sensors and Bridges (all EE-Components).
- vehicle: Contains the description of a Vehicle, its properties, its powertrain and the physics models used to simulate them.
- eecomponents: Contains the implementations of additional EE-Components such as the Lidar, the SimpleCommunicationGateway and the Java Autopilot.
- simulator: Contains the main simulation container that holds a World and multiple Vehicles (and other simulation objects).
- hardware_emulator: Contains a computer-hardware simulator to virtually run and simulate the code of autopilots.
- basic-simulator: A simple GUI that runs the simulator and allows visualization.
- server: Different projects for running simulation in a distributed setup. (WIP)
- visualization: A web-based visualization for simulations. (Out-of-date)
Overview Diagram
The following diagram shows the main classes of the simulator, how they interact and in which project they are located (or sub-project for simulation
).
The relations between the classes are illustrative. They intent to give an overview of the main interactions, but are not formally defined and not exhaustive. Also not represented is how the simulator can be used in the context of the server
project.
Dependencies
Be sure to respect the "dependency tree" when implementing new features, since maven projects cannot have cyclic dependencies: