Hybrid A* Path
Planner
Standard A* produces paths on a discrete grid that violate differential drive kinematics. The resulting zig-zag trajectories require the robot to stop and turn in place at each grid cell transition โ making smooth autonomous navigation in cluttered competition environments impossible without fundamental re-engineering of the planning layer.
Implemented Hybrid A* with continuous state expansion in (x, y, ฮธ) โ replacing the discrete grid with kinematically feasible motion primitives using Dubins path curves. This enforces curvature bounds that reflect the robot's minimum turning radius, producing trajectories that a differential drive can follow without stopping. A velocity profiler then generates smooth, dynamically feasible speed profiles tuned to the robot's physical constraints, and the planner integrates directly with Nav2's Costmap2D for collision checking.
Engineered natively as a custom C++ Nav2 global planner plugin, implementing the
nav2_core::GlobalPlanner
interface for drop-in compatibility with any standard
ROS2 navigation setup. The Dubins primitive generator constructs kinematically feasible
arc segments that respect the robot's curvature constraints at each expansion step.
The holonomic-with-obstacles heuristic guides search efficiently even in high-obstacle-density
environments. Integrates with Nav2's lifecycle management and Costmap2D infrastructure
without any changes to the broader stack.
Robot successfully navigates highly cluttered environments using smooth, dynamically feasible trajectories โ no stop-and-turn mechanics. The planner drops in as a replacement for Nav2's default GlobalPlanner and works transparently with the rest of the navigation stack, enabling competition-grade autonomous navigation without modifying the broader system.