如何运行loam和其衍生算法

article/2025/8/30 20:04:44

目录

一、如何运行loam和其衍生算法

1. ros的一些例如bag play和run、rviz一些操作。

2. ros的一些衍生算法的内容a-loam、lego-loam等一些介绍和优劣。

3. 点云地图的保存方法介绍,使用效果如何。

 3.1 第一种点云地图保存

 3.2 第二种点云地图保存

 3.3 Autoware文件的使用

二、点云地图查看:

三、pcd点云地图转ply格式


一、如何运行loam和其衍生算法

1. ros的一些例如bag play和run、rviz一些操作。

#运行loam算法的基本流程

参考github:GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM

 1.首先在Ubuntu系统上面安装对应的ros 16.04或者18.04,ROS Kinetic or Melodic版本(在系统中可以采用ctri+alt+t启动终端,输入对应的命令进行查看)。

 2.然后安装ceres非线性库。

 3然后安装PCL点云处理库。

 4.然后就是正式运行a-loam的流程。可以参考loam的编译安装运行

    cd ~/catkin_ws/srcgit clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.gitcd ../catkin_makesource ~/catkin_ws/devel/setup.bash

这里的Git clone kitti的数据集可能因为网络速度而中断,可以使用别人知乎或者其他的地方的bag文件保存到工作空间内,然后进行播放运行,详情这里提供了一个bag文件的链接可见:

链接:https://pan.baidu.com/s/1ESYafH6oY9zDxZ8cHPQz8Q 
提取码:hk9o

同时如何运行播放bag文件可见下文:

【ROS下使用Rviz加载可视化点云bag数据包】

2. ros的一些衍生算法的内容a-loam、lego-loam等一些介绍和优劣。

开源3D(视觉)SLAM算法汇总

序号算法
1

Cartographer

Cartographer支持2D和3D激光雷达的输入,实现机器人定位,并构建栅格地图。2D-SLAM:基于2D栅格地图,可以直接用于导航。3D-SLAM:基于hybridGrid,译为混合概率地图,我理解为3D栅格地图。 
2

hdl_graph_slam

能同时融合gps、imu和lidar三种传感器,不过相比Cartographer来说,它在资源消耗、代码复杂度和建图流程方面要精简不少。
3

Gmapping

Gmapping是ROS中最经典的基于粒子滤波的算法,缺点是无法构建大规模的地图。
4

LOAM

1. Cartographer主要解决室内问题,LOAM室内外都可以,但是没有回环检测

2. Cartographer的3D部分,更像是2D的扩展:即用2D的思路去做3D的事情。而LOAM则主要解决3D问题,其核心思路难以解决2D问题。

3. 提出了新颖的特征提取方式,角点和面点。

4. 根据时间戳,对旋转的雷达采集时间不一致进行运动补偿。

5. 融合了scan to scan(里程计部分) map to map(建图部分)的思想。

6. 没有回环检测。(发表时间较早,比谷歌Cartographer要早两年)

7. 不能处理大规模的旋转变换。

5

LeGO-LOAM

Lego-LOAM是TiXiao Shan发表在IROS2018的文章,其是以LOAM为框架衍生出的新算法,主要在于两点提升:轻量级 和 地面优化。

Segmentation:对点云进行分割,分割为地面和非地面区域;

Feature Extraction:基于分割后的点,和LOAM类似的算法提取出边缘点和平面点;

Lidar Odometry:基于提取的特征点,scan-to-scan推算两帧激光之间的相对位姿变换(使用两次LM优化),频率较高(10Hz);

Lidar Mapping: scan-to-map,构建全局地图,获得世界坐标系下的位姿,频率较低(2Hz)

Transform Intergration:与LOAM相同,实时利用世界坐标系下的位姿和两个时刻之间的相对位姿,更新各个时刻世界坐标系下的位姿。
 

6

LIO-SAM

LIO-SAM是TixiaoShan在2020年IROS发表的Lego-LOAM续作。实际上也是Lego-LOAM 的扩展版本,添加了IMU预积分因子和GPS因子。

使用关键帧Keyframe,使用关键帧进行匹配,丢掉了关键帧之间的帧。(阈值设置为1m和10度)

四种因子:

   1.IMU预积分因子;

   2.雷达里程计因子,激光“关键帧” 和 “之前的     N个关键帧构成的体素地图” 进行匹配;

   3.GPS因子: 当估计位姿的方差大于GPS位      置方差时加入;

   4.回环检测因子,由关键帧和候选关键帧相       邻的2m+1个关键帧帧图匹配得到。

   该方法使用多传感器融合的方法,利用因子       图优化,计算位姿;

     回环检测部分基本和Lego-LOAM的特点一致,即不具备重定位能力(该方法前提是需要知道自己的大致位置,和历史中附近的位置进行匹配。
 

7

S-LOAM

8

M-LOAM

9

livox-loam

10

Livox-Mapping

11
12
13
14
15
16

1. LOAM缺点:

没有回环检测 ;计算时间复杂度较高,基于三维空间中的位姿进行优化;

户外可能受到各种噪声影响,例如树上摇晃的树叶,地上的杂草。而这些点未必会重复出现在前后两帧激光中。而错误的特征点将会影响位姿精度。

LOAM需要提取平面点和边缘点,由于车体上下颠簸,竖直维度提取的平面点很容易造成误差。

2. 因此Lego-LOAM的贡献:1.着重于解决一些非城市化道路或非平整道路上LOAM存在的问题。2.轻量化,改进算法,使其在TX2上也可以实时运行。

3. Lego-LOAM有一个显著的缺陷——依赖地面。如果用无人机,那么就难以确定地面了。 当然论文作者提到,对于无人机,则不提取地面点,直接就像LOAM中那样正常提取边缘点和平面点。但是我认为这样算法的核心优势就丢掉了。
 

3. 点云地图的保存方法介绍,使用效果如何。

 图1 当时跑lego-loam算法开的终端效果

1.首先是在打开一个终端:输入roscore

2.然后是使用rostopic查找点云播放主题,方便使用rviz的时候进行订阅。

3.然后是输入roslaunch roslaunch kitti_2011_09_26_drive_0001_synced.bag(这里使用的是一个包的文件,打开可以使用其他录制的包文件。)

4.是使用rosbag play 包的名称(后面加上 -l 就是循环播放的意思 )

5.最后是使用rosrun rviz rviz()(然后是打开rviz之后订阅你的主题文件,完成一个发送和接受的过程,有些人用的是rviz rviz)

  一些常用的rosbag操作命令

  1.Rosbag play --pause bagFile01.bag

  暂停播放,等待按空格开启播放:

   2.Rosbag play --clock bagFile01.bag

  播放录制文件时顺带显示录制文件的时间戳:

  3.Rosbag play -i bagFile01.bag

  立即播放录制文件,不再等待0.2s了:

  4.Rosbag play bagFile01.bag bagFile02.bag …

  播放多个录制文件:

   5.Rosbag play --pause bagFile01.bag

   暂停播放,等待按空格开启播放:

 1.3.1 第一种点云地图保存

 #运行A-LOAM(首先使用终端需要使用 roscore 命令启动 ros
         

1. roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch(该行表示在另起一个终端,定位到loam算法的位置,最好是在你的工作空间执行)
 

#另起终端运行rosbag
 2.rosbag play xxx.bag
 
#另起终端用bag_to_pcd方法保存点云图
   3.rosrun pcl_ros bag_to_pcd xxx.bag /laser_cloud_surround pcd

运行结束,可以看到生成了一个pcd文件夹,将里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。

 3.2 第二种点云地图保存

 #运行A-LOAM
1. roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
 
 #另起终端运行rosbag
2. rosbag play xxx.bag
 
 #另起终端,用pointcloud_to_pcd方法保存点云图
 3.mkdir pcd
    cd pcd
    rosrun pcl_ros pointcloud_to_pcd input:=/laser_cloud_surround

 运行结束,可以看到生成了一个pcd文件夹,将里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。

3.3 Autoware软件的使用

      注:rosbag文件就是可以用来播放包文件实时显示,但是无法保存实时建立的地图,gmapping对于小车绕避障碍物比较有效果,但是建立的是二维的地图,我们这里应该是在三维的空间中进行处理的。这里我们采用的是autoware中进行构建完整的地图。

  1.安装Autoware Autoware安装教程(里面包含map的建图过程,跟师兄上次给我看的一样,然后里面包含着详细的操作流程)

安装成功后见下图使用:(Autoware操作手册:这个是一开始我一直搞不懂的问题,如何保存建图)官网操作视频

在这里插入图片描述

 图2~4

图片太多没有逐一截取,大家可以在csdn和b站上面找到对应的教程和实用方法。

       2.lego-loam和autoware一起使用方法和配置(该方法可以用来借鉴如何一起使用)

二、点云地图查看:

pcl_viewer xxx.pcd

三、pcd点云地图转ply格式

pcl_pcd2ply xxx.pcd xxxxxxx.ply

当我们需要用第三方软件(MatLab/MeshLab)对点云地图进行处理时就需要将pcd转为ply,其中MeshLab必须使用由pointcloud_to_pcd方法创建pcd转成的ply格式点云!


http://chatgpt.dhexx.cn/article/ybaqxp0y.shtml

相关文章

Loam livox 论文翻译和总结

Loam livox 论文翻译和总结 主要贡献一.固态激光雷达的特点1. 小FoV2. 不规律的扫描模式3. 非重复扫描4. 运动模糊 二. 特征点提取和筛选1. 3D点的筛选2. 特征提取 三. 迭代姿态优化1.边缘点残差(Residual of edge-to-edge)2. 平面点的残差(Residual of plane-to-pl…

对LOAM算法原理和代码的理解

LOAM概况 V-LOAM和LOAM在KITTI上的排名一直是前两名。 LOAM在KITTI上的排名 原始LOAM代码(带中文注释)的地址:https://github.com/cuitaixiang/LOAM_NOTED 作为教学用的A-LOAM代码地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM使用ceres库来做…

LOAM论文阅读

LOAM是Ji Zhang提出的使用激光雷达进行实时建图的算法,即Lidar Odometry and Mapping in Real-time。 Abstract 提出了一个用移动在6自由度的两轴激光雷达实现实时的里程计和建图的算法。由于距离测量值的不同时性和运动估计时产生的畸变导致点云错误匹配。这里作…

LOAM笔记及A-LOAM源码阅读

转载出处:LOAM笔记及A-LOAM源码阅读 - WellP.C - 博客园 导读 下面是我对LOAM论文的理解以及对A-LOAM的源码阅读(中文注释版的A-LOAM已经push到github,见A-LOAM-NOTED),最后也会手推一下LOAM源码中高斯牛顿法&#xf…

LOAM算法详解

激光SLAM 帧间匹配方法: Point-to-Plane ICPNDTFeature-based Method 回环检测方法: Scan-to-ScanScan-to-Map LOAM创新点 定位和建图的分离: 里程计模块:高频低质量的帧间运动估计建图模块:低频高质量的用于点云…

loam 框架流程描述

前端流程(scanRegistration.cpp) 多线激光雷达即有多个激光发射器同时工作,如常见的 Velodyne16,就是共有 16 个激光发射器,一般这些发射器竖排排列,然后一起水平旋转。 激光雷达在一定的时间内旋转一圈,即一帧的点云数据。值得注…

LOAM 梳理

LOAM 梳理 本篇文章对 LOAM 框架进行宏观的解析,暂不涉及内部具体的实现原理。 整个流程 整个 LOAM 框架分为三个主要部分,分别为 Registration(特征提取)、Odometry(特征匹配)和 Mapping(建…

LOAM 原理及代码实现介绍

文章目录 LOAM 原理及代码实现介绍LOAM技术点LOAM整体框架退化问题代码结构 LOAM 原理及代码实现介绍 paper:《Lidar Odometry and Mapping in Real-time》 LOAM的参考代码链接: A-LOAM A-LOAM-Notes LOAM-notes 使用传感器介绍: 如果没有电机旋转&am…

学习LOAM笔记——特征点提取与匹配

学习LOAM笔记——特征点提取与匹配 学习LOAM笔记——特征点提取与匹配1. 特征点提取1.1 对激光点按线束分类1.2 计算激光点曲率1.3 根据曲率提取特征点 2. 特征点匹配2.1 scan-to-scan中的特征点匹配2.2 scan-to-map中特征点匹配 3. 补充 学习LOAM笔记——特征点提取与匹配 兜…

Loam算法详解(配合开源代码aloam)

参考论文:LOAM: Lidar Odometry and Mapping in Real-time 代码:A-LOAM Ubuntu 18.04 ROS Melodic eigen 3.3.4 PCL 1.8.1 ceres 2.0 A-LOAM 配置 LOAM算法是激光slam中一个经典的开源框架,结合qin tong 博士的开源代码a-loam&#xff…

无人驾驶学习笔记 - LOAM 算法论文核心关键点总结

目录 1、框架 2、特征点提取 3、点云去畸变 4、帧间匹配 特征关联与损失函数计算 a 线特征 b 面特征 5、运动估计 6、建图 7、姿态融合 8、LOAM 优劣势 9、参考连接 1、框架 loam框架核心是两部分,高频率的里程计和低频率的建图。两种算法处理。里程计通…

LOAM简介

LOAM 文章目录 LOAMLOAM系统流程1、特征提取(1)按线数分割(2)计算曲率(3)删除异常点(4)按曲率大小筛选特征点 2、帧间匹配(1)特征关联与损失函数计算&#xf…

SLAM算法 -LOAM框架分析(一)

LOAM框架分析 算法简介1 激光里程计(高频率)1.1 计算曲率1.2 筛选特征1.3 问题建模1.3.1 损失函数1.3.2 运动补偿 1.4 优化求解1.5 定位输出 2 环境建图(低频率)2.1 问题模型2.2 PCA特征 参考文献 算法简介 LOAM的整体思想就是将复杂的SLAM问题分为:1. 高频的运动估…

顶级高手常用的16个思维模型

“养成一个掌握多元思维模型的习惯是你能做的最有用的事情”,投资家、巴菲特的黄金拍档查理 芒格认为:“思维模型是你大脑中做决策的工具箱。你的工具箱越多,你就越能做出最正确的决策。”与您分享查理芒格的12种思维模型,对做决…

100种思维模型之大脑系统思维模型-52

上世纪60年代,美国神经学家保罗 D 麦克莱恩(Paul D. MacLean)首次提出“三脑一体”假说,他认为人的大脑是蜥蜴-松鼠-猴子合体的隐喻,代表了进化发展不同阶段的遗传。 复旦大学管理学院的项保华教授对此有一个精彩的总结…

思维模型 SWOT分析

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 一个技术岗位想转产品经理(个人职业规划SWOT的应用),做的SWOT分析,进而可以量化自己转型的成本: 小王想在自己的居住小…

【转载】100个思维模型(不一定都适用,各取所需)

世界上最有智慧的人是怎样理性思考的?他们在商业活动和个人生活中是如何做决策的? 95岁的智慧老人查理芒格的“多元思维模型”,相信大家都不陌生。 他提倡要学习在所有学科中真正重要的理论,并在此基础上形成所谓的“普世智慧”&…

思维模型 GROW

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知 1 模型故事 推广故事:近期A公司开发一个产品活动的 促销方案,进行了简单的业务流程梳理后便开始了小范围的推广。首先让公司里的同事每人每天拉取20个新人。经过10天…

100种思维模型之细节效率思维模型-74

提及细节效率?也许很多人会有疑问,“效率”怎么跟“细节”挂上钩,注重“细节”了,还能有“高率”? 是的,细节能提高效率,注意某些细节,效率事半功倍。 01、何谓细节效率思维模型 一…

100种思维模型之长远思考思维模型-63

古语有云:“人无远虑,必有近忧!” 任正非说:不谋长远者,不足以谋一时! 长远思考思维,一个提醒我们要运用长远眼光,树立宏大目标,关注长期利益的思维模型 01何谓长远思考…