LeGO-LOAM学习

前言

在学习了LOAM之后,了解到LeGO-LOAM(面向复杂情况的轻量级优化地面的雷达里程计),进行了一个学习整理。

Github:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
论文:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/blob/master/Shan_Englot_IROS_2018_Preprint.pdf

系统概述

系统接收来自3D激光雷达的输入并输出6个DOF姿势估计。 整个系统分为五个模块。 首先是segmentation,使用单次扫描的点云,并将其投影到范围图像上进行分段(线)。 然后将分段的点云发送到feature extraction模块。 然后,激光雷达测距仪使用从前一模块中提取的特征来找到与连续扫描相关的变换。 这些特征在lidar mapping中进一步处理,将它们注册到全局点云图。 最后,transform integration模块融合了激光雷达测距和激光雷达测绘的姿态估计结果,并输出最终的姿态估计。 

接下来,我们看具体每一个模块完成的工作

一、Segmentation

首先将收到的一帧点云投影到一副1800*16的图像上(水平精度0.2°,16线lidar),每一个收到的点代表图像的一个像素,像素的值r_{i}表示相应的点p_{i}到sensor的欧式距离

完成图像化之后得到一个矩阵,对矩阵的每一列进行估计(即完成对地面的估计),在分割之前进行地面点的提取。可能代表地面的点被标记为地面点而不用于分割。

然后,将基于图像的分割方法应用于距离图像以将点分组为多个聚类。同一类的点具有相同的一个标签(地面是较为特殊的一类);同时,为了快速可靠地完成特征提取,忽略少于30个点的类。

完成这一步之后,图像里只保留了可能代表大物体的点,然后记录下点的三个值:(1)类的标签;(2)点在矩阵中的坐标(x,y);(3)点的值即r_{i} 在接下来的模块里使用。

二、Lidar Odometry

首先是特征点的提取,方法与LOAM中的相似,只是进行特征提取的点云是Segmentation处理之后得到的点云。

为了从所有方向均匀地提取特征,作者将图像水平划分为几个相等的子图像。 然后我们基于它们的平滑度c对子图像的每一行中的点进行排序。然后通过设定的阈值c_{th}来判定平面点或者角点。效果如下图:

接下来进行了LOAM中没有的操作,即作者认为子图像中的每一行具有最大c值的edge特征点,其不属于地面; 类似地,子图像中的每一行具有最小c值的平面特征点一定是地面点。处理之后效果如下:

三、Lidar Odometry

Lidar Odometry模块估计两次连续扫描之间的传感器运动。 通过执行point-edge和point-plane扫描匹配找到两次扫描之间的转换。具体方法采用的与LOAM中一致。但在后续步骤中,作者做了一些改进。

1)Label matching

这个时候就用到了在Segmentation中记录下的类的标签(label)。然后在配准过程中,对任意一点的配准只在标签相同的点里进行匹配。例如,平面点只考虑标记为地面点的点,边缘点只考虑其他标记为大物体的点。

作者以这种方式查找对应关系有助于提高匹配准确性。 换句话说,更可能在两次扫描之间找到相同对象的匹配对应关系。 这个过程也缩小了对应点的潜在对应点。

2)Two-step LM Optimization

本文采用两步得到最佳变换:(1)通过配准平面点来得到[t_{z},\theta _{roll},\theta_{pitch}](2)然后在以[t_{z},\theta _{roll},\theta_{pitch}]为约束的情况下,通过配准边缘点来来估计[t_{x},t_{y},\theta_{yaw}]。虽然在第一步中也能估计[t_{x},t_{y},\theta_{yaw}],但它们不够准确而且不用在第二步。

通过使用两步优化方法,可以实现类似的精度,同时计算时间减少约35%。

四、Lidar Mapping

Lidar Mapping模块中,将特征点与周围点云图进行配准,以进一步优化姿势变换,但以较低频率运行。具体细节与LOAM相似。

LeGO-LOAM的主要不同之处在于如何存储最终点云图。LeGO-LOAM选择存储每一个特征点集,而不是单一的点云图。

M^{t-1}是保存所有先前特征点集的集合。在进行扫描时,M^{t-1}中的每个特征集也与传感器的位姿相关联。这样,我们可以根据M^{t-1}来得到周围点云图(surrounding point cloud map)\bar{Q}^{t-1}:第一种方法,通过选择通过选择传感器视场中的特征点集来获得\bar{Q}^{t-1};为了简单起见,选择(特征点集关联的)传感器位姿在传感器当前位置100米范围内的特征点集。然后将所选择的特征点集转换并融合到单个周围的地图中,从而得到\bar{Q}^{t-1}

作者还将位姿图SLAM集成到LeGO-LOAM中。 每个特征点集的传感器位姿可以被建模为位姿图中的节点。特征点集可以视为此节点的传感器测量值。由于Lidar Mapping模块的姿态估计漂移非常低,假设在短时间内没有漂移。通过这种方式,可以通过选择最近的一组特征点集来形成\bar{Q}^{t-1}。然后,可以使用在L-M优化之后获得的变换来添加新节点与\bar{Q}^{t-1}中的所选节点之间的空间约束。可以通过执行闭环检测来进一步消除该模块的漂移。在这种情况下,如果在当前特征点集与使用ICP的先前特征点集之间找到匹配,则会添加新约束。然后通过将位姿图发送到优化系统来更新传感器的估计位姿。

 

运行结果如下

在这里插入图片描述

具体安装测试移步LeGO-LOAM初探:原理,安装和测试

五、闲谈

对论文的学习到此告一段落,大概了解了论文作者的思路以及该算法在LOAM基础上的修改。。。。。。

由于最近比较忙,没有时间详细阅读代码以配合理解论文,后续再补上。。。。。。

 

顺带自捞一下关于LOAM学习的Blog:

LOAM_velodyne学习(一)

LOAM_velodyne学习(二)

LOAM_velodyne学习(三)

LOAM_velodyne学习(四)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24256.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐高大颗粒作品10:滑板车的搭建

温馨提示 如果你喜欢本文,请点击收藏、在看并分享到朋友圈,想要获得更多乐高大颗粒图纸,请点击蓝字关注“Scratch青少儿编程课堂”,不定期更新更多优质作品。 ⭐ 详细步骤图 -end- 乐高大颗粒作品9:水井的搭建 2021-01…

乐高打印机robotc

目录 一、实验原理 二、实验目的 三、实验内容 四、实验器材(设备、元器件) 五、实验步骤 六、实验数据及结果分析 七、实验结论 八、总结及心得体会 九、对本实验过程及方法、手段的改进建议 代码附录 温馨提示 一、实验原理 1.取模&#x…

乐高大颗粒作品6:打地鼠的搭建

温馨提示 如果你喜欢本文,请点击收藏、在看并分享到朋友圈,想要获得更多乐高大颗粒图纸,请点击蓝字关注“Scratch青少儿编程课堂”,不定期更新更多优质作品。 ⭐ 打地鼠第一种搭建方法(曲柄) 打地鼠第二种搭…

LEGO® Education BricQ 乐高教育发布BricQ趣动系列套装

乐高教育今日宣布其发布两款无需额外技术辅助,寓学于乐的动手实践式STEAM学习解决方案,LEGO Education BricQ趣动系列套装。此次发布的两款解决方案均以体育运动为主题,在物理科学学科教学中通过实际场景应用,帮助学生们以有趣且独…

如何搜索相似的图片,如何通过识别图像搜索图片

最近有一张图片,想搜索这张图片的来源,搜索图片里的内容也没有搜索出来。比如搜索一个明星的照片,输入名字可以出来很多,但是有了图片想知道这个图片更多的信息,或者类似的图片,怎么搜索呢。 百度提供了一个…

搜索引擎(包括图片搜索)

转自:http://blog.csdn.net/v_july_v/article/details/6827391 1、什么是搜索引擎 搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。因特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪…

安卓性能测试(三):耗电量 (batterystats)

使用条件: android 5.0及以上系统 (在6.0及以上系统的数据更详细) 使用方法: 1、打开电池数据获取 adb shell dumpsys batterystats --enable full-wake-history 2、数据重置 adb shell dumpsys batterystats --reset 3、拔掉…

BatteryStatsService电池电量统计服务源码分析

BatteryStatsService主要负责电池电量的统计信息,首先我们简单的看下电量统计服务的启动过程。 BatteryStatsService启动过程 从BatteryStatsService的启动时序图可以看出,BatteryStatsService服务是在ActivityManagerService服务中启动的 1. 在SystemSe…

android 4.4 batteryservice 电池电量显示分析

转载地址:http://blog.csdn.net/daweibalang717/article/details/40615453 最近工作接触到这么的东西,这是我对整个电池管理方面Java 层的分析。如果想了解底层的话,请看我的博客: android 4.4 电池电量管理底层分析(C\C层) &a…

Battery Historian分析手机耗电神器

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.安装Battery Historian 2.收集Batteryst…

卡尔曼滤波预测应用python实践

1. 什么是卡尔曼滤波 最佳线性滤波理论起源于二十世纪40年代美国科学家Wiener和前苏联科学家KOnMoropOB等人的研究工作,后人统称为维纳滤波理论。60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论…

BatteryStatsService电池电量统计服务分析

BatteryStatsService主要负责电池电量的统计信息,首先我们简单的看下电量统计服务的启动过程。 BatteryStatsService启动过程 从BatteryStatsService的启动时序图可以看出,BatteryStatsService服务是在ActivityManagerService服务中启动的 1. 在SystemServer中startBootstra…

使用Battery Historian采集android耗电数据

一、简介 Battery Historian是由Google提供的查看电量相关信息及事件的工具,Battery historian还可以上传bugreport文件,分析用户手机中App的电池耗电情况。详见:GitHub - google/battery-historian: Battery Historian is a tool to analyz…

利用XGBoost实现短期电力负荷预测

💥 项目专栏:【机器学习项目实战案例目录】项目详解 + 完整源码 文章目录 一、利用XGBoost实现短期电力负荷预测二、数据集介绍三、将数据进行标准化四、形成训练数据五、划分训练集、测试集六、定义模型七、模型训练八、训练集、测试集验证九、网络搜索十、绘制结果🌠 『…

性能优化十四之电量分析工具Battery Historian使用

上篇博客中并没有讲解BatterHistory该如何使用,这篇博客就开始给大家进行介绍。 数据准备 battery-historian工具需要使用bugreport中的BatteryHistory 1. 先断开adb服务,然后开启adb服务 adb kill-server 这一步很重要,因为当我们开…

使用BatteryHistorian分析和优化应用电量

欢迎Follow我的GitHub, 关注我的CSDN. 本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html 在Android项目中, 较难监控应用的电量消耗, 但是用户却非常关心手机的…

Android 使用 Batterystats 和 Battery Historian 分析电池用量

Android 使用 Batterystats 和 Battery Historian 分析电池用量 专注于Android开发,分享经验总结,欢迎加入 Android开发中涉及到耗电量怎么分析呢 google官方提供了文档,链接:https://developer.android.com/studio/profile/batt…

GT的使用及耗电量统计的原理,对GT采集的电池数据采用VBA分析

注意:我测试时的ios操作系统是8.1,现在ios9.0及以后的耗电量比老的系统少了一个量级,官方说减少20%,我的手机在熄屏的耗电量减少了30%以上,亮屏幕减少不太多。 具体编译宏文件和GT采集的部分数据文件下载地址是&#…

Android电池功耗BatteryHistorian数据分析

BatteryHistorian的用法 BatteryHistorian环境搭建配置 官方文档 1.BatteryHistorian图形页面数据分析: Timeline: System stats: CPU runing: cpu运行的状态 Kernel only uptime: 只有kernell运行 Userspace wakelock: 用户空间申请的锁 Screen: 屏幕是否点亮 Top …

时间序列预测:用电量预测 07 灰色预测算法

🌮开发平台:jupyter lab 🍖运行环境:python3、TensorFlow2.x ----------------------------------------------- 2022.9.16 测验成功 ---------------------------------------------------------------- 1. 时间序列预测&#x…