A Deep Dive into Static and Dynamic
Pathfinding for TurtleBot4
2026 Senior Capstone Project — Carleton College
Project Overview
This project explores obstacle avoidance and autonomous navigation on the TurtleBot4 robotic platform using Robot Operating System 2 (ROS 2). We implement, tune, and compare five distinct navigation algorithms — ranging from classical graph-search planners to reactive local controllers — to understand their trade-offs in real-world and simulated environments.
Each algorithm was tested in the Gazebo simulator and on a physical TurtleBot4, navigating custom maze-style environments. We evaluate performance across metrics including path optimality, computation time, obstacle clearance, and robustness to dynamic obstacles.
The stack is built on ROS 2 Jazzy / Humble, leveraging Nav2, AMCL localization, SLAM Toolbox, and TF2. All algorithm source code is available in our GitHub repository.
Algorithms
Five navigation approaches — two global planners, one dynamic replanner, one reactive controller, and a hybrid stack.
A* (A-Star)
A* is a heuristic-guided graph search algorithm that finds the shortest path from a start to a goal on a 2D occupancy grid. It combines the cost-to-reach (g) with an admissible heuristic estimate (h) to efficiently prioritize promising nodes.
- Optimal path on uniform-cost grids
- Euclidean heuristic for grid navigation
- Hybrid obstacle inflation for safety margins
- Pure pursuit waypoint following
- Standalone or planner-only mode (for stacking with DWA)
D* Lite
D* Lite is an incremental heuristic search algorithm derived from Lifelong Planning A*. It searches backwards from the goal, enabling efficient replanning when new obstacles are detected — ideal for partially-known or changing environments.
- Incremental replanning without full recomputation
- SLAM integration for map updates
- LiDAR-based dynamic obstacle detection
- Automatic replanning on obstacle discovery
- Real-time path visualization
Jump Point Search (JPS)
Jump Point Search is an optimization of A* for uniform-cost grids. It dramatically reduces the node expansion count by identifying and skipping symmetrical paths, jumping directly to "jump points" that are guaranteed to be on optimal paths.
- Significantly faster than standard A* on open grids
- Same optimal path guarantees as A*
- Forced neighbor pruning rules
- Interactive goal input via terminal
- Real-time visualizer for jump point expansion
DWA (Dynamic Window Approach)
The Dynamic Window Approach is a reactive local planner that samples the robot's velocity space within a kinematically-feasible window, simulates candidate trajectories, and selects the trajectory with the best combined cost score.
- Real-time local obstacle avoidance
- Configurable cost weights (goal, obstacle, velocity, smoothness)
- Emergency stop on critical proximity
- TF2/AMCL localization integration
- Standalone or local-controller mode (stacked with A*)
Hybrid A* + DWA
The hybrid approach combines A* as a global planner with DWA as a local controller, mirroring the Nav2 planner/controller architecture. A* computes the optimal global path; DWA executes it in real time while avoiding obstacles.
- Global optimality from A* path planning
- Real-time obstacle reactivity from DWA
- Path-tracking cost terms guide DWA along A* plan
- Lookahead carrot-following for smooth execution
- Mirrors ROS 2 Nav2 planner/controller split