OpenCV如何使用KalmanFilter类作为ExtendedKF

Mic*_*ica 10 c++ opencv kalman-filter

文档中所述,可以使用cv :: KalmanFilter类作为扩展卡尔曼滤波器(EKF).有人能解释我怎么样?

涉及的所有矩阵都被声明为公共,因此我可以编辑所有这些矩阵.的源代码是用于正常(线性)卡尔曼滤波器.

我认为我应该transitionMatrix用我的非线性系统编辑,即G.这个矩阵是我的非线性系统之一,具有输入变量statePostcontrol; 和ControlMatrix应该都是0.对吗?

但是我应该把G的雅可比放在哪里呢?

我对更新过程有同样的疑问,我有一个非线性系统H用于measurementMatrix.

也许我有点困惑,有人可以帮助我吗?

Mic*_*ica 10

所以,我认为我想出了如何将该cv::KalmanFilter类用作EKF.这就是我的方式:

  1. 保存在临时变量中kf.statePost:temp = kf.statePost

  2. 放入kf.transitionMatrix过渡函数的雅可比行列式

  3. 做KF的预测步骤

  4. kf.statePre使用转换函数更改正确的值:kf.statePre = f(temp, control)

  5. 放入kf.measurementMatrix测量(或校正)功能的雅可比行列式

  6. 做KF的修正步骤

  7. kf.temp5使用正确的值更改矩阵:测量(或校正)功能kf.temp5 = measurement - h(statePre)在哪里h()

  8. kf.statePost使用正确的值更改:kf.statePost = kf.statePre + kf.gain * kf.temp5

最后你得到了系统的估计状态kf.statePost!