Adds saltybot_bringup ROS2 package with four launch files: - realsense.launch.py — D435i at 640x480x15fps, IMU unified topic - rplidar.launch.py — RPLIDAR A1M8 via /dev/rplidar udev symlink - sensors.launch.py — both sensors + static TF (base_link→laser/camera) - slam.launch.py — sensors + slam_toolbox online_async (compose entry point) Sensor config YAMLs (mounted at /config/ in container): - realsense_d435i.yaml — Nano power-budget settings (15fps, no pointcloud) - rplidar_a1m8.yaml — Standard scan mode, 115200 baud, laser frame - slam_toolbox_params.yaml — Nano-tuned (2Hz processing, 5cm resolution) Fixes docker-compose volume mount: ./ros2_ws/src:/ros2_ws/src (was ./ros2_ws:/ros2_ws/src — would have double-nested the src directory) Topic reference and verification commands in SENSORS.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
54 lines
2.9 KiB
YAML
54 lines
2.9 KiB
YAML
# RealSense D435i configuration — Jetson Nano (power-budget tuned)
|
|
#
|
|
# Profile format: WxHxFPS
|
|
# Constraint: ~10W total budget. 640x480x15 saves ~0.4W vs 30fps.
|
|
#
|
|
# Reference topics at these settings:
|
|
# /camera/color/image_raw 640x480 15 Hz RGB8
|
|
# /camera/depth/image_rect_raw 640x480 15 Hz Z16
|
|
# /camera/aligned_depth_to_color/image_raw 640x480 15 Hz Z16
|
|
# /camera/imu 6-axis ~200 Hz (accel@100Hz + gyro@400Hz fused)
|
|
# /camera/color/camera_info 640x480 15 Hz
|
|
# /camera/depth/camera_info 640x480 15 Hz
|
|
#
|
|
# Hardware IMU: Bosch BMI055
|
|
# Accelerometer native rate: 100 Hz
|
|
# Gyroscope native rate: 400 Hz
|
|
# unite_imu_method=2: linearly interpolates accel to match gyro timestamps
|
|
|
|
camera:
|
|
ros__parameters:
|
|
# ── Streams ──────────────────────────────────────────────────────────────
|
|
depth_module.profile: "640x480x15"
|
|
rgb_camera.profile: "640x480x15"
|
|
|
|
enable_depth: true
|
|
enable_color: true
|
|
enable_infra1: false # not needed for RGB-D SLAM
|
|
enable_infra2: false
|
|
|
|
# ── IMU ──────────────────────────────────────────────────────────────────
|
|
enable_gyro: true
|
|
enable_accel: true
|
|
# 0=none 1=copy 2=linear_interpolation
|
|
# Use 2: aligns accel timestamps to gyro rate, required for sensor fusion
|
|
unite_imu_method: 2
|
|
|
|
# ── Alignment ────────────────────────────────────────────────────────────
|
|
# Projects depth pixels into RGB frame — required for rtabmap_ros rgbd input
|
|
align_depth.enable: true
|
|
|
|
# ── Point cloud ──────────────────────────────────────────────────────────
|
|
# Disabled: rtabmap_ros generates its own from aligned depth.
|
|
# Maxwell GPU cannot handle both simultaneously at budget.
|
|
pointcloud.enable: false
|
|
|
|
# ── TF ───────────────────────────────────────────────────────────────────
|
|
publish_tf: true
|
|
tf_publish_rate: 0.0 # 0 = publish static transforms only (no redundant timer)
|
|
|
|
# ── Device ───────────────────────────────────────────────────────────────
|
|
# Leave serial_no empty to auto-select first found device
|
|
# serial_no: ''
|
|
# device_type: d435i
|