视觉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

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