feat: Integrate 360° LIDAR obstacle avoidance into full_stack (Issue #364)

Adds saltybot_lidar_avoidance node to the launch sequence at t=3s.
The RPLIDAR A1M8 node was already fully implemented with:
- Emergency stop if obstacle detected within 0.5m
- Speed-dependent safety zones (0.6m @ 0 m/s → 3.0m @ 5.56 m/s)
- Forward scanning window (±30° cone)
- Debounced obstacle detection (2-frame debounce)
- Publishes /cmd_vel_safe with filtered velocity commands

Integrates seamlessly with Nav2 stack and cmd_vel_mux multiplexer.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
sl-firmware 2026-03-04 12:23:43 -05:00
parent 3c93a72d01
commit e35bd949c0

View File

@ -275,6 +275,16 @@ def generate_launch_description():
], ],
) )
# ── t=3s LIDAR obstacle avoidance (360° safety with RPLIDAR A1M8) ────────
lidar_avoidance = TimerAction(
period=3.0,
actions=[
IncludeLaunchDescription(
_launch("saltybot_lidar_avoidance", "launch", "lidar_avoidance.launch.py"),
),
],
)
# ── t=4s Optional: 4× IMX219 CSI surround cameras ─────────────────────── # ── t=4s Optional: 4× IMX219 CSI surround cameras ───────────────────────
csi_cameras = TimerAction( csi_cameras = TimerAction(
period=4.0, period=4.0,
@ -452,6 +462,9 @@ def generate_launch_description():
sensors, sensors,
cmd_vel_bridge, cmd_vel_bridge,
# t=3s
lidar_avoidance,
# t=4s # t=4s
csi_cameras, csi_cameras,
uwb_driver, uwb_driver,