Skip to content

Repository files navigation

point_cloud_object_detection


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

🚀 Quick Start

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.

  1. Allow local Docker containers to connect to the X server for RViz visualization.

    xhost +local:
  2. Run the demo with either the pcd or driving profile.

    • Use the pcd profile 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 driving profile 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.

  3. Stop the demo once you're done:

    • For the pcd profile:

      cd demo
      docker compose --profile pcd down
    • For the driving profile:

      cd demo
      docker compose --profile driving down
  4. Disable the connection to the X server after you're done with the demo:

    xhost -local:

Interacting Through rqt

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.

💻 Development

Set up Development Environment

  1. Clone the repository.
    git clone https://github.com/openads-project/point_cloud_object_detection.git
  2. Initialize the .openads-dev-environment submodule containing development environment configuration.
    cd point_cloud_object_detection
    git submodule update --init --recursive
  3. Open the repository in Visual Studio Code.
    code .
  4. Install the recommended VS Code extensions.

    Ctrl+Shift+P / Extensions: Show Recommended Extensions / Install Workspace Recommended Extensions (Cloud Download Icon)

  5. Reopen the repository in a Dev Container.

    Ctrl+Shift+P / Dev Containers: Rebuild and Reopen in Container

Build

Ctrl+Shift+B

colcon build

Run Tests

Ctrl+Shift+P / Tasks: Run Test Task

colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1
colcon test
colcon test-result --verbose

📝 Documentation

Package 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.

⚖️ Licensing

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.

🙏 Acknowledgements

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.

About

ROS 2 Point Cloud Object Detection for Automated Driving

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages