我有一个系统,其中有两个单独的子系统来估计机器人位置。
第一个子系统由3个摄像头组成,用于检测机器人携带的标记,并输出3个机器人位置和方向的估计值。 br />第二个子系统是一个位于机器人上的系统,用于测量机器人两点的速度。通过对这两个数值进行积分,我可以估算出机器人的位置和方向(因为我同时跟踪了两个点)。第一个系统大约每秒输出一次,而第二个系统更频繁地输出(每秒100-200次)。

我认为必须有一种比仅用一个位置重置位置更好的方法第一个系统的估算值(因为它不是100%准确的),但也要使用第二个传感器系统的累计位置并将其与第一个系统的新数据融合。另外,还有一个问题是如何融合第一个系统的3个估计?必须有比纯平均值更好的方法,因为这可能会导致两个估计值完全相同,而第三个估计值完全不同(这意味着可能更错误)?

推荐在这种系统中使用的融合算法?我知道卡尔曼滤波器,但是我在弄清楚如何使用它作为两个系统以不同频率输出数据时遇到了麻烦。将估算值转换为更正确,更准确的估算值?

谢谢

#1 楼

您所描述的实际上是使用卡尔曼滤波器的教科书案例。首先,您需要一个预测步骤。假设您已经预测了机器人$(x,y,\ theta)$的姿态,并给出了先前的姿态估计值和您的高频速度测量值$(v,\ω)$,其中$ v $是线速度$ \ omega $是角速度。



$ P $是3x3协方差矩阵,表示机器人姿态的不确定性。 $ Q $是输入的协方差(即,这些速度测量的噪声有多大?)$ F $是运动模型相对于状态的雅可比行列,$ G $是输入相对于输入的雅可比行列,即,



现在,您不需要进行更频繁的校正更新,该更新实际上测量的是完整状态,因此非常简单,即



其中$ z_k $是您的测量值(来自相机),$ R $是与该测量值相关的协方差矩阵(可能是对角矩阵)。将该测量值与预测的测量值(在您的情况下,这只是最新的姿态估计值)进行比较。在这种简单情况下,卡尔曼增益是当前姿态协方差与姿态协方差与测量协方差之和的比例。

要回答有关不同速率的问题,您可以运行您的动作会不断更新,直到您的预测更新到来。例如,在进行校正之前,可能会发生100次运动更新。最简单的方法是按顺序处理它们。只需连续应用三个更正。另一种方法是将它们堆叠并执行单个更新。您将需要调整更正更新步骤以这种方式进行。