DSO

2024-05-25 12:18
文章标签 dso

本文主要是介绍DSO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文下载地址请戳。为了紧跟学术前沿,我们此篇文章将作为学习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:

[html] view plain copy print ?
  1.   
[html] view plain copy print ?
  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

[html] view plain copy print ?
  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
再弹出的窗口中输入:

[html] view plain copy print ?
  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 ,第二行为输 入图像的宽和高,根据你标定的相机参数修改。

新开一个终端   

[html] view plain copy print ?
  1. Roscore  

再开一个终端

[html] view plain copy print ?
  1. source ~/catkin_ws/devel/setup.bash  
  2. roslaunch usb_cam usb_cam-test.launch  

再开一个终端

[html] view plain copy print ?
  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做详细剖析。



这篇关于DSO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001479

相关文章

DSO slam ros 模式

dso 直接法纯视觉定位,作者采用读取包的方式,数据使用存在不方便. 源码:https://github.com/JakobEngel/dso.git ros需要链接库版:https://github.com/JakobEngel/dso_ros.git 直接运行版:GitHub - jankinbyy/dso_ros_run 在config下修改相机内参. 结果:地图点密度较高,尺度存

理解BW DSO/Cube 增量/全量抽数

1.对于数据删除后,怎么抽数使得DSO/Cube实现数据同步? 首先需要说明的是:BW在处理删除没有优势,通过Delta或Full DTP都不能满足要求,目前有两种方法可以实现 第一种:从数据源上下手,增加一个删除标记,在报表展示的时候,filter删除的数据,使得不显示 第二种:伪增量,从Transformation入手,在开始例程中,比较上载的数据和已有数据,设置其指

kernel version 367.48. does not match DSO version 367.57

因为更新了ubuntu 软件运行tensorflow产生了:TensorFlow Session Error: kernel version 367.48. does not match DSO version 367.57.的错误,昨天还好好的。 原因是apt-get upgrade没有更新英伟达的驱动nvidia driver,导致驱动程序版本比DSO低(或者存在兼容性问题?未知)

DSO学习链接整理

本文记录在学习DSO过程中遇到的比较优秀的链接。 前辈们讲解的非常细致,在学习过程中收货颇多,故做整理,方便其他朋友一起学习。 1. 整体介绍 高翔:DSO详解 - 知乎 DSO整体上有个大概的了解,比较全面,且没有过多深入细节。 贺一家:DSO初探 主要从DSO代码的运行上进行了相关的介绍 2. 零空间与尺度漂移 古路:SLAM中的零空间问题 简单介绍了客观性与零空间(最后博主说解决办

两步成功实现在stereo-dso上运行kitti数据集

1. 双目DSO运行kitti数据集效果图 首先上图,图1是双目DSO在kitti的运行动图,下文将对如何实现双目DSO在kitti上运行进行详细介绍。有关双目DSO如何在ubuntu系统下安装请参看这里。 2. 运行KITTI 第一步,创建一个txt文件,将其命名为kitti.txt,将其保存在双目DSO目录文件夹下。在kitti.txt内写入以下内容: Pinhole 7.18856

仪器保养 | 安捷伦DSO-X 2002A示波器自检测/自校准

安捷伦DSO-X 2002A示波器自检测、自校准 首先上电开机 1. 按下Utility-服务-Diagnostics-硬件本机自检-前面板自检 2. 按下Utility-服务-Calibration--按下后盖CAL-开始用户校准-根据提示完成操作 感兴趣的话就跟安迪一起来学习吧~ 仪器保养 | 安捷伦DSO-X 2002A示波器自检测/自校准

双目DSO

建图效果,确实比稀疏的orbslam2舒服很多   官方:https://vision.in.tum.de/research/vslam/stereo-dso    After the ICCV 2017 deadline, we extended our method to a SLAM system with additional components for map mainten

实验笔记之——bug:in /usr/local/lib/libfmt.a(format.cc.o) is referenced by DSO

最近在编译D-MAP的时候遇到下面的问题 在github issue好像也有类似的提问 compiling error with fmt · Issue #4 · hku-mars/D-Map · GitHub 这应该是fmt配置没有连接上。为此寻找所有包含的fmt文件,在头文件处加入 #define FMT_HEADER_ONLY#include "fmt/format.h"

廉价DSO Hantek 6022BL说明书上没有的内容

刚刚入手一台国产的廉价的 DSO:Hantek 6022BL,怎奈官方文档“少的可以”,不得不拿起搜索引擎查阅其他用户的使用经验。整理/翻译在这里,备忘。 1.主面板前面的H/P按钮到底是干什么用的 参考页面: http://www.eevblog.com/forum/testgear/hantek-6022be-20mhz-usb-dso/ 官方说明书中只用2处提到了这

小强机器人运行DSO(小强PRO+Ubuntu16.04+Kinect2)

1.用DSO原因 之前做过RGBDslam但是发现生成的稠密地图效果很好,但是发现是没有轨迹的,导师在看了RGBDSLAM之后很想要得到轨迹的图片,但是我找了很多的SLAM框架比如ORBSLAM都发现没有轨迹,只保留了关键帧。前几个框架得到对轨迹图都是离线的,不是很符合期望。然后今天在网上看到里DSO,发现这个原本是单目对系统,并且之前有过了解,但没有跑过,并且也不知道原来这个框架是会显示轨迹,