1、确保狗控制正常,只是单纯无画面
2、确保sw2摇杆回到居中位置
3、105后台输入v4l2-ctl --list-formats-ext --device /dev/video0
*检查是否跟图中配置一样,如果有出入,低于30帧 判定相机损坏
*

4、105后台输入lsusb -t
*检查是否跟图中配置一样,如果有出入,低于30帧 判定相机损坏
*
5、105后台输入ll /dev/video*
确保读出来的设备是 video0和video1 如果不是,说明线接触不良
6、105后台输入 netstat -anp |grep 8554
确保是有服务在监听,并且拉流设备数量不能超过三个,因为服务本身只支持三路推流
机器狗相机不出图 / 无30fps 故障排查树 (MJPEG)
阶段一:物理与链路层诊断 (底层)
- 执行
lsusb找不到设备- 结论:物理断连、线束完全损坏或主板端口未供电。
- 动作:排查线束、接口和供电板。
- 执行
lsusb -t显示 Speed=480M 或更低- 结论:USB高速线断裂发生降级。
- 动作:重新插拔清理接口,若无效则需更换线束。
- 执行
dmesg报 No space left 或 uvc timeout- 结论:USB带宽不足、供电掉压或固件崩溃。
- 动作:检查同 Hub 下设备数量,或重启相机电源。
- 执行
阶段二:系统与资源层排查 (系统层)
- 执行
ls -l /dev/video*检查节点- 结论:确认是否找错了 video 节点(重启后节点序号可能漂移)。
- 动作:通过 udev 规则绑定固定名称。
- 执行
lsof /dev/video0检查占用- 结论:节点被其他后台程序(如ROS节点、图传服务、僵尸进程)暗中占用。
- 动作:kill 掉占用进程后重试。
- 执行
groups检查用户组- 结论:当前用户无权限读取相机数据。
- 动作:将当前用户加入 video 组 (
sudo usermod -aG video $USER)。
- 执行
阶段三:应用与软件层剥离 (应用层)
- 执行
v4l2-ctl --stream-mmap抓帧无输出- 结论:UVC驱动层拿不到数据,底层崩溃。
- 执行
ffmpeg抓取单帧图像,结果为全黑- 结论:相机 ISP 损坏或内部传感器排线脱落。
- 底层抓帧命令出图正常,但业务代码不出图
- 结论:纯业务代码 BUG。
- 动作:检查 OpenCV、ROS 驱动等上层代码的解码和分辨率配置。
- 执行
阶段四:动态与边界条件复现 (机器狗特有)
- 开启其他传感器(如雷达、多相机)时该相机掉线
- 结论:内部 USB Hub 总带宽超载。
- 电机发力原地踏步或运动时,相机瞬间断流
- 结论:线束屏蔽层受损导致 EMI 电磁干扰,或峰值电流导致主板瞬态掉压。
- 开启其他传感器(如雷达、多相机)时该相机掉线