从零入门激光SLAM(十七)——SLAM中为什么用ESKF误差卡尔曼滤波器

上一节,介绍了卡尔曼滤波的基本原理,但在SLAM中却使用ESKF,让我们一起看看具体的原因是什么吧

一、误差卡尔曼滤波器ESKF(Error State Kalman Filter)

1.1动机

在常规的卡尔曼滤波器中,需要假定系统的状态服从高斯分布,这要求系统的状态是定义在向量空间中,满足向量空间中的运算法则。但SLAM中的一些状态变量是位于流形长的,例如旋转矩阵、四元数、和李群。直接在欧几里得空间进行线性化和状态更新可能导致无效的状态,且这些数据不适合欧几里得空间的计算。
例如如果简单的将两个四元数相加,或者在四元数上乘上一个标量常数,其结果都不满足模长为一的约束条件。也就是说两个四元数相加后不再是一个能表示旋转的四元数了。对于旋转矩阵也有着相同的问题。如果用欧拉角和角轴来表示旋转,会出现“奇点”的问题。所以需要一种新的方法来传递非线性误差。

1.2 流形

1.2.1 动机

  • 数据冗余
    我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上只需要比较低的维度就能唯一地表示。
    例子:表达一个圆
    如果使用二维坐标系上的一堆点去表达一个圆,二维坐标系有许多没有用到的点,这是冗余的表达方式,完全可以使用一维流形来表示

  • 数据本质
    我们使用三维空间表达一个地球仪,现在让你测量南京到纽约的距离,你一定会从地球仪的外部测量而不是直接穿过地球仪去测量直线距离,三维球体其实是一个二维流形,流形可以反映一个数据的本质。


    如果我们观察到的数据是三维的,但其本质是一个二维流形。图上所标注的两个圈圈,在流形(把卷展开)上本距离非常远,但是用三维空间的欧氏距离来计算则它们的距离要近得多。

    1.2.2 概念

  • 流形
    流形表示提供了一种更灵活和高效的方式来处理高维数据,能够更好地保留数据的局部结构和拓扑特征,从而在某些情况下比传统的几何空间表示更适用。在数学中,流形是局部类似于欧几里得空间的空间,但在全局上可能具有更复杂的拓扑结构的对象。简单来说,流形就是一种局部上类似于欧几里得空间的空间。对于流形上的每个点,都存在一个领域,可以与欧几里得空间中的一个开集建立一一对应的关系,使得在这个对应下,拓扑结构相同、连续映射也相同。流形可以是各种维度的,比如曲线、曲面、高维空间等。
  • 正切空间
    在流形上的每个点,我们可以定义一个与该点相切的线性空间,这个空间就是正切空间。正切空间是局部近似流形的一个线性空间,它包含了所有可能的在该点的切向量。正切空间可以看作是流形在某一点的“平坦”近似。例如,对于一个二维球面(例如地球表面)上的一点,正切空间就是过这一点的平面。我们可以在这个平面上进行线性运算,例如向量加法和标量乘法。

    1.2.3 应用

  1. 非线性降维:降维的过程中不但考虑到了距离,更考虑到了生成数据的拓扑结构。
  2. 流形能够刻画数据的本质:将数据从高维空间降维到低维空间,还能不损失信息。
  3. GAN网络
    前面提到了高维数据其实是由低维流形生成的。如果我们能模拟这个生成过程,再通过对低维流形的微调,应该能得到对应的“有意义且有道理”的高维数据。利用生成对抗网络(GAN)生成的人脸。

  4. 计算机信息存储
    身份证号。我们的身份证号是18位的。但是身份证号有严格的格式:3位省3位市8位生日4位其他编码。这18位,最多能出现 10的18次方个不同的编码。但由于格式的限制,很多编码是不可能产生的。例如“999888777766554321”这就不可能出现。但我们可以给每一个新出生的人一个连续的编码。只需要10位数字,就足够代表100亿人了。所以当我们有某种方法,能够找到一个从18维空间映射到10维空间的方法。那么这个10维空间就是数据“最本质”的特征了。

    1.3 ESKF概念

    1.3.1核心思想

    ESKF 是一种特别适用于处理状态空间位于流形上的扩展卡尔曼滤波方法。它通过引入误差状态,将状态的更新和传播都限制在流形上,从而更准确地处理非线性。基于误差状态的扩展卡尔曼滤波器(ESKF)通过将系统状态分解为流形中的状态量和正切空间中的误差量,并结合误差状态的预测和更新,提供了一种高效且准确的状态估计方法。具体步骤包括预测、更新和线性化操作,所有步骤都以误差状态为核心,使得估计更加精确和稳定。
    ESKF的核心在于将系统状态分解为两个组成部分:将状态建模为流型中的状态量(非随机变量)加上正切空间中的误差量(均值为零的高斯分布)它是一种间接优化方法。

详情请见...

从零入门激光SLAM(十七)——SLAM中为什么用ESKF误差卡尔曼滤波器 - 古月居 (guyuehome.com)

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

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

相关文章

3D Slicer:从入门到精通(六)——图像分割

图像分割 文章目录 图像分割基本概念分割和段表示方式二进制标签图表示 分割模块教程 基本概念 图像分割(也称为轮廓绘制或注释)是一种在图像中划定区域的程序,通常对应于解剖结构、病变和各种其他对象空间。它是医学图像计算中非常常见的程…

衡量代理IP的因素

当你随便点开百度搜索IP代理,然后你就会看到,五花八门的IP代理商出现在视线中。再点进去链接,我们会发现,大多数IP代理商提供的基础IP服务都大差不差,东家这样说,西家又那样说,尽管我们看的头昏…

二进制部署Kubernetes集群——单Master和Node组件

前言 本文将介绍如何使用二进制文件手动搭建 Kubernetes v1.20 集群。通过这种方法,我们可以更好地理解 Kubernetes 的内部工作原理,并具备更大的灵活性和控制权。下面将逐步构建 Kubernetes 集群,并进一步了解其各个组件之间的交互和配置。…

Chirpstack配合网关与lora设备通信

之前的章节讲过chirpstack的下载和安装部署,这节算是后续,利用chirpstack和lora设备做通信, 首先开启chirpstack,并登录,登录完成之后需要添加网关和设备,添加网关也就是Gatway,所以点开左侧的G…

路由交换技术-静态路由 + 动态路由

实验目的与要求 1、掌握单臂路由配置直连路由 2、掌握静态路由配置方法 3、掌握动态路由配置方法 4、理解OSPF链路状态算法的含义 5、掌握DNS、web等网络服务的配置 实验原理与内容 原理: 1、静态路由与默认静态路由 路由器可通过两种方式获知远程网络: 手动 - 远程…

Springboot+Vue项目-基于Java+MySQL的高校专业实习管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 AB路线

//bfs 1000100010不会超时 #include<bits/stdc.h> using namespace std; #define int long long const int n1e311; int a,b,c,h[n][n][12],k[4][2]{0,1,0,-1,1,0,-1,0}; char t[n][n]; struct s {int x,y,z,w; }; signed main() {ios::sync_with_stdio(false);cin.t…

iOS 主要语言切换问题

前言 上架时需要把主要语言切换成英文&#xff0c;存储时一直提示“因为您必须先为使用这种语言的每个版本提供所有必需的截屏”错误。 错误截图 解决方案&#xff1a; 1、增加英文的截图去审核&#xff0c;审核过了再切换主要语言 官方文档出处 END.

PhpStorm 激活

1、更改Hosts文件 Mac文件位置&#xff1a;/etc/host Windows文件位置&#xff1a;C:\Windows\System32\drivers\etc 将 0.0.0.0 www.jetbrains.com 添加到hosts文件末尾。 2、左下角Proxy settings 添加本地80端口代理 附一个激活码 UX394X3HLT-eyJsaWNlbnNlSWQiOiJVWDM…

Java入门基础学习笔记27——生成随机数

Random的使用&#xff1a;生成随机数。 随机数应用&#xff1a; 随机点名&#xff1a; 年会抽奖&#xff1a; 猜数字游戏&#xff1a; 密码学。 查看API文档&#xff1a; package cn.ensource.random;import java.util.Random;public class RandomDemo1 {public static voi…

每周题解:牛的旅行

题目描述 牛的旅行 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言&#xff0c;你能看到至少有两个牧区不连通。 现在&#xff0c;John想在农场里添加一条路径 ( 注意&#xff0c;恰好一条 )。对这条路径有这样的…

docker镜像容器常用命令

常用基础命令1、docker info #查看docker版本等信息 2、docker search jenkins #搜索jenkins镜像 3、docker history nginx #查看镜像中各层内容及大小,每层对应的dockerfile中的一条指令。 4、docker network ls #显示当前主机上的所有网络 5、docker logs nginx …