DSO的GitHub链接:https://github.com/JakobEngel/dso
本博客基于VMware搭建的Ubuntu16.04实现DSO
sudo apt install git
git clone https://github.com/JakobEngel/dso.git
sudo apt install libsuitesparse-dev libeigen3-dev libboost-all-dev
opencvsudo apt install libopencv-dev
Pangolingithub:https://github.com/stevenlovegrove/Pangolin
克隆git clone https://github.com/stevenlovegrove/Pangolin.git
安装Pangolin需要的依赖项:tar -zxvf Pangolin.tar.gz
编译和安装Pangolincd [path-to-pangolin]mkdir buildcd buildcmake ..makesudo make install
ziplibsudo apt-get install zlib1g-devcd dso/thirdpartytar -zxvf libzip-1.1.1.tar.gzcd libzip-1.1.1/./configuremakesudo make installsudo cp lib/zipconf.h /usr/local/include/zipconf.h # (no idea why that is needed).
cd dsomkdir buildcd buildcmake ..make -j4
virtual memory exhausted: 无法分配内存CMakeFiles/dso.dir/build.make:62: recipe for target 'CMakeFiles/dso.dir/src/FullSystem/FullSystem.cpp.o' failedmake[2]: *** [CMakeFiles/dso.dir/src/FullSystem/FullSystem.cpp.o] Error 1make[2]: *** 正在等待未完成的任务....CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/dso.dir/all' failedmake[1]: *** [CMakeFiles/dso.dir/all] Error 2Makefile:83: recipe for target 'all' failedmake: *** [all] Error 2
解决方法:
将make -j4该低点 ,改成make -j2
[ 96%] linking CXX executable bin/dso_dataset/usr/bin/ld: CMakeFiles/dso_dataset.dir/src/main_dso_pangolin.cpp.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit statusCMakeFiles/dso_dataset.dir/build.make:129: recipe for target 'bin/dso_dataset' failedmake[2]: *** [bin/dso_dataset] Error 1CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/dso_dataset.dir/all' failedmake[1]: *** [CMakeFiles/dso_dataset.dir/all] Error 2Makefile:83: recipe for target 'all' failedmake: *** [all] Error 2
解决方法:
参考博客:https://blog.csdn.net/qq_17232031/article/details/79540286
修改CMakeLists.txt有关于Thread,首先在CMakeLists.txt中添加一条:
FIND_PACKAGE(Threads QUIET)
然后将:
if (OpenCV_FOUND AND Pangolin_FOUND) message("--- compiling dso_dataset.") add_executable(dso_dataset ${PROJECT_SOURCE_DIR}/src/main_dso_pangolin.cpp ) target_link_libraries(dso_dataset dso boost_system boost_thread cxsparse ${LIBZIP_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS} )else() message("--- not building dso_dataset, since either don't have openCV or Pangolin.")endif()
改为:
if (OpenCV_FOUND AND Pangolin_FOUND) message("--- compiling dso_dataset.") add_executable(dso_dataset ${PROJECT_SOURCE_DIR}/src/main_dso_pangolin.cpp ) target_link_libraries(dso_dataset dso boost_system boost_thread cxsparse ${LIBZIP_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS} ${CMAKE_THREAD_LIBS_INIT})else() message("--- not building dso_dataset, since either don't have openCV or Pangolin.")endif()
然后重新编译:
cmake ..make -j2
数据来源:https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1
输入以下内容;但是导致了报错
原因:没有解压
所以我们先加压一下;解压suquence_14和里面的images,并删除压缩文件
输入:
./dso_dataset files=./sequence_14/images calib=./sequence_14/camera.txt gamma=./sequence_14/pcalib.txt vignette=./sequence_14/vignette.png preset=0 mode=0
又报了以下错误:
原因:Pangolin没有装好;重新安装Pangolin;参考https://blog.csdn.net/qq_39236499/article/details/122722038里面的Pangolin报错解决方法,两个是一模一样的错误
再次输入上面指令!成功!!!
https://blog.csdn.net/qq_17232031/article/details/79540286
https://blog.csdn.net/qq_37568167/article/details/106384458
https://blog.csdn.net/qq_39236499/article/details/109010081
https://blog.csdn.net/weixin_40941966/article/details/107408299