Pau*_*ves 8 opencv kalman-filter
我正在使用卡尔曼滤波器opencv库来使用卡尔曼估计器功能.
我的程序不强制实时递归.我的问题是,当转换矩阵具有依赖于时间步长的元素时,我是否必须每次使用它(预测或正确)时更新转换矩阵以反映自上次递归以来经过的时间?
编辑:我问这个的原因是因为过滤器运行良好而没有对转换矩阵进行修正,但是当我更新时间步骤时它不会.
Ben*_*son 16
卡尔曼滤波器的许多描述都将转移矩阵写成F一个常数.正如您所发现的,Q在某些情况下,您必须在每次更新时更新它(以及),例如使用可变的时间步长.
考虑一个简单的位置和速度系统,用
F = [ 1 1 ] [ x ]
[ 0 1 ] [ v ]
Run Code Online (Sandbox Code Playgroud)
所以在每一步x = x + v(根据速度更新位置)和v = v(速度没有变化).
这很好,只要您的速度以长度/时间步长为单位.如果你的时间步长不同,或者你用一个更典型的单位表示速度,比如长度/秒,你需要这样写F:
F = [ 1 dt ] [ x ]
[ 0 1 ] [ v ]
Run Code Online (Sandbox Code Playgroud)
这意味着您必须F在时间步改变时(或每次,如果没有设定的时间表)计算新值.
请记住,您还在Q每次更新时添加过程噪音,因此可能还需要按时间缩放.
| 归档时间: |
|
| 查看次数: |
1612 次 |
| 最近记录: |