IMU状态预积分的定义

IMU状态预积分的定义

  • IMU状态预积分的定义

在ESKF中,将两个GNSS观测之间的IMU数据进行积分,作为ESKF的预测过程。

这种做法把IMU数据看成某种一次性的使用方式:将它们积分到当前估计值上,然后用观测数据更新当时的估计值。

这种做法和此时的状态估计值有关。如果状态量发送了改变,能否重复利用这些IMU数据呢?

从物理意义上看,IMU反映的是两个时刻间机器人的角度变化量和速度变化量。如果希望IMU的计算与当时的状态估计无关,那么在算法上应该如何处理呢?则需要用到预积分了。

预积分:是一种十分常见的IMU数据处理方法。
与传统的IMU运动学积分不同,预积分可以将一段时间内的IMU测量数据累积,建立预积分测量,同时还能保证测量值与状态变量无关。
如果以吃饭来比喻的话,ESKF像是一口口地吃菜,而预积分则是从锅里先把菜一块块夹到碗里,再把碗里的菜一口气吃掉。

无论是LIO系统还是VIO系统,预积分已经称为诸多紧耦合IMU系统的标准方法。

IMU状态预积分的定义

在一个IMU系统里,考虑它的五个变量:

  • 旋转R
  • 平移p
  • 角速度w
  • 线速度v
  • 加速度a

这些变量的运动学关系可以写成:
在这里插入图片描述
在t到 t + Δ t t+ \Delta t t+Δt 时间内,对上式进行欧拉积分,可得:
在这里插入图片描述
其中,角速度和加速度可以被IMU测量到,但受噪声与重力影响。
令测量值为 ω ~ \tilde{\omega } ω~ a ~ \tilde{a} a~ ,则有噪声与零偏与重力的测量公式如下:
在这里插入图片描述
其中 b g b_{g} bg b a b_{a} ba为陀螺仪和加速度零偏
η g \eta_{g} ηg η a \eta_{a} ηa为测量的高斯噪声

用测量值表示t到 t + Δ t t+ \Delta t t+Δt 的运动关系,即测量值与状态变量的关系:
在这里插入图片描述
其中, η g d \eta_{gd} ηgd η a d \eta_{ad} ηad是离散化后的随机游走噪声:
在这里插入图片描述
可以用这种约束来构建图优化,对IMU相关问题进行求解。但是这组方程刻画的时间太短,仅包含单个IMU数据。
IMU的测量频率太高,并不希望优化过程随着IMU数据进行调用,那样太浪费计算资源。
更希望将这些IMU测量值组合在一起处理。

下面介绍如何在关键帧之间对IMU进行预积分。

假设离散时间i和j之间的IMU数据被累积,这个过程可以持续几秒。这种被累积的观测被称为预积分。

在i至j的过程中,可以把变量累计得到
在这里插入图片描述
其中 △ t i j = ∑ k = i j − 1 △ t \triangle t_{ij}= {\textstyle \sum_{k=i}^{j-1}\triangle t} tij=k=ij1t,为累积的时间。

在已知i时刻状态和所有测量时,该式可以用于推断j时刻的状态。这就是传统意义上的直接积分。

直接积分的缺点是,它描述的过程和状态量有关。如果对i时刻状态进行优化,那么i+1,i+2,…j-1时刻的状态也会跟着发送改变,这个积分就必须重新计算,这是非常不便的。

将上式间改变,将IMU读数放在一侧,状态量放到另一侧,定义相对的运动量为
在这里插入图片描述
这种改变实际上只是计算了某种从i到j的“差值”。它们虽然写作p.v.R的形式,但并不直接是位移、速度、旋转的物理量,而是人为定义的变量。最左边的就是预积分量

这个定义在计算上有一下性质:

  • 不妨考虑从i时刻出发,此时这三个量都为零。在i+1时刻,计算出计算出 △ R i , i + 1 , △ v i , i + 1 , △ p i , i + 1 \triangle R_{i,i+1},\triangle v_{i,i+1},\triangle p_{i,i+1} Ri,i+1,vi,i+1,pi,i+1。在i+2时刻,由于这三个式子都是累乘或累加的形式,只需在i,i+1时刻的结果上,加上第i+2时刻的测量值即可。这个计算层面带来了很大的便利。还会发现这种性质便于后续计算各种雅克比矩阵。
  • 从等号最右侧来看,上述所有计算都和R,v,p的取值无关。即使它们的估计值发送改变,也无须重新计算IMU的积分量。
  • 如果零偏 b a , k b_{a,k} ba,k b g , k b_{g,k} bg,k发送变化,那么上式理论上还需要重新计算。然后,也可以通过修正而非重新计算的思路调整预积分量。
  • 预积分量并没有直接的物理含义。尽管符合上用了 △ v \triangle v v △ p \triangle p p之类的表示,但它并不表示某两个速度或位置上的偏差。它只是如此定义而已。当然,从量纲上来说,应该与角度、速度、位移对应。
  • 由于预积分量不是直接的物理量,这种测量模型的噪声必须从原始的IMU噪声推导而来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接:2549. 统计桌面上的不同数字 - 力扣(LeetCode) 题目: 思路: 这是一个很简单的数学问题: 当n 5时,因为n % 4 1,所以下一天4一定会被放上桌面 当n 4…

Python制作数据可视化大屏

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

springcloud+nacos服务注册与发现

快速开始 | Spring Cloud Alibaba 参考官方快速开始教程写的,主要注意引用的包是否正确。 这里是用的2022.0.0.0-RC2版本的springCloud,所以需要安装jdk21,参考上一个文章自行安装。 nacos-config实现配置中心功能-CSDN博客 将nacos-conf…

vue3对openlayers使用(加高德,天地图图层)

OpenLayers认识 WebGIS四大框架: Leaflet、OpenLayers、Mapbox、Cesium OpenLayers 是一个强大的开源 JavaScript 地图库,专注于提供可嵌入网页的交互式地图体验。作为一款地理信息系统(GIS)的前端开发工具,OpenLaye…

微软Microsoft Surface Go 2

1个小玩具 Microsoft Surface Go 2的评测结果出炉!它是目前最好的中端Windows 二合一笔记本平板。 外形简洁小巧,工作娱乐两不误。 它有多个版本。 我们测试的是配备8GB Ram和128GB SSD的Pentium 4425Y处理器(第8代)的型号。 S…

OpenCV学习笔记(十一)——利用Sobel算子计算梯度

Sobel算子是基于一阶导数的离散差分算子,其中Sobel对于像素值的变化是十分敏感的,在进行边缘检测的时候,Sobel算子常用于对周围像素的重要性进行检测。 Sobel算子包括检验水平方向的算子和检测竖直方向的算子 计算机梯度值的操作如下&#x…

Dr4g0n

信息收集 # nmap -sn 192.168.56.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-04 08:52 CST Nmap scan report for 192.168.56.2 Host is up (0.00012s latency). MAC Address: 00:50:56:FE:B1:6F (VMware) Nmap scan report …

Spring Boot从入门到实战

课程介绍 本课程从SpringBoot的最基础的安装、配置开始到SpringBoot的日志管理、Web业务开发、数据存储、数据缓存,安全控制及相关企业级应用,全程案例贯穿,案例每一步的都会讲解实现思路,全程手敲代码实现。让你不仅能够掌Sprin…

JavaEE-文件操作和IO

我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进⾏数据保存时,往往不是保存成⼀个整体,⽽是独⽴成⼀个个的单位进⾏保存,这个独⽴的单位就被抽象成⽂件的概念,就类似办公桌上的⼀份份真…

鸿蒙Harmony应用开发—ArkTS-枚举说明

说明: 本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 Color 从API version 9开始,该接口支持在ArkTS卡片中使用。 颜色名称颜色值颜色示意Black0x000000 Blue0x0000ff Brown…

【LAMMPS学习】三、构建LAMMPS(7)具有额外构建选项的软件包

3. 构建 LAMMPS 3.7.具有额外构建选项的软件包 当使用某些包进行构建时,除了Build_package页面上描述的步骤之外,可能还需要额外的步骤。 ​ 对于CMake构建,可能有额外的可选或必需的变量要设置。对于使用make进行构建,可能需…

探索 Flutter 中的 NavigationRail:使用详解

1. 介绍 在 Flutter 中,NavigationRail 是一个垂直的导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间的设备,如平板电脑和桌面应用程序。NavigationRail 提供了一种直观的方式来浏览应用程序的不同部分,并允许…

适合马犬吃的狗粮有哪些?

亲爱的朋友们,你们是不是也在为家里的马犬挑选合适的狗粮而犯愁呢?🐶🍚 今天,我就来和大家分享一下适合马犬吃的狗粮有哪些,以及为什么我要特别推荐福派斯鲜肉无谷狗粮。 首先,我们得了解马犬的…

深入理解Redis的Sentinel机制

Sentinel简述 Sentinel为了解决什么问题? Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案。 我们知道Redis 的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起…

c语言——通讯录(文件版)

大家好我是小锋&#xff0c;今天我们来实现一个通讯录 准备工作 为了让我们的代码具有条理我们要建立三个文件一个文件用来放头文件一个文件用来放函数的实现&#xff0c;一个文件用来实现通讯录的基本逻辑。 然后我们其他的.c文件要使用头文件时我们要用# include<tongxu…

一笔画--PTA

文章目录 题目描述思路AC代码 题目描述 输入样例1 3 2 1 2 2 3 输出样例1 Y输入样例2 4 3 1 2 1 3 1 4 输出样例2 N输入样例3 1 0 输出样例3 Y思路 dfs 、欧拉通路、欧拉回路的判定 前导知识 欧拉通路、欧拉回路、欧拉图 无向图&#xff1a; ①设G是连通无向图&#xff0c;则称…

pycharm免费下载安装教程

pycharm下载地址 Download PyCharm: The Python IDE for data science and web development by JetBrains 1.进入官网之后可以下拉到最底下&#xff0c;可以设置一下所属地是中国大陆&#xff08;China Mainland)&#xff0c;这样在安装的时候展示的就是中文。 2.设置好语言之…

一个单生产-多消费模式下无锁方案(ygluu/卢益贵)

一个单生产-多消费模式下无锁方案 ygluu/卢益贵 关键词&#xff1a;生产者-消费者模型、无锁队列、golang、RWMutex 本文介绍一个“单生产(低频)-多消费”模式下的无锁哈希类方案&#xff0c;这个方案的性能优于golang的RWMutex&#xff0c;因为它永远不会因为“写”而导致与…

Java代码基础算法练习-数位交换-2024.03.23·

任务描述&#xff1a; 输入一个三位整数&#xff0c;将其个位和百位交换后输出 任务要求&#xff1a; package march0317_0331;import java.util.Scanner;public class m240323 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out…

家用路由器和企业路由器的区别?

一、家用路由器 家用路由器路由器交换机 它只有一个WAN口和一个LAN口&#xff0c;WAN口接公网一个地址&#xff0c;LAN口接你电脑一个IP地址&#xff0c;完全符合路由器的设计&#xff0c;而因为家里如果用了&#xff0c;说明要接多个电脑&#xff0c;那么如果还需要对每个接口…