
該動圖來自LVI-SAM開源地址(https://github.com/TixiaoShan/LVI-SAM)
1 寫在開頭
1.1 為何誕生此文
近期在學(xué)習(xí)SLAM相關(guān)知識,拜讀了此篇經(jīng)典論文LVI-SAM,因?yàn)椴渴鸬臅r(shí)候系統(tǒng)版本與開源略有不同,遇到一些問題,故在此記錄一下。
1.2 衷心建議
若是大手子,請直接忽視本文。
衷心建議大家先參照開源各版本進(jìn)行環(huán)境配置,可以節(jié)省不少時(shí)間。
本文所列的遇到的問題均是我遇到的,但是有一些我沒有遇到的過程中比較順利的地方我可能會省略,另外本文是在編譯成功后進(jìn)行復(fù)盤產(chǎn)生,需要修改的點(diǎn)可能與源碼略有出入,對此給讀者造成的不良體驗(yàn)表示歉意。
若有需要可以評論區(qū)進(jìn)行交流。
1.3 編譯環(huán)境
Ubuntu20.04 + OpenCV4.0.* + ROS noetic + gtsam4.0 + Ceres1.14.0
1.4 參考
在入門過程中很多大佬的筆記給我提供了幫助,本帖也是在各位基礎(chǔ)之上匯總而來的內(nèi)容,再次對各位表示感謝,希望可以同各位一起共創(chuàng)良好的開源環(huán)境。
項(xiàng)目開源地址(LVI-SAM) | 項(xiàng)目優(yōu)化代碼(LVI-SAM-Easyused)(本文作者部署代碼)
知乎大佬:由粗到細(xì)學(xué)習(xí)SLAM
古月居:LVI-SAM的安裝與調(diào)試
Ubuntu20.04下的編譯與運(yùn)行LIO-SAM【問題解決】
古月居:詳細(xì)介紹如何在ubuntu20.04中安裝ROS系統(tǒng)
2 編譯LVI-SAM之前的準(zhǔn)備工作
2.1 ROS noetic 安裝配置
感謝古月居大佬的筆記,對于Ubuntu20.04下的ROS noetic配置可完全參照其筆記進(jìn)行,偶爾遇到的也是很小的問題。-古月居:詳細(xì)介紹如何在ubuntu20.04中安裝ROS系統(tǒng).
2.2 gtsam (Georgia Tech Smoothing and Mapping library)安裝配置
gtsam與Ceres 原本按照古月居大佬筆記進(jìn)行安裝,不過可能由于系統(tǒng)環(huán)境的原因,存在一定問題,于是按照TixiaoShan指導(dǎo)進(jìn)行重新覆蓋安裝。
sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev
2.3 Ceres (C++ library for modeling and solving large, complicated optimization problems)
在執(zhí)行下述命令時(shí)注意路徑,若待安裝服務(wù)器的Ubuntu已漢化,則路徑中Downloads要替換為"下載"。路徑可自己選擇。
sudo apt-get install -y libgoogle-glog-dev
sudo apt-get install -y libatlas-base-dev
wget -O ~/Downloads/ceres.zip https://github.com/ceres-solver/ceres-solver/archive/1.14.0.zip
cd ~/Downloads/ && unzip ceres.zip -d ~/Downloads/
cd ~/Downloads/ceres-solver-1.14.0
mkdir ceres-bin && cd ceres-bin
cmake ..
sudo make install -j4
2.4 創(chuàng)建工作空間
路徑可根據(jù)需要修改
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
獲取源碼
這里注意,我直接部署的LVI-SAM-Easyused,當(dāng)然,也可以路徑換為LVI-SAM的 https://github.com/TixiaoShan/LVI-SAM
git clone https://github.com/Cc19245/LVI-SAM-Easyused
2.5 源碼修改
2.5.1 CMakelists.txt
在lvi-sam目錄下的CMakelists.txt中修改如下:
將set( CMAKE_CXX_FLAGS “-std=c++11” )
修改為set( CMAKE_CXX_FLAGS “-std=c++14” )

在CMakeLists中加入:
find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)

2.5.2 修改源文件
該處參照古月居大佬,或者根據(jù)具體報(bào)錯進(jìn)行修改即可
在LVI-SAM/src/lidar_odometry/utility.h和LVI-SAM/src/visual_odometry/visual_loop/parameters.h以及LVI-SAM/src/visual_odometry/visual_feature/parameters.h三個(gè)文件中,
修改:#include <opencv/cv.h> 為 #include <opencv2/opencv.hpp>。
LVI-SAM/src/visual_odometry/visual_loop/ThirdParty/DVision/BRIEF.cpp文件添加頭文件#include <opencv2/imgproc.hpp>,修改53行CV_RGB2GRAY為 cv::COLOR_RGB2GRAY
LVI-SAM/src/visual_odometry/visual_loop/keyframe.cpp的240行CV_FONT_HERSHEY_SIMPLEX改為cv::FONT_HERSHEY_SIMPLEX
LVI-SAM/src/visual_odometry/visual_loop/loop_detection.cpp的64, 82, 92, 112, 149行中修改CV_FONT_HERSHEY_SIMPLEX為cv::FONT_HERSHEY_SIMPLEX
2.5.3 編譯之前新開一個(gè)終端執(zhí)行下述兩行
sudo apt-get install ros-noetic-fake-localization
sudo apt-get install ros-noetic-robot-localization
3 編譯LVI-SAM
新開終端編譯LVI-SAM
cd ~/catkin_ws
catkin_make
若是編譯過程報(bào)錯,pyhon3……
使用下述命令進(jìn)行編譯
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
4 運(yùn)行官方數(shù)據(jù)集
首先下載數(shù)據(jù)集,然后跳轉(zhuǎn)到catkin_ws/devel下,這里大家要根據(jù)自己的路徑修改
cd ~/catkin_ws/devel
source setup.bash
roslaunch lvi_sam run.launch
然后打開另一個(gè)終端運(yùn)行bag
rosbag play garden.bag
5 寫在最后
可能我是比較幸運(yùn)的那一個(gè),沒有太大的坑在等我,至此我已經(jīng)順利編譯完成,明天開始跑數(shù)據(jù)集。
若在你編譯的過程中還遇到其他問題,請務(wù)必耐心查找資料,問題總會解決的,如果可以,也歡迎評論區(qū)交流。文章來源:http://www.zghlxwxcb.cn/news/detail-673587.html
祝你我皆無BUG。文章來源地址http://www.zghlxwxcb.cn/news/detail-673587.html
到了這里,關(guān)于Ubuntu20.04部署編譯LVI-SAM的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!