DSO

4 篇文章 0 订阅

论文下载地址请戳。为了紧跟学术前沿,我们此篇文章将作为学习DSO的一个开端,和大家一起来前排感受下Prof. Cremers 门派大弟子Engel博士的新绝学。文章将分为四部分,DSO的安装,DSO在公共数据集上的运行,DSO在自己数据集上的运行,DSO在实时摄像头下的运行。

DSO的安装

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

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

在TUM单目数据集上运行DSO

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

cd /home/lhu/DSO/dso/build/bin
./dso_dataset \
files=XXXXX/sequence_XX/images.zip \
calib=XXXXX/sequence_XX/camera.txt \
gamma=XXXXX/sequence_XX/pcalib.txt \
vignette=XXXXX/sequence_XX/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/lhu/bagfiles/img/ calib=/home/lhu/DSO/camera.txt mode=1

在一个手持相机步行前进,相机朝向地毯的数据集上运行结果示意图如下
这里写图片描述

用自己摄像头实时运行DSO (roubuild版)

Engel同时发布了dso_ros,用ROS来实时获取图片,程序代码很简短,实际上它是作者提供的一个如何把DSO当做一个黑盒子来使用的样例。根据dso_ros的代码,你完全可以抛开ros,用opencv获取图片,然后去调用dso。dso_ros的下载地址,下载时要注意现在已经有了rosbuild和catkin两个版本。Engel他们可能使用ROS比较早,所以熟悉rosbuild那一套,lsdslam, dvoslam等等他们的很多代码都是rosbuild去编译而不是catkin。好在, ros indigo两个版本都支持,如果你只有catkin_ws工作空间,请使用dso_ros的catkin版本。我这里使用rosbuild版本进行安装,也希望大家学会indigo下的rosbuild编译:
1.假设你已经创建了rosbuild_ws工作空间(如果你不知道如何让rosbuild和catkin的工作空间共存,请参考这里),将dso_ros下载到rosbuild_ws/package/文件夹下.

2.在我的使用过程中需要对下载下来的dso_ros进行两步修改:

1.修改cmake.list中bin文件路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
如果不修改,编译生成的bin将会存在build目录下,rosrun会找不到
2.修改manifest.xml
添加语句 depend package=”roscpp”

3.编译

export DSO_PATH=/home/lhu/DSO/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/lhu/DSO/camera.txt mode=1

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




用自己摄像头实时运行DSO (catkin版)

利用作者发布的dso_ros运行DSO(ros安装请自行搜索)下载地址。 作者提供了rosbuildcatkin两个版本的程序包,如果你使用catkin_ws工作空间,请使用dso_roscatkin版本。如果使用rosbuild去编译,请使用rosbuild版本,这里使用catkin版本。

1) 安装编译dso_ros:

  1. mkdir -p ~/catkin_ws/src  
  2. cd ~/catkin_ws/src  
  3. git clone https://github.com/JakobEngel/dso_ros.git  
  4. cd ..
  5. export DSO_PATH=/home/lhu/Documents/dso/
  6. catkin_make  

2) 安装编译usb_cam

  1. cd ~/catkin_ws/src  
  2. git clone https://github.com/bosch-ros-pkg/usb_cam.git   
  3. cd ..  
  4. catkin_make  
  5. source ~/catkin_ws/devel/setup.bash  

3) 运行dso

修改相机参数文件

     gedit ~/catkin_ws/src/dso_ros/camera.txt
再弹出的窗口中输入:

  1. 446.867338 446.958766 298.082779 234.334299 -0.324849 0.1205156     -0.000186 -0.000821  
  2. 640 480  
  3. crop  
  4. 640 480  
第一行是相机的内参,从左到右的 8 个数为 fx fy cx cy k1 k2 r1 r2 ,第二行为输 入图像的宽和高,根据你标定的相机参数修改。

新开一个终端   

  1. Roscore  

再开一个终端

  1. source ~/catkin_ws/devel/setup.bash  
  2. roslaunch usb_cam usb_cam-test.launch  

再开一个终端

  1. source ~/catkin_ws/devel/setup.bash  
  2. rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/hyj/DSO/camera.txt mode=1  


 DSO安装已经介绍完了,整体来说比较简单,DSO采用的直接法,效果很不错。在接下来的文章将对DSO做详细剖析。



  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值