執行LearnVIORB及VINS_mono
整個操作過程中,如果出現有關cmakelists中的某個版本和自己系統中提供的版本不符的情況。兩種辦法,一種更改cmakelists中要求的版本號,另一種是自己調整系統中的版本至要求。一般簡單的是前者。
A.VIORB的執行步驟
1.編譯庫
根據資料夾中的build.sh流程走。
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -jcd ../../g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -jcd ../../../
在src資料夾下cmake .. , make,編譯src和include檔案,生成 libORBSLAM2.so
#Vocabulary資料夾下還差一個ORBvoc.txt檔案,需新增
2.配置和build ORBSLAM
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
一般執行到make這一步就會出現各種千奇百怪的問題about g2o啦, about ceres啦,等等
#此時,將資料夾中的include 檔案更換為ORB SLAM2中的include 檔案,再進行上述cmake,make操作,就不會產生錯誤了。
編譯成功的狀態如下:
[100%] Built target ORB_SLAM2
3.Build ROS node
開啟檔案
gedit ~/.bashrc
在.bashrc 末尾新增:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/ws/catkin_ws/src/LearnVIORB-RT/Examples/ROS 並儲存
更新檔案
source ~/.bashrc
顯示當前ros 環境
echo $ROS_PACKAGE_PATH
cd ..
cd Examples/ROS/ORB_VIO
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
構建成功如下所示:
[100%] Linking CXX executable VIO
[100%] Built target VIO
4.配置configuration檔案:
config/euroc.yaml(兩處):
test.InitVIOTmpPath:生成檔案存放的位置
bagfile:資料集位置
5.執行
source devel/setup.bash(新增工作環境,只需要執行一次)
roslaunch ORB_VIO testeuroc.launch(執行)
________________________________________________________________________________
以上是VIORB的執行步驟,下面是VINS_mono的執行相關。
B.VINS_mono的執行步驟
1.常規操作:
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash //一定注意修改到當前ws的路徑下
編譯結束的結果:
[100%] Linking CXX executable /media/zp/zengpan/ubuntu/catkin_ws_vins/devel/lib/vins_estimator/vins_estimator
[100%] Built target vins_estimator
2.公開資料集上的Visual-Inertial Odometry and Pose Graph Reuse
開啟三個終端,分別執行:
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play YOUR_PATH_TO_DATASET/MH_01_easy.bagrosbag play /media/zp/zengpan/MH_01_easy.bag
注意:每個新開啟的終端在執行之前,都需要source一下.bash檔案到當前的workspace之下,否則上述3條指令執行會出錯。
相關文章
- LearnVIORB程式碼框架筆記ORB框架筆記
- 執行緒同步及執行緒鎖執行緒
- 執行緒的建立及執行緒池執行緒
- 執行及總結
- MyBatis Generator配置及執行MyBatis
- 多執行緒併發執行及解決方法執行緒
- 小度分享-【多執行緒工作及執行緒安全】執行緒
- 多執行緒之間通訊及執行緒池執行緒
- 如何編寫及執行JSJS
- 執行環境及作用域
- 專案執行及總結
- 淺談執行緒池(上):執行緒池的作用及CLR執行緒池執行緒
- 簡述CUDA執行緒及求CUDA中執行緒索引執行緒索引
- 多執行緒的執行緒狀態及相關操作執行緒
- 玩轉java多執行緒 之多執行緒基礎 執行緒狀態 及執行緒停止實戰Java執行緒
- JavaScript執行環境及作用域JavaScript
- Python 多執行緒及程式Python執行緒
- Java執行緒池原理及分析Java執行緒
- Sentinel上下文建立及執行
- javascript執行緒及與執行緒有關的效能優化JavaScript執行緒優化
- Jmeter之八大可執行元件及執行順序JMeter元件
- 淺談執行緒池(中):獨立執行緒池的作用及IO執行緒池執行緒
- ORACLE優化器工作原理及及執行方式《轉》Oracle優化
- ORACLE最佳化器工作原理及及執行方式Oracle
- 多執行緒-執行緒的狀態轉換圖及常見執行情況執行緒
- 多執行緒-執行緒排程及獲取和設定執行緒優先順序執行緒
- Java—執行緒的生命週期及執行緒控制方法詳解Java執行緒
- Golang 啟停管理及後臺執行Golang
- Java執行緒池原始碼及原理Java執行緒原始碼
- 系統執行級別及修改方法
- SpringMVC執行流程及原始碼分析SpringMVC原始碼
- JAVA執行緒池的原理及使用Java執行緒
- Java執行緒狀態及切換Java執行緒
- jMeter結構體系及執行原理JMeter結構體
- 執行緒介紹及建立方式執行緒
- JS執行機制及ES6JS
- Java執行緒狀態及同步鎖Java執行緒
- 虛擬執行緒原理及效能分析執行緒