首页 文章

使用Kinect和EMGU(OpenCV包装器)对机器人进行本地化

提问于
浏览
1

我正在研究小型WPF桌面应用程序来跟踪机器人 . 我的桌面上有一个Kinect for Windows,我可以执行基本功能并运行深度相机流和RGB相机流 .

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

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

问题是我之前从未使用过计算机视觉,这实际上是我的第一次,我没有坚持截止日期,而且我非常愿意学习所有相关的东西来完成这个项目 .

我正在寻找细节,解释,提示,链接或教程来满足我的需求 .

谢谢 .

2 回答

  • 3

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

    • Optical Flow Based Odometery :(也称视觉测距):

    • 从一个图像或特征中提取关键点(我使用过Shi-Tomashi或cvGoodFeaturesToTrack)

    • 对连续图像执行相同操作

    • 匹配这些功能(我使用过Lucas-Kanade)

    • 从Kinect中提取深度信息

    • 计算两个3D点 Cloud 之间的转换 .

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

    • Monte Carlo Localization :这个比较简单,但你也应该使用它的轮子 . 检查this paper以获取基于c#的方法 .

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

    令人遗憾的是,尽管库中存在库以便轻松地执行您需要的操作,但将它们包装为C#是一项艰巨的任务 . 但是,如果您可以编写包装器代码,那么90%的工作都已完成,要使用的密钥库是PCLMRPT .

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

    你必须阅读Slam for Dummies,它将使蒙特卡洛本地化的事情变得非常清楚 .

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

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

    最好

  • 1

    不确定是否会对你有所帮助......但我把一个可能有用的Python模块放在一起 .

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

相关问题