SVO(SLAM)編譯運行


SVO即“Fast Semi-Direct Monocular Visual Odometry”視覺slam算法

編譯環境:Ubuntu14.04-LTS(64位)、ROS Indigo

不得不說,這個代碼是我目前為止編譯最為順利的一個,沒有遇到之前各種奇奇怪怪的問題。雖然完全按照原作者的方法來編譯應該不會出現問題,但還是決定寫一篇關於svo編譯的。一是關於這個編譯的文章少,我百度的時候沒出來幾個(可能是因為這個編譯太簡單了吧,,hehe……);二是原作者沒有給出關於 OpenCV 的說明,如果自己之前自定義安裝了 OpenCV 的小朋友,在編譯的時候可能會出現找不到 OpenCV 的問題。

下面是具體步驟:

1、下載源碼

先交代一下,我們是要建兩個並列的文件夾,一個(workspace)用於存放所要用到的庫,一個(src)用於存放 SVO 代碼。我是先把所有需要的東西都下載完,然后再編譯的。

首先創建一個文件夾用於放置代碼,我的是在 Home 目錄下:

mkdir ~/svo_ws

cd ~/svo_ws

mkdir workspace

cd workspace

git clone https://github.com/strasdat/Sophus.git

git clone https://github.com/uzh-rpg/fast.git

git clone https://github.com/RainerKuemmerle/g2o.git

這樣三個庫 Sophus、fast、g2o 就分別下載完了,然后在 svo_ws 下創建 src:

cd ..

mkdir src

cd src

git clone https://github.com/uzh-rpg/rpg_vikit.git

git clone https://github.com/uzh-rpg/rpg_svo.git

這里下載的兩個一個是工具庫,一個是源碼。

然后下載一會要用到的數據包,這是下載鏈接,然后把下載的包移到 svo_ws 下備用。

2、編譯

然后開始編譯,編譯要用到的三個庫,最后編譯程序代碼。

先編譯 Sophus,進入 Sophus 文件夾:

cd ~/svo_ws/workspace/Sophus

然后切換分支:

git checkout a621ff

如圖:

然后創建 build 文件夾並編譯:

mkdir build

cd build

cmake ..

make

結果如圖:

然后編譯fast:
cd ~/svo_ws/workspace/fast

mkdir build

cd build

cmake ..

我在這里編譯出錯了,因為我 OpenCV 安裝時沒有裝到系統路徑,而是自定義的,我之前的文章里也多次提到了。

編輯 fast  下的 CMakeLists.txt,在 20行左右添加自己的安裝路徑:

set(OpenCV_DIR ~/opencv-2.4.9/share/OpenCV)

保存退出。這里我是沿用上篇文章的 OpenCV2.4.9 版本,路徑設置及版本切換參考我之前的文章。刪掉 build 下的所有文件(這點狠重要!!),然后重新編譯:

cmake ..

make

到這里應該會沒問題,如圖:

這里提一下,如果你出現了 “unrecognized command line option '-mfpu=neon' ”的錯誤:

那么自己給自己一巴掌。如果按我的步驟來,不會出現這個錯誤,出現這個錯誤的原因是添加了環境變量 ARM_ARCHITECTURE=True。其實作者已經說得狠清楚了,ARM平台才需要添加這個,我們是 PC端編譯,所以不要添加這個。

然后編譯 g2o,由於我之前編譯別的代碼時已經將g2o安裝到了系統路徑,所以這次我沒有再次安裝。不過這里還是給出安裝過程(這是安裝到系統路徑,如果想自定義路徑,請自行參考原作者網頁):

cd ~/svo_ws/workspace/g2o

mkdir build

cd build

cmake ..

make

sudo make install

至此需要用到的庫已經完都編譯或安裝完畢,然后就該編譯主程序了。再編譯之前,原作者也友情提示了一下檢查是否安裝了 cmake-modules,其實一般來說都是安上了的,我的是 Indigo 版本,所以:

sudo apt-get install ros-indigo-cmake-modules

如果之前編譯 fast 時出現了找不到 OpenCV 的問題,那么編譯主程序時還會遇到這個問題,別問我怎么知道的[僵屍臉]~~!出錯截圖:不給你看咩~~!

所以我們一次性修改所有的文件,分別是 src/rpg_vikit/vikit_common/、src/rpg_vikit/vikit_ros/ 、src/rpg_svo/svo/ 、src/rpg_svo/svo_ros/ 下的 4 個CMakeLists.txt 文件,在里面合適位置添加(路徑改成你的):

set(OpenCV_DIR ~/opencv-2.4.9/share/OpenCV)

保存退出。然后在 ~/svo_ws 下編譯(如果之前已經編譯過了,就刪除 build 下的所有文件,重新回到 ~/svo_ws 編譯):

catkin_make

編譯成功如圖:

3、運行

新開窗口進入 ~/svo_ws 並運行:

source devel/setup.bash

roslaunch svo_ros test_rig3.launch

然后新開窗口進入 ~/svo_ws 並運行:

rosrun rviz rviz -d src/rpg_svo/svo_ros/rviz_config.rviz

最后運行數據包:

cd ~/svo_ws

rosbag play airground_rig_s3_2013-03-18_21-38-48.bag

效果如圖:

 

最后,,這次沒什么感慨,就祝大家湯圓節快樂吧(*^__^*) ……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM