首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用卡尔曼滤波跟踪位置和速度

利用卡尔曼滤波跟踪位置和速度
EN

Stack Overflow用户
提问于 2015-12-15 13:45:03
回答 1查看 3.1K关注 0票数 6

我使用卡尔曼滤波(恒速模型)来跟踪物体的位置和速度。我测量物体的x,y和跟踪x,y,vx,vy。这是可行的,但如果传感器读数为+- 20毫米,即使点不只是移动噪声,x,y,vx,vy也会波动。对于位置,这足以满足我的需要,但速度变化时,点是静止的,这是造成问题,我的对象速度计算。有办法解决这个问题吗?另外,如果切换到恒加速度模型改进了这一点?我正在通过摄像机跟踪一个机器人。

我正在使用opencv实现,我的kalman模型与1相同。

1

EN

回答 1

Stack Overflow用户

发布于 2015-12-16 23:38:13

卡尔曼滤波器的设计最重要的不是数据,而是误差估计。该示例中的矩阵似乎是任意选择的,但是您应该使用系统的特定知识来选择它们。特别是:

  • 误差协方差有单位。这是标准差平方。所以你的位置误差是“长度平方”,速度是“每次长度平方”。这些矩阵中的值将是不同的,取决于您是在m还是mm中工作。
  • 您正在实现一个“恒定速度”模型,但是示例中的"processNoiseCov“为位置和速度过程噪声设置了相同的值。这意味着你可能因为你的速度错误而误解了你的位置,你也可能是错的,因为物体以一种独立于速度的方式传送。在CV模型中,你会期望位置过程噪声很低(基本上非零只是因为数值原因和建模误差),系统的真实未知运动将归因于未知的速度。这个问题也干扰了KF从位置输入推断速度的能力,因为位置的“隐形传态误差”不是速度变化造成的。
  • 如果你输入+/-20毫米的误差(如果你想要模拟理想行为,你真的应该加高斯噪声),那么你的近似标准差是11.5mm,或者方差是(11.5mm)^2。不知道你的单位是什么(mm或m),我不能说"measurementNoiseCov“的数值应该是多少,但它不是0.1 (如例所示)。

最后,即使所有这些都是正确的,记住KF最终是一个线性滤波器。无论你输入什么噪声,都会出现在输出中,只是按某个因素(卡尔曼增益)进行缩放。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34290860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档