DSO

相关资料

论文:https://arxiv.org/abs/1607.02565
Github:https://github.com/JakobEngel/dso
详解:https://zhuanlan.zhihu.com/p/29177540
安装和使用:https://blog.csdn.net/heyijia0327/article/details/53173146
小强ROS机器人教程(18)_使用DSO_SLAM进行三维建模:https://doc.bwbot.org/books-online/xq-manual/topic/131.html

安装

1.下载仓库到本地

git clone https://github.com/JakobEngel/dso.git

2.Install suitesparse and eigen3 (required)

sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev

3.OpenCV (highly recommended)

sudo apt-get install libopencv-dev

4.Pangolin (highly recommended):作为可视化和用户界面

a. 安装依赖项

$ sudo apt-get install libglew-dev libpython2.7-dev

b. 从Github将项目下载到本地

$ git clone https://github.com/stevenlovegrove/Pangolin.git

c. 编译安装

$ cd ~/Pangolin
$ mkdir build
$ cd build
$ cmake ..
$ make –j
$ sudo make install

5.ziplib (recommended)

sudo apt-get install zlib1g-dev
cd 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   # (no idea why that is needed).

6.Build

    cd dso
    mkdir build
    cd build
    cmake ..
    make -j

使用

在TUM单目数据集上运行DSO

https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1下载数据集,我选了最小的sequence_14,推荐用迅雷下载,直接用浏览器下载,网速很慢,而且容易失败。
下载完成后,解压到某一路径下,然后在终端中运行:

cd ~/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:相机的一些特性参数,光度标定文件。
  • preset:设定DSO运行时的参数,如选取的像素点个数等等。preset=3是preset=0的5倍速运行DSO。
  • mode:DSO模式切换,如0为包含光度标定文件,1为只包含内参数,2为没有畸变参数

运行结果如下:

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

1.将相机内参数写入自己的camera.txt下,比如使用opencv或者matlab标定的针孔相机模型。格式如下:

Pinhole fx fy cx cy 0
in_width in_height
“crop” / “full” / “none” / “fx fy cx cy 0”
out_width out_height

2.准备自己数据集的图片,注意图片名为6位,不足6位的补零。
3.运行

./dso_dataset files=~/bagfiles/img/ calib=~/dso/camera.txt mode=1

用摄像头实时运行DSO

作者同时发布了dso_ros,用ROS来实时获取图片。
作者提供的源代码有两个分支,master分支对应rosbuild版,catkin分支对应catkin版。对于现代ROS版本,推荐使用catkin版本,安装使用更方便。但是作者的catkin分支存在代码缺陷,实际无法安装使用,因此将安装蓝鲸智能修改之后的dso_ros版本
1.安装dso_ros

mkdir -p ~/dso_catkin_ws/src
cd ~/dso_catkin_ws/src
git clone https://github.com/BlueWhaleRobot/dso_ros.git 
cd ..
export DSO_PATH=~/dso
catkin_make

可能会出现无法找到eigen3的错误,解决办法为在Cmakelist.txt中,注释掉find_package(Eigen3 REQUIRED),然后添加include_directories("/usr/include/eigen3"),最后重新执行catkin_make
2.启动摄像头
usb摄像头ROS驱动安装方法见:https://blog.csdn.net/learning_tortosie/article/details/79879575

roslaunch usb_cam usb_cam-test.launch

3.修改相机内参数
打开文件~/dso_catkin_ws/src/dso_ros/camera.txt,修改相机内参数。
4.运行dso_ros

source ~/dso_catkin_ws/devel/setup.bash
rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=~/ros_catkin_ws/src/dso_ros/camera.txt mode=1

运行结果如下:

我没有标定相机,发现DSO对相机内参数特别敏感,很容易跟丢,而且相较于ORB-SLAM有些卡顿。
直接法生成的半稠密地图就是比稀疏地图好看啊。
接下来用有标定参数的小觅相机跑一下。

猜你喜欢

转载自blog.csdn.net/learning_tortosie/article/details/81266727
DSO