四元数运动学笔记(5)IMU驱动的运动误差方程

摘要:
系统的运动学方程一般用状态变量的微分形式表示,从而建立微分方程,问题是代数的。此外,没有考虑噪声项和测量值的干扰,从而导致误差。

1.扩展卡尔曼滤波EKF
1.1线性化卡尔曼滤波
1.2偏差微分方程的推导
1.3线性化卡尔曼滤波的流程
1.4 离散EKF
2.误差状态的运动方程
2.1连续时间的IMU系统动态方程
2.1.1相关变量
2.1.2真实状态运动方程(true-state kinematics equations )
2.1.3标称状态运动方程(normal-state kinematics equations )
2.1.4误差状态运动方程
2.2离散时间的IMU系统动态方程
2.2.1离散时间的IMU系统动态方程
2.2.2误差状态的雅克比矩阵和扰动矩阵
3.ESKF:Error state Kalman filter
3.1总体介绍
3.2ESKF vs KF
3.3fusing IMU with other complementary sensory data
3.3.1ESKF prediction
3.3.2ESKF correction
3.2.1 通过correction建立误差的观测
3.2.2 将观测误差注入标称状态
3.2.3ESKF reset
3.4 使用global angular errors的ESKF
3.4.1 连续时间误差状态运动方程
3.4.2 离散误差状态运动方程
3.4.3 globally ESKF vs locally ESKF

1.扩展卡尔曼滤波EKF

1.1线性化卡尔曼滤波

  • 标称值(normal value):标称值是基于系统轨迹的先验猜测,比如系统方程代表飞行的动态性能,则标称控制、状态和输出可能的飞行轨迹。标称值是没有任何噪声和模型扰动的理想值,它和世界的轨迹(true-sate真实值)之间的各种因素产生的不确定性用误差δx表示。
  • 系统的运动学方程一般采用状态变量的微分形式表示,从而建立微分方程,将问题代数化。我的理解是,右边的函数以系统相关参数表示出了左边状态变量的变化速率。
  • 非线性系统方程的泰勒级数展开

    四元数运动学笔记(5)IMU驱动的运动误差方程第1张
    四元数运动学笔记(5)IMU驱动的运动误差方程第2张

1.2偏差微分方程的推导

  • 需要注意的是这里假设真实的控制输入是没有不确定性的,即使有也将其归于过程噪声里。

    四元数运动学笔记(5)IMU驱动的运动误差方程第3张

1.3线性化卡尔曼滤波的流程

四元数运动学笔记(5)IMU驱动的运动误差方程第4张

1.4 离散EKF

四元数运动学笔记(5)IMU驱动的运动误差方程第5张

2.误差状态的运动方程
  • 这里涉及到真实值(true-),标称值(nominal-),和误差状态值(error-state)三个量,真实值是有标称值和误差值组合而来。标称值是有非线性方程而来的"大信号",误差值的线性方程而来满足线性高斯滤波的“小信号”。

2.1连续时间的IMU系统动态方程

2.1.1相关变量

  • 这里的相关变量中,输入值是IMU的测量值am,bm,以及当地重力加速度g;其他真值值变量的值都是由他们而来。其中normal值是一个抽象变量,表示理想值,是无法估计的。在融合中我们使用估计的真实值做为预测。
  • 标称值是完全理想值,我们把各种因素产生的真实值和标称值的不确定性归于变量δx表示。
  • 这里采用Hamilton 四元数的表述方法
  • 这里的角速率w使用的是locally的表述,这样可以直接使用机体系b下的传感器测量值wm
  • 这里的角度误差δθ使用的也是locally的表述,这是很多文献和算法采用的经典方式,不过有证明说采用globally的方式定义的角度误差有更好的性质。
  • 这里的加速度a定义的是globally,我的理解是,方便计算导航系下的速度和位置。

    四元数运动学笔记(5)IMU驱动的运动误差方程第6张

2.1.2真实状态运动方程(true-state kinematics equations )

  • true-state 变量表示的运动方程.IMU bias的噪声定义为随机游走。
  • 由于初始状态姿态未知,这种不确定即重力加速度向量的不确定,但是实际工程中我们是制定初始状态的,即重力加速度不确定不再存在,这里的方程也认为其为恒定值。

    四元数运动学笔记(5)IMU驱动的运动误差方程第7张

  • IMU误差来源分为两种,内部biasabt,wbt和测量噪声an,wn.

  • 这里的IMU真实值是没有bias和测量噪声的值,IMU加速度计测量加速度不包含重力加速度,即如果自由落体运动,不考虑噪声加速度计的读数是0。

    四元数运动学笔记(5)IMU驱动的运动误差方程第8张

  • 利用IMU测量代替真实值的系统真实状态运动方程x˙=ft(xt,u,w),该方程状态为xt,由IMU的含噪声测量值um驱动,并受高斯白噪声w干扰.

    四元数运动学笔记(5)IMU驱动的运动误差方程第9张
    四元数运动学笔记(5)IMU驱动的运动误差方程第10张

2.1.3标称状态运动方程(normal-state kinematics equations )

  • 标称状态对应系统没有噪声和扰动的情况。
  • 可以这么理解,标称值是把测量值am,wm和bias当做理想值计算出来的理想状态;而实际值是在考虑测量值和bias有一部分应该不是我们想要的信号,是测量值减去噪声和bias减去扰动计算得到的。我们的目的是优化两者的误差,误差越小,测量值和bias包含的不确定性就越小。

    四元数运动学笔记(5)IMU驱动的运动误差方程第11张

2.1.4误差状态运动方程

  • 方程的右边变量是标称状态、IMU测量值和噪声项。

    四元数运动学笔记(5)IMU驱动的运动误差方程第12张

  • 其中速度误差和角度误差推导如下,主要技巧是省略小量的二次以上的项以及真实值和标称值之间的数学关系。还有就是高斯噪声的各向同性,使旋转对其没有影响。

    四元数运动学笔记(5)IMU驱动的运动误差方程第13张
    四元数运动学笔记(5)IMU驱动的运动误差方程第14张

2.2离散时间的IMU系统动态方程

2.2.1离散时间的IMU系统动态方程

  • 误差状态运动方程的离散化主要是利用其微分方程进行积分,并将其表示为迭代形式。积分的方法有很多种。

    四元数运动学笔记(5)IMU驱动的运动误差方程第15张

  • 离散化后的噪声和连续状态的噪声存在差别,详细见IMU Noise Model.

    四元数运动学笔记(5)IMU驱动的运动误差方程第16张

2.2.2误差状态的雅克比矩阵和扰动矩阵

  • 通过观察2.2.1很容易得到误差状态迭代方程的的雅克比矩阵;这里给出的是离散迭代方程的雅克比,和连续情况下误差状态的微分方程的雅克比,会有些不同。
  • 这里的雅克比矩阵其实就是误差状态方程的状态转移矩阵。
  • 这里的雅克比矩阵来源于真实状态运动方程的离散化,即2.2.4误差状态运动方程的推导过程即是其离散化的过程。

    四元数运动学笔记(5)IMU驱动的运动误差方程第17张
    四元数运动学笔记(5)IMU驱动的运动误差方程第18张

3.ESKF:Error state Kalman filter

3.1总体介绍

  • 这里介绍sola的ESKF,其中的误差来源是IMU加速度计和陀螺仪读数噪声以及bias带的扰动。首先推导了IMU的系统误差动态方程,由于IMU造成的航位推算系统(DR:dead-reckoning position system)会随着时间漂移(我的理解是由于在只有IMU作为测量传感器的位姿测量系统里,航向角和位置都是靠积分得到的,因而会有航位的漂移问题)。所以将该方程做为KF的预测值,使用其他来源的数据如GPS或视觉作为矫正,构成融合数据的KF。
  • 我的理解,作者这里提出的ESKF,和EKF其实是一回事。

3.2ESKF vs KF

  • 作者比较了ESKF相对于KF的优点,有些不是完全理解
  • 避免参数冗余,由于ESKF的参数和自由度一致,可以避免协方差矩阵的奇异性问题。
  • ESKF的(误差)变量操作一直在原点附近(误差变量的值很小),可以避免可能地参数奇异性、万向节锁的问题,保证线性化的有效性。
  • 误差状态值一致很小,意味着公式中误差的二次以乘积都可以忽略,使得相应的雅克比矩阵比较简单,提高计算速度。
  • 可以让KF的correction速度低于prediction,这点不是很理解,贴在这里吧。

    四元数运动学笔记(5)IMU驱动的运动误差方程第19张

3.3fusing IMU with other complementary sensory data

3.3.1ESKF prediction

  • 具体变量定义见2.3.2,在2.2.3中,我们使用IMU含噪声的测量值和bias去计算标称值。并且没有考虑测量值的噪声项和扰动,从而产生了误差。我们把所有不确定性引来的误差放在误差变量δx中考虑,我们利用IMU测量值和高斯噪声去计算误差项,并将其作为ESKF的观测,并利用其它来源的数据如GPS,视觉等来作为矫正(使误差可观)。
  • 这里用IMU作为观测,不是完全理解,我现在的理解是,IMU数据的引入使得预测项更加接近真实情况,参考《最优状态估计》,这里的IMU数据即运动方程里的控制项,如果没有测量值做控制项,我们需要进行比较强的假设,如恒速模型等;但是有了传感器数据作为控制输入,运动方程的模型就更加接近真实情况,有时我们也用里程计作为控制输入,但相对于IMU,里程计的测量位置误差会比较大(齿轮啮合不理想等),而且对于飞行器来说,里程计是不能用的。
  • 最后我们利用上次的状态值、控制输入、传递的误差项来预测下一时刻的状态。
  • 预测阶段均值和方差的更新公式:

    四元数运动学笔记(5)IMU驱动的运动误差方程第20张

3.3.2ESKF correction

3.2.1 通过correction建立误差的观测

  • 这里使用另外的GPS或camera建立测量方程,并将观测方程在标称点附近进行线性化。

    四元数运动学笔记(5)IMU驱动的运动误差方程第21张

  • 这里的雅克比矩阵推导使用了链式法则。

    四元数运动学笔记(5)IMU驱动的运动误差方程第22张
    四元数运动学笔记(5)IMU驱动的运动误差方程第23张

3.2.2 将观测误差注入标称状态

  • 这样做使得这次迭代标称状态和真实状态相等,误差重置为0;

    四元数运动学笔记(5)IMU驱动的运动误差方程第24张

3.2.3ESKF reset

  • 重置的过程主要涉及到不确定性即方差的传播,通常这里的雅克比可以近似为I。

    四元数运动学笔记(5)IMU驱动的运动误差方程第25张

  • 这里的雅克比矩阵的推导

    四元数运动学笔记(5)IMU驱动的运动误差方程第26张

3.4 使用global angular errors的ESKF

  • 之前有提到使用global angular error有更好的特性,这里进行相关的推导,所以涉及到的旋转积分要采用globally的左扰动。
  • 这里的角速度仍使用locally,考虑到测量值是在机体系下表示的

3.4.1 连续时间误差状态运动方程

四元数运动学笔记(5)IMU驱动的运动误差方程第27张

  • 相关推导和locally相似,在角度误差微分方程推导里,四元数微分用的是locally,四元数积分用的是globally,这样做的可行性在于角度误差和角速率没有耦合在两者中使用。

    四元数运动学笔记(5)IMU驱动的运动误差方程第28张
    四元数运动学笔记(5)IMU驱动的运动误差方程第29张

3.4.2 离散误差状态运动方程

四元数运动学笔记(5)IMU驱动的运动误差方程第30张

3.4.3 globally ESKF vs locally ESKF

四元数运动学笔记(5)IMU驱动的运动误差方程第31张



null


免责声明:文章转载自《四元数运动学笔记(5)IMU驱动的运动误差方程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇css中设置span宽度失效的原因和方法mssqlserver2014安装步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

动态规划——线性dp

我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp。在这篇文章中,我们将讨论有关线性dp的一些问题。 在有关线性dp问题中,有着几个比较经典而基础的模型,例如最长上升子序列(LIS)、最长公共子序列(LCS)、最大子序列和等,那么首先我们从这几个经典的问题出发开始对线性dp的探索。 首先我们来看最长上升子序...

使用Unity3D的50个技巧:Unity3D最佳实践

转自:http://www.tuicool.com/articles/buMz63I 刚开始学习unity3d时间不长,在看各种资料。除了官方的手册以外,其他人的经验也是非常有益的。偶尔看到老外这篇文章,觉得还不错,于是翻译过来和大家共享。原文地址:http://devmag.org.za/2012/07/12/50-tips-for-working-wi...

guxh的python笔记三:装饰器

1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) total = 1 这种情况也会报错: total = 0 def run(): total += 1...

Simulink仿真入门到精通(十) S函数

10.1 S函数概述 S函数也称为Simulink中的系统函数,是用来描述模块的Simulink宏函数,支持M、C等多种语言。当Simulink默认的模块不能满足用户的需求时,用户可以通过S函数自己打造一个模块,实现自定义的算法或期待的动作。 10.2 S函数的类型 S函数有多种类型,按照语言分类有M、C、C++、Fortran等编写的; 按照所支持功能...

VIO(2)—— IMU传感器测量模型、误差模型、运动模型(预积分模型)

@ 目录 一、旋转运动学 1.1 线速度与角速度 1.2 旋转坐标系下的运动学 二、IMU 测量模型及运动模型 2.1 MEMS(Micro-electromechanical Systems微电子机械系统) 加速度计工作原理 2.2 MEMS(Micro-electromechanical Systems微电子机械系统) 陀螺仪测量原理...

FPU:fldpi,fmul等指令说明

协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码。 协处理器指令在执行过程中,需要访问内存单元时,CPU会为其形成内存地址。协处理器在指令执行期间内利用数据总线来传递数据。80287协处理器利用I/O地址00FAH~00FFH来实现其与CPU之间的数据交换,而80387~...