現(xiàn)將本人之前發(fā)在CSDN上的內(nèi)容搬遷至簡書,轉(zhuǎn)載請注明來源http://www.reibang.com/p/e20c2c0d101d,謝謝。
目前關于DSO(Direct Sparse Odometry)在Linux下的安裝運行網(wǎng)上已經(jīng)有了很多教程,我是在Mac 上跑的DSO蜡镶,搭環(huán)境的時候在網(wǎng)上沒找到Mac下的方法。
總得講Mac下的搭建環(huán)境和Linux下基本相似恤筛,個別的地方有所出入官还。
下文中安裝依賴包使用的都是brew命令,還沒有安裝Homebrew的自行安裝
DSO的源代碼在https://github.com/JakobEngel/dso叹俏,首先我們將dso工程git到電腦上妻枕,先cd到想要git的路徑
git clone https://github.com/JakobEngel/dso.git
然后安裝依賴項
1.安裝依賴項
(1)安裝suite-sparse
brew install suite-sparse
suite-sparse庫中包含了很多基礎依賴的文件僻族,如果之后cmake的時候提示了 can not find CHOLMOD_INCLUDE_DIR等一般是因為沒有安裝suite-sparse或者是在cmakelist中沒有設置好CHOLMOD等的路徑
**
(2)安裝eigen
brew install eigen
(3)安裝opencv(可選)
建議安裝opencv粘驰,一般以后跑各種項目都會需要用到opencv
brew install opencv
(4)安裝Pangolin(可選)
Pangolin是DSO的可視化庫屡谐,如果不安裝Pangolin就看不到重建的效果了,所以建議安裝
首先安裝glew
brew install brew
安裝cmake
說起來cmake我是又愛又恨蝌数,很多時候cmake確實很好用愕掏,但是學習cmake又需要一定的學習成本,之后在使用cmake編譯的時候出現(xiàn)的問題除了環(huán)境沒有搭好外應該就是cmakelist中路徑設置出現(xiàn)問題顶伞,關于cmake路徑設置煩請大家自行搜索學習
brew install cmake
安裝Pangolin
首先進入dso文件下thirdparty文件下
cd /Users/charlie/dso/thirdparty
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make
(5)安裝libzip(可選)
這個包是用來自動解壓zip文件的饵撑,建議安裝不然之后需要自行解壓zip文件,很麻煩
brew install libzip
cd /Users/charlie/dso/thirdparty
tar -zxvf libzip-1.1.1.tar.gz
cd libzip-1.1.1/
./configure
make
make install
sudo cp lib/zipconf.h /usr/local/include/zipconf.h
到此環(huán)境就搭好啦
2.編譯并運行DSO
首先cd進dso文件內(nèi)
mkdir build
cd build
cmake ..
make
如果cmake通過并make成功的話在dso/build/lib中有l(wèi)ibdso.a庫文件唆貌,如果上述過程安裝了Pangolin的話滑潘,在dso/build/bin中有dso_dataset文件,使用data_set可運行數(shù)據(jù)集锨咙。數(shù)據(jù)集從https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1下載语卤。
下載完后將數(shù)據(jù)集復制到build/bin下并解壓,以下以01數(shù)據(jù)集為例酪刀,用其他數(shù)據(jù)集自行修改一下粹舵,在終端中運行
./dso_dataset files=./sequence_01/images.zip calib=./sequence_01/camera.txt gamma=./sequence_01/pcalib.txt vignette=./sequence_01/vignette.png preset=0 mode=0
若未安裝ziplib需要手動解壓images.zip并將代碼修改為images即可。
此外骂倘,在Mac上我使用的Xcode 9 存在一個問題就是在make的時候出現(xiàn)static_assert failed "Allocator::value_type must be same type as value_type"眼滤,這個問題通過https://github.com/JakobEngel/dso/issues/111的方法可以解決。