Status (2026): Maintenance restarted. This project ports parts of Apollo 3.0 perception into a standard ROS workflow. Original Apollo code is licensed under Apache-2.0. See LICENSE and NOTICE.
Apollo is the most mature and sophisticated autonomous driving platform that is open source right now.
However, there are some limitations.
- Apollo (r3.0) is built upon a customized ROS environment, which is not compatible with normal ROS packages / plugins.
- Apollo (r3.5) abandons ROS and uses Cyber RT instead.
- If you want to understand their code and test it with your own application, you will need to have a good understanding of their framework before you can make any modifications.
Have you wondered, what if everything can be run as a standard ROS node and you can use all the familiar tools that are available in ROS? Then this repository is what you need!
![]() |
|---|
| Apollo Perception Architecture |
![]() |
|---|
| Apollo Perception Overview |
![]() |
|---|
| Perception with demo-2.0.bag |
The obstacle perception module in Apollo (r3.0) is extracted and modified so that it can be run as a normal ROS node. Everything is inside docker environment. Detailed steps of building and running the perception module are listed as follows.
I myself find learning Apollo's approach in perception very beneficial to helping me understand how the perception architecture is set up. I hope you find this repo useful as well.
All contributions are welcome!! There are so many things that can be improved. Please raise issues and/or make pull requests if you would like to work on it too. Thank you.
This repository is a historical and educational ROS port of Apollo 3.0 perception. It is actively maintained again as of 2026, with a focus on documentation, issue triage, license clarity, and reproducibility guidance.
It is not a production autonomous driving stack.
- Students and researchers learning Apollo-style perception architecture
- Developers who want to experiment with LiDAR / camera / fusion pipelines in ROS
- Maintainers adapting legacy Apollo perception code to teaching labs or simulators
- Requires a legacy software stack (Ubuntu 14.04, CUDA 8, old Docker GPU runtime); see docs/SUPPORTED_ENVIRONMENTS.md
- Continental radar bags use Protobuf messages and are not fully supported; see docs/KNOWN_ISSUES.md
- Modern GPUs (RTX series) often fail without rebuilding CUDA artifacts; see docs/KNOWN_ISSUES.md
- No ego-motion compensation, sequence fuser, or planning modules (see ROADMAP.md)
See ROADMAP.md for the 2026 plan. Initial focus:
- License and attribution clarity
- Issue triage and documentation
- Demo bag and environment matrix
- Lightweight CI and contribution guidelines
See docs/SUPPORTED_ENVIRONMENTS.md for the reference and unverified environment matrix.
The system is tested on Nvidia GeForce GTX 1080 Ti and 1070 Max-Q. Please install Nvidia Driver, Docker, and Nvidia Docker.
| Dependencies | Image Environment |
|---|---|
| Nvidia Driver (Tested on 384.130) | Ubuntu 14.04 |
| Nvidia Docker (Tested on 2) | Cuda 8.0 + Cudnn 7 |
- Clone Repository in Host
mkdir ~/shared_dir && cd ~/shared_dir
git clone https://github.com/cedricxie/apollo_perception_ros
-
Pull Docker Image
docker pull cedricxie/apollo-perception-ros -
Enter Docker Container
cd ~/shared_dir/apollo_perception_ros && ./docker/run.sh -
Make ROS Packages
cd ~/shared_dir/apollo_perception_ros/
catkin build
source devel/setup.bash
-
Launch Perception Node
roslaunch vehicle_base detect_sim.launch -
Playback Demo-2.0.bag from Apollo
rosbag play ~/shared_dir/demo-2.0.bag --clock
See docs/DEMO_BAG.md for download links and setup. The
original Apollo open data platform (http://data.apollo.auto) may be
unavailable; a verified maintainer mirror is documented there.
- docs/KNOWN_ISSUES.md — reported problems, workarounds, and links to GitHub issues
- docs/SUPPORTED_ENVIRONMENTS.md — reference and unverified environment matrix
- docs/DEMO_BAG.md — demo bag download and playback
Longer-term technical goals are tracked in ROADMAP.md, including:
- Ego motion compensation
- Sequence type fuser
- Prediction / Planning modules (out of current scope)


