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

news2025/1/19 11:12:54

文章目录

  • 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.coloradmin.cn/o/1455442.html

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

相关文章

HCIP-MGRE实验配置、PPP的PAP认证与CHAP认证、MGRE、GRE网络搭建、NAT

实验要求 R5为ISP,只能进行IP地址配素,其所有地址均为公有IP地址R1和R5间使用PPP的PAP认证,R5为主认证方 R2与R5之间使用PPP的chap认证,R5为主认证方 R3与R5之间使用HDLC封装。R1/R2/R3构建一个MGRE环境,R1为中心站点;R1、R4间为…

深入解析Android AIDL:实现跨进程通信的利器

深入解析Android AIDL:实现跨进程通信的利器 1. 介绍Android AIDL Android Interface Definition Language (AIDL) 是一种Android系统中的跨进程通信机制。AIDL允许一个应用程序的组件与另一个应用程序的组件通信,并在两者之间传输数据。 AIDL的主要作…

2024 VNCTF----misc---sqlshark sql盲注+流量分析

流量分析 wireshark 可以看到很多 any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(80))),1,0))# P any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(104))),1,0))#…

我的NPI项目之Android Camera (二) -- 核心部件之 Camera Sensor

说到Camera模组,我们比较关心的是用的什么样的sensor? sensor的分辨率多少,sensor的像素多大,sensor是哪家生产的等等一些问题。今天,我们就穿越时间,将sensor的历史扒一扒。 Wikipedia先看一下&#xff1…

初识 Rust 语言

目录 前言一、Rust 的背景二、Rust的特性三、部署开发环境,编写一个简单demo1、在ubuntu 20.04部署环境2、编写demo测试 四、如何看待Linux内核引入Rust 前言 自Linux 6.1起,初始的Rust基础设施被添加到Linux内核中。此后为了使内核驱动程序能够用Rust编…

C++--Linux基础使用

文章目录 几个简单命令开机关机重启查看当前目录切换当前目录列出当前目录下的目录和文件列出指定目录下的目录和文件清屏查看/设置时间 目录和文件目录概要目录详细说明相对路径和绝对路径 上古神器vi创建/打开文件vi 的两种模式vi 的常用命令 用户管理组管理用户管理修改用户…

小迪安全25WEB 攻防-通用漏洞SQL 读写注入MYSQLMSSQLPostgreSQL

#知识点: 1、SQL 注入-MYSQL 数据库 2、SQL 注入-MSSQL(SQL server) 数据库 3、SQL 注入-PostgreSQL 数据库 #详细点: Access 无高权限注入点-只能猜解,还是暴力猜解 因为access的数据库是独立存在的,不存在统一管理 …

应用回归分析:多重共线性

多重共线性的概念 在回归分析中,我们通常关注的是如何利用一个或多个自变量(解释变量)来预测一个因变量(响应变量)。当我们使用多元线性回归模型时,理想的情况是模型中的每一个自变量都能提供独特的、对因…

Cesium 问题——加载 gltf 格式的模型之后太小,如何让相机视角拉近

文章目录 问题分析问题 刚加载的模型太小,如何拉近视角放大 分析 在这里有两种方式进行拉近视角, 一种是点击复位进行视角拉近一种是刚加载就直接拉近视角// 模型三加载 this.damModel = new Cesium.Entity({name: "gltf模型",position:</

5、Linux 常用指令

一、帮助指令 1.man 指令 语法 man [命令或配置文件] //功能描述&#xff1a;获得帮助手册上的信息查看 ls 命令的帮助信息 man ls信息作用NAME命令名称SYNOPSIS如何使用命令DESCRIPTION描述命令SEE ALSO相关的手册 2.help 指令 语法 help [命令] //功能描述&#xff1a;获得…

AttributeError: module ‘distutils‘ has no attribute ‘version‘

报错 AttributeError: module ‘distutils’ has no attribute ‘version’ 出现如下图报错&#xff1a; 或者可以通过修改torch版本和固定setuptools版本为59.5.0解决&#xff0c;但是我觉得前者有点麻烦&#xff0c;后者尝试无效&#xff0c;于是找到下图路径中的文件__init…

洛谷 P1019 [NOIP2000 提高组] 单词接龙

参考代码 #include <bits/stdc.h> using namespace std; string s[25]; int vis[25], ans, now 1, n; void dfs(int k) { ans max(ans, now); for(int i 1; i < n; i) if(vis[i] < 2) { for(int j 0; j < s[k].length(); j) …

N叉树的前序遍历

1.题目 这道题是2024-2-18的签到题&#xff0c;题目难度为简单。 考察的知识点为DFS算法&#xff08;树的前序遍历&#xff09;。 题目链接&#xff1a;N叉树的前序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历…

[Flink04] Flink部署实践

Flink部署支持三种模式&#xff1a;本地部署、Standalone部署、Flink on Yarn部署。 独立&#xff08;Standalone&#xff09;模式由Flink自身提供资源&#xff0c;无需其他框架&#xff0c;这种方式降低了和其他第三方资源框架的耦合性&#xff0c;独立性非常强。但Flink 是大…

Shiro-04-shiro 详细架构

详细架构 下图显示了Shiro的核心架构概念&#xff0c;并简要概述了每个架构&#xff1a; 下面我们对除了核心组件的部分做一下简单的介绍&#xff1a; Authentication&#xff08;身份验证&#xff09; 身份验证是验证用户身份的过程。 也就是说&#xff0c;当用户通过应用…

相机图像质量研究(32)常见问题总结:图像处理对成像的影响--振铃效应

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

VMware Ubuntu 无网卡驱动怎么办?

网上拷了一个VMware的Ubuntu系统&#xff0c;结果网络没法连接。 ifconfig命令一看&#xff0c;只有lo的本地回环网卡&#xff0c;没有真实网卡驱动。 很简单&#xff0c;一下三步就可以搞定。 首先&#xff0c;iplink show查看本地所有网卡。 我这里出现了一个ens33的网卡…

深度学习-分类任务---经典网络

文章目录 经典网络1 LeNet51.1 模型结构1.2 模型结构1.3 模型特性 2 AlexNet2.1 模型介绍2.2 模型结构2.3 模型解读2.4 模型特性 3 可视化ZFNet-转置卷积3.1 基本的思想及其过程3.2 卷积与转置卷积3.3 卷积可视化3.4 ZFNet和AlexNet比较 4 VGGNet4.1 模型结构4.2 模型特点 5 Ne…

21-k8s中pod的调度-污点和污点容忍

一、污点的概念 所谓的污点&#xff0c;就是给k8s集群中的节点设置的污点&#xff0c;通过设置污点&#xff0c;来规划资源创建时所在的节点&#xff1b; 污点的类型解释说明PreferNoshedule 节点设置这个五点类型后&#xff1b; 表示&#xff0c;该节点接受调度&#xff0c;但…

NLP深入学习:《A Survey of Large Language Models》详细学习(七)

文章目录 1. 前言2. 应用场景2.1 LLMs 对研究界的应用2.1.1 经典 NLP 任务2.1.2 信息检索2.1.3 推荐系统2.1.4 多模态大语言模型2.1.5 知识图谱增强型 LLM2.1.6 基于 LLM 的智能体2.1.7 用于评估 2.2 特定领域的应用 3. 参考 1. 前言 这是《A Survey of Large Language Models…