dddmr_navigation: 3D Mobile Robot Navigation Beyond Nav2's Limits
dddmr_navigation is the 3D navigation solution for mobile robots includes mapping/localization/perception/path planning/controller/navigation stack
At a glance
- What is it?
- dddmr_navigation is a complete 3D robot navigation stack for ROS-based mobile platforms that solves mapping, localization, path planning, and obstacle avoidance in multi-level, ramp, and stereo-structure environments that Nav2's 2D costmap approach cannot handle.
- Who is it for?
- dddmr_navigation is the right choice for mobile robot platforms that need to navigate multi-level floors, ramps, and stereo structures that Nav2's 2D costmap cannot represent. The cost-effective hardware target (16-line LiDAR, Intel NUC or Jetson Orin Nano, consumer IMU) makes it accessible for research and industrial prototypes without requiring datacenter-grade sensors.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Nav2 Cannot Handle and Why 3D Navigation Matters
Nav2 (Navigation2), the standard navigation framework for ROS 2, builds its costmap on a 2D projection of the environment. This works well for flat floors but fails in three specific cases: multi-level floors (a mezzanine above a ground floor, where Nav2 cannot distinguish between the two levels), ramps and wheelchair-accessible slopes (where the robot must plan a path that changes elevation), and stereo structures (warehouses or factories with overhanging infrastructure at robot height).
The dddmr_navigation README frames itself explicitly as a solution for these Nav2 gaps. The name DDDMR stands for 3D Mobile Robot. The stack uses a 3D point cloud map rather than a 2D occupancy grid, which allows it to represent elevation changes and distinguish geometry at different heights. A factory floor with ramps connecting areas at different elevations, which would cause Nav2 to either refuse to plan or plan an incorrect path, is a case dddmr_navigation is specifically built for.
The README also names cost-effective hardware as a design goal. The tested configuration uses a 16-line LiDAR, an Intel NUC or Jetson Orin Nano as the compute platform, and a consumer-grade IMU. This keeps the solution accessible for research teams and industrial applications that cannot justify the cost of high-density LiDAR or server-grade compute. The project reached v1.0.0 on 2026-09-22, the first versioned release, indicating the core navigation API has stabilized enough for integration into broader robot builds.
Architecture: Six Modules for a Complete Navigation Stack
The stack is organized as six modules, each in a subdirectory under src/. The README links each module to its own documentation:
dddmr_lego_loam handles 3D mapping using a variant of LeGO-LOAM, a lightweight LiDAR odometry and mapping algorithm originally designed for ground vehicles. dddmr_mcl_3dl handles localization through Monte Carlo Localization in 3D point clouds. dddmr_perception_3d handles perception: classifying obstacles, ground plane detection, and point cloud processing for navigation.
dddmr_global_planner generates a 3D global path from a start point to a goal, operating in the full 3D map rather than a 2D projection. dddmr_local_planner handles obstacle avoidance during execution, reacting to dynamic obstacles in the robot's sensor range. dddmr_p2p_move_base ties all modules together as the navigation executive, handling goal dispatching, recovery behaviors, and the coordination between global and local planning.
This mirrors the Nav2 architecture intentionally. The README states that the standard procedures are the same as 2D navigation: map and refine the map, turn off mapping and use MCL for localization with an initial pose, then send navigation goals. This parity reduces the learning curve for engineers familiar with Nav2.
Getting Started: Beginner's Guide and Docker Setup
The repository includes a dddmr_beginner_guide under src/ that is the entry point for new users. The README links directly to it with a section marked as the starting point for anyone who has a robot but does not know where to begin.
The repository also includes a dddmr_docker/ directory, which contains Docker configuration for running the stack without a full ROS environment installed on the host. The README does not reproduce Docker commands inline, but the directory's presence indicates that containerized deployment is a supported path.
The CICD_setup/ directory contains the automated test suite for LiDAR configurations. The README describes tests for flat mounting, forward-tilted mounting, and custom-angled mounting geometries. TF (transform) accuracy, point cloud ground projection, and obstacle clearing are verified. The README gives the test scenarios as pre-configured reference setups for custom robot builds, which is useful for teams integrating a new LiDAR before deploying to a physical platform.
To cite the project in academic work, the README provides a BibTeX entry for dddmr_navigation authored by CM, PS, and Tarek Taha.
Unitree Go2 Simulator Integration
The README announces a Gazebo simulation integration using the Unitree Go2 quadruped robot. This is a departure from traditional wheeled mobile robot navigation: the Go2 is a four-legged robot that can navigate terrain that wheeled robots cannot. The integration uses the DDDMR stack to provide multi-level mapping, ramp navigation, and obstacle handling capabilities to the Go2 in simulation.
The README frames this as unlocking navigation capabilities beyond what Nav2 alone achieves on quadruped platforms, specifically naming multi-level mapping and ramp navigation. For simulation testing, the Gazebo integration provides a physics-accurate environment for developing and validating navigation behaviors before deploying on hardware.
The beginner's guide includes instructions for running the Go2 simulation. This makes it possible to evaluate the full 3D navigation stack on a well-defined simulated platform before purchasing or integrating physical hardware. The Gazebo models use standard ROS transform and sensor interfaces, so the same navigation launch configuration can transition from simulation to a real Go2 with minimal changes to the sensor topic names.
LiDAR Configuration Challenges and the CI/CD Test Suite
The README opens with an explanation of why LiDAR configuration validation matters. Non-zero tilt angles (pitch, roll, or yaw) on the LiDAR mount are a common source of errors for new users: a misconfigured pitch angle corrupts the ground plane estimate, leading to bad maps or incorrect obstacle detection. The CI/CD test suite was added specifically to catch these issues before deployment.
The tests cover three mount geometries: flat (no tilt), forward-tilted, and custom-angled. Each test verifies TF (robot coordinate transform) accuracy, ground projection consistency, and that obstacle clearing works correctly across mounting angles. The README describes these as beginner-friendly benchmarks that serve as reference setups.
The multi-LiDAR test suite supports different LiDAR models. The README mentions the Airy tilted at 45 degrees, the C16 with no tilt, and the Mid360 rolled 180 degrees as tested configurations. This breadth of supported hardware reflects the cost-effective hardware design goal: the stack should work with the 16-line LiDARs commonly used in budget robotics builds, not only with premium sensors.
How dddmr_navigation Compares to Nav2
Nav2 is the reference navigation framework for ROS 2 and covers the needs of most wheeled mobile robots operating on flat surfaces. Its 2D costmap is well-tested, widely documented, and has a large community. Teams building a standard warehouse autonomous mobile robot on flat concrete floors should start with Nav2.
dddmr_navigation is the right choice when Nav2's assumptions break. The README is specific: multi-level floor mapping and localization, path planning in stereo structures, and perception markings and clearings in a 3D point cloud map are the stated capabilities that Nav2 does not provide. These are not theoretical limitations; they are documented failure modes for real deployment environments.
The cost of adopting dddmr_navigation over Nav2 is complexity: six separate modules versus a more consolidated Nav2 architecture, documentation that is distributed across multiple subdirectories, and a 3D point cloud approach that requires a LiDAR sensor rather than a 2D scan. Teams that need the 3D capabilities and are willing to invest in the additional setup will find the Nav2-compatible workflow pattern reduces the transition cost. The project reached v1.0.0 on 2026-09-22, suggesting the core API has stabilized.
Editorial conclusion
dddmr_navigation is the right choice for mobile robot platforms that need to navigate multi-level floors, ramps, and stereo structures that Nav2's 2D costmap cannot represent. The cost-effective hardware target (16-line LiDAR, Intel NUC or Jetson Orin Nano, consumer IMU) makes it accessible for research and industrial prototypes without requiring datacenter-grade sensors. Developers coming from Nav2 should find the transition straightforward since the standard procedures mirror 2D navigation: map, localize, then send goals. The CI/CD test suite and the Unitree Go2 Gazebo simulator integration are practical entry points for validating LiDAR configurations before deploying on hardware. The last push was on 2026-09-24 and version v1.0.0 was released on 2026-09-22.
Frequently asked questions
How do autonomous mobile robots navigate using dddmr_navigation?
dddmr_navigation follows the same three-step process as standard 2D navigation: first build a 3D map with dddmr_lego_loam, then localize the robot within that map using dddmr_mcl_3dl with an initial pose, then send navigation goals. The stack handles global path planning and local obstacle avoidance automatically once localized.
What is the dddmr_navigation robot navigation system?
dddmr_navigation is a 3D mobile robot navigation stack that provides mapping, localization, perception, global path planning, local planning, and a navigation executive for ROS-based platforms. It is designed for environments with multi-level floors, ramps, and stereo structures that 2D navigation stacks like Nav2 cannot handle.
What LiDAR sensors does dddmr_navigation support?
The README describes testing with the Airy LiDAR at 45-degree tilt, the C16 with no tilt, and the Mid360 rolled 180 degrees. The design targets cost-effective 16-line LiDARs for budget robot builds. The CI/CD test suite validates sensor configurations including flat, forward-tilted, and custom-angled LiDAR mounts before deployment.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/dfl-rlab-dddmr-navigation)