feat: Nav2 path planning + obstacle avoidance (Phase 2b) #49

Merged
seb merged 1 commits from sl-perception/nav2-integration into main 2026-02-28 22:58:50 -05:00
Collaborator

Summary

  • jetson/config/nav2_params.yaml — DWB local planner, NavFn global planner, 10Hz local / 5Hz global costmap, robot_radius: 0.15m, max_vel_x: 1.0 m/s. RPLIDAR /scan as ObstacleLayer; RealSense depth/color/points as VoxelLayer.
  • launch/nav2.launch.py — includes nav2_bringup/navigation_launch.py; no AMCL/map_server (RTAB-Map provides /map + map→odom TF + /rtabmap/odom).
  • behavior_trees/navigate_to_pose_with_recovery.xml — BT replan @ 1 Hz, DWB path follow; recovery round-robin: clear costmaps → spin 90° → wait 5s → back up 0.30m (6 retries).
  • docker-compose.yml — add saltybot-nav2 service (depends_on: saltybot-ros2).
  • package.xml — add rtabmap_ros + nav2_bringup exec deps.
  • setup.py — install behavior_trees/*.xml to share directory.
  • SLAM-SETUP-PLAN.md — Phase 2b marked Done.

Start sequence on Orin

docker compose up saltybot-ros2 # RTAB-Map + sensors first
docker compose up saltybot-nav2 # Nav2 stack

Test plan

  • ros2 topic echo /cmd_vel — verify commands during navigation goal
  • ros2 topic hz /local_costmap/costmap — verify ~10Hz
  • ros2 topic hz /global_costmap/costmap — verify ~5Hz
  • Obstacle test: block path, verify RPLIDAR marks it, robot replans
  • Recovery test: block all paths, verify spin/wait/backup sequence fires

Generated with Claude Code

## Summary - **`jetson/config/nav2_params.yaml`** — DWB local planner, NavFn global planner, 10Hz local / 5Hz global costmap, robot_radius: 0.15m, max_vel_x: 1.0 m/s. RPLIDAR /scan as ObstacleLayer; RealSense depth/color/points as VoxelLayer. - **`launch/nav2.launch.py`** — includes nav2_bringup/navigation_launch.py; no AMCL/map_server (RTAB-Map provides /map + map→odom TF + /rtabmap/odom). - **`behavior_trees/navigate_to_pose_with_recovery.xml`** — BT replan @ 1 Hz, DWB path follow; recovery round-robin: clear costmaps → spin 90° → wait 5s → back up 0.30m (6 retries). - **docker-compose.yml** — add saltybot-nav2 service (depends_on: saltybot-ros2). - **package.xml** — add rtabmap_ros + nav2_bringup exec deps. - **setup.py** — install behavior_trees/*.xml to share directory. - **SLAM-SETUP-PLAN.md** — Phase 2b marked Done. ## Start sequence on Orin docker compose up saltybot-ros2 # RTAB-Map + sensors first docker compose up saltybot-nav2 # Nav2 stack ## Test plan - [ ] ros2 topic echo /cmd_vel — verify commands during navigation goal - [ ] ros2 topic hz /local_costmap/costmap — verify ~10Hz - [ ] ros2 topic hz /global_costmap/costmap — verify ~5Hz - [ ] Obstacle test: block path, verify RPLIDAR marks it, robot replans - [ ] Recovery test: block all paths, verify spin/wait/backup sequence fires Generated with Claude Code
sl-perception added 1 commit 2026-02-28 22:55:01 -05:00
Integrates Nav2 autonomous navigation stack with RTAB-Map SLAM on Orin
Nano Super. No AMCL/map_server needed — RTAB-Map provides /map + TF.

New files:
- jetson/config/nav2_params.yaml                           DWB controller,
  NavFn planner, RPLIDAR obstacle layer, RealSense voxel layer;
  10Hz local / 5Hz global costmap; robot_radius 0.15m, max_vel 1.0 m/s
- jetson/ros2_ws/src/saltybot_bringup/launch/nav2.launch.py
  wraps nav2_bringup navigation_launch with saltybot params + BT XML
- jetson/ros2_ws/src/saltybot_bringup/behavior_trees/
    navigate_to_pose_with_recovery.xml  BT: replan@1Hz, DWB follow,
    recovery: clear maps → spin 90° → wait 5s → back up 0.30m

Updated:
- jetson/docker-compose.yml             add saltybot-nav2 service
                                        (depends_on: saltybot-ros2)
- jetson/ros2_ws/src/saltybot_bringup/setup.py   install behavior_trees/*.xml
- jetson/ros2_ws/src/saltybot_bringup/package.xml add rtabmap_ros + nav2_bringup
- projects/saltybot/SLAM-SETUP-PLAN.md  Phase 2b  Done

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
seb merged commit 3f627ac3c8 into main 2026-02-28 22:58:50 -05:00
seb deleted branch sl-perception/nav2-integration 2026-02-28 22:58:50 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#49
No description provided.