C++ 直线跟随机器人最短路径算法(迷宫求解)

C++ 直线跟随机器人最短路径算法(迷宫求解),c++,algorithm,embedded,line,robotics,C++,Algorithm,Embedded,Line,Robotics,图形算法在直线跟随迷宫求解机器人中的应用。我已经解决了网格使用DFS搜索,但不知道如何实现它实际线跟随机器人。我的最短路径查找在20乘20的网格上实现。其中s=开始,g=目的地,数字表示网格内每一点的位置,逐行排列。-如果您是微控制器的初学者,那么我建议您首先实现让机器人跟随直线 -如果机器人在直线跟踪中表现良好,那么你应该尝试让你的机器人通过网格中的条带功能,并让你的机器人横向完成网格的所有坐标,同时你可以计算机器人通过的条带数。你可以使用二维数组来存储坐标 -如果你能完成以上两项任务,那么你

图形算法在直线跟随迷宫求解机器人中的应用。我已经解决了网格使用DFS搜索,但不知道如何实现它实际线跟随机器人。我的最短路径查找在20乘20的网格上实现。其中s=开始,g=目的地,数字表示网格内每一点的位置,逐行排列。

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

-如果机器人在直线跟踪中表现良好,那么你应该尝试让你的机器人通过网格中的条带功能,并让你的机器人横向完成网格的所有坐标,同时你可以计算机器人通过的条带数。你可以使用二维数组来存储坐标


-如果你能完成以上两项任务,那么你就可以运用你的逻辑来解决网格中的迷宫

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

以下是您应该遵循的步骤

步骤1:对竞技场进行试运行,并将所有坐标保存在二维阵列中。正如您所描述的,似乎有两种类型的连接。确保每次通过交叉路口时,板上的不同LED灯闪烁。通过这种方式,您可以确保您正确阅读了电路板

第二步:现在你有了二维数组中的所有坐标。您正在申请DFS。我不建议这样做。因为要解决的是网格而不是树。使用Dijkstra算法

落实这一点应该不难。AVR的As编译器与C非常相似

第三步:现在跟随结果。让我们有一天你有一个8*8阵列。定义从1到64的编号。您的输出应该以

191018。。。。诸如此类

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

8、1、8等等

并为每个数字确定一个移动,如8向左移动,1向北移动。只要记住当前的方向,就可以转向其他方向。比如从西向北和从东向北是不同的


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

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

它可以通过彻底穿越所有可能的路线,在每个决策点进行默认的左/右转弯来实现。这样,如果轨道上没有环路,机器人最终将到达目的地。机器人应该跟踪所有转弯,直到到达目的地


在那之后,要减少机器人不必要的转动。我在我的博客上详细讨论了这个短路径算法。

谁能说出来?那是什么机器人?它的API是什么?因为我是一个新用户..我不能上传图片很抱歉。。。它是一种简单的AVR UC型线跟随机器人,用C++传感器编写的程序和线的检测由传感器的红外线传感器来完成,简单的跟随方法是完美的,所以尝试用英文来描述它。网格是正方形网格,比如说8*8。。。某些4向节点点被阻止,而其他节点是自由的。在所有这些节点中,将有一个起点和一个目标。任务是以最少的步骤达到目标。我已经使用DFS搜索解决了网格问题,但不知道如何在实际的直线跟随机器人中实现它。这是什么意思?您是否实现了DFS,如果您实现了,您已经实现了DFS,那么您到底在做什么呢?谢谢。我的直线跟随机器人在跟随直线或回路等方面工作得很好。我会考虑你的方法。我需要的是如何扫描网格第一次试验-存储它-消除多余的转弯或路径-然后在下一次试验中遵循最短路径。为了保持简单,算法是您为任何竞争做准备时的主要关注点?您需要将坐标及其状态存储在单独的变量中全球声明,并且可以在干运行第一次试验期间对其进行阵列。在主运行中,机器人应该在传递到下一个hopnode之前做出决定,从存储的变量中获取数据并检查其状态。