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

文章目录

  • ICP匹配方法(Point to Point)
  • PL-ICP匹配方法(Point to Line)
  • 基于优化的匹配方法(Optimization-based Method)
    • 优化方法的求解
    • 地图双线性插值
      • 拉格朗日插值法——一维线性插值
  • 相关方法(Correlation-based Method)
    • 帧间匹配似然场
      • 算法流程
      • 位姿搜索
    • 分枝定界算法
  • 引用

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

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

ICP匹配方法(Point to Point)

基本目的: 两个点云进行配准
在这里插入图片描述
数学描述:
在这里插入图片描述

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

在这里插入图片描述

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

ux表示点云集合X的几何中心(基准位姿/平均位姿),up表示点云集合P的几何中心(基准位姿/平均位姿),随后把每个点云都移动到平均位姿来。
在这里插入图片描述
对W进行SVD分解:
在这里插入图片描述
则ICP的解为:

在这里插入图片描述

效果如下:

在这里插入图片描述
已知对应点的求解方法——证明:

在这里插入图片描述

在这里插入图片描述

未知对应点的求解方法:

在这里插入图片描述

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

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

ICP的匹配算法的缺点:

在这里插入图片描述

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

PL-ICP算法的原理:

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

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

在这里插入图片描述

数学描述:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

算法流程:
在这里插入图片描述

跟ICP的区别:

在这里插入图片描述

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

在这里插入图片描述

优化方法的求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

地图双线性插值

在这里插入图片描述

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

插值的定义:

在这里插入图片描述

拉格朗日插值方法:

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

在这里插入图片描述

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

在这里插入图片描述
由于Ln(x)存在且唯一,所以只需要表示出Ln(x)的其中一种形式即可,因为各形式之间等价,表示的都是Ln(x)。

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

在这里插入图片描述

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

在这里插入图片描述

地图插值:

在这里插入图片描述

相关方法(Correlation-based Method)

帧间匹配似然场

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

在这里插入图片描述

算法流程

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

在这里插入图片描述

位姿搜索

在这里插入图片描述

分枝定界算法

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

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

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

在这里插入图片描述
分枝定界在相关方法的加速作用:

在这里插入图片描述
在这里插入图片描述

引用

点云配准方法–PLICP

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

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

相关文章

微信小程序按需注入和用时注入

官网链接 按需注入 {"lazyCodeLoading": "requiredComponents" }注意事项 启用按需注入后,小程序仅注入当前访问页面所需的自定义组件和页面代码。未访问的页面、当前页面未声明的自定义组件不会被加载和初始化,对应代码文件将不…

【HarmonyOS】鸿蒙开发之Text组件——第3.2章

text组件属性介绍 textAlign有三种属性start(默认),end,center Column(){//默认文字大小16Text("迪加奥特曼").width(200)Text().margin({top:10,bottom:10})Text("泰罗奥特曼").width(200).fontSize(26).fontColor(Color.Red).textAlign(TextAlign.End)…

H12-821_130

130.如图所示,R1与R2组成一个VRRP备份组1,通过在R1执行vrrp vrid 1 virtual-ip_______命令,可以使其成为IP地址拥有者,让R1为Master, R2为Backup 。 答案:192.168.1.254 注释: IP地址拥有者优先级是255&am…

uniapp富文本文字长按选中(用于复制,兼容H5、APP、小程序三端)

方案&#xff1a;使用u-parse的selectable属性 <u-parse :selectable"true" :html"content"></u-parse> 注意&#xff1a;u-parse直接使用是不兼容小程序的&#xff0c;需要对u-parse进行改造&#xff1a; 1. 查看u-parse源码发现小程序走到以…

程序员金三银四跳槽指南:时间线经典面试16问

祝大家成功上岸&#xff0c;升职加薪&#xff0c;冲鸭 &#x1f389; 金三银四 今天复工&#xff0c;就要开始准备啦&#x1f4bc;✨ 把握好打工人跳槽的金三银四&#xff0c;获得满意的新工作 &#x1f389; 时间线 年后跳槽时间线&#xff0c;过完年刚好开始准备&#xf…

无人机技术,无人机动力系统知识,电机、电调、桨叶技术详解

无人机动力系统中的电机、电调和桨叶技术都是非常重要的部分&#xff0c;以下是对这些技术的详解&#xff1a; 无人机电机 在无人机动力系统中&#xff0c;电机是将电能转化为机械能的关键部件。其主要作用是产生旋转力矩&#xff0c;驱动螺旋桨的旋转&#xff0c;从而实现无…

LeetCode--2298. 周末任务计数

文章目录 1 题目描述2 测试用例3 解题思路 1 题目描述 表: Tasks ------------------- | Column Name | Type | ------------------- | task_id | int | | assignee_id | int | | submit_date | date | -------------------task_id 是该表的主键&#xff08;具有唯一值…

const 知识点解析

当我们在c语言中碰到这么一种情况&#xff1a;我们现在有一个变量&#xff0c; 这个变量呢&#xff0c;我们指向访问它&#xff0c; 但不会修改它。但是又担心在后续的代码中不小心将它修改&#xff0c; 这种情况该怎么做呢&#xff1f;这种情况下可以使用const. 被const修饰的…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十四)(1)

实验十四&#xff1a;水塔水流量估计模型 练习一 1.海水温度随着深度的变化而变化,海面温度较高,随着深度的增加,海水温度越来越低.通过验观测得一组海水温度t与深度h的数据如下: h/m 0 1.5 2.5 4.6 8.2 12.5 16.5 26.5 t/℃ 23.5 22.9 20.1 19.1 15.4 11.5 …

服务器4c16g中的c指什么?或者4h什么意思?

服务器4c16g中的c指什么&#xff1f;c是指CPU处理器&#xff0c;4c代表4核CPU&#xff0c;4c也可以表示为4h&#xff0c;cpu是处理器中的基本计算单位&#xff0c;服务器的CPU核心数量越多&#xff0c;处理器的计算能力就越强&#xff0c;由于是云服务器&#xff0c;CPU指的是v…

数据在内存中的存储以及百度笔试题

目录 一.整型家族 什么是大小端存储&#xff08;百度笔试题&#xff09; 大端字节序存储 小端字节序存储 为什么要讨论大小端字节序存储 写一个程序判断是大端还是小端存储&#xff08;百度笔试题&#xff09; 思路&#xff1a;用1去判断&#xff0c;如果返回1则是小端&a…

腾讯云4核8G12M服务器支持多少人在线?

4核8G服务器支持多少人同时在线访问&#xff1f;阿腾云的4核8G服务器可以支持20个访客同时访问&#xff0c;关于4核8G服务器承载量并发数qps计算测评&#xff0c;云服务器上运行程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&…

帮管家 CRM init 信息泄露漏洞复现 [附POC]

文章目录 帮管家 CRM init 信息泄露漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现帮管家 CRM init 信息泄露漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此…

Open CASCADE学习|曲线向曲面投影

在三维空间中&#xff0c;将曲线向曲面投影通常涉及复杂的几何计算。这个过程可以通过多种方法实现&#xff0c;但最常见的是使用数学和几何库&#xff0c;如OpenCASCADE&#xff0c;来处理这些计算。 在OpenCASCADE中&#xff0c;投影曲线到曲面通常涉及以下步骤&#xff1a;…

面试题-02

1.什么是Java程序的主类&#xff1f;应用程序和小程序的主类有何不同&#xff1f; 一个程序中可以有多个类&#xff0c;但只能有一个类是主类。在Java应用程序中&#xff0c;这个主类是指包含main()方法的类。而在Java小程序中&#xff0c;这个主类是一个继承自系统类JApplet或…

RocketMq——NameServer源码分析

摘要 RocketMQ架构体系里有四个角色&#xff1a;NameServer、Broker、Producer、Consumer。其中&#xff0c;Broker统称为服务端&#xff0c;Producer属于消息生产者和Consumer属于消息消费者&#xff0c;他们统称为客户端。客户端要如何与服务端通信&#xff1f;拿消息发送举…

【LeetCode每日一题】单调栈 901股票价格跨度

901. 股票价格跨度思路 设计一个算法收集某些股票的每日报价&#xff0c;并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数&#xff08;从今天开始往回数&#xff0c;包括今天&#xff09;。 例如&#xff0c;如果未来…

elementui 中 el-date-picker 控制选择当前年之前或者之后的年份

文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性&#xff0c;并绑定对应数据 pickerOptions html <el-form-item label"雨量年份&#xff1a;" prop"date"><el-date-picker …

鸿蒙应用/元服务开发-窗口概述

一、窗口模块的定义 窗口模块用于在同一块物理屏幕上&#xff0c;提供多个应用界面显示、交互的机制。 对应用开发者而言&#xff0c;窗口模块提供了界面显示和交互能力。 对终端用户而言&#xff0c;窗口模块提供了控制应用界面的方式。 对整个操作系统而言&#xff0c;窗…

开源模型应用落地-工具使用篇-SLB(二)

一、前言 通过学习"开源模型应用落地"系列文章&#xff0c;我们成功地建立了一个完整可实施的AI交付流程。现在&#xff0c;我们要引入负载均衡&#xff0c;以提高我们的AI服务的性能和故障转移能力。本文将详细介绍如何使用腾讯云的负载均衡技术来将我们的AI服务部署…