本来用Kinect开发的好好的,突然领导让用乐视的深度相机,其实就是套了个乐视外壳的奥比中光,前几年乐视出事之后这款设备就特别便宜,,,,,,,这个安装使用过程有点坑,尤其是安装之后找不到rgb信息,再加上网上大都是老版本的安装过程(有些还特别麻烦),我在nano上进行了成功的安装与使用,把步骤和一些坑给填一下。
我用设备的是:
jetson-nano、一个不知道什么名字的工控机
设备的环境:
nano:Ubuntu18.04+ros-melodic
工控机:Ubuntu16.04+ros-kinetic
其实和版本关系不大,有些地方安装的时候注意版本号就行。
(1)安装依赖
sudo apt-get install build-essential freeglut3 freeglut3-dev
(2)检查udev版本,需要libudev.so.1,没有的话需要添加
这一步基本上设备都有,创客智造、张瑞雷、还有其他博客上都是这一段话:
#check udev version, Orbbec Driver need libudev.so.1, if can't find it, can make symbolic link from libudev.so.x.x,
#which usually locate in /lib/x86_64-linux-gnu or /lib/i386-linux-gnu
$ ldconfig -p | grep libudev.so.1
$ cd /lib/x86_64-linux-gnu
$ sudo ln -s libudev.so.x.x.x libudev.so.1
(3)下载并安装OpenNI驱动
官网或者GitHub上下载有时候可能网络不方便,我下载好之后传到网盘上了,方便大家用:
链接:https://pan.baidu.com/s/1PCHBm65Y4_pFP0uKHhZ9tw
提取码:7389
如果链接失效了评论里联系我就行
这里需要注意一下,确定自己的设备是什么架构、是什么位数,选择对应的去使用。(有博客上说,jetson系列CPU架构低于cortex A7,需要用without filter那个包,不过我之前也没在意这个事,没见什么影响。官网的readme文档中的描述是这样的:For user with ARM based development board:
With CPU Structure older than Cortex A17, use OpenNI-Linux-Arm-2.3 Nofilter.tar for better performance)
在你对应架构的OpenNI压缩包路径下打开终端,输入:
unzip OpenNI-Linux-x64-2.3.zip
cd OpenNI-Linux-x64-2.2
sudo chmod a+x install.sh
sudo ./install.sh
source OpenNIDevEnvironment
到这里,驱动安装就ok了,如果你想试一下官方的例子来检验一下是否安装成功,去包里面编译运行就行,这个过程我就不写了,readme或者其他博客都有,按部就班操作就行。
(4)ros包安装
新建一个ros工作空间,在src文件夹下打开终端,这里要分两种情况:
如果你是ros-kinetic或者之前的版本,很简单:
sudo apt-get install ros-kinetic-astra-camera ros-kinetic-astra-launch
注意ros版本号就行。不过我建议最好是在src上git clone这两个launch包,因为后面我们要改launch文件内容。源码安装的我试过,launch文件中少了很多东西,我没法修改。
如果你是ros-melodic版本,(截至2020/4/20,之后可能会直接源码安装就行),只能去GitHub下载:
git clone https://github.com/orbbec/ros_astra_launch.git
git clone https://github.com/orbbec/ros_astra_camera.git
下载完成之后,
cd ..
catkin_make
到这一步如果你完全按照我的步骤安装,编译的时候会报一些错误,因为我自己刚开始爬坑的时候,按照其他大佬们的,先安装libuvc之类的,会有一些莫名其妙的错误,还要去写什么rules,搞得我心态爆炸。最终经过我多次实践之后,就索性不按照那些大佬们的步骤,把ros包安装好编译完成,看终端错误提示,缺什么我install什么,最终就ok了。
比如错误如下图:
提示很清楚,缺少rgbd_launch,那么就在终端中输入:
sudo apt-get install ros-kinetic-rgbd-launch
记着对应自己的ros版本号,把kinetic换成你自己的ros版本号就行。
还会提示,缺少libuvc,uvc等,同理补全安装就行。
(5)启动奥比中光的launch文件,看相机效果。
这里就不多赘述了,启动文件就是在launch文件夹里面,选择astra.launch或者astrapro.launch启动就行。
有可能部分设备(我的nano就是)启动报错:
ERROR] [1587364749.976103622]: Permission denied opening /dev/bus/usb/001/009
[camera/camera_rgb-2] process has died [pid 7183, exit code 255, cmd /home/sr/leshi_ws/devel/lib/astra_camera/camera_node /camera/image_raw:=/camera/rgb/image_raw __name:=camera_rgb __log:=/home/sr/.ros/log/a0c9b86a-82d1-11ea-be99-96edff6a96fd/camera-camera_rgb-2.log].
log file: /home/sr/.ros/log/a0c9b86a-82d1-11ea-be99-96edff6a96fd/camera-camera_rgb-2*.log
这个原因很常见,说白了就是端口号没权限,打不开对应的端口,按照终端提示错误的端口号那里,给权限就行,
解决方法,在终端中输入:
sudo chmod 777 /dev/bus/usb/001/009
由于我暂时还在做开发,不想直接锁死端口号,等开发结束整理的时候把设备的端口号写死就行,这里也欢迎大佬们在评论区里给出自己的方法。
启动launch文件之后,在另一个终端中输入:
rqt_image_view
即可看到显示出相机的图像,如下图所示:
camera/depth/image就是相机发布的深度信息topic,同理也可以在rviz中订阅这个topic进行查看。
基本上所有用这个设备的伙伴们都会有这个问题,我刚开始按照张瑞雷大佬的博客进行安装的时候,他的方法我反复在多台设备上试了好几次也没成功,而且还要再定位什么文件之类的操作实在是有点麻烦。
偶然间,我在终端中输入
lsusb
查看设备端口号的时候猜想,会不会是端口号的映射地址在launch文件中错了导致打不开rgb信息。因为我在第n次安装的时候看launch文件过程中不小心键盘碰到几下,后来保存的时候也点了saving。这才发现尼玛是官方给的launch文件都不对,,,,,,,,,,,,,,,,,于是我又重新下载ros包,发现并不是我手贱,是真的有问题。如下图:
看到了吧,0502是rgb的端口号,所以你打开astpro.launch,发现在大概68行43列的最后,它写的竟然是0501,,,,,所以我们修改成0502,保存退出,重新编译工作空间,再运行就可以了。如下:
rgb图像出来了,rgb的topic是/camera/rgb/image_raw
至此,坑填好了,关于这个rgb无法显示的解决方法,还有一个大佬的博客可以参考,方法也很简单:博客链接
至此,Ubuntu16和18中使用奥比中光进行开发的过程我总结完了,16和18其实没有太大区别,除了ros包的安装需要注意ros版本号,其他没啥了。
接下啦就是用奥比中光进行vslam等视觉的开发。