使用光流查找机器人行进的距离

时间:2010-06-18 11:19:49

标签: localization opencv computer-vision robotics opticalflow

我正在开展一个项目,我们正在开发一个自动机器人。我必须基本上找出机器人在任何2个间隔之间行进的距离。我正在使用OpenCV,并使用OpenCV的光流功能,我能够找出2个不同图像中每个像素的速度/距离。使用这些信息,我希望能够找出机器人在这两幅图像之间的距离。

我想到了一种方法,我们可以在像素行进的距离和机器人行进的距离(使用一些测试)之间建立输入输出映射。通过这种方式,使用神经网络,我们将能够找到这种关系。然而,光流将取决于相机与像素的距离,这将导致问题。

有什么方法可以解决这个问题吗?

4 个答案:

答案 0 :(得分:3)

我希望你最终接受过去收到的答案。无论如何,我曾经在SO(在OpenCV中)发布了这个问题的解决方案,所以这里是:

How can I determine distance from an object in a video?

答案 1 :(得分:1)

你考虑过做里程计吗?您可以使用编码器和加速度计来计算距离。是更便宜的方式。

答案 2 :(得分:1)

如果在特定距离旋转的车轮的旋转帮助下找到距离怎么样?

Distance=no of rotation* circumference of wheel

答案 3 :(得分:0)

answer offered by Jacob是追求的正确道路,但您可能会发现由此产生的距离传播信息相当嘈杂。您可能需要考虑使用Kalman filters来改善您的本地化估算值。

关于卡尔曼滤波器的文献非常多,但我在下面列出了一篇相关论文。

Larry H. Matthies,Richard Szeliski和Takeo Kanade(1989)。 “Kalman Filter-based Algorithms for Estimating Depth from Image Sequences ”,“国际计算机视觉杂志”,第3卷,第3期,9月,第209-236页。