Hi everyone
,
I recently completed a systematic evaluation of global path planners in ROS2 Nav2, and wanted to share the results with the community.
Overview
I benchmarked four global planners:
-
Dijkstra
-
A*
-
Theta*
-
SMAC2D
The evaluation was conducted on 3,000 randomized navigation tasks, repeated across three independent runs, using a paired-sample methodology to ensure fair comparison.
Key Results
| Planner | Success Rate | Mean Time | Path Quality |
|---|---|---|---|
| Dijkstra | 100% | ~22 ms | Longer (least cost) paths |
| A* | 100% | ~22 ms | Similar to Dijkstra |
| Theta* | ~86% | ~18.6 ms | Shortest paths |
| SMAC2D | ~90% | ~19 ms | Smooth + near-optimal |
Key Observations
-
Dijkstra & A*
→ Perfect reliability (100%), but higher computation time and longer (least cost) paths -
Theta*
→ Fastest and shortest paths, but reduced robustness in cluttered environments -
SMAC2D
→ Best overall balance between runtime, smoothness, and robustness
Real-Time Performance
-
A 50 ms constraint (20 Hz control loop) was used
-
All planners meet this in most cases
-
SMAC2D achieves >99% compliance
-
Theta* shows the lowest tail latency
Takeaway
There is a clear trade-off between:
-
Robustness (Dijkstra / A*)
-
Optimality + Speed (Theta*)
-
Balanced real-world performance (SMAC2D)
No single planner dominates across all metrics.
Repository
Full results and plots are available here:
GitHub - haris-mujeeb/Differential-Drive-Path-Planning-and-Navigation · GitHub
Thanks!