Lecrapouille / Highway

[Application][WIP] Open-source simulator for autonomous driving research.
GNU General Public License v3.0
2 stars 1 forks source link
auto-parking car simulation

Highway: A light and open-source simulator for autonomous driving research.

Note: this repo is given 'as it' since I'm currently have no time to work on it. There are lot of things to do before having a complete simulator.

Why another vehicle simulator ?

Auto parking

Fig 1 - A parallel automatic maneuver. Click on the image to run the video.

This simulator has not the pretention to revolutionize the world of the vehicle simulation but is just a personal challenge for offering an intuitive API for autonomous driving research.

When I tried Carla simulator, I did not like the following points:

In my opinion, a simulator has to help the developper by offering the possibility to interact with all objects in the word. For example the simulator has to reply to question such as "give me the list of pedestrians around the car" ... a reference list that can be compared at run time with the list of pedestrians detected by your IA/sensors/ECU of your ego vehicle. This idea can be extended to any mobile/static object in the city: pedestrian, cars, roads, traffic signs, zebras, parking slot, spawning points ... all of them shall interact with the ego vehicle and share their states (ie traffic light: the color of the light, the content of any road signs ie "Nationale 20" ...).

Ideally, the API shall distinguish helper methods to twick the simulation from real physical behavior by explicit methods for example apply a constant velocity along its longitudinal side.

Here a list of things a simulator can help and that I did not find in Carla:

Compilation / Installation

Compilation

This code depends on:

To compile and install the standalone application:

Once you can compile the project.

make -j8

If you prefer instead to choose a different compiler, i.e:

make CXX=clang++-13 -j8

Scenario files are automatically compiled. You have to do nothing. Here what is made (hidden):

for i in `ls Scenarios` do
  (cd $i
   make clean
   make -j8)
end
cp Scenarios/*/build/*.so data/Scenarios/

The compiled simulation files are in Scenarios/xxx/build/xxx.so but then are copied into the data/Scenarios folder to be loaded by the application. There are pure shared libraries that can be opened by with dlopen() function.

To run the standalone application.

./build/Highway

To run the standalone application and running a given scenario (shared library). This will skip some IHM menu and jump directly into the simulation.

Highway scenario.so

To install the application and scenarios on your operating system:

sudo make install

To run the standalone application installed on your system:

Highway

To clean the project:

make clean

This will remove the buid/ folder. To deep clean (third parts, docs ...) type make veryclean.

Documentation

make doc

The generated documentation can be find in doc/html.

Developpers

Non regression tests

To make unit tests and generate code coverage.

make check -j8

Or

cd tests
make coverage -j8

If you do not want generating reports.

cd tests
make -j8
./build/Highway-Tests

Compress your work

To create a tar.gz (for a backup) of the project with management of name conflict concerning the tarball name. Compiled files, generated doc, git files and backup files are not stored in the tarball.

make tarball