RealSense SDK 安装与部署:驱动、udev 规则与常见故障
二、安装与部署:驱动、udev 规则与常见故障
RealSense 的安装在 Linux 上有两条路径:apt 仓库安装与源码编译。绝大多数情况用 apt 就够,源码编译只在需要特定版本或打补丁时使用。Windows 上直接下载官方安装包与 SDK 安装器即可。
- 注册 apt 源并安装核心包。
librealsense2-dkms是内核模块补丁包,某些内核版本上深度相机需要它才能被正确识别:
具体仓库地址与包名请以官方安装文档为准,各发行版略有差异。sudo mkdir -p /etc/apt/keyrings curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | \ sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] \ https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" | \ sudo tee /etc/apt/sources.list.d/librealsense.list sudo apt update sudo apt install -y librealsense2-dkms librealsense2-utils librealsense2-dev - 安装 udev 规则。这一步不做的话,相机能被识别但普通用户无权访问,表现为
No device connected或权限拒绝。apt 安装通常会自动带上规则,源码编译则需要手动拷贝:sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger # 重新插拔设备后验证 rs-enumerate-devices - 验证设备识别。这条命令会列出所有连接的设备及其支持的流配置,是排查问题的第一步:
rs-enumerate-devices rs-enumerate-devices -c-c会打印完整的内外参与流能力,输出较长,可重定向到文件慢慢看。 - 用官方查看器确认数据正常。图形化查看器可以直观地看到深度图与彩色图,快速判断硬件是否工作:
realsense-viewer - 安装 ROS 包装包。要在机器人上使用,这一步必不可少:
sudo apt install -y ros-noetic-realsense2-camera ros-noetic-realsense2-description roslaunch realsense2_camera rs_camera.launch align_depth:=true - 安装 Python 绑定,便于做快速验证脚本:
pip install pyrealsense2 python -c "import pyrealsense2 as rs; print(rs.__version__)"
常见故障与排查,RealSense 的问题有很大一部分出在 USB 链路上。
| 报错现象 | 根因 | 处理方式 |
|---|---|---|
No device connected | udev 规则未装,或用了 USB 2 线缆 | 安装规则并重插;换用支持 USB 3 的数据线 |
Frame didn't arrive within 5000 | USB 带宽不足或链路降速到 USB 2 | 换 USB 3 端口,避免与摄像头共用同一控制器 |
| 深度图大面积空洞 | 表面无纹理且投射器被关闭,或距离超出有效范围 | 开启投射器;把相机移近到有效距离内 |
| 深度值随距离呈常数倍偏差 | 深度单位换算用了硬编码系数 | 从设备读取 depth scale 再做换算 |
Device or resource busy | 已有进程占用设备 | 关闭 realsense-viewer 或其他占用进程 |
| 彩色与深度对不齐 | 未开启对齐,或外参未正确读取 | 开启 align 处理块;确认使用对齐后的深度话题 |
| 长时间运行后掉线 | USB 供电不足或线缆质量差 | 换带供电的 USB 集线器与高质量短线 |
| 多机同时工作相互干扰 | 红外投射器编码相同,或 ToF 相互串扰 | 错开投射器模式或分时工作 |
关于线缆,有一条经验值得单独强调:RealSense 的绝大多数疑难杂症都源于一根不合格的 USB 线。相机侧是 USB Type-C 接口,但很多 Type-C 线只支持 USB 2 速率或只供电不传数据。判断方法是运行 rs-enumerate-devices,看输出里的 USB 类型是否为 3.x;如果显示为 2.1,深度流的分辨率与帧率都会被限制,高分辨率配置会直接报帧超时。

