使用Kinect进行机器人导航

到目前为止,我已经能够创建一个应用程序,其中Kinect传感器固定在一个位置。我使用了语音识别、EmguCV(Open CV)和Aforge.NET来帮助我处理图像,学习和识别物体。一切运作良好,但总有改进的空间,我提出了一些问题:[忽略前三个,我想要第四个问题的答案]

  1. 帧率非常糟糕。即使没有进行任何处理,帧率也只有5 fps,而应该达到30 fps。我的应用程序运行良好,能够从摄像头获取颜色和深度帧并显示出来,但帧率仍然很差。样本运行得很好,约25 fps。即使我运行了与样本完全相同的代码,帧率也无法提高。:-( [不需要代码,请告诉我可能的问题。]

  2. 我想创建一个小型机器人,将Kinect和我的笔记本电脑安装在上面。我尝试使用Mindstorms套件,但低扭矩电机无法满足需求。请告诉我如何实现这一点。

  3. 如何在机器人上供电?我知道Kinect的电机使用12伏电压,但它是从交流适配器获取的。 [我不希望切断电缆并用12伏电池替换]

  4. 最大的问题是:它将如何在世界上导航。我已经完成了A*和泛洪填充算法。我阅读了这篇论文上千次,但一无所获。我心中有导航算法,但它如何在地球上定位自己呢? [它不应使用GPS或任何其他传感器,只使用它的眼睛,即Kinect]

帮助我将是非常棒的。我是一个新手,所以请不要期望我知道一切。我已经在网上找了两个星期,但没有运气。

非常感谢!


回答:

定位是一项棘手的任务,因为它依赖于对机器人将要放置的环境的先验知识(例如,你家的地图)。虽然存在同时定位和建图的算法,但它们往往是特定领域的,因此不适用于将机器人放置在任意位置并让其自主映射环境的一般情况。

然而,如果你的机器人确实对其环境有一个大致的(概率性的)了解,蒙特卡洛定位是一个不错的选择。从高层次上讲,它的工作原理大致如下:

  1. 首先,机器人应该在其已知环境内对其可能的位置进行大量随机猜测(称为粒子)。
  2. 每次传感器更新(即机器人移动了一小段距离后),它会使用当前传感器数据的统计模型调整每个随机猜测的正确概率。如果机器人进行360º传感器测量,这一点会特别有效,但这不是完全必要的。

伦敦帝国学院的Andrew Davison的这堂讲座很好地概述了所涉及的数学知识。(考虑到你正在尝试创建的内容,这门课程的其余部分也可能会对你非常有趣)。祝你好运!

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注