我正在破解一个吸尘器机器人用微控制器(Arduino)控制它。我想要做到打扫房间时更有效率。目前,它只是直行并在碰到物体时转向。
但我很难找到最佳算法或方法用于知道它在房间中的位置。我正在寻找一种既便宜(不到 100 美元)又不太复杂(不需要计算机视觉博士学位论文)的想法。如果需要的话,我可以在房间里添加一些离散的标记。
现在,我的机器人有:
- 一个网络摄像头
- 三个接近传感器(约 1 米范围)
- 指南针(暂时不用)
- Wi-Fi
- 如果电池充满或几乎耗尽,其速度可能会有所不同
- 上网本Eee PC http://en.wikipedia.org/wiki/Asus_Eee_PC嵌入在机器人上
你有这样做的想法吗?对于此类问题是否存在任何标准方法?
注意:如果这个问题属于其他网站,请移走它,我找不到比 Stack Overflow 更好的地方了。
确定机器人在其环境中的位置的问题称为本土化 http://en.wikipedia.org/wiki/Robot_localization。计算机科学研究人员多年来一直试图解决这个问题,但成效有限。一个问题是,您需要相当好的感官输入来确定自己所在的位置,而来自网络摄像头(即计算机视觉)的感官输入远未解决。
如果这没有吓到您:我发现最容易理解的本地化方法之一是粒子过滤 http://en.wikipedia.org/wiki/Particle_filter。这个想法是这样的:
- 你跟踪一堆粒子,每个代表环境中一个可能的位置。
- 每个粒子还有一个关联的可能性这告诉您您对粒子真正代表您在环境中的真实位置的信心有多大。
- When you start off, all of these particles might be distributed uniformly throughout your environment and be given equal probabilities. Here the robot is gray and the particles are green.
- When your robot moves, you move each particle. You might also degrade each particle's probability to represent the uncertainty in how the motors actually move the robot.
- When your robot observes something (e.g. a landmark seen with the webcam, a wifi signal, etc.) you can increase the probability of particles that agree with that observation.
- 您可能还想根据观察结果定期用新粒子替换概率最低的粒子。
- 要确定机器人的实际位置,您可以使用概率最高的粒子、概率最高的簇、所有粒子的加权平均值等。
如果你稍微搜索一下,你会发现很多例子:例如机器人使用粒子过滤来确定其在小房间中的位置的视频 http://www.youtube.com/watch?v=AMX_OcweGv0.
粒子过滤很好,因为它很容易理解。这使得实施和调整它变得不那么困难。还有其他类似的技术(例如卡尔曼滤波器 http://en.wikipedia.org/wiki/Kalman_filter)这在理论上可能更合理,但可能更难理解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)