ROS改错:vm虚拟机中调用摄像头失败

1.问题出现

在虚拟机中进行ROS视觉方面的操作时,调用摄像头出现报错:

AttributeError: 'NoneType' object has no attribute 'shape'
[ERROR] [1665194860.752950024]: select timeout
[usb_cam-1] process has died [pid 49165, exit code 1, cmd /opt/ros/melodic/lib/usb_cam/usb_cam_node __name:=usb_cam __log:=/home/rosmelodic/.ros/log/469c5216-46a2-11ed-89a7-000c2969e545/usb_cam-1.log].
log file: /home/rosmelodic/.ros/log/469c5216-46a2-11ed-89a7-000c2969e545/usb_cam-1*.log

但从这个报错查出来的都是opencv的问题,读取摄像头信息失败了。

但是在opencv读取视频和图片全部成功,可能是摄像头的问题,或者调用摄像头的代码出现问题。

由于调用摄像头的代码往往潜藏在一个项目中,而且层层嵌套,而且一般情况下,官方打包好的代码一般都是自己的问题,而不是官方代码的问题。

2.排查

(1)虚拟机在默认设置下,电脑的摄像头是没连接的,通过设置把摄像头连接起来。

ROS改错:vm虚拟机中调用摄像头失败_第1张图片

在连接后,再运行调用摄像头的代码,还是失败,进行第二个排查。

(2)进入当前的虚拟机设置,看看是不是接口出现了问题。有些新的笔记本是usb2.0以上的接口,我的是3.1。

ROS改错:vm虚拟机中调用摄像头失败_第2张图片

 (3)还失败,查看是不是驱动的问题。

sudo apt-get install ros-melodic-usb-cam

这是通用驱动,其中melodic为ros版本,对应修改。

roslaunch usb_cam usb_cam-test.launch

这是刚刚驱动自带的一个测试demo,如果正常运行,可以排除硬件上的问题。

(4)再回到调用摄像头的代码,运行一下,看看成功与否,如果之前的测试damo跑起来了,但是调用摄像头代码报错,考虑是代码需要修改。

经过后面的学习,还有一种可能,就是调用摄像头时的参数和摄像头硬件的参数不对应。


  
    
    
    
    
    
    
  
  
    
    
  

其中节点usb_cam节点的参数mage_width和image_height和硬件参数不对应时也会报错,不能盲目的复制人家的代码要结合自己的硬件。

你可能感兴趣的:(ROS报错,ros)