RGB-D SLAM 开发指南
Intel RealSense D435i · ROS2 Humble · RTAB-Map 完整 RGB-D SLAM 流水线
RealSense D435i
ROS2 Humble
RTAB-Map SLAM
视觉里程计
通过 室内定位
1. 概述
RGB-D SLAM 是室内机器人和无人机定位的常用方法。系统使用 RGB-D 相机(如 Intel RealSense D435i)获取 RGB 图像、深度图像和相机标定信息。RGB 图像提供视觉特征,深度图像提供距离信息。结合 RGB 和深度数据,系统可以估计相机运动并构建环境的 3D 地图。
Intel RealSense D435i
|
|
v
ROS2 RealSense Driver
|
|
+----------------+
| |
v v
RGB Image Depth Image
| |
+-------+--------+
|
v
RGB-D Odometry
|
v
RTAB-Map SLAM
|
+---------+---------+
| |
v v
Camera Trajectory 3D Map
2. 系统组件
RGB-D 相机
硬件: Intel RealSense D435i
RGB 流:
包含普通彩色图像(物体、纹理、角点、视觉特征)
深度流:
包含距离信息(像素距离 = 1.25 米),深度使系统理解环境的 3D 结构。
RGB 流:
/camera/camera/color/image_raw包含普通彩色图像(物体、纹理、角点、视觉特征)
深度流:
/camera/camera/depth/image_rect_raw包含距离信息(像素距离 = 1.25 米),深度使系统理解环境的 3D 结构。
3. Terminal 1 — 启动 RealSense 驱动
source /opt/ros/humble/setup.bash
ros2 launch realsense2_camera rs_launch.py \
depth_module.depth_profile:=640x480x15 \
rgb_camera.color_profile:=640x480x15
功能: 启动相机驱动,连接 ROS2 与 D435i。
D435i → RGB (/camera/camera/color/image_raw) + Depth (/camera/camera/depth/image_rect_raw)
错误 无 SLAM · 错误 无地图 · 错误 无位置估计
通过 仅有相机数据
D435i → RGB (/camera/camera/color/image_raw) + Depth (/camera/camera/depth/image_rect_raw)
错误 无 SLAM · 错误 无地图 · 错误 无位置估计
通过 仅有相机数据
系统只知道“这些是来自相机的图像”,不知道相机在哪里、如何移动、环境结构如何。
4. Terminal 2 — 验证相机数据
source /opt/ros/humble/setup.bash
# 检查 RGB
ros2 topic hz /camera/camera/color/image_raw
# 检查深度
ros2 topic hz /camera/camera/depth/image_rect_raw
预期:~14-15 Hz
目的:仅确认相机正在发布图像。
错误 无 SLAM · 错误 无轨迹 · 错误 无地图
通过 相机通信已验证
目的:仅确认相机正在发布图像。
错误 无 SLAM · 错误 无轨迹 · 错误 无地图
通过 相机通信已验证
5. Terminal 3 — 启动 RTAB-Map SLAM
source /opt/ros/humble/setup.bash
ros2 launch rtabmap_launch rtabmap.launch.py \
rgb_topic:=/camera/camera/color/image_raw \
depth_topic:=/camera/camera/depth/image_rect_raw \
camera_info_topic:=/camera/camera/color/camera_info \
frame_id:=camera_color_optical_frame \
approx_sync:=true
6. RTAB-Map 内部工作
RGB Image
|
|
Depth Image
|
v
rgbd_odometry
|
|
| Camera motion estimation
|
v
/rtabmap/odom
|
v
RTAB-Map
|
+----------------+
| |
v v
Feature Matching 3D Mapping
|
|
Loop Closure

7. RGB-D 里程计
组件:
估计相机运动(旋转 + 平移)
示例:
相机位置:X=0 → X=0.5m
输出:
rgbd_odometry估计相机运动(旋转 + 平移)
示例:
相机位置:X=0 → X=0.5m
输出:
/rtabmap/odom(位置 + 方向 + 坐标变换)
这就是视觉里程计。
8. RTAB-Map SLAM
特征匹配
检测视觉特征(角点、纹理、物体)并比较图像,估计相机运动。
回环检测
识别先前访问过的位置,修正累积漂移。
3D 地图生成
使用 RGB 图像、深度信息和估计运动创建点云、3D 重建和占据栅格地图。
通过 9. RGB-D SLAM 运行中
通过 视觉里程计
通过 相机轨迹
通过 3D 重建
通过 SLAM 数据库
通过 环境地图
通过 相机轨迹
通过 3D 重建
通过 SLAM 数据库
通过 环境地图
10. 重要术语
| 术语 | 说明 |
|---|---|
| RGB-D 相机 | Intel RealSense D435i,提供 RGB 图像 + 深度图像 |
| RGB-D 里程计 | RGB + Depth → 相机运动估计,输出 /rtabmap/odom
|
| RGB-D SLAM | 里程计 + 建图 + 回环检测 → 轨迹 + 3D 地图 + 定位 |
11. 下一步开发方向
仅建图
调优 RTAB-Map 参数 · 改善点云质量 · 保存/加载地图
机器人导航
RTAB-Map → /rtabmap/odom → Navigation Stack → Robot Controller
无人机集成
RealSense D435i → RTAB-Map → Visual Odometry → MAVROS/MAVSDK → Pixhawk EKF2 → Indoor Autonomous Flight
下一步工程是将视觉里程计连接到飞控,使无人机无需 GPS 即可保持位置。
通过 当前工作配置
| 组件 | 规格 |
|---|---|
| 硬件 | Intel RealSense D435i |
| 连接 | USB 3.x |
| RGB | 640x480 @ 15 FPS |
| 深度 | 640x480 @ 15 FPS |
| 操作系统 | Ubuntu 22.04 |
| ROS2 | Humble |
通过 相机驱动工作
通过 RGB 流工作
通过 深度流工作
通过 RGB-D 里程计工作
通过 RTAB-Map SLAM 工作
通过 RGB 流工作
通过 深度流工作
通过 RGB-D 里程计工作
通过 RTAB-Map SLAM 工作
平台:Jetson Orin · Ubuntu 22.04 · ROS2 Humble · D435i · RTAB-Map
(c) 卓博泰科技 · RGB-D SLAM 开发指南
(c) 卓博泰科技 · RGB-D SLAM 开发指南