调试 LenaCV 3D Camera (Linux)
<yyhu_live@outlook.com>
2018年5月26日于Carnegie Mellon University
本文的pdf文件可从这里获取。
1 测试环境
Ubuntu 16.04 LTS, Python 2.7.12, ROS Lunar
本文中“>>> ”表示在Linux终端中输入命令,某些需要sudo权限的命令可能没有写出sudo。
本文使用的双目相机硬件是LenaCV的产品,该产品可以从中国大陆的淘宝网上采购到。
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-17461658044.5.6c782004hVg4HU&id=562303637855
本文由Google Docs在线生成,可能出现某些无法调整的格式问题。
2 基本测试
相机通过USB连接系统后,在Linux中识别该设备
>>> lsusb
显示结果如图 1所示,其中Device 008即为当前调试的设备。
安装GTK UVC video viewer. 在接上相机后,运行UVC video viewer,所得画面如图 2所示。通过画面上几个控制滑块控制相机参数以进行调试和测试。LenaCV相机返回的实时画面是一张图,相机内部应当已经完成了同步,并将两个相机的图像进行了拼接。经过实测发现拼接图像的右侧实际上为左摄像头的画面。
图2 使用GTK UVC video viewer直接调试设备
3 ROS libuvc_camera调试
主要调试过程参考了libuvc_camera的官方wiki
http://wiki.ros.org/libuvc_camera
3.1 安装libuvc_camera
首先需要确保系统正常安装了ROS,并且ROS处于可以使用状态。
创建一个catkin workspace或者使用已经存在的catkin workspace。切换到catkin workspace的src文件夹,将libuvc_camera的git仓库clone到本地。
>>> git clone https://github.com/ros-drivers/libuvc_ros.git
返回到src文件夹上一级,启动catkin_make进行编译,若报缺少某些库,则直接利用apt-get进行安装即可。
3.2 修改udev rule
根据libuvc_camera官方wiki的描述,使用uvc设备需要拥有一定权限,推荐的做法是针对需要使用的硬件设备添加udev rule。具体做法如下,在/etc/udev/rules.d文件夹下新建文件99-uvc.rules(需要root权限)。这个文件将描述相机的所有者,将所有者设置为当前用户即可。该文件的文件名一般都是以数字开头,其目的是控制文件之间的排序。数字越小,排序越靠前。这样做的道理是Linux系统将在加载硬件驱动的过程中有时会有一些次序要求,用文件名的次序可以控制这些rule加载的先后。99-uvc.rules的内容如table 1所示。
表1 99-uvc.rules
# UVC cameras
SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="1e4e", ATTRS{idProduct}=="0568", OWNER="<用户名>"
其中OWNER即为需要设置的用户名,这里将其设置为当前用户,idVendor和idProduct直接复制lsusb返回结果中的数值。保存该文件,此后需要将相机重新插拔一次。此后libuvc_camera若不能正常launch,ROS报权限不够错误,处理方法参考3.3节。