ROS调用笔记本摄像头和外界摄像头问题汇总(本人亲身经历)
运行打开摄像头命令必须在主虚拟机运行
一.video0找不到
本人想要调用笔记本摄像头完成一些基本的标定时候,遇到问题:
或者执行命令:
ls /dev/video*
- 1
提示:
ros小白可谓是摸不着头脑。具体原因主要有4个:
1.笔记本上面的虚拟机不支持笔记本的摄像机,建议升级成VMware® Workstation 14 Pro版本。
(1)百度云下载连接:链接:https://pan.baidu.com/s/1JTCzd9QaLVeft6OiyfCd5A 提取码:ccda
安装过程在我的博客,ROS-ubuntu-新手安装ros - 帅某Plus的博客 - CSDN博客 https://blog.csdn.net/weixin_43262513/article/details/86562243
(2)打开虚拟机的操作面板,如图所示:
在虚拟机---->可移动设备------>
如果检测到笔记本摄像头,就会出现摄像头的名称,本人是 sunplus innovation usb composite device.
如果没有出现,说明笔记本的摄像头linux不支持,就别费劲了。用usb摄像头吧。
2.笔记本摄像头没有架构到linux上面。
出事的状态是这样。
点击你的摄像头(本人是 sunplus innovation usb composite device),点击 连接:
成这样:
说明摄像头已经架构到linux上面了。这时有的电脑会出现xxxxx设备已经弹出的提示,意思就是摄像头已经架构到linux上面了。Windows已经检测不到,不信你打开自己笔记本摄像头试一下:
3.安装的cam版本错误
(1)检测电脑是安装cam_usb还是应该安装uvc_cam
步骤一:
lsusb
- 1
查看摄像头ID信息,本人是ID: 1bcf:2b8a
步骤二:
打开网址:http://www.ideasonboard.org/uvc/
查看里面是否有与自己摄像头匹配的ID号。
如果有,就说明你的笔记本摄像头比较好,有他的厂商提供的linux驱动,是-----------uvc_cam
,没有的是usb_cam(本人的摄像头就是usb_cam)
步骤三:安装usb_cam的第三方驱动--------下面的建议是最好的方法(下面文件夹是与自己电脑配套的,相关内容见我的前面博客),uvc_cam如何安装请自行百度**(有的git会出现错误,苦逼,我又遇到了)**
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
- 1
- 2
- 3
- 4
如果没错误,就是这样:
安装成功,可看到节点信息。
注:有的git提示没有安装,按照提示安装,报错:E:could not get lock /var/lib/dpkg/lock -open
原因:
出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁不可用,而导致资源被锁的原因,可能是上次安装时没有正常完成,而导致出现此状况。
解决方法:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
- 1
- 2
再重新安装。
4.有的笔记本自身提示错误和笔记本给的虚拟机内存太小。
(1)笔记本提示错误
运行命令:ls /dev/video*
------有一个 * 号
比如我的本机摄像头显示的是video0,有的本机摄像头对应的是video1.
这时需要修改launch文件,把videox改成你电脑显示的videoX.
(2)虚拟机内存太小。
建议配置为(2G运行内存,1或者4个处理器):
二:我还遇到如下问题(这怎么什么问题都让我遇到了啊,无语)
1.无缘无故进程杀死问题,摄像头提示灯量一下就熄灭
[usb_cam-1] process has died,
[usb_cam-1] process has died [pid 5685, exit code 1, cmd /home/shuaimou/catkin_ws/devel/lib/usb_cam/usb_cam_node __name:=usb_cam __log:=/home/shuaimou/.ros/log/2c9c30e2-95bf-11e6-8a44-000c294ebb02/usb_cam-1.log].
log file: /home/shuaimou/.ros/log/2c9c30e2-95bf-11e6-8a44-000c294ebb02/usb_cam-1*.log
- 1
- 2
- 3
原因:
(1)摄像头没有架构到Linux中;
(2)(usb_cam)launch文件配置错误,launch文件具体如下:
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video0" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
(3)catkin_make之后,没有source(只要make就必须source,查看有没有source很简单,你就快捷按键 tab看是否出来自动补全你新的功能包,没有就没与source)
catkin_ws文件夹下面,命令:
catkin_make
source ~/.bashrc
- 1
- 2
(4)初次架构摄像头,花费时间比较长,建议重启linux,重新架构。第一次打开最好运行roscore
2.进程超时
原因,你给的配置太低了。我的是升高了配置就没问题了。可能还有其他快速有效解决方案,请大家自行百度,不在赘述。
三,打开摄像头,看到你的狗脑袋。
命令:
roscore
roslaunch usb_cam usb_cam-test.launch
- 1
- 2