Comparing Global Planners for navigation

Hi everyone :waving_hand:,

I recently completed a systematic evaluation of global path planners in ROS2 Nav2, and wanted to share the results with the community.

:magnifying_glass_tilted_left: 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.


:bar_chart: 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

:balance_scale: 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


:stopwatch: 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


:brain: 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.


:link: Repository

Full results and plots are available here:
:backhand_index_pointing_right: GitHub - haris-mujeeb/Differential-Drive-Path-Planning-and-Navigation · GitHub


Thanks!

2 Likes

A* less than optimal? Sorry, but that can’t be true. A* = best-first search using an admissible heuristic! And that combination guarantees optimality (cf. any text book on the topic, e.g., Peter & Norvig). So if you didn’t achieve optimality you either didn’t use an admissible heuristic, in which case it would be wrong to call it A*, or you are using a double standard of “shortest path”: one modeled in the search algorithm and a different one used to evaluate the path afterwards.

This report looks rather AI generated, so I’d like to ask: did AI perhaps also implement the code that ran and could that explain this discrepancy?

1 Like