我有一个群体机器人项目。定位系统使用超声波和红外发射器/接收器完成。精度为 +-7 厘米。我能够遵循领导者算法。但是,我想知道如果传感器原始数据良好,为什么我还必须使用卡尔曼滤波器?它会改善什么?不仅会延迟发送给机器人的坐标(坐标不会立即更新,因为每个机器人每秒发送 4 次坐标需要时间来进行卡尔曼滤波器数学运算)
3 回答
传感器数据永远不是事实,无论它们有多好。他们总是会受到一些噪音的干扰。此外,它们确实具有有限的精度。因此,传感器数据只不过是您所做的观察,而您要做的是根据这些观察估计真实状态。用数学术语来说,您希望根据这些测量来估计可能性或联合概率。您可以根据上下文使用不同的工具来做到这一点。一个这样的工具是卡尔曼滤波器,它在最简单的情况下只是一个移动平均值,但通常与动态模型和一些关于错误/状态分布的假设结合使用,以便有用。动态模型对状态传播进行建模(例如运动知道先前的状态)和观察(测量),并且在机器人/ SLAM中,通常假设误差是高斯的。这种滤波器的一个非常重要和有用的产品是根据协方差估计不确定性。
现在,有哪些潜在的改进?基本上,您要确保您的传感器测量值与数学模型一致并且它们是“平滑的”。例如,如果您想估计移动车辆的位置,运动学方程会告诉您车辆的预期位置,并且您有一个相关的协方差。您的测量结果还带有协方差。所以,如果你得到的测量结果的确定性很低,你最终会相信数学模型而不是相信测量结果,反之亦然。
最后,如果您担心延迟......请注意,标准扩展卡尔曼滤波器的复杂性大致O(N^3)
是N
地标的数量。因此,如果您真的没有足够的计算能力,您可以将状态减少到pose, velocity
,然后开销将可以忽略不计。
尽管您从传感器获得准确的数据,但它们并不总是一致的。卡尔曼滤波器不仅可以识别测量数据中的任何异常值,而且可以在缺少某些测量值时进行预测。但是,如果您真的在寻找计算需求较少的东西,那么您可以选择免费的过滤器。
一般来说,卡尔曼滤波器通过对(使用正确的系数)测量(传感器输出)和预测传感器输出进行求和来帮助提高传感器精度。预测是最难的部分,因为您需要创建以某种方式预测传感器输出的模型。而且我认为在您的情况下,没有必要花时间创建这个模型。