qinziwen
泡芙3级
泡芙3级
  • UID6
  • 粉丝2
  • 关注0
  • 发帖数39
  • 社区居民
阅读:1415回复:0

DSO初探

楼主#
更多 发布于:2018-10-14 22:22
全体同学注意啦!!VSLAM出大新闻喽!这两天视觉SLAM界的大新闻就是Direct Sparse Odometry(DSO)开源了!!!小伙伴们有没有亲自上手撩一下呢? 啊啊!撩不动呀? 没关系!今天我们为小伙伴们准备了手把手撩动DOS攻略!【论文下载请戳】同时为了紧跟学术前沿,我们将以此篇文章将作为学习DSO的一个开端,与大家一起感受下Prof. Cremers 门派的大弟子Engel博士的新绝学。文章将分为四部分:DSO的安装;DSO在公共数据集上的运行;DSO在自己采集的数据集上的运行;DSO在实时摄像头下的运行。

DSO的安装

DSO依赖项很少,并且这些依赖项也是大家很熟悉的库:Eigen3,pangolin,Opencv等,作者的github页面上对安装DSO做了很详细说明,DSO下载以及安装链接。因此,DSO的安装极为容易: 1.下载DSO源代码到相应文件路径,比如我的文件路径为/home/hyj/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_SLAM中也选择pangolin作为显 示工具,而使用也非常方便,因此建议大家学习。 安装教程请移步pangolin的github主页 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/hyj/DSO/dso mkdir build cd build cmake .. make -j
至此,不出意外的话,我们就可以很顺利的完成了DOS的安装。

在TUM单目数据集上运行DSO

请下载TUM数据集,地址。然后切换到DSO的bin目录下,使用下列命令执行程序。
cd /home/hyj/DSO/dso/build/bin ./dsodataset \ files=XXXXX/sequenceXX/images.zip \ calib=XXXXX/sequence_XX/camera.txt \ gamma=XXXXX/sequenceXX/pcalib.txt \ vignette=XXXXX/sequenceXX/vignette.png \ preset=0 \ mode=0
其中files为数据集图片压缩包,calib为相机内参数文件,gamma和vignette为相机的一些特性参数,光度标定文件。mode为DSO模式切换,如0为包含光度表达文件,1为只包含内参数,2为没有畸变参数. preset为设定DSO运行时的参数,如选取的像素点个数等等。preset=3是preset=0的5倍速运行DSO。 数据集运行结果如下:

在自己单目数据集上运行DSO

可能你平常实验中用自己的摄像头采集了一些数据,你手头只有图片,以及摄像头内参数,照样可以测试下DSO会表现如何。 1.将自己内参数写入自己的camera.txt下,比如使用opencv或者matlab标定的针孔相机模型。我的样例如下:
446.867338 446.958766 298.082779 234.334299 -0.324849 0.1205156    -0.000186 -0.000821 640 480 crop 640 480
其中前八个数据就是我们熟悉的相机内参:fx fy cx cy d0 d1 d2 d3. 2.准备自己数据集的图片,注意图片名为6位,不足6位的补零,如下图所示。c++可以通过setw(6)等指令来实现。 3.运行
./dso_dataset files=/home/hyj/bagfiles/img/ calib=/home/hyj/DSO/camera.txt mode=1
在一个手持相机步行前进,相机朝向地毯的数据集上运行结果示意图如下:

用自己摄像头实时运行DSO

Engel同时发布了dsoros,用ROS来实时获取图片,程序代码很简短,实际上它是作者提供的一个如何把DSO当做一个黑盒子来使用的样例。根据dsoros的代码,你完全可以抛开ros,用opencv获取图片,然后去调用dso。dsoros的下载地址,下载时要注意现在已经有了rosbuild和catkin两个版本。Engel他们可能使用ROS比较早,所以也比较熟悉rosbuild那一套,lsdslam, dvoslam等等他们的很多代码都是rosbuild去编译而不是catkin。好在, ros indigo两个版本都支持,如果你只有catkinws工作空间,请使用dsoros的catkin版本。我这里使用rosbuild版本进行安装: 1.假设你已经创建了rosbuildws工作空间(如果你不知道如何让rosbuild和catkin的工作空间共存,请自行搜索解决方法),将dsoros下载到rosbuildws/package/文件夹下. 2.在我的使用过程中需要对下载下来的dso_ros进行两步修改:
1. 修改cmake.list中bin文件路径 set(EXECUTABLEOUTPUTPATH ${PROJECTSOURCEDIR}/bin) 如果不修改,编译生成的bin将会存在build目录下,rosrun会找不到. 2. 修改manifest.xml 添加语句 depend package=”roscpp”
3.编译
rosmake dso_ros
4.运行
1. 启动roscore 2. 使用ROS工具包usbcam获取图像,关于usbcam的安装请自行搜索 roslaunch usbcam webcam.launch 3. 运行 dso rosrun dsoros dsolive image:=/usbcam/image_raw calib=/home/hyj/DSO/camera.txt mode=1
运行结果如下所示: 到这里,DSO的安装演示就已经讲完了,个人感觉效果很棒,是直接法的又一力作,非常值得入坑,在后续的文章中将对DSO进行一一剖析,敬请期待。 【版权声明】泡泡机器人SLAM的所有文章全部由泡泡机器人的成员花费大量心血制作而成的原创内容,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能否进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力! 【注】商业转载请联系刘富强(liufuqiang_robot@hotmail.com)进行授权。普通个人转载,请保留版权声明,并且在文章下方放上“泡泡机器人SLAM”微信公众账号的二维码即可。 【编辑】王超群,刘富强,吴博,李平, 范帝楷,朱小英 刘富强: 上面有一些链接好像没有正常超链,在此总结一下发出来: 1.论文下载地址[请戳](https://arxiv.org/abs/1607.02565) 2.[DSO下载以及安装链接](https://github.com/JakobEngel/dso) 3.pangolin的[github主页](https://github.com/stevenlovegrove/Pangolin) 4.TUM数据集,[地址](https://vision.in.tum.de/mono-dataset ) 5.dso_ros的[下载地址](https://github.com/JakobEngel/dso_ros)

最新喜欢:

happybaolianghappyb...
游客