目前,我有一个三轮车风格的机器人,该机器人使用扩展的卡尔曼滤波器来跟踪6个状态变量。系统的输入是转向编码器,距离编码器和旋转激光,仅将方位信息返回到已知地标。目前,两个编码器都位于主轮上(一个既可转向又可提供动力的编码器)。

卡尔曼滤波器跟踪的6个变量分别为X,Y,航向,距离缩放(距离编码器),转向校准(转向编码器的偏移),最后是旋转激光器的方位校准。

通过这种系统,我们将车辆组合在一起,为它提供了一个已知的良好位置,具有很多地标,可以绕行一点,最后得到一辆经过良好校准的车辆,该车辆可以可靠地行驶更长的距离几个地标。它简单,效果很好。随着时间的流逝,如果编码器发生漂移,它将自动跟随漂移并进行调整。

我们现在正在尝试将相同的原理应用于具有多个转向和驱动轮的机器人。在这种情况下,车辆将可以在任何方向上移动,在原地旋转等。每个转向/驱动轮将具有自己的转向和距离编码器,每个都需要进行校准。

我能否期望从更复杂的系统中获得相同的可靠性和性能?扩展卡尔曼滤波器以包含更多变量时,是否有任何常见陷阱要注意?是否存在基于次优值的风险?

#1 楼

我认为(基于我使用EKF进行导航的有限经验):

良好的运动学模型可以极大地改善EKF的性能。通过在三轮车系统的转向和里程表模型中包括偏差,您做对了。如果您可以为更复杂的系统导出并应用详细的运动学模型,那么您应该做得很好。如果不是这样,那么除了传感器错误和线性化错误外,EKF还必须考虑您在建模中的错误。这是危险的:包括未解决的错误源将很快使您的过滤器不一致。

如果事情失控(您的过滤器不能很好地收敛),您可以尝试多模型方法(IMM)。因此,我的建议是尽可能对系统建模。 EKF在这些任务上有很好的记录。祝你好运。