type
status
date
slug
summary
tags
category
icon
password
D435i摄像头使用
第一阶段:安装SDK
Intel 官方提供了 APT 仓库,这是最简单的安装方式,无需手动编译。
- 更新系统并安装依赖:
- 注册 Intel 公钥并添加仓库:
- 安装核心库与工具:
注意:
librealsense2-dkms 会更新内核驱动,安装时如果弹出 "Secure Boot" 相关的提示,请根据提示设置密码或在 BIOS 中关闭 Secure Boot,否则驱动可能无法加载。- 配置 USB 权限(非常重要): 插上摄像头,然后运行这行命令来赋予当前用户访问摄像头的权限:
(安装完后,建议拔掉摄像头重新插一下)
第二阶段:硬件连接与验证
- 物理连接: 使用随相机附带的 USB 3.0 数据线。D435i 在 USB 2.0 下功能会受限(如分辨率和帧率降低)。
- 启动可视化工具: 在终端输入以下命令启动官方预览器:
- 检查: 如果界面右侧能看到 Stereo Module(深度)和 RGB Camera 选项,点击开关(Off -> On)看是否有画面。
- 固件更新: 如果顶部弹出提示 "Firmware Update Available",建议点击更新以确保 D435i 的 IMU(惯性测量单元)和深度算法正常工作。
- 显示Connect a RealSense Camera or Add Source.
- 拔掉摄像头。
- 在终端运行:
- 重新插入摄像头。
- 再次运行
realsense-viewer。 - 如果还是不行,可以选择将 Type-C 那一头翻转 180 度重新插入摄像头。
- 如果
ros2 topic hz频率极低 ,应检查 USB 线是否插在了蓝色(3.0)接口,而非黑色(2.0)接口 。
lsusb指令查找Bus 010 Device 002: ID 8086:0b3a Intel Corp. Intel(R) RealSense(TM) Depth Camera 435i
如果出现该项,则说明连接成功。
第三阶段:编写简单的Python代码
为了进行简单的“识别测试”,我们通常使用 Python 调用相机。
这个可以单独创建一个conda环境。
- 创建环境:
- 激活环境:
- 安装开发包:
- 环境验证:
- 编写测试脚本:
创建一个
test_realsense.py文件,以下代码将实时显示深度图和彩色图,并在彩色图中通过深度数据获取中心点的距离(这是最基础的“识别”:空间距离感知)。
在ROS2中订阅相机话题
- 编写节点代码
不要忘记配置入口点。
- 启动驱动节点:
- 核心动作:驱动程序读取 USB 数据,并根据相机内参发布各种
Topics。 - 关键参数:
align_depth.enable:=true确保深度图和彩色图的像素坐标一一对应。
- 终端 2:运行你编写的节点
其他:
- 报错:在 ROS2 Humble 中,如果遇到
_ARRAY_API not found,请检查numpy版本是否小于 2.0。
SLAM视觉建图
在开始之前使用指令lsusb | grep Intel确定相机存在。在使用视觉slam建图需要注意最好搭配里程计。
1. 初始版 slam_launch.py
请将以下内容完整覆盖你的
~/nav2_ws/src/camera/launch/slam_launch.py:配置文件d435i_params.yaml
配置文件rtabmap_params.yaml
2. 编译并生效
在运行前,请确保清理掉旧的进程并重新编译:
启动
3.使用IMU优化视觉SLAM建图
配置文件d435i_params.yaml
配置文件rtabmap_params.yaml
4.使用GPU优化
- 修改rtabmap_params.yaml参数
- 环境加速
- 检查是否成功使用GPU
看
Processes 列表中是否出现了 rviz2 或 rtabmap。如果出现了,说明你已经成功开启了 GPU 模式!5.排错
- 检查硬件:
- 正常结果:
Bus 010 Device 002: ID 8086:0b3a Intel Corp. Intel(R) RealSense(TM) Depth Camera 435i - SLAM代码显示:
RealSense Node Is Up! - 异常:如果没有输出,重新刷新usb接口,接口转180度重新插入,换一个3.0的usb。
- 检查图像:
- 正常结果:持续输出频率(如 15Hz 或 30Hz)。
- 异常:如果没有输出,说明相机驱动卡死了(检查 USB 线和 MIPI Error)。
- 检查 IMU:
- 正常结果:持续输出高频数据(如 200Hz)。
- 异常:如果没有输出,SLAM 节点会报错。
6.地图保存与查看
- 2D地图保存:
ros2 run nav2_map_server map_saver_cli -f ~/my_map。 ros2 topic list | grep map指令查找正确的话题名称。Grid/FromDepth: "true"打开2D栅格地图
注意:
- 3D数据查看: 默认数据库路径为
~/.ros/rtabmap.db。
- 工具: 使用
rtabmap-databaseViewer可回放建图轨迹。
RTAB-Map 颜色状态对照
1. 画面变黄:预警状态(Warning)
当画面背景变为黄色时,通常意味着里程计(Odometry)仍在工作,但质量较低。
- 特征点不足:当前视野内提取到的视觉特征点数量较少(低于设定阈值,如
Vis/MinInliers 10) 。
- 匹配较弱:算法能强行计算出位姿,但置信度不高。
- 应对建议:减慢移动速度,并将相机指向纹理丰富(有杂物、有书架)的区域 。
2. 画面变红:丢失状态(Critical/Lost)
当画面背景变为红色时,意味着里程计已经彻底丢失(Odometry Lost)。
- 运动模糊:相机晃动太快导致图像模糊,算法无法匹配前后两帧的特征点 。
- 视觉特征消失:相机对着白墙、镜子或纯色物体,导致没有足够的点可以追踪 。
- 计算阻塞:CPU 负载过高导致图像帧堆积(如遇到
queue is full报错),导致位姿计算超时 。
- IMU 异常:如果开启了
wait_imu_to_init但 IMU 没能成功初始化,系统也会卡在红色阻塞状态
- 应对建议:重新退回到之前的状态,借助imu恢复到上一步。
有关问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://tangly1024.com/article/2e0c7b13-c6a7-8036-9347-ee8e1d3d57dc
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










