Mat*_*oli 47 algorithm robotics robot arduino geolocation
我正在攻击一个真空吸尘器机器人用微控制器(Arduino)来控制它.我想在打扫房间时提高效率.就目前而言,它只是直接转动,当它碰到某些东西时.
但我很难找到最好的算法或方法来知道它在房间里的位置.我正在寻找一种保持廉价(低于100美元)而不是复杂的想法(一种不需要计算机视觉博士论文的想法).如有必要,我可以在房间里添加一些不连续的标记.
现在,我的机器人有:
你有任何想法吗?这些问题是否存在任何标准方法?
注意:如果这个问题属于另一个网站,请移动它,我找不到比Stack Overflow更好的地方.
Nat*_*ohl 32
确定机器人在其环境中的位置的问题称为本地化.计算机科学研究人员多年来一直试图解决这个问题,但成效有限.一个问题是你需要相当好的感官输入才能弄清楚你的位置,而网络摄像头(即计算机视觉)的感官输入远非一个已解决的问题.
如果这没有吓到你:我发现最容易理解的本地化方法之一是粒子过滤.这个想法是这样的:



如果你搜索一下,你会发现很多例子:例如一个机器人的视频使用粒子过滤来确定它在一个小房间里的位置.
粒子滤波很好,因为它很容易理解.这使得实施和调整它不那么困难.还有其他类似的技术(如卡尔曼滤波器)可以说在理论上更合理,但可能更难以理解.

每个房间的QR码海报不仅会制作一个有趣的现代艺术作品,而且相对容易用相机拍摄!
如果您可以在房间内放置一些标记,可以选择使用相机.如果2个已知标记具有角位移(从左到右),则摄像机和标记位于圆上,该圆的半径与标记之间的测量角度相关.我不记得正确的公式,但标记之间的弧段(在那个圆圈上)将是你看到的角度的两倍.如果标记处于已知高度且摄像机处于固定倾斜角度,则可以计算到标记的距离.只要有足够的标记,这两种方法中的任何一种都可以确定你的位置.使用两者将有助于使用更少的标记.
不幸的是,由于测量误差,这些方法是不完美的.您可以通过使用卡尔曼估计器来合并多个噪声测量值以获得良好的位置估计 - 然后您可以输入一些航位推算信息(这也是不完美的)以进一步优化它.这部分非常深入到数学,但我要说这是要求你在尝试的东西上做得很好.没有它你可以做得很好,但如果你想要一个最佳解决方案(就给定输入的最佳位置估计而言),没有更好的方法.如果你真的想要自主机器人的职业生涯,这将在你的未来发挥很大作用.(
一旦您确定了您的位置,您就可以以任何您想要的模式覆盖房间.继续使用撞击传感器来帮助构建障碍物图,然后你需要设计一种扫描结合障碍物的方法.
不知道你有数学背景呢,但这里的书: http://books.google.com/books/about/Applied_optimal_estimation.html?id=KlFrn8lpPP0C
这不会取代已接受的答案(这很好,谢谢!)但我可能会建议您使用 Kinect 并使用它代替您的网络摄像头,要么通过 Microsoft 最近发布的官方驱动程序,要么使用被黑的驱动程序(如果您的 EeePC 没有) Windows 7(大概没有)。
这样,定位将通过 3D 视觉得到改善。观察地标现在会告诉您地标有多远,而不仅仅是地标位于视野中的哪个位置。
无论如何,公认的答案并没有真正解决如何在视野中挑选地标,只是假设你可以。虽然 Kinect 驱动程序可能已经包含了特征检测(我不确定),但您也可以使用 OpenCV 来检测图像中的特征。