该动图来自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 参考
在入门过程中很多大佬的笔记给我提供了帮助,本帖也是在各位基础之上汇总而来的内容,再次对各位表示感谢,希望可以同各位一起共创良好的开源环境。
项目开源地址(LVI-SAM) | 项目优化代码(LVI-SAM-Easyused)(本文作者部署代码)
知乎大佬:由粗到细学习SLAM
古月居:LVI-SAM的安装与调试
Ubuntu20.04下的编译与运行LIO-SAM【问题解决】
古月居:详细介绍如何在ubuntu20.04中安装ROS系统
2 编译LVI-SAM之前的准备工作
2.1 ROS noetic 安装配置
感谢古月居大佬的笔记,对于Ubuntu20.04下的ROS noetic配置可完全参照其笔记进行,偶尔遇到的也是很小的问题。-古月居:详细介绍如何在ubuntu20.04中安装ROS系统.
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
2.3 Ceres (C++ library for modeling and solving large, complicated optimization problems)
在执行下述命令时注意路径,若待安装服务器的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,当然,也可以路径换为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 修改源文件
该处参照古月居大佬,或者根据具体报错进行修改即可
在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_HERSHEY_SIMPLEX为cv::FONT_HERSHEY_SIMPLEX
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 写在最后
可能我是比较幸运的那一个,没有太大的坑在等我,至此我已经顺利编译完成,明天开始跑数据集。
若在你编译的过程中还遇到其他问题,请务必耐心查找资料,问题总会解决的,如果可以,也欢迎评论区交流。文章来源:https://www.toymoban.com/news/detail-673587.html
祝你我皆无BUG。文章来源地址https://www.toymoban.com/news/detail-673587.html
到了这里,关于Ubuntu20.04部署编译LVI-SAM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!