基本连续2D地图探索(带障碍物)算法

时间:2014-04-21 23:48:42

标签: algorithm mapping 2d robotics

问题在于:有一张地图的大小从200 * 200像素到1000 * 1000像素。每个像素的长度/宽度为三分之一英寸。

地图上有墙(可以是任意大小),可以通过任何方式进行预处理。然而,当问题开始时,一个机器人(像素大小为18 * 18)被放置在一个未知的位置,还有几个障碍物和一个目标,所有这些都在一个未知的位置。

如果机器人碰到任何墙/物体/目标,它会立即死亡。因此,它有一个简单的激光扫描仪,可以完美地看到前方80 * 80像素的正方形,以机器人为中心。

我已经解决了定位机器人并确定其在网格上的位置(在一个小错误内)的问题。我在为整个地图制作一个好的算法时遇到了一些麻烦,直到找到了目标。

我的想法是让机器人向右下方移动,并以某种方式从左向右扫过,避开障碍物和墙壁,直到找到目标,但我不确定这是一个好方法。

对于这样的事情,是否有任何不错的算法,或者是否有更好的算法用于我想要做的事情?

2 个答案:

答案 0 :(得分:0)

我想到的唯一算法是简单的Lee算法。 Here's一个相当不错的教程,讲述它的作用和工作原理。

使用此算法,您应该能够找到所有障碍并最终找到目标,同时您将找到通往目标的最短路径。

唯一的区别是你必须移动80x80对象而不是1x1对象,但我会让你处理你实现它的方式。

答案 1 :(得分:0)

您正在寻找寻路算法

一些建议包括" Flood Fill"算法或" Dijkstra算法"与李的算法非常相似(我甚至认为它们是相同的),但它只是另一个搜索术语

这可能是最流行的简单路径寻找算法:" A*search" (一个明星搜索)此链接还展示了一些其他路径查找算法。 (另一个有用的link)。

带*星搜索的关键是您必须知道自己的位置(本地化)以及目标所在。 Dijkstra类型算法能够在不事先了解其位置的情况下找到目标。

相关问题