有人私信我说,卡尔曼滤波的时候加速度认为保持不变似乎不妥

其实这个可以理解为对加速度a作了零阶保持,即认为a(k+1)=a(k),上面一共三个变量,因此我将其称为三维零阶卡尔曼算法。
当然这里也可以替换成一阶保持甚至二阶保持。
对于一阶保持,a(k+1)=a(k)+[a(k)-a(k-1)],也就是多了一个微分项那么上面的矩阵以微分表示为

或直接以变量表示

也就变成了四维一阶卡尔曼算法。二阶保持同理,再多一个加速度的二次微分,成为五维二阶卡尔曼。
当我们只需要对一个变量进行滤波时,一维零阶表示为

二维一阶表示为

或

优点
1、一定程度上更能反应出实际的运动情况
2、相对于零阶保持响应速度更快,滤波后相移更小
缺点
1、维度变高,矩阵运算计算复杂
2、响应速度快也意味着在某些噪声幅值较大的情况下,滤波效果会有所下降
总结
零阶保持与多阶保持实际滤波效果差距不大,在没有特殊需求时使用零阶保持即可,在某些对响应速度有较严格要求的情况下可以使用一阶保持或二阶保持。 |