【问题标题】:How would I implement a particle filter for vision tracking?我将如何实现用于视觉跟踪的粒子过滤器?
【发布时间】:2015-09-21 13:09:03
【问题描述】:

所以我刚刚参加了 sebsastian thrun 的 AI 课程。在那里,他提到了如何构建一个粒子过滤器,用于根据航向 theta 和向前移动来跟踪移动的 xy 机器人。

代码在这里: https://gist.github.com/soulslicer/b4765ee8e01958374d3b

在他的实现中,他做了以下事情:

1. Get Range from Sensor of all bearings after moving R=1, Theta=0.5
2. Move all the particles by R=1, Theta=0.5
3. Compute the weights of all particles ranges against the measured range from sensor
4. Resample and draw new particles

这非常适用于运动模型。这到底如何用于计算机视觉跟踪?例如,我想跟踪一个黄色的圆形斑点。 我将如何“移动”粒子?我的成本函数可能是什么?尤其是移动部分,我不知道我会如何做计算机视觉跟踪的那一步


这是我认为它可能会起作用的方式,但我可能错了:

1. Get features from image, and compute the optical flow velocities of each feature
2. Place alot of particles in the scene with varying x,y,xvel,yvel
3. For the computation of weights, we can compare the each particle's velocity and position against all features
    If we can threshold out the object based on color/shape, can match image features to shapes and put that in the cost function
4. Resample and draw new particles

【问题讨论】:

    标签: computer-vision robotics particle-filter


    【解决方案1】:

    要使用粒子过滤,您需要:

    • 过渡模型(例如,用于移动机器人的运动模型)和
    • 观察模型(即,用于根据传感器读数计算权重的模型)。

    明确定义空格也很有帮助

    • 观察结果(例如,传感器读数范围)
    • 跟踪状态(例如,机器人位置范围)

    现在,根据您问题中的描述,我假设目标是根据计算出的最佳流动特征跟踪黄色斑点的位置。然后我会建模

    • 转换作为一个函数,它通过仅采样噪声来对给定先前位置的新位置进行采样,例如,想象在def move(self, turn, forward): 中仅使用+ random.gauss(0.0, self.turn_noise)+ random.gauss(0.0, self.forward_noise) 部分
    • 观察作为一个函数,为可能的观察和状态输入对返回高分

    我看到的问题是定义观察模型,即斑点位置和最佳流输出之间的似然函数,这不是微不足道/直观的,例如,黄色斑点是否可能位于高光流输出区域的中心?如果是这样,我如何将这种关系表达为似然函数?出于这个原因,我会考虑使用不同的观察结果,例如,使用嘈杂的黄色斑点检测器的输出。

    我的回答是基于第 16 页的particle-filters.ppt 文件,网址为http://www.probabilistic-robotics.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-04-17
      • 2023-03-21
      相关资源
      最近更新 更多