【问题标题】:Basic continuous 2D map exploration ( with obstacles ) algorithms基本的连续 2D 地图探索(有障碍物)算法
【发布时间】:2014-04-21 23:48:42
【问题描述】:

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

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

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

我已经解决了定位机器人并确定其在网格上的位置(在一个小误差范围内)的问题。在找到目标之前,我很难制定一个好的算法来遍历整个地图。

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

对于这样的事情是否有任何体面的算法,或者对于我正在尝试做的事情是否有更好的算法?

【问题讨论】:

    标签: algorithm mapping 2d robotics


    【解决方案1】:

    您正在寻找寻路算法

    一些建议包括与 Lee 算法非常相似的“Flood Fill”算法或“Dijkstra 算法”(我什至可能认为它们是相同的),但这只是另一个搜索词

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

    a*star 搜索的关键是你必须知道你在哪里(本地化)和目标在哪里。 Dijkstra 类型算法能够在事先不知道目标位置的情况下找到目标。

    【讨论】:

      【解决方案2】:

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

      使用这个算法你应该能够找到所有的障碍物并最终找到目标,你也会找到到达目标的最短路径。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 2013-12-08
        • 2015-07-22
        • 1970-01-01
        • 2011-07-15
        • 1970-01-01
        相关资源
        最近更新 更多