Map1



该任务分为2次运行,在第一次运行中,我们必须浏览整个地图并到达带有所有检查点的终点标记。 >在第二轮中,使用从第一轮开始的映射,我们必须遵循最短的路径。

我每天都在阅读算法和代码,我知道应该采取的步骤,
导航使用Tremaux算法迷宫,并在每个可能的交界处右转。
然后将地图保存在内存中,并使用djikstra算法或A *算法找到最短路径。
但是如何实际实施呢?
/>
此外,由于所有方向和角度以及车轮直径,电机rpm,机器人宽度都已知,那么我可以跳过车轮编码器并改用计算吗?

#1 楼

我强烈建议您使用编码器,而不是通过rpm +时间来估算行进距离。众所周知,估计电动机速度很困难。特别是在慢速下。

直接测量总是更好。

#2 楼

一个好的起点是首先在仿真中解决问题。如果该算法在屏幕上的2D地图上不起作用,它将永远无法在真正的arduino上起作用。对于启发,github是一个很好的资源。有许多实现[1] [2]。在分析了别人的源代码之后,就该从下往上编写代码了。在大多数编程语言中,“创建库”的概念非常适合于迭代开发。该库中的第一种方法涉及路径规划和避障,随后将添加其他功能,例如“每分钟电机旋转”。开发周期是测试驱动的,这意味着在编写了一个小功能后,将在仿真和真实机器人上对代码进行试用。在大多数情况下,开发周期很慢,即使经过一个月的工作,也可能看不到实质性的进展。有时代码会导致机器人正常工作,有时却无法。这取决于经验,团队和投入的工作时间。

#3 楼

拥有地图后,一种有效的工作方式是:将地图转换为加权图,即顶点仅在交叉点处,权重是顶点所表示的点之间的长度。
然后运行A *或djikstra将会很简单。