双目视觉(stereo vision),由于估计深度相对容易且稠密,在姿态估计和建图时容易初始化和估计尺度,所以在三维重建,SLAM等的应用中有这广泛的应用。

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

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

假设我们已经安装好了ubuntu16.04,那么主要的步骤可以分成:

1 安装设置ROS

2 安装NVIDIA显卡驱动

3 安装CUDA

4 安装ZED SDK

5 使用 ZED ROS Interface

1、 安装设置ROS

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

ROS安装的相关参考,可以看(ROS for Ubuntu ),这里就不多说了。按照步骤安装,只要网络流畅,一般没有太大问题。

2、 安装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。也比较适合一些研究无人机,无人车以及机器人的的研究团队作为视觉的输入,完成一些定位,识别等更高层的任务。

ubuntu 中安装 ZED SDK 及结合ROS 的使用的更多相关文章

  1. ROS_Kinetic_16 ubuntu中安装使用Matlab和ROS

    ROS_Kinetic_16 ubuntu(16.04)中安装使用Matlab(2015b)和ROS(kinetic) 参考网址:http://cn.mathworks.com/hardware-su ...

  2. 在ubuntu中安装maven

    安装环境 操作系统:ubuntu 14.04.1 server amd64 安装jdk 在安装maven之前,必须确保已经安装过jdk. 安装jdk的方法请参考文章<在ubuntu中安装jdk& ...

  3. 在Ubuntu中安装Redis

    原文地址:http://blog.fens.me/linux-redis-install/ 在Ubuntu中安装Redis R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库.涉及的 ...

  4. ubuntu中安装Docker

    系统要求: 必须时64位的系统,内核最低要求是3.10 查看系统内核: $ uname -r 3.11.0-15-generic 获取最新版本打Docker: $ wget -qO- https:// ...

  5. 如何在ubuntu中安装php

    如何在ubuntu中安装php 情衅 | 浏览 692 次 发布于2016-05-07 12:36   最佳答案   关于Ubuntu下的LAMP配置步骤: 首先要安装LAMP 就是Apache,PH ...

  6. 在 ubuntu 中安装 python3.5、 tornado、 pymysql

    一.在 ubuntu 中安装 python3.5 1.首先,在系统中是自带python2.7的.不要卸载,因为一些系统的东西是需要这个的.python2.7和python3.5是可以共存的. 命令如下 ...

  7. 解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误

    解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误 解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误. 下图为具体情况: 出现问题: termial下在执行sudo ap ...

  8. 如何在ubuntu中安装中文输入法?

    如何在ubuntu中安装中文输入法  在桌面右上角设置图标中找到“System Setting”,双击打开. 在打开的窗口里找到“Language Support”,双击打开.  可能打开会说没有安装 ...

  9. 如何在Ubuntu中安装中文输入法

    在使用ubuntu系统时,有的时候总觉得英文输入法不方便操作,总希望能有中文输入法可以辅助操作,那怎样才能在ubuntu中安装中文输入法呢?下面有一种简单的方法可以安装中文输入法. 如何在ubuntu ...

随机推荐

  1. 理解JVM之垃圾收集器详解

    前言 垃圾收集器作为内存回收的具体表现,Java虚拟机规范并未对垃圾收集器的实现做规定,因而不同版本的虚拟机有很大区别,因而我们在这里主要讨论基于Sun HotSpot虚拟机1.6版本Update22 ...

  2. Singleton(单例)模式和Double-Checked Locking(双重检查锁定)模式

    问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能:在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进 ...

  3. 【代码笔记】iOS-产生随机字符串

    一,代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  4. 各类无次数限制的免费API接口整理

    各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免 ...

  5. 编译64位cu文件的设置

     作者:朱金灿 来源:http://blog.csdn.net/clever101 CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运 ...

  6. SQLServer 学习笔记之超详细基础SQL语句 Part 5

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...

  7. flutter row 文字显示不全

    解决:在row层中的text层加一个expend flutter Row里面元素居中显示 new Expanded( flex: , child: new Row( children: <Wid ...

  8. Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠

    此文的代码在Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看.Co ...

  9. java基础(十一) 枚举类型

    枚举类型Enum的简介 1.什么是枚举类型 枚举类型: 就是由一组具有名的值的有限集合组成新的类型.(即新的类). 好像还是不懂,别急,咱们先来看一下 为什么要引入枚举类型 在没有引入枚举类型前,当我 ...

  10. SpringBoot中redis的使用介绍

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...