ubuntu14.04下利用外接摄像头跑通DSO-SLAM

21 篇文章 0 订阅
20 篇文章 1 订阅

一.前言

前段时间跑通ORB-SLAM2之后,很久都没有跑demo了,由于受到实验室大佬键哥的影响,以及自己这些天看slam的相关方向时,经常看到DSO-SLAM的字眼,感觉好像还不错的样子,所以今天准备上手跑跑demo,(之前也拜读了高翔博士关于DSO-SLAM的文章以及大致看了DSO-SLAM的论文,论文地址:下载)
膜拜一下计算机视觉slam大佬
这里写图片描述
DSO(Direct Sparse Odometry),是慕尼黑工业大学(Technical University of Munich, TUM)计算机视觉实验室的雅各布.恩格尔(Jakob Engel)博士,于2016年发布的一个视觉里程计方法,在SLAM领域,DSO属于稀疏直接法,据论文称能达到传统特征点法的五倍速度(需要降低图像分辨率),并保持同等或更高精度.
这里写图片描述

二.DSO的安装

DSO依赖项很少,只有Eigen3,pangolin,opencv等少数几个大家都已经很熟悉的库,作者的github页面上对安装DSO做了很详细说明,DSO下载以及安装链接因此,安装DSO极为容易:
1.下载DSO源代码到相应文件路径,比如我的/home/zc/dso

2.安装suitesparse and eigen3 (必需)

sudo apt-get install libsuitesparse-dev libeigen3-dev

3.安装opencv. DSO对opencv依赖很少,仅仅读或者写图像等一些简单操作。

sudo apt-get install libopencv-dev

4.安装pangolin. 强烈推荐安装,考虑到ORB_SLAM2中也选择pangolin作为显示工具.(之前在跑ORB-SLAM2时已经安装了)
安装教程网上一大堆
5.安装ziplib. 建议安装,DSO用这个库来解压读取数据集压缩包中的图片,这样就不要每次都把下再的图片数据集进行解压了。

sudo apt-get install zlib1g-dev 
cd thirdparty #找到dso所在文件路径,切换到thirdparty文件夹下 
tar -zxvf libzip-1.1.1.tar.gz 
cd libzip-1.1.1/ 
./configure 
make 
sudo make install 
sudo cp lib/zipconf.h /usr/local/include/zipconf.h

6.编译DSO.

cd /home/zc/dso 
mkdir build 
cd build 
cmake .. 
make -j

至此,不出意外的话,DSO将安装完成。

三.在TUM单目数据集上运行DSO

请下载TUM数据集:地址。把下载的包解压到bin目录下,然后切换到DSO的bin目录下,使用下列命令执行程序。

cd /home/zc/dso/build/bin 
./dso_dataset files=./sequence_02/images.zip calib=./sequence_02/camera.txt gamma=./sequence_02/pcalib.txt vignette=./sequence_02/vignette.png preset=0 mode=0

其中files为数据集图片压缩包,calib为相机内参数文件,gamma和vignette为相机的一些特性参数,光度标定文件。mode为DSO模式切换,如0为包含光度表达文件,1为只包含内参数,2为没有畸变参数. preset为设定DSO运行时的参数,如选取的像素点个数等等。preset=3是preset=0的5倍速运行DSO。
数据集运行结果如下:
这里写图片描述
这里写图片描述

四.用外接摄像头实时运行DSO

Engel同时发布了dso_ros,用ROS来实时获取图片,程序代码很简短,实际上它是作者提供的一个如何把DSO当做一个黑盒子来使用的样例。
1.假设你已经创建了工作空间,将dso_ros下载到catkin_ws/package/文件夹下.

2.在我的使用过程中需要对下载下来的dso_ros进行一步修改:
**1.修改cmake.list中bin文件路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
如果不修改,编译生成的bin将会存在build目录下,rosrun会找不到

3.编译

export DSO_PATH=/home/zc/dso 
rosmake dso_ros

4.运行

1.启动roscore 
2.使用ROS工具包usb_cam获取图像,关于usb_cam的安装请自行搜索 
 roslaunch usb_cam webcam.launch 
3.运行dso 
 rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/zc/catkin_ws/src/dso_ros/camera.txt mode=1

运行结果:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

五.总结

总的来说感觉效果非常棒,无论是平移误差,旋转误差,精度,鲁棒性,都要在一定条件下比ORB-SLAM,LSD-SLAM要好,不过代码的清晰度不强,文章的可读性还需要提高.
碰见了问题,记录如下:
在执行摄像头实时运行时老是报错,总是出现段错误,还是标定文件村错误,后来自己在网上找了个camera.txt,然后又出现opencv错误,比如could not parse argument “image:/usb_cam/image_raw”!!,后来以为时opencv版本的问题,因为看网上别人都是在ubuntu16.04下来跑的,而16.04下自带的opencv3.x的版本,而14.04则是opencv2.x版本,考虑是这个问题,就把之前做人脸识别的opencv-2.4.9卸载了,想再试一遍,结果成功了.不知道为什么,哈哈.
源代码先大致浏览了一遍,以后再慢慢深究.再次立一flag.
这里写图片描述这里写图片描述这里写图片描述这里写图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值