- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如 docs 中所写, 可以将 cv::KalmanFilter 类用作扩展卡尔曼滤波器 (EKF)。有人可以解释一下吗?
涉及的所有矩阵are declared as public所以我可以编辑所有这些。source code用于普通(线性)卡尔曼滤波器。
我认为我应该用我的非线性系统编辑transitionMatrix
,即G
。这个矩阵是我的非线性系统之一,它以 statePost
和 control
作为输入变量; ControlMatrix应该全为0吧?
但是我应该把 G 的雅可比行列式放在哪里呢?
我对更新过程有同样的疑问,我有我的非线性系统 H
用于测量矩阵。
也许我有点困惑,有人可以帮助我吗?
最佳答案
所以,我认为我想出了如何将 cv::KalmanFilter
类用作 EKF。我是这样做的:
将 kf.statePost
保存在临时变量中:temp = kf.statePost
在kf.transitionMatrix
中放入转换函数的Jacobian
做KF的预测步骤
使用转换函数将 kf.statePre
更改为正确的值:kf.statePre = f(temp, control)
在kf.measurementMatrix
中放入测量(或校正)函数的雅可比行列式
做KF的修正步骤
用正确的值更改 kf.temp5
矩阵:kf.temp5 = measurement - h(statePre)
其中 h()
是测量(或修正)函数
用正确的值更改 kf.statePost
:kf.statePost = kf.statePre + kf.gain * kf.temp5
最后,您在 kf.statePost
中获得了系统的估计状态!
关于c++ - OpenCV 如何使用 KalmanFilter 类作为 ExtendedKF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533093/
如 docs 中所写, 可以将 cv::KalmanFilter 类用作扩展卡尔曼滤波器 (EKF)。有人可以解释一下吗? 涉及的所有矩阵are declared as public所以我可以编辑所有
我是一名优秀的程序员,十分优秀!