【激光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.hqwc.cn/news/475594.html

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

相关文章

Unittest+Selenium模块驱动自动化测试实战

UnittestSelenium自动化测试框架使用模块驱动测试模型将冗余的代码封装成类,且基于PageObject的自动化设计模式,通过分层的方式将页面对象、操作、业务分开处理。 1、首先创建自动化测试框架的文件模块架构,创建common、base、testcase、rep…

java之VO,BO,PO,DO,DTO

概念 VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这…

Java+Vue+MySQL,国产动漫网站全栈升级

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【.NET Core】深入理解async 和 await 理解

【.NET Core】深入理解async 和 await 理解 文章目录 【.NET Core】深入理解async 和 await 理解一、概述二、async异步执行机制理解三、async与await应用3.1 async与await简单应用3.2 带有返回值async与await应用 四、async和await中常见问题总结4.1 当方法用async标识时&…

16.Qt 工具栏生成

目录 前言: 技能: 内容: 1. 界面添加 2. 信号槽 功能实现 参考: 前言: 基于QMainWindow,生成菜单下面的工具栏,可以当作菜单功能的快捷键,也可以完成新的功能 直接在UI文件中…

Sora 的工作原理(及其意义)

原文:How Sora Works (And What It Means) 作者: DAN SHIPPER OpenAI 的新型文本到视频模型为电影制作开启了新篇章 DALL-E 提供的插图。 让我们先明确一点,我们不会急急忙忙慌乱。我们不会预测乌托邦或预言灾难。我们要保持冷静并... 你…

【漏洞复现-通达OA】通达OA swfupload_new存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

【Linux】简单的网络计算器的实现(自定义协议,序列化,反序列化)

文章目录 前言一、 服务端1.ServerCal.cc(服务器主文件)2.ServerCal.hpp3.Sock.hpp(套接字封装)4.TcpServer.hpp(服务器)5.Protocol(自定义协议) 二、用户端1.ClientCal 三、Log.hpp(日志)四、makefile 前言…

Java_方法(重载方法签名等详解)

在之前我们学习C语言时,当我们想要重复使用某段代码的功能时,我们会将这段代码定义为一个函数,而在java中我们把这段重复使用的代码叫做方法。 方法的定义 类体的内容分为变量的声明和方法的定义,方法的定义包括两部分&#xff1…

2024/2/18:IO进程线程

作业1&#xff1a;使用fgets统计给定文件的行数 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {//定义FILE *类型的句柄FILE *fpNULL;//判断是否进行了外部传参if(argc ! 2){pri…

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

mysql 2-18

加密与解密函数 其他函数 聚合函数 三者效率 GROUP BY HAVING WHERE和HAVING的区别 子查询 单行子查询和多行子查询 单行比较操作符 多行比较操作符 把平均工资生成的结果当成一个新表 相关子查询 EXISTS 一条数据的存储过程 标识符命名规则 创建数据库 MYSQL的数据类型 创建表…