我正在实现一个简单的卡尔曼滤波器,用于估计机器人的前进方向。机器人配有指南针和陀螺仪。

在时间$ t-dt $说,指南针报告读数$ \ theta_ {t-dt} $,而陀螺仪报告读数$ \ \ omega_ {t-dt} $。然后我假设从$ t-dt $到$ t $的时间,旋转速率可以视为一个常数。因此,我当前的前进方向是$$ \ theta_ {t} = \ theta_ {t-dt} + \ omega_ {t-dt} \ cdot dt $$
可以看出,$ \ theta $可以

但是我的$ \ omega $呢?机器人不在我的控制之下。因此,下一时刻的旋转速度是不可预测的。

这种情况下应该如何更新时间?

评论

在这里查看我对您的密切相关问题的回答:robotics.stackexchange.com/questions/1766/…

#1 楼

对于这两种状态,您都在使用传感器来提供所需的信息。

使其正常工作的一种方法:将陀螺仪读数用作ω,将先前的状态估计用作θ(如果是第一次迭代,则使用初始状态估计)。这是过滤器的预测步骤。

然后在更新步骤中,可以使用指南针测量(这将纠正陀螺仪漂移)。

对于两种状态,您都依靠传感器来提供有关航向的信息,而不是机器人本身的控制输入。

这种方法在姿态航向和参考系统中很常见。

对于您的应用,互补滤波器可能易于实施,易于调整并且在许多情况下可以与卡尔曼滤波器相媲美,因此可能更适合于您的应用。