This page is the visual companion to 03-nav2-architecture.md. The goal is simple: make it obvious why NavFn and SmacPlanner are solving different planning problems, even when they are given the same map and the same goal.
NavFn thinks in terms of occupancy cells and traversal cost.
It asks:
“Which sequence of free cells gets me from start to goal at minimum path cost?”
It does not directly reason about steering angle or minimum turning radius.
Top-down grid view
####################
# S . . . . . . . #
# . . . X X . . . #
# . . . X X . . G #
# . . . . . . . . #
####################
NavFn state = (x, y)
The planner only needs to know where the robot is on the map. Heading is not part of the search state.
This is why NavFn is fast and very reliable on warehouse maps, but it can produce a path that is geometrically valid while still being awkward for a car-like robot to follow.
SmacPlanner Hybrid-A* thinks in a richer state space.
It asks:
“Which sequence of feasible position-and-heading states gets me to the goal while respecting the robot’s turning constraints?”
Smac state = (x, y, theta)
That means two states at the same map location can still be different if the robot is facing different directions.
Same position, different states:
Cell A, heading east -> (x, y, 0°)
Cell A, heading north -> (x, y, 90°)
Cell A, heading west -> (x, y, 180°)
The search is effectively moving through a lattice of feasible vehicle poses, not just a floor grid.
Suppose the map allows a sharp corner.
NavFn may happily route through that corner because the cells are free.
NavFn sees:
....
...G
..X.
S...
But a car-like robot with a large minimum turning radius may not be able to rotate into that corner tightly enough.
SmacPlanner accounts for that by searching curved motions that obey the configured turning radius.
This is the key difference:
When Smac uses motion_model_for_search: DUBIN, it only explores forward-feasible
motions.
When it uses motion_model_for_search: REEDS_SHEPP, it can also explore reverse
maneuvers.
Dubin search: Reeds-Shepp search:
forward only forward + reverse
arc / straight arc / straight / reverse arc / reverse straight
That makes the search space larger, but it often makes the solution much shorter in tight spaces such as docking, parking, and forklift alignment.
Use NavFn when:
Use SmacPlanner when:
NavFn searches where the robot can fit on the map. Smac searches how the robot can actually drive there.