LIO-SAM 安装 编译 学习记录

2024-02-27 21:10
文章标签 编译 安装 学习 记录 sam lio

本文主要是介绍LIO-SAM 安装 编译 学习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.准备工作

1源码:

1.1加速mirrors / TixiaoShan / LIO-SAM · GitCode

1.2原版GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

2依赖

3编译

cd ~/catkin_ws/src
添加源码
cd..
catkin_make -j1  (第一次尽量-j1以来生成一些消息类型)//catkin_make

4编译遇到的问题(不断更新中)

  • 由于PCL版本1.10,将C++标准改为14:
#set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")
  • 找到OpenCV4.2.0包:
#find_package(OpenCV REQUIRED QUIET)
set(CMAKE_PREFIX_PATH "/usr/include/opencv4") 
find_package(OpenCV 4.0 QUIET)
  • /usr/bin/ld问题,修改:
# find_package(Boost REQUIRED COMPONENTS timer)
find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)
  • 找到utility.h中的:#include<opencv/cv.h>,修改为
// #include<opencv/cv.h>
#include <opencv2/imgproc.hpp>

5.运行示例数据集

5.1   source

source devel/setup.zsh
//若不行source devel/setup.bash

5.2运行launch文件:

roslaunch lio_sam run.launch

5.3播放数据包((频率可选,可调)

rosbag play park_dataset.bag -r 3

5.4播放数据集报错

(实验了,好使)

错误:ERROR: cannot launch node of type [robot_localization/ekf_localization_node]: robot_localization,安装功能包:

sudo apt-get install ros-noetic-fake-localization
sudo apt-get install ros-noetic-robot-localization

若报错:[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5],是GTSAM的问题,缺少一些库。它们已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量中:
 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

或者(没实验过)

1.报错[lio_sam_imuPreintegration-2]时

原因:库文件libmetis.so 的位置不在ros的工作区。在安装GTSAM库的时候默认安装的路径为/usr/local/lib/,当启动工作空间时,运行的库查找的路径为/opt/ros/ros版本/lib/。

cd /usr/local/lib/
sudo cp libmetis.so /opt/ros/melodic【自己的ros版本】/lib/

2.报错lio_sam_mapOptmization-5]时

原因:GTSAM库编译问题。

解决: 重新编译安装GTSAM库加上参数指令,cmake命令为:

cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..

5.5三个数据集测试

LIO_SAM实测运行,论文学习及代码注释[附对应google driver数据]_gitee liosam_Eminbogen的博客-CSDN博客

三个官方数据集:casual_walk_2.bag、outdoor.bag、west.bag。

如果运行casual_walk_2.bag不需要修改任何参数,使用默认文件即可;如果要运行其它两个数据集,则需要做如下修改:

imuTopic: "imu_raw"  改为 imuTopic: "imu_correct"
extrinsicRot 和 extrinsicRPY 设为单位矩阵

其中extrinsicRot表示imu->lidar的坐标变换, 用于旋转imu坐标系下的加速度和角速度到lidar坐标系下, extrinsicRPY则用于旋转imu坐标系下的欧拉角到lidar坐标下, 由于lio-sam作者使用的imu的欧拉角旋转方向与lidar坐标系不一致, 因此使用了两个旋转不同, 但是大部分的设备两个旋转应该是设置为相同的。
 

同时GitHub主页还提供了验证GPS的数据集(park.bag),如果要使用GPS数据,则需要进行如下修改:

gpsTopic: "odometry/gpsz"  改为 gpsTopic: "odometry/gps"  
useImuHeadingInitialization: false 改为 useImuHeadingInitialization: true   # 如果使用gps数据这里一定要设置为true,不然可能会跑飞

具体细节方面(有相对应的网盘连接)

见LIO-SAM:配置环境、安装测试、适配自己采集数据集_有待成长的小学生的博客-CSDN博客

5.6如果要保存点云及轨迹等结果,在参数文件params.yaml中打开并修改保存路径:

# 保存地图设置为true
savePCD: true                              # https://github.com/TixiaoShan/LIO-SAM/issues/3
# 设置地图保存路径
savePCDDirectory: "自己设置的路径"        # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

更改了配置文件后,还需更改一下_TIMEOUT_SIGINT参数,否则可能造成地图保存失败(这是由于ros会在_TIMEOUT_SIGINT秒后关闭ros节点,但是地图过大时,保存地图会花费一些时间,如果_TIMEOUT_SIGINT太小,很可能造成地图还未保存,节点就已经关闭了,所以需要适当调高_TIMEOUT_SIGINT值),具体方法如下:
 

sudo gedit /opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py

找到_TIMEOUT_SIGINT并调整数值(默认15s,我的参考值60s)

参考github:https://github.com/TixiaoShan/LIO-SAM/issues/3

park数据集可验证GPS松组合效果,如果要使用GPS数据,则需要进行如下修改:

gpsTopic: "odometry/gpsz"  改为 gpsTopic: "odometry/gps"  
useImuHeadingInitialization: false 改为 useImuHeadingInitialization: true

5.7后续问题解决

5.8.pcl-ros-vtk版本问题对不上

ubuntu18.04先安装对应版本ROS,,接着是对应版本的VTK,,最后安装PCL。

注意:ros-melodic里的pcl我对应的是pcl1.8;ros-noetic里对应的pcl为pcl1.10。

一.

对于ros细节步骤如下:

5.8.1对应版本安装

ubuntu18.04-------ros-melodic

5.8.2

配置软件库

 清华-阿里都可,那个快用那个

5.8.3可能出现的问题以及解决方案

1.设置安装源,(借鉴,具体可看原著,更详细Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)_鱼香ros安装_爱跑步的mango的博客-CSDN博客

避免后面会出现无法定位软件包的错误,这里ROS提供了国内的安装源,添加国内安装源命令

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2.设置密钥

  • 若密钥服务器hkp://ha.pool.sks-keyservers.com:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.net:80

已成功案例:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

3.更新Ubuntu 18.04 LTS的最新可用软件包列表

sudo apt update

...

但是会出现uodate不成功,百度(见隐藏文章)

http://t.csdn.cn/W8KEy

...有点懒了,就按照上述操作

ros安装成功

二.ROS已装背景下安装PCL和VTK,解决VTK和PCL_ROS冲突问题_pcl_ros安装_TwilightZrui的博客-CSDN博客

就成功了 。

致谢:转载+参考

1.

Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM_loam运行_ZARD帧心的博客-CSDN博客

2.

LIO-SAM运行报错[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5]解决_lio-sam编译时无法链接到map_花雨仙晨的博客-CSDN博客

3.Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)_鱼香ros安装_爱跑步的mango的博客-CSDN博客

4.

ROS已装背景下安装PCL和VTK,解决VTK和PCL_ROS冲突问题_pcl_ros安装_TwilightZrui的博客-CSDN博客

这篇关于LIO-SAM 安装 编译 学习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753607

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss