In the initial stages of autonomous vehicle development, defining an optimal sensor setup is crucial. The placement, type, and configuration of sensors play an essential role in ensuring the vehicle's ability to perceive its environment accurately. This repository provides a comprehensive set of tools designed to assist developers in:
- Coverage Analysis: Evaluate the extent to which sensors can perceive their surroundings.
- Redundancy Assessment: Determine areas where multiple sensors provide overlapping coverage.
- Occlusion Detection: Identify potential blind spots or areas around the vehicle.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
The repository contains different packages related to code execution:
AVSensorCoverage
├─ run.py // Main runnable file
├─ config.yaml // Configuration of the environment, discretization and dimensions
├─ args.py // Argparser
├─ requirements.txt // Pip package requirements
├─ environment // Package for the environment
│ ├─ grid.py
│ ├─ grid_helpers.py
│ ├─ slice.py
│ └─ vehicles.py
├─ plotting // Package for plotting and report creation
│ ├─ plots.py
│ ├─ plot_helpers.py
│ └─ report.py
├─ sensors // Package for sensor classes
│ ├─ camera.py
│ ├─ lidar.py
│ ├─ radar.py
│ ├─ sensor.py
│ └─ sensor_helpers.py
├─ sensorsets // Folder for saving sensor setup definitions
│ ├─ edgar.yaml
│ └─ test_setup.yaml
├─ utils // Package containing GUI
│ └─ gui.py
└─ vehicle // Folder for 3D vehicle models
├─ simple_box.obj
└─ t7_reduced.obj
You need to have the following packages installed on your machine:
* python3
* python3-tk
The requirements for the python environment can be installed with
pip install -r requirements.txtYou can start running the analysis with the default arguments
python3 run.pyThis will use a simple box vehicle model, stored in vehicle/simple_box.obj with a sensor setup defined in sensorset/test_setup.yaml and the standard parameters for evaluation defined in config.yaml
If you want to use your own vehicle model and sensor setup, you can do so by running the script with
python3 run.py --sensors <path_to_your_sensor_setup_yaml_file> --vehicle <path_to_your_3d_vehicle_model> --config <path_to_your_config_yaml_file>The --config argument passes a yaml file in which you can configure:
- The dimension of the environment grid
dim_x,dim_y,dim_z - The placement of the vehicle in the environment. The vehicles rear center axle will be placed at the
originparameter of the environment - The discretization of the environment is determined by the length of each grid cell, referred to as
spacing. Be aware that this parameter can significantly affect computational performance. As spacing decreases, the total number of grid cells in a three-dimensional environment increases exponentially, - The
nearfield_distis the radial distance from the vehicle that is considered to be part of the near-field. The rest of the environment area is regarded as far-field. - The
conditionsdictionary inside theconfig.yamlis used for the later generation of reports and plots and describes the following boundaries- N1: coverage with at least
N1sensors - N2: coverage with at least
N2sensors types (radar, camera, lidar) - N6: coverage with at least
N6cameras - N7: coverage with at least
N7lidar - N8: coverage with at least
N8radar
- N1: coverage with at least
- The
slicedictionary insideconfig.yamlis used to define the different slices that are produced in the report. You can adjust thenumberanddistancevalues to create multiple slices with z-normal at different heights, starting from$z = 0$
Further argument options for the programm execution are:
--gui_modeif this option is set, you can manually configure the input parameters with a gui--no_plotsif this option is set, no plot windows are generated--create_reportif this option is set, a detailed pdf-report will be generated--save_variablesif this option is set, the simulation variables will be saved--pathparent directory of the simulation results. Default is incwd/simulation_results--namespecific folder name of the simulation results, defaults tosimulation_<current_datetime>
The standard output are five consecutive plot windows.
- Visualization of the FoV of all sensors. The visibility of each single sensor can be toggled with the checkboxes on the left.

- Visualization of the blind spot cells around the vehicle. All red points represent the center of grid cells that are not covered by any sensor.

- The visualization of the number of sensors covering a cell in the rear view of the vehicle

- The visualization of the number of sensors covering a cell in the side view of the vehicle

- Different plots regarding the number of sensors and sensor modalities covering each area.

If the --create_report option is set, an addtional report Results.pdf is created in the directory specified by --path and --name. This gives detailed information about the coverage of each sensor and the whole sensor setup in the different areas around the vehicle.

Philipp Hafemann, [email protected], Institute of Automotive Technology, School of Engineering and Design, Technical University of Munich, 85748 Garching, Germany
Simon Hahn, [email protected], Institute of Automotive Technology, School of Engineering and Design, Technical University of Munich, 85748 Garching, Germany
This project is licensed under the GNU LESSER GENERAL PUBLIC LICENSE - see the LICENSE file for details
