Ubuntu20.04部署编译LVI-SAM

此动图源自LVI-SAM开源版本,并可访问其网站地址:https://github.com/TixiaoShan/LVI-SAM。
1 写在开头
1.1 为何诞生此文
最近开始深入学习SLAM技术,并对这篇经典的LVI-SAM论文进行了通读和认真研究。在部署过程中发现系统版本与开源实现存在细微差异,并因此将遇到的问题进行详细记录以便后续查阅参考。
1.2 衷心建议
若是大手子,请直接忽视本文。
衷心建议大家先参照开源各版本进行环境配置,可以节省不少时间。
本文列举的问题是我亲身经历过的经验教训总结。其中一些我没有经历的过程较为顺利的部分我会略过。此外,在源代码编译完成之后我会进行系统性地回顾与整理以便发现潜在的问题进而提出相应的解决方案以减少未来可能出现的风险为此我对读者提出的相关建议深表感谢并希望得到反馈以持续优化我的工作流程和成果质量在此基础上对我的工作成果提出更高的要求希望能在实践中不断积累经验并不断提升自身的专业能力在此基础上对我的工作成果提出更高的要求希望能在实践中不断积累经验并不断提升自身的专业能力
若有需要可以评论区进行交流。
1.3 编译环境
Ubuntu20.04 + OpenCV4.0.* + ROS noetic + gtsam4.0 + Ceres1.14.0
1.4 参考
源自入门过程中的不少大牛笔记作为参考。
也基于大家 previously积累的基础内容。
再次致以谢意给各位。
并期待与大家一起共同营造一个良好的开源社区环境。
-
该开源项目地址为:LVI-SAM
| 该优化代码为:LVI-SAM-Easyused,其中包含本文作者的部署代码
问题解决
问题解决
问题排查
故障排查
古月居:详细说明安装ROS系统的步骤及注意事项
2 编译LVI-SAM之前的准备工作
2.1 ROS noetic 安装配置
参考了古月居的大佬的详细说明,在Ubuntu 20.04环境下安装和配置ROS noetic系统的过程基本可以完全参考其提供的指导材料。但在实际操作过程中遇到的问题也比较简单
2.2 gtsam (Georgia Tech Smoothing and Mapping library)安装配置
gtsam和Ceres最初是按照古月居的笔记来进行安装的。然而,在实际操作中可能会遇到一些系统环境相关的问题。于是参考了TixiaoShan的指导信息进行了重新覆盖式的安装。
sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev
为应对现代科学和工程领域中复杂需求而设计的Ceres(C++库),提供了一种高效的方法来建模并解决大规模、复杂的优化问题。该库通过其高效的数值优化算法支持非线性最小二乘法等高级功能,在数据拟合、路径规划等领域发挥着重要作用。
在执行以下指令时,请注意调整路径设置。当所安装的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 创建工作空间
路径可根据需要修改
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
获取源码
特别提醒:目前我在使用LVI-SAM-Easyused这一版本软件,并且也可以采用另一种部署途径即...链接地址
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 修改源文件
该处参照古月居大佬,或者根据具体报错进行修改即可
-
在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三个文件中,
-
修改:#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_HERSHEYSIMPLE为opencv::FONT_HERSHEYSIMPLE
2.5.3 编译之前新开一个终端执行下述两行
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
若是编译过程报错,pyhon3……
使用下述命令进行编译
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
4 运行官方数据集
请先下载数据集,接着前往catkin_ws/devel目录,请确保您根据个人路径进行调整。
cd ~/catkin_ws/devel
source setup.bash
roslaunch lvi_sam run.launch
然后打开另一个终端运行bag
rosbag play garden.bag
5 写在最后
也许我是幸运中的一个,在此之前我没有遇到任何重大障碍。到此为止我已经顺利完成编译工作,在接下来的一天里我会投入数据集训练工作。
若在您编译过程中仍遇到其他问题,请务必耐心查阅文档以获取详细信息, 这些问题最终都会得到妥善解决. 同时, 您也可以考虑加入一些调试日志来辅助排查潜在的问题, 这样可以帮助您更好地理解程序运行的情况. 如果您有任何疑问或建议, 我们也非常欢迎在评论区与大家交流
祝你我皆无BUG。
