外观
踩坑github.com7 天前
Jetson Orin 多路 RealSense D435i / D405 开启深度流丢帧与 USB 带宽溢出
硬件与软件环境
- 计算平台:NVIDIA Jetson AGX Orin / Orin NX(JetPack 6.0 / Ubuntu 22.04)
- 传感器配置:1 路头部全局相机(RealSense D435i/D455)+ 2 路手腕相机(RealSense D405/D435i),用于双臂遥操作采集 LeRobot / OpenPI 数据集
故障现象与报错
单开任意 1 路相机时可稳定跑满 30fps;当同时启动 3 路相机的 RGB + Depth(640×480 @ 30fps)流时,第 3 路相机频繁打印警告: WARN [realsense2_camera]: Frame didn't arrive within 5000 或 uvc streamer watchdog triggered,导致采集的演示轨迹(Episode)出现图像卡顿与时间戳错位。
根因分析
- Linux 内核
usbfs_memory_mb默认仅 16MB:多路高分辨率未压缩 RGB-D 视频流并发传输时,内核 USB DMA 环形缓冲区瞬间耗尽,导致 UVC 驱动直接丢弃后续 USB 批量传输包。 - 多路相机共用同一个 USB Root Hub 控制器:许多扩展坞将 4 个 Type-A 接口复用到同一个内部 USB 3.2 Gen1 5Gbps 通道上,3 路 RGB + Depth + IMU 加上主动红外散斑投射器峰值电流波动会导致链路降速至 USB 2.0。
解决步骤
- 将内核
usbfs_memory_mb扩容至 1000MB: 临时生效命令:bash永久生效可在echo 1000 | sudo tee /sys/module/usbcore/parameters/usbfs_memory_mb/etc/rc.local或udev规则中写入该参数。 - 按序列号固定绑定并拆分 USB 主控制器: 使用
rs-enumerate-devices -s获取每台相机的serial_no,通过lsusb -t检查拓扑,将头部相机与左右手腕相机分别插在对应不同Bus(独立 xHCI 控制器)的原生接口上。 - 关闭非必要的散斑交叉干扰或启用多机硬件同步线:双腕近距离操作时,两台 D435i 的红外结构光会互相干扰,建议手腕近距相机改用基于双目 RGB 被动纹理的 D405,或通过同步排线设置 1 主 2 从(
inter_cam_sync_mode=1/2)错峰曝光。
来源
本页事实对应的公开页面,以原文为准。
- GitHub IntelRealSense/realsense-ros访问 2026-10-21