視覺SLAM筆記--第8篇: DSO編譯運行

1. DSO編譯運行(非ROS)

1.1 安裝依賴庫

編譯DSO依賴庫包括:

  • OpenCV(版本>3.0)
  • Eigen3
  • Pangolin
  • ziplib(不需要下載)
  • ROS

前三個依賴庫安裝教程:安裝教程;
ROS安裝教程:ROS安裝

1.2 編譯

# 將DSO代碼拷貝下來
git clone https://github.com/JakobEngel/dso.git

# 安裝依賴庫
sudo apt-get install libsuitesparse-dev  libboost-all-dev

# 安裝ziplib
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

# 編譯工程
cd dso
mkdir build
cd build
cmake ..
make -j2

1.3 運行測試

  • TUM單目數據集
# tum單目數據集測試, 可以生成一個.sh腳本文件,直接運行
./bin/dso_dataset files='/home/guofeng/桌面/Database/TUM/sequence_09/images.zip' calib='/home/guofeng/桌面/Database/TUM/sequence_09/camera.txt' gamma='/home/guofeng/桌面/Database/TUM/sequence_09/pcalib.txt' vignette='/home/guofeng/桌面/Database/TUM/sequence_09/vignette.png' preset=0 mode=0

  • Euroc單目數據集
# Euroc單目數據集
cp ~/桌面/Database/Euroc/mav0/cam1/sensor.yaml ./camera.txt
gedit camera.txt    # 改成DSO初探裏一樣的格式就行了

# camera.txt格式如下
# 第一行: fx fy cx cy d0 d1 d2 d3
# 第二行: 原始圖像尺寸
# 第三行: 相機類型  crop / full / none / fx fy cx cy 0
# 第四行: resize後的圖像尺寸

457.587 456.134 379.999 255.238 -0.28368365  0.07451284 -0.00010473 -3.55590700e-05 
752 480
crop
640 480

./build/bin/dso_dataset files='/home/guofeng/桌面/Database/Euroc/mav0/cam1/data' calib='/home/guofeng/桌面/Database/Euroc/mav0/cam1/camera.txt' mode=1

1.4 測試結果

  • TUM數據集

在這裏插入圖片描述

  • Euroc數據集
    在這裏插入圖片描述

2. DSO編譯運行(ROS版本)

2.1 編譯

# 下載源代碼到工作空間
cd catkin_ws/src
git clone https://github.com/JakobEngel/dso_ros.git

# 配置環境變量, 需要dso運行正常的條件下
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src
export DSO_PATH=/home/guofeng/open-code/dso

# 修改CMakeLists.txt文件內容
# 1. 屏蔽輸出文件保存位置
set(EXECUTABLE_OUTPUT_PATH bin) # 將其屏蔽掉

# 2. 添加添加動態鏈接庫  -lboost_system, 
target_link_libraries(dso_live ${DSO_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS} -lboost_system)


# 需要在ROS工作空間裏編譯運行, 可以寫成.sh腳本的形式
cd ~/catkin_ws/src/dso_ros
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j2

2.2 運行測試

  • Euroc數據集bag
# 需要注意的是camera需要根據自己的相機內參改動
roscore
rosrun dso_ros dso_live image:=/cam1/image_raw calib='/home/guofeng/桌面/Database/Euroc/mav0/cam1/camera.txt' mode=1
rosbag play V1_02_medium.bag
  • TUM數據集
roscore
rosrun dso_ros dso_live image:=/camera/rgb/image_color calib='/home/guofeng/桌面/Database/TUM/camera.txt' mode=1
rosbag play rgbd_dataset_freiburg1_xyz.bag

2.3 測試結果

  • Euroc數據集
    在這裏插入圖片描述

3. 出現的問題

3.1 evo評估問題

典型的TUM格式,但是生成的多了空格,需要處理一下才能用evo工具評估:

cat result.txt | tr -s [:space:] > DSO.txt

3.2 鏈接庫問題

  • 問題描述
/usr/bin/ld: CMakeFiles/dso_live.dir/src/main.cpp.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/dso_live.dir/build.make:212: recipe for target 'bin/dso_live' failed
make[2]: *** [bin/dso_live] Error 1
CMakeFiles/Makefile2:709: recipe for target 'CMakeFiles/dso_live.dir/all' failed
make[1]: *** [CMakeFiles/dso_live.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
  • 解決方案
# 添加動態鏈接庫  -lboost_system
target_link_libraries(dso_live ${DSO_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS} -lboost_system)

4. 源代碼修改

dso_ros修改版本,適用於catkin編譯:dso_ros

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