1

我正在开发小型 WPF 桌面应用程序来跟踪机器人。我的办公桌上有一个适用于 Windows 的 Kinect,我能够执行基本功能并运行深度相机流和 RGB 相机流。

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

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

问题是我以前从未使用过计算机视觉,这实际上是我的第一次,我没有被最后期限所束缚,我非常愿意学习所有相关的东西来完成这个项目。

我正在寻找细节、解释、提示、链接或教程来满足我的需要。

谢谢。

4

2 回答 2

3

机器人本地化是一个非常棘手的问题,我自己已经苦苦挣扎了几个月,我可以告诉你我取得了什么成就但是你有很多选择:

  • 基于光流的里程计:(也称为视觉里程计):
    1. 从一张图像或特征中提取关键点(我使用了 Shi-Tomashi 或 cvGoodFeaturesToTrack)
    2. 对连续图像执行相同操作
    3. 匹配这些特征(我使用了 Lucas-Kanade)
    4. 从 Kinect 中提取深度信息
    5. 计算两个 3D 点云之间的变换。

上面的算法正在做的是试图估计两帧之间的相机运动,这将告诉你机器人的位置。

  • Monte Carlo Localization:这相当简单,但您也应该使用车轮里程计。查看本文了解基于 ac# 的方法。

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

可悲的是,尽管 C++ 中存在库可以很容易地完成您需要的工作,但将它们包装为 C# 是一项艰巨的任务。但是,如果您可以编写包装器,那么您的工作就完成了 90%,要使用的关键库是PCLMRPT

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

您必须阅读Slam for Dummies,它将使有关 Monte Carlo Localization 的事情变得非常清楚。

残酷的现实是,这非常棘手,您很可能最终会自己动手。我希望你能深入研究这个庞大的话题,并且会学到很棒的东西。

有关更多信息或我写的包装器。只需在下面发表评论... :-)

最好的

于 2013-04-14T14:47:41.433 回答
1

不确定是否对您有帮助......但我整理了一个可能有帮助的 Python 模块。

http://letsmakerobots.com/node/38883#comments

于 2013-12-31T04:04:41.133 回答