两件事情。
如果您打算进行映射,则需要完善的同时定位和映射(SLAM)算法。请参阅:同时定位和映射(SLAM):第一部分基本算法。在SLAM中,估计机器人状态只是问题的一半。如何做到这一点比这里可以回答的问题要大得多。
关于本地化(估计机器人的状态),这不是卡尔曼滤波器的工作。从过渡
到X (吨+ 1 )x (t )= [ x ,y,X˙,ÿ˙,θ ,θ˙]x (t + 1 )由于角加速度和速度,它不是线性函数。因此,您需要为该任务考虑非线性估计量。是的,有标准的方法可以做到这一点。是的,它们可以在文献中找到。是的,通常所有输入都放在同一过滤器中。机器人的位置,速度,方向和角速度用作输出。是的,我将在这里简要介绍他们的共同主题。主要要点是
- 包括您所在州的陀螺仪和IMU偏差,否则您的估计会有所不同
- 一个扩展卡尔曼滤波器(EKF)通常用于这个问题
- 实施可以从头开始,通常不需要“查找”。
- 大多数本地化和SLAM问题都存在实现方法,因此不必做过多的工作。请参阅:机器人操作系统ROS
现在,在您的系统环境中解释EKF。我们有一个IMU +陀螺仪,GPS和里程表。如上所述,该机器人是差动驱动器。过滤任务是,以所述机器人的当前姿态估计
X吨,控制输入ü 吨,并从各传感器,测量Ž 吨,和在下一时间步骤产生所述估计
X吨+ 1。我们将IMU测量值称为I t,将GPS 称为G t,将里程表称为O t。X^ŤüŤžŤX^t + 1一世ŤGŤØŤ
我假定我们感兴趣的是估计机器人姿态作为
。IMU和陀螺仪的问题在于漂移。加速度中存在非平稳偏差,您必须在EKF中解决。(通常)通过将偏差置于估算状态来完成此操作。这使您可以直接估计每个时间步的偏差。
X 吨 = X ,ÿ ,˙ X,˙ ÿ,θ ,˙ θ,bxt=x,y,x˙,y˙,θ,θ˙xt=x,y,x˙,y˙,θ,θ˙,b,对于偏差向量。b
我假设:
- =两次距离测量值,代表胎面以很小的时间增量行进的距离Ot
- =三个取向测量值 α ,β ,θ和三个accelleration测量 ¨ X,¨ ÿ,¨ ž。Itα,β,θX¨,ÿ¨,ž¨
- =机器人在全局框架中
的位置 G x t ,G y t。GŤGXŤ,GÿŤ
通常,控制输入的结果(每个踏面的期望速度)很难映射到输出(机器人姿势的变化)。代替,通常是将里程表用作控件的“结果” (请参见Thrun,里程表问题)。当您不在几乎没有摩擦的表面上时,此假设非常适用。如我们所见,IMU和GPS可以帮助纠正滑移。ü
因此,第一个任务是预测从当前状态的下一个状态
。如果是差动驱动机器人,则可以直接从文献中获得此预测(请参见《轮式移动机器人的运动学》或任何现代机器人学教科书中更为简洁的介绍),或从头得出,如下所示:里程表问题。X^t + 1= f(x^Ť,uŤ)
这样,我们现在可以预测X吨+ 1 = ˚F (X吨,ö 吨)。这是传播或预测步骤。您可以通过简单地传播来操作机器人。如果值Ø 牛逼是完全准确的,你将永远不会有一个估计X不完全等于你的真实状态。在实践中,这永远不会发生。X^t + 1= f(x^Ť,ØŤ)ØŤX^
这仅给出先前估计的预测值,而不能告诉我们估计的精度如何随时间降低。因此,要传播不确定性,必须使用EKF方程(在高斯噪声假设下以封闭形式传播不确定性),粒子滤波器(使用基于采样的方法)*,UKF(使用逐点方法)不确定性的近似值),或许多其他变体之一。
对于EKF,我们进行如下操作。令为机器人状态的协方差矩阵。我们
使用泰勒级数展开来线性化函数f以获得线性系统。使用卡尔曼滤波器可以轻松地求解线性系统。假设在时间t处估计的协方差为P t,并且在里程表中假定的噪声协方差作为矩阵U t给出
(通常是对角2 × 2矩阵,如.1 × I 2 × 2)。在函数f的情况下,我们获得了雅可比行列式PŤFŤPŤüŤ2 × 2.1 × 我2 × 2F
和˚Fü=∂˚FFX= ∂F∂X,然后传播不确定性为Fü= ∂F∂ü
Pt + 1= FX* PŤ* FŤX+ Fü* üŤ* FŤü
现在我们可以传播估计值和不确定性。请注意,不确定性将随时间单调增加。这是预期的。为了解决这个问题,通常要做的是使用和G t更新预测状态。这被称为过滤过程的测量步骤,因为传感器提供了对机器人状态的间接测量。一世ŤGŤ
HG()H一世()[R[RG[R一世H
sžs
小号小号 = ħ 小号 * P 吨+ 1
vs= zs- ^ hs(x^t + 1)
小号s= 高s* Pt + 1* 高Ťs+ Rs
ķ= Pt + 1* 高Ťs小号− 1s
X^t + 1= x^t + 1− K* v
Pt + 1= (我− K* 高s)* Pt + 1
žG= 小时G()HG[RG
ž一世= 小时一世()p一世[R一世p一世。出于偏见而合并更新更加困难,而且这是我的专长。但是,由于您对平面运动感兴趣,因此可以简化此问题。您必须为此寻找文学。
一些我的头上参考:
提高基于EKF的视觉惯性里程表的准确性
基于可观察性的一致多机器人联合EKF估计器
具有未知故障偏置的INS-GPS松耦合系统的自适应两阶段EKF
这个领域已经足够成熟,谷歌(学者)可能会找到一个可行的实现。如果您打算在这方面做很多工作,建议您阅读一本扎实的教科书。也许类似Google Car 的S. Thrun的Probablistic Robotics。(我发现它对于那些深夜的实现是有用的参考)。
* 机器人操作系统(ROS)中有几种基于PF的估算器
。但是,这些已针对室内使用进行了优化。粒子过滤器处理多模态PDF,这些PDF可能是由于基于地图的本地化(我在这扇门或那扇门附近)引起的。我相信大多数户外设备(尤其是至少可以间歇使用GPS的设备)都使用扩展卡尔曼滤波器(EKF)。我已经成功地将扩展卡尔曼滤波器用于带差动驱动的室外地面流动站。