ROS 2 Object Detection in Point Clouds for Automated Driving
This repository provides a ROS 2 point cloud object detection node for automated driving perception stacks. The node subscribes to a sensor_msgs/msg/PointCloud2, sends preprocessed point data to a Triton-served detection model, and publishes detected objects as perception_msgs/msg/ObjectList. Additionally, the node optionally provides four auxiliary grid maps published as nav_msgs/msg/OccupancyGrid.
The detector itself does not host the neural network. A Triton Inference Server with a compatible exported model repository must be available at runtime.
🚀 Quick Start • 💻 Development • 📝 Documentation
Important
This repository is part of OpenADS, the Open Automated Driving Systems project. OpenADS and its modules have been initiated and are currently being maintained by the Institute for Automotive Engineering (ika) at RWTH Aachen University.
pcod-teaser.mp4
The demo provides an example setup for the point_cloud_object_detection node. It can download and replay the DrivIng dataset with the help of the autonomy_datasets ROS package. Alternatively, it can replay ten PCD files contained in the demo's PCD publisher image. See Additional dataset demos for another example and information on how to process your own data.
Note
Running the demo requires an NVIDIA GPU with compute capability 8.0 or higher, and a host NVIDIA driver compatible with CUDA 13.1 or newer. 8 GB of VRAM is recommended.
-
Allow local Docker containers to connect to the X server for RViz visualization.
xhost +local:
-
Run the demo with either the
pcdordrivingprofile.-
Use the
pcdprofile to immediately replay and process the ten PCD files provided by the PCD publisher image. This is by far the fastest way to see example output of the detection node.cd demo docker compose --profile pcd up -d -
Alternatively, use the
drivingprofile to download, convert, replay, and process the DrivIng dataset.cd demo docker compose --profile driving up -d⚠️ Depending on your bandwidth, it may take several hours to start the first run due to the initial download and conversion of the selected sequence. Check the current progress with
docker compose --profile driving logs -f autonomy-datasets-driving⚠️ Make sure to comply with the DrivIng dataset’s license.ℹ️ See point_cloud_object_detection.driving.params.yml for further configuration options.
ℹ️ Since a subset of the DrivIng dataset was used in the training of the demo model, interpret its apparent performance in the demo with care. Apply the model to your own data to estimate the model performance.
-
-
Stop the demo once you're done:
-
For the
pcdprofile:cd demo docker compose --profile pcd down -
For the
drivingprofile:cd demo docker compose --profile driving down
-
-
Disable the connection to the X server after you're done with the demo:
xhost -local:
The ros-parameter-gui service starts rqt with the rqt_reconfigure plugin. You may use it to inspect and adjust the parameters of the point_cloud_object_detection node while the demo is active. Click Refresh in rqt after startup if not all nodes are listed.
- Clone the repository.
git clone https://github.com/openads-project/point_cloud_object_detection.git
- Initialize the
.openads-dev-environmentsubmodule containing development environment configuration.cd point_cloud_object_detection git submodule update --init --recursive - Open the repository in Visual Studio Code.
code . - Install the recommended VS Code extensions.
Ctrl+Shift+P / Extensions: Show Recommended Extensions / Install Workspace Recommended Extensions (Cloud Download Icon)
- Reopen the repository in a Dev Container.
Ctrl+Shift+P / Dev Containers: Rebuild and Reopen in Container
Ctrl+Shift+B
colcon buildCtrl+Shift+P / Tasks: Run Test Task
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1
colcon test
colcon test-result --verbosePackage and node interfaces are documented in the respective package READMEs listed below. Implementation details are found in the Source Code Documentation.
| Package | Description |
|---|---|
| point_cloud_object_detection | Provides a C++ ROS 2 node for point cloud object detection. |
The source code in this repository is licensed under Apache-2.0, see LICENSE. Container images provided by this repository may contain third-party software shipped with their own license terms.
Trained models, including learned weights and model architectures, are licensed under the AI Pubs Research-use RAIL-M License v0.1.
Development and maintenance of this repository are supported by the following projects. We acknowledge the funding of the respective institutions.
| Project | Funding Institution | Grant Number |
|---|---|---|
| AIGGREGATE | 🇪🇺 European Union | 101202457 |
| autotech.agil | 🇩🇪 Federal Ministry for Research, Technology and Space (BMFTR) | 1IS22088A |
| UNICARagil | 🇩🇪 Federal Ministry for Research, Technology and Space (BMFTR) | 16EMO0284K |
Funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Climate, Infrastructure and Environment Executive Agency (CINEA). Neither the European Union nor CINEA can be held responsible for them.
