RoboCar is a modular, low footprint and easy to deploy autonomous driving software based on ROS2.
The provided Dockerfile can be used to get a development environment easily.
Use docker build -f docker/Dockerfile -t ubix/robocar .
and then run with bash docker/run.sh
.
Please note that some specific adjustments might be needed for deployment in a vehicle.
Internal RoboCar nodes (components) are configured using a custom robocar.json
file. Below is an example configuration:
{
"cycle": {
"global": {
"param_a": 50,
"param_b": "b"
},
"module_a": {
"enable": true,
"component_a": {
"enable": true,
"param_a": 10,
"param_c": 0.25,
"other_params": "..."
}
},
"module_b": {
"enable": false,
"component_b": {
"other_params": "..."
},
"component_c": {
"other_params": "..."
}
}
}
}
The configuration file is structured around modules containing components (ROS2 nodes). A component section contains parameters and an optional "enable" option. The component section name must match a registered RoboCar component, see src/modules/startup/src/main.cc
for how to register components. A disabled module will be skipped during initialization, thus disabling all contained components irrespective of their individual settings. Global parameters are defined in the "global"
section and can be overriden in a component section, see "param_a"
in the above example.
You should rebuild for changes in the configuration file to take effect or change args="$(find-pkg-share startup)/config/robocar.json"
in robocar.launch
to a custom path.
External ROS2 nodes should be added and configured using robocar.launch
.
- Debug :
bash scripts/build.sh debug
. - Release :
bash scripts/build.sh release
.
First, source using source install/setup.sh
.
RoboCar can be run using ROS2 launch : ros2 launch startup robocar.launch
.
If you find RoboCar useful or relevant for your research, please cite our paper:
@article{testouri2024robocar,
title={RoboCar: A Rapidly Deployable Open-Source Platform for Autonomous Driving Research},
author={Mehdi Testouri and Gamal Elghazaly and Raphael Frank},
year={2024},
eprint={2405.03572},
archivePrefix={arXiv},
primaryClass={cs.RO}
}