ubuntu 中安装 ZED SDK 及结合ROS 的使用

双目视觉(stereo vision),因为估计深度相对容易且稠密,在姿态估计和建图时容易初始化和估计尺度,因此在三维重建,SLAM等的应用中有这普遍的应用。html

ZED 做为近几年出现的商业化双目传感器,相比较同类的商业化产品,或者DIY双目相机,ZED在集成度,距离(20m),实时性(深度图在最小分辨率下可达60fps以上),分辨率(2K)和效果上具备必定的优点。449刀的价格也还算能够接受。 以往ZED的ubuntu下,因为ubuntu系统版本的支持问题,NVIDIA,cuda相关驱动安装麻烦,同时对ROS的支持度通常,因此使用ZED的人有限。不过随着Stereolabs,Ubuntu,NVIDIA各自新版本设备的发布,以及广大研究者的努力,目前SKD 2.0以上版本已经可以比较方便的在linux下开发使用。linux

 

本文整理归纳了,在ubuntu 16.04系统中 安装ZED的主要流程以及在安装使用过程当中遇到的一些问题和解决方案,但愿对于也想在linux和ROS下使用ZED的开发者有所帮忙。git

假设咱们已经安装好了ubuntu16.04,那么主要的步骤能够分红:github

1 安装设置ROS算法

2 安装NVIDIA显卡驱动ubuntu

3 安装CUDAbash

4 安装ZED SDK网络

5 使用 ZED ROS Interfaceapp

 

一、 安装设置ROSide

ROS是一个挺大的题目,不是一两句可以说清楚的。不过ROS官方网站上的Tutorials(ROS tutorial)写的比较详细,过一遍beginner level的tutorials应该就能对ROS有一个大体的了解。

ROS安装的相关参考,能够看(ROS for Ubuntu ),这里就很少说了。按照步骤安装,只要网络流畅,通常没有太大问题。

 

二、 安装NVIDIA显卡驱动 

在linux下安装显卡驱动是一段很是东痛苦的精力,搞得很差,一重启就黑屏。若是是多显卡的机器,也会遇到没法切换,或者各类版本不兼容的问题。

在安装以前,首先确认你的电脑是否在BIOS上有secure boot,若是有进入BIOS,把secure boot 设置成disable。 (这设置十分重要,否则会出现没法安装CUDA的状况)

总结下来,目前比较方便的方式安装NVIDIA显卡驱动的方式是使用PPA,只要你可以根据你的显卡型号,选择合适版本的驱动,通常不会出现一些神奇的问题。

2.1首先须要肯定你的显卡对应的驱动版本是: 能够利用官方提供的驱动下载查询界面: NVIDIA 驱动查询

    举个例子,若是咱们的显卡是GTX745,经过搜索驱动的信息是 Linux x64 (AMD64/EM64T) Display Driver Version: 375.39 Release Date: 2017.2.14 Operating System: Linux 64-bit

查到后不用点击下载,咱们经过PPA来安装。

2.2 添加PPA

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

而后在 software & updates中的Additional Drivers的标签,找到和以前查到GPU驱动版本一致的条目,点击apply changes

重启以后应该就安装好了。

安装好以后会有一个NVIDIA X server setting,里面会有GPU-0 显示的就是NVIDIA显卡。若是是多显卡,在PRIME profile选项中,能够选择使用哪一个显卡。

 

3. CUDA

CUDA的安装,根据不一样的显卡型号,不一样电脑的BIOS设置,不一样的CUDA版本都会有一些不一样。这里整理了一下 ZED_SDK2.0 所须要的CUDA 8。

为了不一系列可能会出现的问题,在安装CUDA以前,能够进行一下安装前的自检,自检能够参照官方给的文档(CUDA安装前自检

若是没有问题,那就继续。

从官方主页上下载CUDA ,我遇到的状况是,若是是 下载Local版的CUDA,或者直接点击ZED SDK让他本身下载CUDA装,都会在安装ZED SKD时出现找不到CUDA8的提示,在试了不少次以后,偶尔一次使用了CUDA下载页面中的 deb(network)版本,而后就成功了。 暂时将次做为一种解决方案,有待更多人的验证。

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
$ sudo apt-get update
$ sudo apt-get install cuda

若是提示找不到apt-get install cuda时 找不到package

sudo dpkg --purge cuda-repo-ubuntu1604

 

 

4. ZED SDK

若是按照以前的安装步骤,在安装ZED SDK的过程当中,应该不会有提示没有GPU 或者没有CUDA,若是有须要返回2,3进行确认。

chmod +x ZED_SDK_Linux_Ubuntu16_v2.0.0.run
./ZED_SDK_Linux_Ubuntu16_v2.0.0.run

在安装的最后,会遇到提示一些文件找不到,这些都是ZED SDK须要的一些第三方库,通常缺啥补啥,用apt-get就能搞定。

若是提示opencv的一些3.1.so文件缺失,这个问题须要注意。

其实咱们在安装ROS的时候,系统就应该已经安装了opencv。若是是ROS kinetic的话,应该是opencv3.2。 尝试了重新安装opencv3.1,本身编译,可是会遇到关于CUDA的一些Bug,而这个bug在3.2中会修复。因此最终使用了一个比较偷懒的方法,把相关的3.2的so文件和3.1的so文件link起来。

sudo ln -s /opt/ros/kinetic/lib/libopencv_core3.so.3.2 /usr/lib/libopencv_core.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.2 /usr/lib/libopencv_imgcodecs.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_videoio3.so.3.2 /usr/lib/libopencv_videoio.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2 /usr/lib/libopencv_calib3d.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.2 /usr/lib/libopencv_imgproc.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_video3.so.3.2 /usr/lib/libopencv_video.so.3.1

这样基本上就没有问题了。能够经过运行ZED/tool/ Depth view来测试安装是否正确,若是可以正常运行同时显示深度,说明SDK和GPU工做正常。

 

5. ZED SDK

在此次SDK更新以前,ZED可以结合ROS不过尚未很完善,2.0以后的版本和zed-ros-wrapper已经可以知足蛮多的开发使用需求。

能够git clone ZED-ROS-WRAPPER  若是想显示点云的能够结合PCL库,另外的以前都已经装好了。

cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
roslaunch zed_wrapper zed.launch

launch以后就会把各个数据以topic的形式发布出来,同时官方给的说明也还不错,须要调整ZED参数能够修改launch文件。

官方也慢慢推出了针对TK1和多ZED的相关支持。 

 

总的来讲,ZED是一个不错的平台,适合科研机构采集双目,深度,VO的数据,做为Stereo,SFM,SLAM,SceneFlow等的算法实验或做为groundtruth。也比较适合一些研究无人机,无人车以及机器人的的研究团队做为视觉的输入,完成一些定位,识别等更高层的任务。 

相关文章
相关标签/搜索