Questions tagged «ekf»

2
可视化和调试EKF
我目前正在调试和调整EKF(扩展卡尔曼滤波器)。任务是经典的移动机器人姿态跟踪,其中地标是AR标记。 有时,我很惊讶某些度量如何影响估计。当我查看并计算涉及的数字和矩阵时,我可以算出执行更新步骤的方式,发生的原因和原因,但这非常繁琐。 因此,我想知道是否有人在使用某种技术,技巧或聪明的可视化来更好地了解EKF更新步骤中正在发生的事情? 更新#1(将更具体,并显示我所想到的第一近似值) 我正在寻找的是以某种方式可视化一个更新步骤的方式,这种方式可以让我感觉到测量的每个组成部分如何影响状态的每个组成部分。 我的第一个想法是绘制测量值及其预测值以及从K矩阵中提取的一些矢量。来自K的向量表示创新向量(测量-测量预测,未绘制)将如何影响状态的每个分量。 目前,我正在使用状态为2D姿势(x,y,角度)且测量值也是2D姿势的EKF。 在所附的图片(在新页面/标签中打开以查看完整的分辨率)中,(缩放的)矢量K(1,1:2)(MATLAB语法从3x3矩阵中提取子矩阵)应该给出一个思路: EKF状态的分量将随着当前创新向量,K(2,1:2)的变化而变化,依此类推。在此示例中,创新向量具有相对较大的x分量,并且与向量K(2,1:2)-状态的第二个分量(y坐标)变化最大。 该图中的一个问题是,它没有感觉到创新矢量的第三分量(角度)如何影响状态。状态的第一部分增加了一点,这与K(1:1:2)所表明的相反-创新的第三部分导致了这种情况,但是目前我无法形象地看到。 第一个改进是可视化创新的第三部分如何影响国家。然后,最好添加协方差数据以了解如何创建K矩阵。 更新#2现在,该图在状态空间中具有矢量,这些矢量显示了测量的每个分量如何改变位置。从该图可以看出,测量的第三部分会最大程度地改变状态。

1
为什么仍应使用EKF代替UKF?
Unscented Kalman滤波器是Extended Kalman滤波器的一种变体,它使用不同的线性化,该线性化依赖于变换一组“ Sigma点”而不是一阶Taylor级数展开。 UKF不需要计算雅可比行列式,可以用于不连续变换,并且最重要的是,对于高度非线性的变换,UKF比EKF更准确。 我发现的唯一缺点是“ EKF通常比UKF快一点”(概率机器人)。对于我来说,这似乎可以忽略不计,并且它们的渐近复杂度似乎是相同的。 那么,为什么每个人似乎仍然比EKF更喜欢EKF?我是否错过了UKF的一大劣势?

2
具有激光扫描+已知图的扩展卡尔曼滤波器
我目前正在为一个学校项目工作,该项目需要为带有激光扫描仪的点机器人实现扩展的卡尔曼滤波器。机器人可以以0度转弯半径旋转并向前行驶。所有运动都是分段线性的(驱动,旋转,驱动)。 我们使用的模拟器不支持加速,所有运动都是瞬时的。 我们还需要定位一个已知的地图(png图像)。我们可以在图像中进行光线跟踪以模拟激光扫描。 我和我的搭档对我们需要使用的运动和传感器模型几乎不感到困惑。 到目前为止,我们将状态建模为向量。(x,y,θ)(x,y,θ)(x,y,\theta) 我们使用更新公式如下 void kalman::predict(const nav_msgs::Odometry msg){ this->X[0] += linear * dt * cos( X[2] ); //x this->X[1] += linear * dt * sin( X[2] ); //y this->X[2] += angular * dt; //theta this->F(0,2) = -linear * dt * sin( X[2] ); //t+1 ? this->F(1,2) = linear …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.