您的位置:首页 > 其它

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

2018-01-20 14:49 1616 查看

概要:      

如果你还在纠结在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 (直接 在命令行输入),摄像头正常打开,没有什么问题


如果不能打开,那么执行下面的语句,这都不是问题。

sudo apt-get update
sudo apt-get install cheese
2. 然后检查驱动文件 ,/dev/video0,没问题,然后搜索
can not opencv video device
发现在Jetson TX1的讨论区有人因为opencv版本问
a7a8
题而打不开(参考链接),需要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    [code]
又出现了 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[code]


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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐