我似乎无法找到有关此特定问题的主题,因此我自己发布了一个。
我正在从事一个大型导航项目,在该项目中我可以访问车辆的里程计和从 LiDAR 数据得出的位置估计。我可以将来自 LiDAR 估计的样本从 1 到 20 赫兹以不同的质量进行更改,并且里程计数据以 40 赫兹的频率传输。
我已经实现了一个标准的卡尔曼滤波器,遵循这些方程(来自维基百科):
预言
更新
我现在的问题是,当来自不同信息源的采样率不同时,您如何(最佳)使用卡尔曼滤波器?
我似乎无法找到有关此特定问题的主题,因此我自己发布了一个。
我正在从事一个大型导航项目,在该项目中我可以访问车辆的里程计和从 LiDAR 数据得出的位置估计。我可以将来自 LiDAR 估计的样本从 1 到 20 赫兹以不同的质量进行更改,并且里程计数据以 40 赫兹的频率传输。
我已经实现了一个标准的卡尔曼滤波器,遵循这些方程(来自维基百科):
预言
更新
我现在的问题是,当来自不同信息源的采样率不同时,您如何(最佳)使用卡尔曼滤波器?
有两种方法:
首先,让我们假设“迭代”是卡尔曼滤波器预测 + 更新
现在有一个普遍的问题,您是否可以将测量分解为不同的“子更新”,这意味着您运行单个预测,并且对于进入的每个传感器测量,您执行单独的更新步骤。从理论上讲,这将允许您仅对已提供新数据的传感器执行更新(适用于上述两种情况)。它看起来像这样:
从理论上讲,您不应该这样做,原因如下:
其他人建议,为了避免上述问题 2,您将 H 矩阵(以及因此关联的 y、z、S、K)拆分为每个传感器的单独的较小矩阵。因此,传感器 A 将拥有自己的 H、y、z、S、K 矩阵,传感器 B 将拥有自己的一组矩阵,等等。如果您在 F 或 H 中有非对角线元素,这不是最佳的。非对角元素意味着一个状态对另一个状态的依赖,因此它们会表现出协方差。K 最终是根据预测的状态协方差和预测的观察协方差计算的(还请记住,如果您有状态协方差,它通常会通过 H 将协方差注入预测的观察值,更不用说 H 可能会自行创建额外的协方差)。如果您开始将系统范围的 H、S 矩阵分割成每个传感器的单独 H、S 矩阵,您最终会切断模型的相互关联状态/观察之间的关系。这导致了一个次优的 K,因为某些协方差被移除了。