间接(错误状态)卡尔曼滤波器的结构是什么?误差方程是如何导出的?

Gou*_*uda 5 matlab filtering computer-vision inertial-navigation kalman-filter

我一直在尝试为使用惯性测量单元(IMU)和相机观察已知地标的机器人实施导航系统,以便在其环境中进行本地化.我选择了间接反馈卡尔曼滤波器(又名误差状态卡尔曼滤波器,ESKF)来做到这一点.我在扩展KF方面取得了一些成功.

我已经阅读了很多文本,我用来实现ESKF的两个是" 用于错误状态KF的四元数运动学 "和" 用于IMU相机校准的基于卡尔曼滤波器的算法 "(付费壁纸,google-able) .我使用的是第一个文本,因为它更好地描述了ESKF的结构,第二个是因为它包含了有关视觉测量模型的详细信息.在我的问题中,我将使用第一个文本中的术语:'名义状态','错误状态'和'真实状态'; 它指的是IMU积分器,卡尔曼滤波器,以及两者的组成(标称减去误差).

下图显示了我在Matlab/Simulink中实现的ESKF的结构; 如果您不熟悉Simulink,我将简要介绍该图表.绿色部分是标称状态积分器,蓝色部分是ESKF,红色部分是标称状态和错误状态的总和.'RT'块是'Rate Transitions',可以忽略.

在此输入图像描述

我的第一个问题:这个结构是否正确?

我的第二个问题:测量模型的误差状态方程是如何导出的? 在我的情况下,我尝试使用第二个文本的测量模型,但它没有用.

亲切的问候,

Ben*_*son 2

您的框图结合了两种将 IMU 数据引入 KF 的间接方法:

  1. 您有一个外部 IMU 积分器(绿色,标记为“INS”,有时称为机械化,您将其描述为“标称状态”,但我也看到它称为“参考状态”)。此方法将 IMU 自由地集成到 KF 外部,通常选择此方法,以便您可以以与 KF 预测/更新步骤(间接形式)不同(高得多)的速率进行此集成。从历史上看,我认为这很受欢迎,因为 KF 通常是计算成本较高的部分。
  2. 还将IMU 输入到 KF 块中u,我假设它是 KF 的“命令”输入。这是外部积分器的替代方案。在直接 KF 中,您会将 IMU 数据视为测量值。为了做到这一点,IMU 必须对(位置、速度和)加速度和(方向和)角速度进行建模:否则不可能H产生Hx估计的 IMU 输出项。如果您将 IMU 测量值作为命令输入,则您的预测步骤可以简单地充当积分器,因此您只需对速度和方向进行建模。

您应该只选择其中一个选项。我认为第二个更容易理解,但它更接近直接卡尔曼滤波器,并且要求您对每个 IMU 样本进行预测/更新,而不是在(我假设)较慢的相机帧速率下进行预测/更新。

关于版本(1)的测量方程,在任何 KF 中,你只能预测从你的状态中可以知道的事情。在这种情况下,KF 状态是误差项向量,因此您只能预测“位置误差”之类的内容。因此,您需要将测量结果预先调整为z位置误差。因此,让你的测量结果是“估计的真实状态”和“嘈杂的相机观察”中的位置之间的差异。xHat这个确切的想法可以通过间接 KF 的输入来表示。我对那里发生的 MATLAB/Simulink 内容一无所知。

关于求和块(红色)的现实世界考虑因素,我建议您参考有关间接卡尔曼滤波器的另一个答案