【激光SLAM】激光的前端配准算法

这篇具有很好参考价值的文章主要介绍了【激光SLAM】激光的前端配准算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在激光SLAM中,前端配准(Frontend Registration)是实现定位和地图构建的关键步骤之一。它的作用是将当前帧的激光扫描数据与先前帧(或参考帧)的激光扫描数据进行配准,以获取它们之间的相对位姿变换
通过前端配准,激光SLAM系统可以实现对机器人在环境中的位置和姿态的估计,以及构建准确的地图。前端配准的准确性对于后续的位姿图优化、环路闭合和地图更新等步骤具有重要影响,因此它是激光SLAM中的关键组成部分。

  • 前端配准在视觉内叫做Tracking或者帧间匹配,对激光SLAM是有非常大的影响的
  • 帧间匹配不一定说的是前后两帧进行匹配,也可以是任意帧之间进行匹配
  • 是一个Map—>Scan的过程,一个Scan和一个Map去匹配的过程

ICP匹配方法(Point to Point)

基本目的: 两个点云进行配准
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
数学描述:
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

设xi和pi是匹配的,即两个点云中的点打向的是物理空间中的同一个点。因此,我们需要找到R和t,使得两个匹配点的距离最小:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

已知对应点的求解方法(解析解):

ux表示点云集合X的几何中心(基准位姿/平均位姿),up表示点云集合P的几何中心(基准位姿/平均位姿),随后把每个点云都移动到平均位姿来。
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
对W进行SVD分解:
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
则ICP的解为:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

效果如下:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
已知对应点的求解方法——证明:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

未知对应点的求解方法:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

PL-ICP匹配方法(Point to Line)

PL-ICP 实际就是point-to-line ICP,是点到线的ICP方法。相比于传统的ICP方法,即点到点的匹配方法,PL-ICP的流程其实和ICP的流程是一样的,不同的地方在于ICP是找最近邻的一点,以点与点之间的距离作为误差,而PL-ICP是找到最近邻的两点,两点连线,是以点到线的距离作为误差。

ICP的匹配算法的缺点:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

假设棕色那条线是实际场景中的墙,蓝色是t时刻的扫描点,红色的点是t+1时刻的扫描点,如果按照ICP的思想,t+1时刻的1点会匹配到t时刻的靠上的点(因为欧式距离更短),但是1点的正确匹配点应该是靠下的点,所以这个匹配就是错误的,所引起的额外的匹配误差是由于ICP本身的算法引起的。因为匹配算法强制的认为他们是空间中的同一个点,但是对于激光雷达,前后两帧的激光数据很有可能是打到不同的物体或者说是同一物体的不同部位(类似ICP在点云配准中,前后是匹配的),所以这是ICP算法的缺点。

PL-ICP算法的原理:

室内环境通常是结构化环境,即譬如墙壁等有众多规则的曲面,而激光数据实际是对实际环境中曲面的离散采样,因此,最好的误差尺度就是点到实际曲面的距离。我们目前通过传感器已经知晓激光点云数据,实际的重点就是对环境中曲面的恢复。PL-ICP 采用分段线性的方式近似替代曲面,从而获得激光点到实际曲面的距离。

所以最好的方法就是计算离最近邻两点组成的直线的距离,如下图:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

数学描述:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

如(2)式,是ICP算法的目标函数数学表达式;(3)式PLICP算法的目标函数表达式,比ICP多了一个直线的法向量。

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端可以看做是t时刻的参考帧,【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端看做是k+1时刻经过R和t变化到t时刻的当前帧,这两个之间的差值是一个向量。那么ICP的算法求的就是误差向量1的模的平方,而PL-ICP算法就是秋误差向量1在法向量ni上的投影(也就是到直线的距离)。目标函数就是求所有这些距离和的最小值,从而得到R和t。

算法流程:
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

跟ICP的区别:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

基于优化的匹配方法(Optimization-based Method)

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

优化方法的求解

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

地图双线性插值

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

拉格朗日插值法——一维线性插值

插值的定义:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

拉格朗日插值方法:

实现上述插值的一种方法,主要特点为把插值多项式表示成基函数的线性组合:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

基函数li(x)满足以下条件:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
由于Ln(x)存在且唯一,所以只需要表示出Ln(x)的其中一种形式即可,因为各形式之间等价,表示的都是Ln(x)。

拉格朗日插值方法——基函数构造:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

拉格朗日插值方法——双线性插值:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

地图插值:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

相关方法(Correlation-based Method)

帧间匹配似然场

  • 高度非凸,存在很多的局部极值
  • 对初值非常敏感
  • 进行暴力匹配,排除初值影响
  • 通过加速策略,降低计算量
  • 计算位姿匹配方差

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

算法流程

  1. 构建似然场
  2. 在指定的搜索空间内进行暴力搜索,计算每一个位姿的得分
  3. 根据步骤2中位姿的最高得分,计算本次位姿匹配的方差

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

位姿搜索

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

分枝定界算法

  • 常用的树形搜索剪枝算法
  • 求解整数规划问题
  • 解的数量为有限个
  • 把最优解求解问题转换为树形搜索问题,根节点表示整个解空间,叶子节点表示具体的解,中间的节点表示解空间的某一部分子空间

分枝: 即根节点表示整个解空间空间,深度为1的节点表示解空间的子空间,深度为2的节点表示深度1空间的子空间,这样层层划分,直到划分到真实解,也就是叶子节点为止。

定界: 对于搜索树种的每一个节点,确定以该节点为根节点的子树的界。对于最小值问题,确定下界;对于最大值问题,确定上界。(SLAM中为上界)

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
分枝定界在相关方法的加速作用:

【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端
【激光SLAM】激光的前端配准算法,激光SLAM,激光SLAM,SLAM,前端

引用

点云配准方法–PLICP文章来源地址https://www.toymoban.com/news/detail-827004.html

到了这里,关于【激光SLAM】激光的前端配准算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 3d激光slam建图与定位(1)_基于ndt算法定位

    节点图 匹配精度 帧率做到100ms左右,纯ndt在2-3cm的位置误差 ,角度误差在0.2度左右 一.代码实现流程 二.ndt算法原理 一.该算法定位有三个进程文件 1.map_loader.cpp用于点云地图的读取,从文件中读取点云后对这个点云地图进行旋转平移后发布点云地图到ros 2.points_downsampler.cpp对雷

    2024年02月14日
    浏览(41)
  • 测试新开源的激光SLAM回环检测算法“STD A Stable Triangle Descriptor for 3D place recognition”

    测试新开源的激光SLAM回环检测算法“STD: A Stable Triangle Descriptor for 3D place recognition” 最近林博新开源了一个回环检测算法,我将其集成到自己常用的建图定位框架中检测效果。 原算法开源地址:“GitHub - hku-mars/STD: A 3D point cloud descriptor for place recognition” 自己测试的代码地址

    2024年02月01日
    浏览(43)
  • 激光雷达点云与单幅图像配准/映射变为彩色点云

    如果没有对pcl库进行配置,则需要先配置pcl:可重复使用的VS-PCL1.10.1环境配置 本文提供激光雷达采集的点云与单幅二维图像之间的配准方法,目的是实现点云到图像之间的映射,同时也可以将点云转变为彩色点云。 数据准备: point_cloud: 激光雷达点云数据; img: 与激光雷达对

    2023年04月08日
    浏览(34)
  • 从零入门激光SLAM(一)——什么是SLAM

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月05日
    浏览(37)
  • 移动机器人激光SLAM导航(五):Cartographer SLAM 篇

    参考 Cartographer 官方文档 Cartographer 从入门到精通 1.1 前置条件 推荐在刚装好的 Ubuntu 16.04 或 Ubuntu 18.04 上进行编译 ROS 安装:ROS学习1:ROS概述与环境搭建 1.2 依赖库安装 资源下载完解压并执行以下指令 https://pan.baidu.com/s/1LWqZ4SOKn2sZecQUDDXXEw?pwd=j6cf 1.3 编译 本文只编译 cartographer

    2024年02月21日
    浏览(43)
  • 【3D激光SLAM】Livox-mid-360激光雷达ip配置

    写在前言:请认真阅读mid360官方手册,第一次配雷达ip真的很多坑 参考资料 mid360雷达sdk:https://github.com/Livox-SDK Livox Viewer2:https://www.livoxtech.com/downloads LIO-Livox:https://github.com/Livox-SDK/LIO-Livox Livox-Mapping:https://github.com/Livox-SDK/livox_mapping 首先在Ubuntu20.04下将本机IP地址置于和雷达

    2023年04月23日
    浏览(52)
  • 从零入门激光SLAM(八)——ROS常用消息

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月12日
    浏览(35)
  • 超全!SLAM论文与开源代码汇总(激光+视觉+融合)

    1.代表性视觉SLAM算法论文与开源代码总结 2.代表性激光SLAM算法论文与开源代码总结 3.代表性激光-视觉融合SLAM算法论文总结 激光-视觉-IMU-GPS融合SLAM算法理论与代码讲解: https://mp.weixin.qq.com/s/CEJPWHVAnKsLepqP3lSAbg 参考文献 [1] CADENA C, CARLONE L, CARRILLO H, et al. Past, present, and future of

    2024年02月05日
    浏览(41)
  • 3D激光SLAM:LeGO-LOAM论文解读---激光雷达里程计与建图

    激光雷达里程计模块的功能就是 :估计相邻帧之间的位姿变换。 估计的方式 :在相邻帧之间做点到线的约束和点到面的约束 具体的方式和LOAM一样 针对LOAM的改进 1 基于标签的匹配 在特征提取部分提取的特征点都会有个标签(在点云分割时分配的) 因此在找对应点时,标签

    2023年04月09日
    浏览(82)
  • 从零入门激光SLAM(四)——ROS C++编译基础

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月10日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包