feat: Nav2 AMCL integration (Issue #655) #664
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-perception/issue-655-nav2-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
AMCL-based autonomous navigation stack for SaltyBot, wired to VESC CAN odometry (Issue #646) and RPLiDAR as sensor sources.
New:
config/amcl_nav2_params.yamlComplete Nav2 params with inline costmap configs (required by nav2_bringup):
New:
launch/nav2_amcl_bringup.launch.pyOrchestrates 4-step startup:
sensors.launch.py(conditional — skip if already running)odometry_bridge.launch.py→ /odom (VESC CAN IDs 61/79)localization_launch.py→ map_server + AMCL → TF map→odomnavigation_launch.py→ controller + planner + behaviors + BT navArguments:
map,use_sim_time,autostart,params_file,include_sensorsNew:
maps/saltybot_map.{yaml,pgm}10m×10m placeholder free-space map (200×200 P5 PGM, 0.05m/cell). Replace with saved SLAM map via
map_saver_cli.Updated:
saltybot_bringup/launch/nav2.launch.pyAdds
nav_modeargument:nav_mode:=slam(default) — existing RTAB-Map behaviour unchangednav_mode:=amcl— delegates tonav2_amcl_bringup.launch.pyTests:
test/test_nav2_amcl.py— 38 unit tests (no ROS2 required)Covers: params structure, z-weight sum=1.0, costmap layers, recovery behaviors, inflation > robot radius, lifecycle node lists, DWB/NavFn validity, PGM format + dimensions, launch file syntax checks.
All 58 tests pass (38 new + 20 from Issue #646).
Test plan
pytest jetson/ros2_ws/src/saltybot_nav2_slam/test/ -v→ 58 passedros2 launch saltybot_nav2_slam nav2_amcl_bringup.launch.py— starts without errorsros2 topic hz /odom→ ~50 Hz from VESCros2 topic hz /scan→ ~5.5 Hz from RPLIDARros2 topic echo /amcl_pose— pose updates as robot movesros2 run tf2_tools view_frames— map→odom→base_link chain presentros2 launch saltybot_bringup nav2.launch.py nav_mode:=amcl🤖 Generated with Claude Code