到目前为止,我已经能够创建一个应用程序,其中Kinect传感器固定在一个位置。我使用了语音识别、EmguCV(Open CV)和Aforge.NET来帮助我处理图像,学习和识别物体。一切运作良好,但总有改进的空间,我提出了一些问题:[忽略前三个,我想要第四个问题的答案]
-
帧率非常糟糕。即使没有进行任何处理,帧率也只有5 fps,而应该达到30 fps。我的应用程序运行良好,能够从摄像头获取颜色和深度帧并显示出来,但帧率仍然很差。样本运行得很好,约25 fps。即使我运行了与样本完全相同的代码,帧率也无法提高。:-( [不需要代码,请告诉我可能的问题。]
-
我想创建一个小型机器人,将Kinect和我的笔记本电脑安装在上面。我尝试使用Mindstorms套件,但低扭矩电机无法满足需求。请告诉我如何实现这一点。
-
如何在机器人上供电?我知道Kinect的电机使用12伏电压,但它是从交流适配器获取的。 [我不希望切断电缆并用12伏电池替换]
-
最大的问题是:它将如何在世界上导航。我已经完成了A*和泛洪填充算法。我阅读了这篇论文上千次,但一无所获。我心中有导航算法,但它如何在地球上定位自己呢? [它不应使用GPS或任何其他传感器,只使用它的眼睛,即Kinect]
帮助我将是非常棒的。我是一个新手,所以请不要期望我知道一切。我已经在网上找了两个星期,但没有运气。
非常感谢!
回答:
定位是一项棘手的任务,因为它依赖于对机器人将要放置的环境的先验知识(例如,你家的地图)。虽然存在同时定位和建图的算法,但它们往往是特定领域的,因此不适用于将机器人放置在任意位置并让其自主映射环境的一般情况。
然而,如果你的机器人确实对其环境有一个大致的(概率性的)了解,蒙特卡洛定位是一个不错的选择。从高层次上讲,它的工作原理大致如下:
- 首先,机器人应该在其已知环境内对其可能的位置进行大量随机猜测(称为粒子)。
- 每次传感器更新(即机器人移动了一小段距离后),它会使用当前传感器数据的统计模型调整每个随机猜测的正确概率。如果机器人进行360º传感器测量,这一点会特别有效,但这不是完全必要的。
伦敦帝国学院的Andrew Davison的这堂讲座很好地概述了所涉及的数学知识。(考虑到你正在尝试创建的内容,这门课程的其余部分也可能会对你非常有趣)。祝你好运!