我的团队正在构建一个机器人,可以在室外环境中自主导航。最近,我们获得了一个新的集成式IMU / GPS传感器,该传感器显然在芯片上进行了一些扩展的卡尔曼滤波。它提供了俯仰,横滚和偏航,北,东和向下的速度以及纬度和经度。在获得这种新的IMU / GPS传感器之前,我们使用编码器和其他一些低成本传感器制作了自己的EKF来评估状态。我们不仅要使用这种新传感器的片上滤波器,而且还要将编码器并入混合器。

链接滤波器是否有问题?我的意思是,我们将使用IMU / GPS传感器的片上EKF的输出作为对自己EKF的更新,就像我们使用从编码器读取的数据作为对EKF的更新一样。在我看来,这是合理的,但我想知道在这种情况下通常应该做什么。

评论

您可以将更正/估计值反馈到EKF“黑匣子”吗?

@Damien不,似乎没有办法。

#1 楼

您可以使用INS / GPS作为第一个EKF输出的更新。实际上,这不是链接,而只是根据来自INS / GPS的附加信息来调节估算值。

我们具有以下功能:

$ x_ {t + 1 | t} $,$ P_ {t + 1 | t} $ = EKF_PREDICT($ x_t $,$ P_t $,$ u_t $),用于状态$ x $,协方差$ P $和控制的输入输入(通过测距法估算)$ u_t $。



$ x_ {t + 1 | t + 1} $,$ P_ {t + 1 | t + 1 } $ = EKF_UPDATE($ x_ {t + 1 | t} $,$ P_ {t + 1 | t} $,$ \ hat {x} _ {t + 1} $)。

来自传感器的估计值是$ \ hat {x} _ {t + 1} $。我们有类似的东西:

$ \ hat {x} ^ {gps} _ {t + 1} = f(GPS)$

$ \ hat {x} ^ {map} _ {t + 1} = f(地图)$

$ \ hat {x} ^ {ins} _ {t + 1} = f(INS)$

等用于估算机器人状态的所有其他方式。
因此为所有这些传感器运行功能EKF_UPDATE就足够了。

您的循环将如下所示:

一直$ t $


让$ u_t $是当前的测距/运动学姿势估计,而$ R_u $是该估计的噪声。
$ x_ {t + 1 | t} $,$ P_ {t + 1 | t} $ = EKF_PREDICT($ x_t $,$ P_t $,$ u_t $,$ R_u $)

对于所有传感器$ S $,


让$ \ hat {x} ^ {S} _ {t + 1} $为该传感器的姿态估计,并且$ R_ {S} $是该估计的噪声
$ x_ {t + 1 | t + 1} $,$ P_ {t + 1 | t + 1} $ = EKF_UPDATE($ x_ {t + 1 | t} $,$ P_ {t + 1 | t} $,$ \ hat {x} _ {t + 1},R_S $)。
end-for


end-for

一些警告如下:


由于我们使用EKF,不能保证估算与更新的顺序无关。也就是说,如果先进行INS然后进行GPS,则结果估算值可能会与如果先进行GPS然后进行INS更新的结果不同。通常这没什么大不了的,但是滤波器将需要更多的调整。
请注意,您的INS会有偏差和漂移,这可能会影响您的长期可靠性。 GPS在这里可以为您提供很多帮助。大多数文献同时估计INS中的偏差和漂移。