Navigation
The navigation layer is based on Nav2. It consumes a map, localization, costmaps, planners, and controller parameters.
Common modes
- Navigate on an existing map.
- Run SLAM and navigation together during development.
- Compare TEB and DWB local planning behavior.
Recommended reading path
If you are new to OSRacer navigation, read these pages in order:
- Ackermann Navigation — understand why OSRacer is different from differential-drive robots.
- Nav2 Speed Optimization — understand the key command-chain and planner changes.
- Nav2 Tuning — tune velocity, acceleration, costmaps, and planner parameters safely.
- Nav2 Troubleshooting — debug common runtime problems.
Planner selection
Use TEB for the default Ackermann-oriented profile:
bash
ros2 launch osracer_navigation bringup_launch.py slam:=True planner:=tebUse DWB as a simpler baseline or comparison profile:
bash
ros2 launch osracer_navigation bringup_launch.py slam:=True planner:=dwbTuning priorities
- Confirm TF and localization first.
- Confirm
odometry/filteredis stable. - Tune robot footprint and inflation radius.
- Set safe velocity and acceleration limits.
- Tune local planner constraints for Ackermann motion.
- Test recovery behavior in a controlled area.
Development notes
Keep navigation parameter files small and named by scenario. For example, use separate files for lab, classroom, corridor, and race track tests.
Every navigation profile change should record:
- robot model;
- map or test field;
- planner name;
- changed parameters;
- observed result;
- rollback note.