首页 文章

线跟随机器人中的最短路径算法(迷宫求解)

提问于
浏览
-3

如何在线跟随迷宫求解机器人中使用图算法 . 我已经使用DFS搜索解决了网格,但不知道如何实现它实际的线跟随机器人 . 我的最短路径查找工具在20乘20格 . 其中s = start且g = destination,number表示网格内每个点的位置(逐行) .

3 回答

  • 0
    • 如果您是微控制器的初学者,那么我建议您首先实现让您的机器人跟随线路 .

    • 如果机器人在线下运行良好,那么您应该尝试使机器人通过条带(网格中的交叉点)并使机器人横向完整网格(网格的所有坐标),同时您可以计算机器人传递的条带数量(您可以使用二维数组来存储坐标) .

    • 如果你可以完成上述两个任务,那么你最好将你的逻辑用于解决网格内的迷宫问题 .

  • 0

    线跟随器机器人的最短路径算法,其不涉及线路中的环路,相对容易实现 .

    它可以通过详尽地遍历所有可能的路径,在每个决策点进行默认的左/右转弯来完成 . 这样,如果轨道中没有循环,机器人最终将到达目的地 . 机器人应该跟踪到达目的地之前所做的所有转弯 .

    在此之后,消除机器人不必要的转动是一个减少的问题 . 我在我的博客here中详细讨论了这个短路径算法 .

  • 1

    我曾经在AVR板上实现了最短路径算法 .

    以下是您应遵循的步骤 .

    步骤1:做一个干燥的竞技场并将所有坐标保存在二维阵列中 . 正如您所描述的,似乎有两种类型的结 . 每次通过交叉路口时,请务必在板上闪烁不同的LED . 这样您就可以确保正确读取电路板 .

    第2步:现在您拥有2D数组中的所有坐标 . 您正在申请DFS . 我不建议这样做 . 因为你有一个网格而不是树来解决 . 使用Dijkstra的算法 .

    实施这一点应该不难 . 由于AVR的编译器与C非常相似 .

    第3步:现在按照结果 . 让一天你有一个8 * 8阵列 . 定义一个从1到64的编号 . 你的输出应该是

    1 9 10 18 ....等等

    现在计算两个相邻数字之间的差异

    8,1,8等

    并为每个数字确定一个移动,例如8左转,1转北 . 只需记住当前的方向,转向其他方向 . 从西向北向北不同于从北向北向北 .

    我再次建议您先在LED上显示最终结果 . 有时您的算法工作正常,硬件停止工作 .

相关问题