【问题标题】:How to map out a maze as a robot?如何将迷宫绘制成机器人?
【发布时间】:2016-12-04 14:26:16
【问题描述】:


首先 - 我查看了类似的问题,但他们没有解决我的问题,这不是重复(我希望)。
我正在用 Arduino Nano 构建和编程一个机器人,它应该可以解决迷宫。它被放在迷宫的某个地方,然后必须找到一个项目。下一次它应该直接进入该项目(它不一定是最短的方式,但不允许死胡同)。
没有必要知道整个迷宫,因为只要他有一条通往该项目的路就很好。正如我所说,我不需要最短的方法。
迷宫是 2D 的,我只是在白色桌子上贴上黑色胶带,机器人应该使用线传感器来跟随线。
没有其他传感器可以定位自己。首先,我想制作一个二维数组,迷宫的每个区域都是其中的一个区域。但由于它只是一个普通的线传感器,机器人不知道一条直线是一两个场长,而且整个事情都不起作用。
我也尝试过 DFS 或类似的东西,但这里有类似的问题。迷宫是圆形的,机器人应该如何知道之前已经找到了节点并且它是相同的?
如果有人有想法就好了!

【问题讨论】:

  • "机器人应该使用线传感器来跟随线。"我只是好奇——线传感器对 2 路或 3 路分路有何反应?
  • 它有 3 个独立的传感器。每一个都有不同的值,只有中间的那个是在线的。如果在左侧或右侧以新的方式启动左侧或右侧的传感器之一,在将鼠标悬停在线时会注意到黑色,并且这种方式会注意到分裂
  • 随机选择分支怎么样?
  • 从描述看来,您似乎必须执行航位推算才能根据您的指令动作确定位置。从本质上讲,您需要跟踪您移动了多远以及每次前进的方向。
  • 无论如何,16/32kB 在加载二进制文件后不会让太多的空闲内存。也许您应该为您的 nano 考虑一些额外的 USB 外部存储。关于位置:也许您可以使用超声波传感器拼凑出一个本地定位系统? (20kHz 可提供厘米精度定位)

标签: algorithm maze robotics


【解决方案1】:

虽然方向有点模糊,但可以使用决定。一个决定必须是可重复的。它可以用一个类来表示:

public class Decision {
    boolean[] directions = new boolean[2]; // 0 = left, 1 = straight, 2 = right
    // at least 2 of them should be true or it is no decision
    int path; // 0-2 to mark the current path
}
  1. 创建一系列决策。

  2. 如果一开始只有一个可能的方向(后退不计算,稍后处理),那么继续前进,直到遇到第一个决定。

  3. 在堆栈上推送所有可能方向的决策。

  4. path 设置为第一个可能的方向并朝那个方向移动。

  5. 如果您最终做出另一个决定:在 3 处继续。

    如果你找到令牌:abort,你就找到了一个没有死胡同的可重现方式。

    如果是死路:返回上一个决策节点(返回的第一个)并继续6。

  6. 弹出决定并尝试下一个可能的方向(设置新路径并推动决定)并在 5 处继续。

    除非您已经尝试了所有方向,否则请退回另一个决定并继续执行 6。

    如果没有更多的决策(上面提到的特殊情况,我们一开始就走错了方向):继续前进,直到遇到第一个决策,然后在 3 处继续。这意味着您需要另一个布尔变量来指示是否你应该从一开始就倒退。

    你从left回来时要小心,想试试straight接下来你必须左转,不要直走。所以这涉及到一点计算。

如果您一开始就以错误的方式开始,则该算法会出现循环决策问题。我认为这可以通过设置一个上限来逃避,例如如果您仍然没有找到令牌并遇到 30 个决策节点(继续前进),那么您可能正在绕圈子,所以回到开始,现在不要按升序尝试方向,而是按降序尝试。

【讨论】:

  • 谢谢!这可能正是我想要的。在第 6 步中,“弹出决定” - 我想不是弹出决定,而是指我应该弹出方向(删除最后一条路径并将新路径设置为下一个可能的方向)?
  • @po0l 是的,您将其设置为下一个可能的方向,并仅在有任何剩余可探索的情况下再次推动它。您必须保持原样,否则您可能会忘记返回的路,如果它是死胡同,所有的决定都是以它们第一次遇到的方式定向的,所以您还需要决定知道您正在探索哪条路径就在之前以及如何继续。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多