我目前正在调试和调整EKF(扩展卡尔曼滤波器)。该任务是经典的移动机器人姿态跟踪,其中地标是AR标记。

有时,我感到惊讶的是某些测量如何影响估计。当我查看并计算涉及的数字和矩阵时,我可以算出执行更新步骤的方式,发生的确切原因以及原因,但这非常繁琐。

所以我想知道是否有人在使用某种技术,技巧或聪明的可视化方法来更好地了解EKF更新步骤中正在发生的事情?更具体,并首先展示出我的初衷。

我正在寻找的是一种可视化一个更新步骤的方式,该方式可以让我感觉到测量会影响状态的每个组成部分。

我的第一个想法是绘制测量值及其预测以及从K矩阵中获取的一些矢量。来自K的向量表示创新向量(测量-测量预测,未绘制)将如何影响状态的每个分量。 y,angle)和尺寸也是2D姿势。



在所附的图像中(在新页面/标签中打开以查看完整的分辨率),标定的向量K(1,1:2)(MATLAB语法从3x3矩阵中提取一个子矩阵)应该给出一个想法,即EKF状态的第一部分将如何随当前创新向量K(2,1:2)发生变化EKF的第二个分量将如何变化,等等。在此示例中,创新矢量具有相对较大的x分量,并且与矢量K(2,1:2)对齐-状态的第二个分量(y坐标)将变化最大。

此图中的一个问题是,它没有感觉到创新矢量的第三分量(角度)如何影响状态。状态的第一部分增加了一点,这与K(1:1:2)所表明的相反-创新的第三部分导致了这一点,但是目前我无法想象这点。将可视化创新的第三部分如何影响国家。然后最好添加协方差数据,以了解如何创建K矩阵。

UPDATE#2现在,该图在状态空间中具有矢量,这些矢量显示了测量的每个分量如何改变位置。从该图可以看出,测量的第三部分会最大程度地改变状态。



评论

您可以尝试在凉亭数据上模拟EKF。

感谢@Ian的更新,很抱歉,我花了这么长时间才注意到。 * 8')

#1 楼

可视化测量效果(对我而言)的一种非常有用的方法是绘制每次测量之前和之后的机器人状态(均值,带有协方差椭圆)。然后,获取测量的各个组成部分(轴承,AR标记的范围),并分别应用以对其有所了解。

要执行此操作:

I使用这些功能中的一项或多项来绘制椭圆。要找到常数$ a,b $,请注意它们是协方差矩阵特征值的平方根。然后对$ [0,2 \ pi $]上的角度$ \ theta $进行采样,并从假设中找到范围。使用链接的方程式。我特别建议使用以下公式:

$$
r(\ theta)= \ frac {ab} {\ sqrt {b \ cos ^ 2 \ theta + a \ sin ^ 2 \通常,跟踪先验假设,测量状态和后验假设的协方差足以确定EKF方程是否正确应用。

祝您好运,不要过于频繁地更新您的问题。相反,请提出新问题。

#2 楼

通常要做的是绘制状态变量随时间及其3σ间隔的情况。此间隔缩小的点是更新,您可以在其中注释涉及的测量源。

除了应检查的实现错误外(不仅错误的方程式,而且数值上不稳定的方程式) ,更新的效果仅直接受“预期”和“测量”之间的差异以及它们各自的不确定性的影响。因此,您可能有兴趣找出一种方法来根据第一个绘图中的时间进度可视化这种平衡。