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. If your system supports the --gpus all option, run with bash docker/run.sh --gpu. Some nodes (e.g robocar_tfl_detector) will need a dedicated GPU to work properly.
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:
{
"robocar": {
"global": {
"launch_group": "default",
"param_a": 50,
"param_b": "b"
},
"component_a": {
"groups": ["default", "sim"],
"param_a": 10,
"param_c": 0.25,
"other_params": "..."
},
"component_b": {
"groups": ["sim"],
"param_d": 0.5,
"other_params": "..."
},
"component_c": {
"groups": [],
"other_params": "..."
}
}
}The configuration file is structured around components (ROS2 nodes) sections and a global parameters section. The component section name must match a registered RoboCar component, see src/robocar/src/main.cc for how to register components. A component section contains parameters and a mandatory "groups" option which sets the launch groups a component belongs to. Parameters defined in the "global" section can be overridden in a component section, see "param_a" in the above example.
The launch group to use must be specified in the "global" section under the "launch_group" option, in the above example, only component_a will be loaded whereas if launch group "sim" is used, both component_a and component_b are loaded.
External ROS2 nodes should be added and configured using robocar.launch.py.
- 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 robocar robocar.launch.py.
Once RoboCar is running, pressing SHIFT will toggle autonomous driving (AD) mode, other basic commands can be found in the hmi_component.
Safety checks are implemented in the vehicle_component and they can prevent AD mode from engaging, refer to parameters and implementation to disable these checks.
If you find RoboCar useful or relevant for your research, please cite our paper:
@ARTICLE{10924789,
author={Testouri, Mehdi and Elghazaly, Gamal and Frank, Raphael},
journal={IEEE Intelligent Transportation Systems Magazine},
title={RoboCar: A Rapidly Deployable Open Source Platform for Autonomous Driving Research},
year={2025},
volume={17},
number={4},
pages={83-95},
keywords={Hardware;Cameras;Autonomous vehicles;Laser radar;Middleware;Computer architecture;Location awareness;Full stack;Automobiles;Urban areas;Autonomous driving},
doi={10.1109/MITS.2025.3546755}}