/robocar

RoboCar is a modular, low footprint and easy to deploy autonomous driving software based on ROS2

Primary LanguageC++MIT LicenseMIT

RoboCar

RoboCar is a modular, low footprint and easy to deploy autonomous driving software based on ROS2.

Software and Hardware Overview

Get Started

Prerequisites

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.

Configuration

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.

Build

  • Debug : bash scripts/build.sh debug.
  • Release : bash scripts/build.sh release.

Run

First, source using source install/setup.sh.
RoboCar can be run using ROS2 launch : ros2 launch startup robocar.launch.

Citation

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}
}

License

See NOTICE and LICENSE.