
基于CV、CT模型卡尔曼滤波及IMM模型滤波的目标跟踪与轨迹误差输出

(假装这里有动态轨迹图)
目标跟踪这玩意儿说难不难,但想把三种经典滤波模型玩明白还真得摔几个跟头。咱们直接上代码
,边看边吐槽。
先整点硬核的。CV模型(匀速模型)的状态转移矩阵长这样:
```python
def cv_transition_matrix(dt):
return np.array([
[1, 0, dt, 0],
[0, 1, 0, dt],
[0, 0, 1, 0],
[0, 0, 0, 1]
])
```
这货假设目标匀速运动,但实战中遇到转弯立马歇菜。实测发现当目标突然右转时,CV模型的预测
轨迹直接冲出跑道(误差暴涨3倍不是梦)。
轮到CT模型(协调转向模型)秀操作了:
```python
class CTKalman:
def __init__(self, turn_rate):
self.w = turn_rate # 转弯率这个参数能要人命
def update_model(self, new_w):
# 动态调整转弯率才是灵魂所在
self.w = 0.9*self.w + 0.1*new_w
```
但固定转弯率在蛇形走位面前就是个弟弟。实测时需要每5帧重新估计一次转弯率,不然误差曲线
能给你画出心电图效果。
IMM(交互多模型)才是真大哥,把CV和CT模型揉在一起: