Ubuntu20.04部署编译LVI-SAM

2023-05-16

该动图来自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 写在最后

可能我是比较幸运的那一个,没有太大的坑在等我,至此我已经顺利编译完成,明天开始跑数据集。

若在你编译的过程中还遇到其他问题,请务必耐心查找资料,问题总会解决的,如果可以,也欢迎评论区交流。

祝你我皆无BUG。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04部署编译LVI-SAM 的相关文章

随机推荐

  • 从0开始学SLAM的各种问题

    一 关于更改vscode自带终端文字间隔 xff0c 字体大小 文件 gt 首选项 gt 设置 gt 搜索 终端 gt 找到Terminal gt Integrated Font Family gt 更改为monospace即可 找到Ter
  • python —— 变量后面加个下划线_是啥意思

    前后没有下划线的是公有方法 前边有一个下划线的为私有方法或属性 xff0c 子类无法继承 前边有两个下划线的 一般是为了避免于子类属性或者方法名冲突 xff0c 无法在外部直接访问 前后都有双下划线的为系统方法或属性 后边单个下划线的可以避
  • SD卡烧录镜像后插电脑不显示问题

    起因 起因是给sd卡刷入jetson nano的ROS机器人镜像 xff0c 之后读卡器插入电脑就不显示了 解决方法 xff1a xff08 1 xff09 Ubuntu下 xff1a https blog csdn net yandaqi
  • 【码农本色】用数据解读我的2014

    转眼2014就过去了 xff0c 不禁感叹又老了一岁的同时 xff0c 却发现已经快研究生毕业了 xff0c 趁着这个活动简单总结下2014 1 实习篇 2014年一月份拿到了人生第一个实习offer xff0c 在sony这样的大公司做a
  • Windows下QGroundControl开发问题汇总

    Windows下QGroundControl二次开发问题汇总 前段时间因为项目要求涉及了一下QGC地面站的二次开发 xff0c 开发难度先不提 xff0c 环境搭建遇到了很多问题 xff0c 几乎网上能搜到的问题都遇到了一遍 xff0c 在
  • 初识Git——Git、Github、Gitee的关系

    想要自己做一些有意义的东西 xff0c 甚至去参加一些互联网比赛 xff0c 就必须要学会使用Git 最初了解Git xff0c 同时听到了Git Github Gitee xff08 码云 xff09 xff0c 于是竭力想要弄明白三者之
  • UCOSII原理与应用----基本概念和任务

    1 实时操作系统是什么 实时操作系统 xff1a 能够使计算机系统在一个规定的时间内及时响应外部请求并及时控制设备和实时任务协调运行的操作系统 实时系统有两个基本要求 xff1a 1 实时系统的计算必须产生正确结果 xff0c 称逻辑或功能
  • UCOSII原理与应用----任务调度

    任务调度 xff1a UCOSII任务调度思想 xff1a 近似地每时每刻让优先级最高的就绪任务处于运行状态 具体上 xff0c 采用系统或用户任务调用系统函数及执行中断服务程序结束时来调用调度器 xff0c 以确定应该运行的任务并运行它
  • Docker的使用(docker pull拉取镜像失败问题解决)

    在docker拉取Nginx镜像过程中 xff0c 速度慢 xff0c 或者不成功 报错代码 xff1a Error response from daemon Get https registry 1 docker io v2 net ht
  • Hexo-Next 博客搭建

    lt span style 61 34 color 777777 34 gt title Hexo 搭配 GitHub 建立博客 选用 nexT 主题 date 2021 04 26 19 21 20 categories 兴趣 网站 博客
  • 进阶之路:Prometheus —— 技巧篇

    前言 入门篇 xff1a 从零开始 xff1a Prometheus 理解篇 xff1a 进阶之路 xff1a Prometheus 理解篇 本文记录了一些我在使用Prometheus的过程中的技巧 xff0c 以后还会随着使用的深入不定期
  • Linux系统如何离线安装软件

    Linux系统如何离线安装软件 前言 xff08 一堆废话 xff0c 不看也罢 xff09 功能需求具体操作 前言 xff08 一堆废话 xff0c 不看也罢 xff09 升学足足两个月了 xff0c 但是截至目前 xff0c 还没有认认
  • python中出现变量前后带下划线的是什么意思

    前后没有下划线的是公有方法 xff0c 前边有一个下划线的为私有方法或属性 xff0c 子类无法继承 xff0c 前边有两个下划线的 一般是为了避免于子类属性或者方法名冲突 xff0c 无法在外部直接访问 前后都有双下划线的为系统方法或属性
  • 普通程序员如何入门AI

    毫无疑问 xff0c 人工智能是目前整个互联网领域最火的行业 xff0c 随着AlphaGo战胜世界围棋冠军 xff0c 以及各种无人驾驶 智能家居项目的布道 xff0c 人们已经意识到了AI就是下一个风口 当然 xff0c 程序员是我见过
  • 扩展卡尔曼线性化近似与仿真

    扩展卡尔曼线性化近似与仿真 关于线性化直入主题 上例子小车运动方式 xff1a 沿着圆心在原点 半径为5的圆进行匀速圆周运动 xff0c 其角速度为w 即每次更新变化w个角度 仿真结果总结Matlab测试代码 xff08 EKF test
  • Ubuntu挂载硬盘

    Ubuntu挂载硬盘 1 查看磁盘信息命令 fdisk l 2 查看硬盘的UUID命令sudo blkid 3 mkdir创建挂载点WorkpaceP2和WorkpaceP2 4 永久性挂载分区 xff0c 修改分区文件 xff0c 输入如
  • FreeRTOS——创建任务

    FreeRTOS的设计小巧且简易 xff0c 整个核心代码只有3到4个C文件 xff0c 为了让代码容易阅读 移植和维护 xff0c 大部分的代码都是以C语言编写 xff0c 只有一些函数 xff08 多数是架构特定排班副程序 xff09
  • QT二次开发Kvaser

    前言 最近工作中需要自己去开发一个上位机 xff0c 上位机的通讯方式是CAN xff0c 利用Kvaser将CAN信息传递到上位机 xff0c 所以就需要二次开发Kvaser xff0c 保证上位机的正常通讯 原本是本着前人栽树 xff0
  • Ubuntu 安装ROS (解决rosdep init 失败)

    当前网络上有很多的ROS安装教程 xff0c 但是由于国内的网络问题 xff0c 所以在教程进行到rosdep init时 xff0c 会出现问题 xff0c 所以这篇博客主要解决这个问题 xff0c 以下为教程全部内容 xff1a 引用教
  • Ubuntu20.04部署编译LVI-SAM

    该动图来自LVI SAM开源地址 xff08 https github com TixiaoShan LVI SAM xff09 1 写在开头 1 1 为何诞生此文 近期在学习SLAM相关知识 xff0c 拜读了此篇经典论文LVI SAM