ROS下如何调用USB摄像头在rviz显示(核心:权限问题)?

概要:      

如果你还在纠结在ROS调取摄像头时出现设备无法打开的问题或者有 webcam /dev/video0 Permission denied相关提示,提醒一句,有可能是权限不足,直接更改摄像头权限:

sudo chmod 777 /dev/video0
执行完后查看设备权限
sunyuzhe@tegra-ubuntu:~$ sudo chmod 777 /dev/video0
sunyuzhe@tegra-ubuntu:~$ ls -la /dev/video0
crwxrwxrwx 1 root video 81, 0 Jan 19 22:38 /dev/video0

现在你可以再去在ros下试着调一下摄像头了,ok的话,下面的就不用看了,浪费时间。

如果你不明白啥意思,如果你还没有尝试过相关从ROS调取USB摄像头(或者笔记本的摄像头)的代码,下面我的经历可以供你参考!

一、基本信息

个人电脑Ubuntu14.04,作为从机,主机Ubuntu16.04,主控为Jetson TK1,ssh连接正常

二、解决思路

1. 首先我查找程序调用摄像头,这个一搜一大把,然后就找了一个(参考链接),首先在自己的电脑上按照上面做没什么问题,安完驱动直接可以调出摄像头,然后我就照着原来的步骤登上主机,所有工程建完了,运行程序结果老是出现

can not opencv video device
开始以为是摄像头问题,于是直接在主机上打开 cheese (直接 在命令行输入),摄像头正常打开,没有什么问题

ROS下如何调用USB摄像头在rviz显示(核心:权限问题)?_第1张图片如果不能打开,那么执行下面的语句,这都不是问题。

sudo apt-get update
sudo apt-get install cheese
2. 然后检查驱动文件 ,/dev/video0,没问题,然后搜索
can not opencv video device
发现在Jetson TX1的讨论区有人因为opencv版本问题而打不开( 参考链接),需要opencv3.1,我看了一下TX1上的,为2.4.9.1,于是我以为是opencv版本太低,打算升级opencv,后来觉得有点费劲,还想再挣扎一把,又找到一篇文章( 参考链接),按照里面步骤如下:

sudo apt-get install ros-kinetic-uvc-camera
source /opt/ros/kinetic/setup.bash
rosrun uvc_camera uvc_camera_node    
又出现 了 Permission denied 的问题,然后搜索“ Permission denied”找到了一篇介绍改变video权限的文章( 参考链接),在答案的最后提到修改权限,就是开篇那几行代码,修改完后如下所示:
sunyuzhe@tegra-ubuntu:~$ ls -la /dev/video0
crwxrwxrwx 1 root video 81, 0 Jan 19 22:38 /dev/video0

3. 最后,再次尝试登陆主机运行

rosrun uvc_camera uvc_camera_node

在从机(也就是自己的笔记本上)打开rviz,添加image,选择topic,就可在rviz上显示了,大功告成!

(注意下次登陆打开摄像头时还需要重新执行一遍修改权限的命令!命令仅对本次有用)

ROS下如何调用USB摄像头在rviz显示(核心:权限问题)?_第2张图片


你可能感兴趣的:(ROS)