LIO-SAM学习与运行测试数据集

这篇具有很好参考价值的文章主要介绍了LIO-SAM学习与运行测试数据集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 说明

0.1 环境配置说明

环境配置: ubuntu18.04, ros1(ros-melodic)
注: 在ros1的kinetic, melodic, noetic(https://github.com/TixiaoShan/LIO-SAM/issues/206)上被测试过;
ros1的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/master
ros2的github代码: https://github.com/TixiaoShan/LIO-SAM/tree/ros2

0.2 LIO-SAM

论文:LIO-SAM:Tightly-coupled Lidar Inertial Odometry vis Smoothing and Mapping
是一个 实时激光雷达惯性里程计(lidar-inertial odometry)包。

0.3 系统架构

LIO-SAM学习与运行测试数据集

我们设计了一个系统,该系统可以维护两个图形,并且运行速度比实时快 10 倍。(比实时快10倍,实时是指的是激光雷达的频率吗?)
"mapOptimization.cpp"中的因子图 (the factor graph) 优化了激光雷达里程计因子和 GPS 因子 (lidar odometry factor and GPS factor)。该因子图在整个测试过程中始终保持不变。
"imuPreintegration.cpp"中的因子图优化了 IMU 和激光雷达里程计因子(IMU and lidar odometry factor)并估计了 IMU 偏差。该因子图会定期重置,并保证在 IMU 频率下的实时里程估计。

0.4 LIO-SAM youtube视频演示:

https://www.youtube.com/watch?v=A0H8CoORZJU
视频部分截图如下:

Rotation Dataset:

LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集

Walking Dataset:

LIO-SAM学习与运行测试数据集

LIO-SAM学习与运行测试数据集

Park Dataset:

LIO-SAM学习与运行测试数据集

LIO-SAM学习与运行测试数据集LIO-SAM学习与运行测试数据集

Campus Dataset:

LIO-SAM学习与运行测试数据集

LIO-SAM学习与运行测试数据集LIO-SAM学习与运行测试数据集

Amsterdam Dataset:

LIO-SAM学习与运行测试数据集

LIO-SAM学习与运行测试数据集LIO-SAM学习与运行测试数据集

stress test:

LIO-SAM学习与运行测试数据集

1. 编译与运行

1.1 依赖

ROS相关:

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher

1.2 gstam

先不要急着安装)使用apt方法安装方式如下:

sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev

之前用源码编译安装的,如下,这次就先不安装
https://blog.csdn.net/BIT_HXZ/article/details/127135551

1.2 安装

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

1.3 运行

(1) launch文件:

roslaunch lio_sam run.launch
如果出现报错:

[lio_sam_imuPreintegration-2] process has died [pid 1671, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_imuPreintegration __name:=lio_sam_imuPreintegration __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_imuPreintegration-2.log].
[lio_sam_mapOptmization-5] process has died [pid 1672, exit code 127, cmd /home/meng/subject/Lio_sam_ws/devel/lib/lio_sam/lio_sam_mapOptmization __name:=lio_sam_mapOptmization __log:=/home/meng/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_mapOptmization-5.log].

LIO-SAM学习与运行测试数据集

缺少一些库。它们已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量中解决了我的问题。

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

LIO-SAM学习与运行测试数据集

(2) 播放数据包:

rosbag play your-bag.bag -r 3

2 lidar和imu数据准备

2.1 准备lidar数据

用户需要准备正确格式的点云数据以进行点云校正(cloud deskewing),这主要在“imageProjection.cpp”中完成。

2.1.1 提供点云的时间戳

LIO-SAM 使用 IMU 数据执行点云校正. 因此,需要知道扫描中的相对点时间(the relative point time), 最新的 Velodyne ROS 驱动程序应直接输出此信息。在这里,我们假设点时间通道被称为"time"。点类型的定义位于"imageProjection.cpp"的顶部。"deskewPoint()"函数利用这个相对时间来获得这个点相对于扫描开始(the beginning of the scan)的变换。当激光雷达以 10Hz 旋转时,一个点的时间戳应该在 0 到 0.1 秒之间变化。
如果您使用其他激光雷达传感器,您可能需要更改此时间通道的名称,并确保它是扫描中的相对时间。

2.1.2 提供点所在环号(point ring number)

LIO-SAM 使用此信息在矩阵中正确组织点, 环号表示该点属于传感器的哪个通道。点类型的定义位于"imageProjection.cpp"的顶部, 最新的 Velodyne ROS 驱动程序应直接输出此信息。
同样,如果您使用其他激光雷达传感器,您可能需要重命名此信息。请注意,该软件包目前仅支持机械激光雷达。

2.2 准备imu数据

(1)imu准备

与最初的 LOAM 实现一样,LIO-SAM 仅适用于 9-axis IMU,它提供横滚、俯仰和偏航估计(roll, pitch, and yaw estimation)。横滚和俯仰估计主要用于将系统初始化为正确的姿态。当使用 GPS 数据时,偏航估计将系统初始化在正确的航向。
从理论上讲,像 VINS-Mono 这样的初始化程序将使 LIO-SAM 能够与 6 轴 IMU 一起工作。系统的性能很大程度上取决于 IMU 测量的质量。 IMU 数据速率越高,系统精度就越好。
我们使用 Microstrain 3DM-GX5-25,它以 500Hz 的频率输出数据。我们建议使用至少提供 200Hz 输出速率的 IMU。注意,Ouster 激光雷达的内部 IMU 是一个 6 轴 IMU。

(2)imu对齐alignment

LIO-SAM 将 IMU 原始数据从 IMU 帧转换为 Lidar 帧,遵循 ROS REP-105[ROS坐标系] 法则(x - 向前,y - 左,z - 向上)。为了使系统正常运行,需要在"params.yaml"文件中提供正确的外部转换(the correct extrinsic transformation)。之所以有两个extrinsic(是extrinsicRot和extrinsicRPY嘛?),是因为我的IMU(Microstrain 3DM-GX5-25)加速度(acceleration)和姿态(attitude)坐标不同。取决于您的 IMU 制造商,您的 IMU 的两个外在参数可能相同也可能不同
以作者的设置为例:
==>>需要设置 x-z 加速度(x-z acceleration)和陀螺仪负值(gyro negative)的读数来转换激光雷达坐标系(the lidar frame)中的 IMU 数据,这在 “params.yaml” 中由 “extrinsicRot” 表示。
==>>姿态读数的转变可能略有不同。 IMU的姿态测量q_wb通常是指IMU坐标系中的点到世界坐标系(例如ENU)的旋转。但是,该算法需要 q_wl,即从激光雷达到世界的旋转。所以我们需要从激光雷达到 IMU 的旋转 q_bl,其中 q_wl = q_wb * q_bl。为方便起见,用户只需在"params.yaml"中提供q_lb为"extrinsicRPY"(如果加速度和姿态坐标相同,则与"extrinsicRot"相同)。

(3)imu调试

强烈建议用户取消注释 “imageProjection.cpp” 的 “imuHandler()” 中的调试行并测试转换后的 IMU 数据的输出(会在终端打印输出)。用户可以旋转传感器套件以检查读数是否与传感器的运动相对应。可以在此处找到显示更正 IMU 数据的 YouTube 视频链接到 YouTube。
imu与雷达坐标系:
LIO-SAM学习与运行测试数据集

imu调试:

LIO-SAM学习与运行测试数据集

3 样例数据集

下载链接:https://drive.google.com/drive/folders/1gJHwfdHCRdjP7vuT556pv8atqrCJPbUq

LIO-SAM学习与运行测试数据集

3.1 可使用默认设置运行的数据集

(1)数据集

步行数据集–walking dataset
公园数据集–Park dataset
花园数据集–Garden dataset

(2)公园数据集

公园数据集用于使用 GPS 数据测试 LIO-SAM。该数据集由 Yewei Huang(https://robustfieldautonomylab.github.io/people.html) 收集。
要启用 GPS 功能,请将"params.yaml"中的"gpsTopic"更改为"odometry/gps"。在 Rviz 中,取消选中"地图(云)“并选中"地图(全局)”。还要检查"Odom GPS",它可以可视化 GPS 里程计。
可以调整"gpsCovThreshold"以过滤不良 GPS 读数。 “poseCovThreshold"可用于调整将 GPS 因子添加到图形的频率。例如,您会注意到 GPS 会不断修正轨迹,因为您将"poseCovThreshold"设置为 1.0。由于 iSAM 的重度优化(heavy optimization),建议播放速度为”-r 1"。

poseCovThreshold 保持为默认的25m^2时:

LIO-SAM学习与运行测试数据集

点云地图:

LIO-SAM学习与运行测试数据集

poseCovThreshold 设置为1m^2,并显示gps时:
LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集

LIO-SAM学习与运行测试数据集

3.2 需要配置参数的数据集

(1)旋转数据集–Rotation dataset
(2)校园数据集(large)–Campus dataset (large)
(3)校园数据集(small)–Campus dataset (small)

在这些数据集中,点云主题是"points_raw"。 IMU 主题是"imu_correct",它给出了 ROS REP105 (ros的坐标系参考标准)标准中的 IMU 数据。由于此数据集不需要 IMU 转换,因此需要更改以下配置才能成功运行此数据集:
==>>“config/params.yaml"中的"imuTopic"参数需要设置为"imu_correct”。
imuTopic: "imu_raw" # IMU data
==>>"config/params.yaml"中的"extrinsicRot"和"extrinsicRPY"需要设置为单位矩阵(identity matrices)。

  # extrinsicRot: [1, 0, 0,
  #                 0, 1, 0,
  #                 0, 0, 1]
  # extrinsicRPY: [1, 0, 0,
  #                 0, 1, 0,
  #                 0, 0, 1]

3.3 Ouster (OS1-128) 数据集–Rooftop dataset

(1)数据集描述

如果您使用默认设置,则无需更改此数据集的外部参数。请按照下面的 Ouster 说明配置包以使用 Ouster 数据运行。可以在 YouTube 上找到该数据集的视频:

LIO-SAM学习与运行测试数据集

(2)准备工作

硬件部分:
==>>使用外部 IMU。 LIO-SAM 不适用于 Ouster 激光雷达的内部 6 轴 IMU。您需要将 9 轴 IMU 连接到激光雷达并执行数据收集(data-gathering)。
==>>配置驱动程序。将 Ouster 启动文件中的"timestamp_mode"更改为"TIME_FROM_PTP_1588",这样您就可以为点云设置 ROS 格式的时间戳。
Config:
==>>将"params.yaml"中的"sensor"更改为"ouster"。
==>>根据您的激光雷达更改"params.yaml"中的"N_SCAN"和"Horizo​​n_SCAN",即N_SCAN=128,Horizo​​n_SCAN=1024。

注:Gen 1 和 Gen 2 Ouster:似乎不同版本的点坐标定义可能不同。请参阅问题 #94 进行调试。

(3)自己运行

一个终端:
roslaunch lio_sam run.launch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
另一个终端:
rosbag play your-bag.bag
运行效果:

LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集
LIO-SAM学习与运行测试数据集

全局地图:

LIO-SAM学习与运行测试数据集

(4)自我体会

可以清楚看出:数据集具有楼顶和地面两个平面,属于是多个平面了

3.4 Livox Horizon数据集–Livox Horizon

(1)说明:

请注意,固态激光雷达尚未经过 LIO-SAM 的广泛测试。这里也使用外部 IMU,而不是内部 IMU。对此类激光雷达的支持基于对机械激光雷达代码库的最小更改。需要使用定制的 livox_ros_driver 来发布 LIO-SAM 可以处理的点云格式。

(2)配置

请更改以下参数以使 LIO-SAM 与 Livox Horizo​​n 激光雷达一起工作:

    sensor: livox
    N_SCAN: 6
    Horizon_SCAN: 4000
    edgeFeatureMinValidNum: 1

(3)自己运行

LIO-SAM学习与运行测试数据集LIO-SAM学习与运行测试数据集

全局(点云)地图:

LIO-SAM学习与运行测试数据集

(4)自我体会

环境是不是选的不是很好?点云效果很乱
固态雷达不能和lio-sam很好地适应?

3.5 KITTI 数据集–2011_09_30_drive_0028

(1)数据集描述

数据集包括的话题和话题频率如下:

LIO-SAM学习与运行测试数据集

要使用其他 KITTI 原始数据生成更多包,您可以使用“config/doc/kitti2bag(之前的使用笔记:https://blog.csdn.net/BIT_HXZ/article/details/124319662)”中提供的 python 脚本。

(2)数据集外部参数修改

由于 LIO-SAM 需要高频 IMU 才能正常运行,因此我们需要使用 KITTI 原始数据(kitti raw data)进行测试。一个尚未解决的问题是 IMU 的内在特性是未知的,这对 LIO-SAM 的准确性有很大影响。下载提供的示例数据并在"params.yaml"中进行以下更改:

extrinsicTrans: [-8.086759e-01, 3.195559e-01, -7.997231e-01]
extrinsicRot: [9.999976e-01, 7.553071e-04, -2.035826e-03, -7.854027e-04, 9.998898e-01, -1.482298e-02, 2.024406e-03, 1.482454e-02, 9.998881e-01]
extrinsicRPY: [9.999976e-01, 7.553071e-04, -2.035826e-03, -7.854027e-04, 9.998898e-01, -1.482298e-02, 2.024406e-03, 1.482454e-02, 9.998881e-01]
N_SCAN: 64
downsampleRate: 2 or 4
loopClosureEnableFlag: true or false

(3)github参考建图效果

github参考图:

LIO-SAM学习与运行测试数据集

(4)自己运行

一个终端:
roslaunch lio_sam run.launch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
另一个终端:(注意不要带上 -r 3,可能是因为kitti数据量比较大,带上的话建图会乱)
rosbag play your-bag.bag

LIO-SAM学习与运行测试数据集

(5)自我体会

可以清楚看出:没有滤除动态目标

4 其他说明

4.1 params.yaml

  # Export settings
  savePCD: true                              
  savePCDDirectory: "/Downloads/LOAM/"   

修改输出参数为true会在:/Downloads/LOAM/文件夹下生成pcd文件:

LIO-SAM学习与运行测试数据集

终端输入 pcl_viewer xx.pcd 即可查看

5. github 问题搬运

5.1 [lio_sam_mapOptmization-5] process has died

github 高赞回答:
LIO-SAM学习与运行测试数据集

Okay, I have solved the problem.
Initially, I upzip and move the gtsam folder into my src folder of my workspace. Which I follow the step
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF …
sudo make install -j8
I also compile LIO-SAM afterwards.
and I encounter mapoptimization crashing, which is due to gtsam as mentioned by @TixiaoShan in the Readme.
So I rm gtsam from my workspace, put it inside my root folder instead and run
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF …
sudo make install -j8
at there.
The problem was resolved.文章来源地址https://www.toymoban.com/news/detail-415329.html

到了这里,关于LIO-SAM学习与运行测试数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM

    在我第一篇博文Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装的基础环境下跑通LOAM系列 首先按照上一篇文章已经安装好了ROS noetic、Eigen3.4.0、OpenCV4.2.0和PCL1.10等三方库,它们的安装不再赘述,另外文章中 使用的数据 已经在

    2024年02月06日
    浏览(52)
  • LOAM、Lego-liom、Lio-sam轨迹保存,与Kitti数据集真值进行评估

            首先需要保存轨迹,轨迹保存参考下面的代码,最好自己 添加一个节点 (如下图),用新节点来订阅和保存轨迹至txt文件,因为直接在算法的线程中加入此步骤我试了好像保存不了,好像是在不同线程间的参数传递格式的问题(也可能是我个人的问题)。     

    2023年04月08日
    浏览(32)
  • 在Ubuntu20.04系统上LIO-SAM跑KITTI数据集和自己数据集代码修改

    参考我的另一篇文章: Ubuntu20.04下的编译与运行LIO-SAM【问题解决】 因为liosam 要求输入的点云每个点都有ring 信息和相对时间time信息,目前的雷达驱动基本具备这些信息,但是早期的KITTI数据集不具备,所以代码要自己计算一下 ring和time。方法可以参考lego-loam中这部分内容,

    2024年02月01日
    浏览(35)
  • 3d激光SLAM:LIO-SAM框架---位姿融合输出

    LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 从全称上可以看出,该算法是一个紧耦合的雷达惯导里程计(Tightly-coupled Lidar Inertial Odometry),借助的手段就是利用GT-SAM库中的方法。 LIO-SAM 提出了一个利用GT-SAM的紧耦合激光雷达惯导里程计的框架。 实现了

    2023年04月20日
    浏览(30)
  • 《LIO-SAM阅读笔记》-为何要引入增量式里程计?

    前言: LIO-SAM在后端中同时维护着两个里程计,一个是增量式里程计,一个是优化后的里程计,其中优化后的里程计是经过imu、回环、gps因子图联合优化后的结果,是整个系统中最准确的位姿估计,那么为什么还需要维护增量式里程计呢? 以下是我的理解 ,不一定正确,如有

    2024年01月22日
    浏览(30)
  • Ubuntu20.04安装LeGO-LOAM和LIO-SAM

    Ubuntu20.04安装LIO-SAM真是挺折磨人的,填了一路的坑,在此记录分享一下,为大家安装编译算法提供一个全面的参考。 目录 1. GTSAM安装 1.1 GTSAM安装准备 1.1.1 目录/usr/local/lib下清理gatsam 1.1.2 目录/opt/ros/noetic/lib/下清理gtsam 1.2 GTSAM安装过程 2. LIO-SAM算法依赖项安装 3. LeGO-LOAM算法编

    2024年04月28日
    浏览(69)
  • 多传感器融合SLAM --- 10.LIO-SAM前端代码分析 imuPreintegration.cpp

    目录 0.流程图 1.main函数 2 IMU预积分类 2.1 代码详细注释 2.2 分块讲

    2024年02月07日
    浏览(30)
  • Ubuntu 20.04 与 ROS noetic安装 gtsam 编译 LIO-SAM 的适配版本

    本文简介在 Ubuntu 20.04 下以 ROS noetic 为基础安装 GTSAM 并成功编译 LIO-SAM 的适配版本。 安装前请检查cmake 和boost版本,Ubuntu 20.04.06自带cmake(= 3.0) 和libboost-all-dev(= 1.65)已满足要求。编译LIO-SAM适配版本的其它依赖包也已满足要求(主要是PCL, Eigen和OpenCV等, 详见其CMakeList)。 当前

    2024年02月13日
    浏览(44)
  • 6.如何利用LIO-SAM生成可用于机器人/无人机导航的二维/三维栅格地图--以octomap为例

    目录 1 octomap的安装 2 二维导航节点的建立及栅格地图的构建 3 三维栅格地图的建立         这里采用命令安装:         这样子就是安装好了。         我们进入liosam的工作空间下的launch文件夹:         新建一个launch文件,就叫octomap2D.launch         将下面的

    2024年01月16日
    浏览(31)
  • lego_loam、lio_sam运行kitti(完成kitti2bag、evo测试)

    目录 一、工作空间的创建,功能包的编译等等 二、lego_loam运行、记录traj轨迹 三、evo对比使用 四、kitti2bag转换 五、lio_sam https://blog.csdn.net/qq_40528849/article/details/124705983 1.运行 launch 文件 roslaunch lego_loam run.launch 注意:参数“/ use_sim_time”,对于模拟则设置为“true”,对于使用

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包