初探DSO-SLAM並運行dso_ros

        最近在做SLAM相關的工作,用思嵐的A2激光雷達在turtlebot3上測試SLAM建圖效果,感覺還是不錯的。由於項目在方案上還沒有確定選擇哪種作爲SLAM的最終方案,在我測試奧比中光ASTRA mini 3D攝像頭,看看在構建地圖上有什麼優勢。所以在查詢資料中我看到了DSO,感覺DSO還是比較簡單的,使用的稀疏直接法,雖然遇到過很多坑,但最終還是一一的解決了。DSO(Direct Sparse Odometry)是慕尼黑工業大學Engel於2016年發佈在arXiv上的一種基於直接法,構建稀疏點雲地圖的視覺里程計。在VSLAM中還是獨樹一幟的吧,雖然相關資料比較少,但是進行一些簡單測還是沒問題的啦,廢話不多說,開始進入正題。(本人使用的是zshell)

安裝dso:

1.首先安裝相關依賴包(如果你沒有安裝的話):

➜  ~  sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-dev
➜  ~  sudo apt-get install libopencv-dev

2. 下載dso包:

➜  ~  mkdir ~/dso_pkg
➜  dso_pkg  git clone https://github.com/JakobEngel/dso.git

3 .根據DSO官方的要求是要配置Pangolin(用於3D可視化和GUI)和ziplib(用於讀取圖像爲.zip的數據集):

安裝zlibzp並編譯dso
➜  ~  sudo apt-get install zlib1g-dev
➜  ~  cd ~/dso_pkg/dso/thirdparty
➜  thirdparty git:(master)  tar -zxvf libzip-1.1.1.tar.gz
➜  thirdparty git:(master)   cd libzip-1.1.1/
➜  libzip-1.1.1 git:(master)  ./configure
➜  libzip-1.1.1 git:(master)   make
➜  libzip-1.1.1 git:(master)  sudo make install
➜  libzip-1.1.1 git:(master)  sudo cp lib/zipconf.h /usr/local/include/zipconf.h
安裝Pangolin
➜  ~  cd dso_pkg
➜  dso_pkg  git clone https://github.com/stevenlovegrove/Pangolin.git
➜  ~  cd Pangolin
➜  Pangolin git:(master)   mkdir build
➜  build git:(master)   cd build
➜  build git:(master)   cmake -DCPP11_NO_BOOST=1 ..
➜  build git:(master)   make -j

4.在TUM單目數據集上運行DSO

下載TUM單目數據集請到https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1下載你所需要的zip包,我下載的是sequence_14,根據需要自行下載。下載好把zip包放到dso的bin目錄下並解壓,我的是

➜  bin git:(master) pwd
/home/zpq/dso_pkg/dso/build/bin
➜  bin git:(master) unzip sequence_14.zip 
在bin目錄下運行啓動數據集:
./dso_dataset files=./sequence_14/images.zip calib=./sequence_14/camera.txt gamma=./sequence_14/pcalib.txt vignette=./sequence_14/vignette.png preset=0 mode=0

運行成功啦....那我們接下來運行dso_ros把,這個有點坑,好吧,身爲程序猿的我們不怕坑踩不過,就拍沒有坑!來吧。

利用外接攝像頭實時運行DSO

Engel同時發佈了dso_ros,用ROS來實時獲取圖片,程序代碼很簡短,實際上它是作者提供的一個如何把DSO當做一個黑盒子來使用的樣例。這裏需要用到ros啦,沒有裝好ros系統的同學,可以先裝好ros並搭建好一個工作空間,傳送門https://blog.csdn.net/bflong/article/details/80936914

第一個坑:原作者提供的源代碼有兩個分支,master分支對應rosbuild版,catkin分支對應catkin版。對於現代ROS版本,推薦使用catkin版本,安裝使用更方便。但是作者的catkin分支存在代碼缺陷,rosmake 找不到包,實際無法安裝使用,這讓是人百思不得其解,之後我就查了好多的資料,絕大數的都不適用,也許是我的版本配置的問題吧,最後我找到藍鯨智能修改之後的dso_ros版本,終於是看到希望啦,真是謝謝大佬:https://blog.csdn.net/smilinglamb/article/details/80656872?utm_source=blogxgwz2

下載並編譯
➜  ~ cd catkin_ws/src
➜  src git clone https://github.com/BlueWhaleRobot/dso_ros.git 
➜  ~ cd ..
➜  catkin_ws export DSO_PATH=/home/zpq/dso_pkg/dso
➜  catkin_ws catkin_make
安裝編譯usb_cam
➜  ~ cd ~/catkin_ws/src
➜  src git clone https://github.com/bosch-ros-pkg/usb_cam.git 
➜  catkin_ws cd ..
➜  catkin_ws catkin_make
➜  catkin_ws source ~/catkin_ws/devel/setup.bas
修改相機參數文件
➜  ~ gedit ~/catkin_ws/src/dso_ros/camera.txt
我的是(根據需求你們自行修改):
446.867338 446.958766 298.082779 234.334299 -0.324849 0.1205156     -0.000186 -0.000821
640 480
crop
640 480
運行dso_ros:
新開終端運行:roscore
再開一終端運行usb_cam:roslaunch usb_cam usb_cam-test.launch
再開一終端運行dso_live:rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/zpq/catkin_ws/src/dso_ros/camera.txt mode=1

第二個坑運行usb_cam時提示我的相機沒有進行光度校準的,一般這個是不會影響我的dso_ros的運行,但是在後遇見的問題中我也不確定是否與這個問題有關,因此我查找了大量有關資料,終於找到一位大佬的博客解決的 傳送門:https://blog.csdn.net/qq_25241325/article/details/82705003

 第三個坑是我根據別人的運行啓動dso_live的時候,我可以看我的rostopic ,導致我的imge view 設置錯誤,我的usb_cam的topic是/usb_cam  因此我的啓動dso_live 的image參數是:rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/zpq/catkin_ws/src/dso_ros/camera.txt mode=1

好啦,整個DSO 的運行測試流程以及我所遇到的坑都在這裏啦,希望可以幫助各位學習DSO !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章