3 步跑通 RealSense 深度相机
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
机器人要绕开障碍、机械臂要抓起物件,前提都是手里有一份可靠的距离数据。librealsense(RealSense SDK 2.0)把深度相机的彩色/深度流、标定参数和后处理封装成跨平台 C++ 库,Python、C#、ROS 等语言都有绑定;在 Ubuntu 上打好内核补丁,你就能拿到第一帧深度图。
🚀 最快出图:从克隆到第一帧深度数据
第 1 步:拉仓库。不想从源码编译的话,官方 Releases 也提供预编译包,但源码路线最透明:
git clone https://gitcode.com/GitHub_Trending/li/librealsense cd librealsense第 2 步:装设备权限和内核驱动。RealSense 在 Linux 上必须打 uvcvideo 内核补丁,先拔下相机,再依次跑权限脚本和内核补丁脚本(Ubuntu 20/22/24 LTS 用 hwe 版本):
./scripts/setup_udev_rules.sh ./scripts/patch-realsense-ubuntu-lts-hwe.sh踩坑提示:udev 脚本和内核补丁脚本运行时相机必须是拔出状态,插着跑容易装错规则。
跑完用sudo dmesg | tail -n 50确认新的 uvcvideo 驱动已注册。
第 3 步:编译安装,带上示例:
mkdir build && cd build cmake ../ -DBUILD_EXAMPLES=true make -j$(nproc) sudo make install安装后rs-hello-realsense会落到/usr/local/bin,直接运行,终端开始滚动输出画面中心像素的距离(米)——这就是你的第一帧深度数据。想看多路画面,再启动realsense-viewer:
🎛 深度图噪点怎么调:后处理滤波器与高级模式
原始深度图天生带毛刺:边缘噪点、逐帧抖动、局部空洞。SDK 提供一组后处理滤波器,各解决一个问题:
decimation_filter:下采样深度图,用分辨率换帧率;spatial_filter:空间去噪,压孤立噪点、锐化边缘;temporal_filter:时序平滑,抑制帧间抖动;hole_fill_filter:填补深度空洞。
典型顺序是先 decimation 再 spatial/temporal,rs-post-processing 示例 可直接演示各滤波器叠加后的差异。如果你的深度和彩色分辨率不一致,跑 align 示例 做 depth-to-color 对齐,后面做分割、检测才不会对不上像素。
D400 系列相机还支持高级模式:激光功率、曝光时间、深度置信度阈值都能精确调整,且参数持久化,掉电不丢。文档见 D400 高级模式,参数界面如下:
踩坑提示:spatial/temporal 等级不是越高越好,开太高等级会让深度边缘糊掉、物体轮廓变圆。从 1 级加起,对着真实物体看效果。
📦 完整案例:双相机量箱子长宽高
场景是物流分拣线入库验收:纸箱过线,系统自动输出长宽高,替代人工卡尺。仓库里的box_dimensioner_multicam示例用两台 RealSense 深度相机从两个视角拍同一个箱子,配合棋盘格标定出相机位姿(Kabsch 解算),最终输出箱子三维尺寸。
输入:两台深度相机、示例自带的pattern_chessboard.png棋盘格、HighResHighAccuracyPreset.json高分辨率预设;输出:数值化的长宽高结果,适用于物流、仓储、体积计价等场景。
pip install pyrealsense2 cd wrappers/python/examples/box_dimensioner_multicam python box_dimensioner_multicam_demo.py⚠️ 四个高频卡点:设备识别、依赖与平台
1. 插相机后完全找不到设备。原因:内核 uvcvideo 驱动未打补丁,相机枚举异常。解法:重跑./scripts/patch-realsense-ubuntu-lts-hwe.sh,再查sudo dmesg | tail -n 50是否出现新驱动注册信息。
2. 报Multiple realsense udev-rules were found!。原因:Debian 包和源码安装并存,udev 规则重复。解法:二选一,源码安装可用./scripts/setup_udev_rules.sh --uninstall卸掉多余规则。
3. 编译报openssl/opensslv.h缺失,或fastrtps、curl依赖错误。原因:系统构建依赖不全。解法:装libssl-dev;与 DDS 或版本检查无关的项目分别用-DBUILD_WITH_DDS=OFF、-DCHECK_FOR_UPDATES=OFF关掉。
4. 虚拟机里相机不识别或流卡死。原因:USB 3.0 虚拟化层限制,官方不支持 VM 环境。解法:换真机;必须用 VM 时选 VMware 的 USB3 仿真,并核对内核版本是否受支持。
📚 继续深入:文档与示例入口
- 文档总索引
- Linux 安装手册
- 后处理滤波器详解
- 录制与回放(.db3 格式)
- 示例代码总览
- Python 绑定与示例
- OpenCV Kinect Fusion 三维重建示例
- 故障排除
- API 头文件(rs.hpp)
把你的目标测量距离和帧率要求换算成 decimation 与 spatial 的等级,重跑一次 rs-post-processing,再用 Depth Quality 工具 对比填充率和精度,再定最终参数。
【免费下载链接】librealsenseRealSense SDK项目地址: https://gitcode.com/GitHub_Trending/li/librealsense
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考