navstack: Autonomous Robot Navigation
A full navigation stack for a differential-drive robot: EKF localization, occupancy grid mapping, hybrid A* planning and DWA control.
The problem
A mobile robot has to answer four questions continuously: where am I, what's around me, how do I get there, and how do I move right now. An error in any one shows up in all the others.
What I built
- Implemented EKF localization fusing odometry and sensor measurements
- Built occupancy grid mapping of the robot's surroundings
- Implemented hybrid A* for kinematically feasible global paths
- Implemented a dynamic window approach (DWA) local controller, integrated with ROS 2 and Nav2 in Gazebo
Key decisions
Hybrid A* instead of grid A*
A differential-drive robot can't turn in place along any path; hybrid A* plans only paths it can actually drive.
Each module built and tested in simulation first
Gazebo makes failures reproducible, so localization, mapping, planning and control can be debugged one at a time.
Progress
0 of 5 milestones- EKF localization
- Occupancy grid mapping
- Hybrid A* global planner
- DWA local controller
- Closed-loop navigation in Gazebo
Tech stack
ROS 2Nav2GazeboEKFHybrid A*DWA