2013-03-26 36 views
1

我正在研究小型WPF桌面应用程序来跟踪机器人。我的桌面上有一个适用于Windows的Kinect,我能够完成基本功能并运行深度相机流和RGB相机流。使用Kinect和EMGU(OpenCV封装器)的机器人本地化

我需要的是追踪地板上的机器人,但我不知道从哪里开始。我发现我应该使用EMGU(OpenCV包装)

我想要做的是跟踪一个机器人,并找到它的位置使用深度相机。基本上,它是用于使用立体三角测量机器人的本地化。然后使用TCP和Wifi向机器人发送一些命令,使用RGB和Depth相机将他从一个地方移动到另一个地方。 RGB摄像机还将用于映射区域中的物体,以便机器人可以采取最佳路径并避开物体。

问题是我之前从未和Computer Vision合作过,实际上我是第一个,我并没有坚持到最后期限,我更愿意学习所有相关的东西来完成这个项目。

我正在寻找细节,解释,提示,链接或教程来达到我的需要。

谢谢。

回答

3

机器人定位是一个非常棘手的问题,我自己一直在挣扎了好几个月,现在,我可以告诉你,我已经实现了什么,但你有多种选择:

  • 光流基于Odometery: (也称为视觉里程计):
    1. 提取关键点从一个图像或特征(I用于施-Tomashi,或cvGoodFeaturesToTrack)
    2. 执行相同的一个连续图像
    3. 符合这些功能(我使用Lucas-Kanade)
    4. 从Kinect提取深度信息
    5. 计算两个三维点云之间的转换。

什么上述算法正在做的是它试图估计两帧,它会告诉你该机器人的位置之间的摄像机运动。

  • 蒙特卡罗定位:这是相当简单的,但你也应该用轮odometery它。 检查this paper为基于c#的方法。

上述方法使用概率模型来确定机器人的位置。

可悲的是,即使C++中存在的库很容易地执行你所需要的,将它们包装为C#是一项艰巨的任务。如果你可以编码一个包装,那么你的工作的90%完成了,使用的关键库是PCLMRPT

最后一个选项(目前为止最简单但最不准确)是使用内置于Kinect SDK 1.7中的KinectFusion。但是我的机器人本地化经验非常糟糕。

您必须阅读Slam for Dummies,这将使蒙地卡罗本地化的事情非常清楚。

困难的现实是,这是非常棘手的,你很可能最终会自己做。我希望你深入这个广阔的话题,并且会学到很棒的东西。

欲了解更多信息,或我编写的包装。只是评论如下... :-)

最佳

+0

感谢您的回复。其实,我用kinect解决了它。我在每个机器人上使用2个小球,一个用于前部,另一个用于后部。我正在用Hough循环算法跟踪球。它工作正常,驾驶机器人1到机器人2,并按照领导者的例子。尽管如此,我仍在努力。 Woulb很好btw检查你的一些例子。 – moenad 2013-04-14 16:37:23

+0

很高兴看到你解决了你的问题,我的例子太复杂了:-)我认为你的方法非常聪明,尽管它仍然不是“无标记”的。无论如何。最好。 – 2013-04-14 16:44:41