Algorithm 如何绘制出一个机器人迷宫?
Algorithm 如何绘制出一个机器人迷宫?,algorithm,maze,robotics,Algorithm,Maze,Robotics,首先,我已经看过类似的问题,但它们并没有解决我的问题,这不是重复(我希望) 我正在用Arduino Nano制造并编程一个机器人,这个机器人应该能解迷宫。它被放在迷宫的某个地方,然后必须找到一件物品。下一次应该直接进入项目(不一定是最短的路线,但不允许有死胡同) 没有必要知道整个迷宫,因为只要他有一种方法可以找到这个项目,这是很好的。正如我所说,我不需要最短的路 迷宫是二维的,我只是把黑色的胶带放在白色的桌子上,机器人应该使用一个线传感器来跟踪这些线 没有其他传感器来定位他自己。首先,我想制作一
首先,我已经看过类似的问题,但它们并没有解决我的问题,这不是重复(我希望)
我正在用Arduino Nano制造并编程一个机器人,这个机器人应该能解迷宫。它被放在迷宫的某个地方,然后必须找到一件物品。下一次应该直接进入项目(不一定是最短的路线,但不允许有死胡同)
没有必要知道整个迷宫,因为只要他有一种方法可以找到这个项目,这是很好的。正如我所说,我不需要最短的路
迷宫是二维的,我只是把黑色的胶带放在白色的桌子上,机器人应该使用一个线传感器来跟踪这些线
没有其他传感器来定位他自己。首先,我想制作一个二维阵列,迷宫的每个区域都在其中。但由于它只是一个普通的线传感器,机器人不知道直线是一条还是两条场长,所以整个过程都不起作用
我也试过DFS或类似的东西,但这里有一个类似的问题。迷宫是圆形的,机器人怎么知道这个节点以前已经找到了,而且是一样的
如果有人有主意就好了 虽然方向有点模糊,但可以使用决策。决定必须是可复制的。它可以用一个类来表示:
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
}
左
回来时必须小心,如果你想尝试直
下一步你必须左转,不要直行。因此,其中涉及到一些计算如果一开始就以错误的方式开始,那么该算法对于环形决策存在问题。我认为这可以通过设置一个上限来避免,例如,如果您仍然没有找到令牌并遇到30个决策节点(向前),那么您可能在循环中运行,因此请返回开始,现在不要尝试按递增顺序排列方向,而是按递减顺序排列方向“机器人应该使用线路传感器来跟踪线路。“我只是好奇——一个线路传感器对2路或3路分离有何反应?它有3个独立的传感器。每一个都有一个不同的值,只有中间的一个在这条线上。如果在左侧或右侧,一个新的方式启动其中一个传感器,左侧或右侧将在悬停在测线上时注意到一个黑色,这样会注意到一个拆分。随机选择分支如何?从描述中可以看出,您必须执行航位推算,以根据指令的运动确定位置。基本上,你需要跟踪你移动了多远以及每次向前移动的方向。无论如何,16/32kB在加载二进制文件后不会释放太多内存。也许你应该考虑一些额外的USB外部存储为您的纳米。关于位置:也许你可以用超声波传感器拼凑一个本地定位系统?(20kHz可提供厘米精度定位)谢谢!那可能正是我想要的。在第6步中,“弹出决策”-我想不是弹出决策,而是指我应该弹出方向(删除最后一条路径,并将新路径设置为下一个可能的方向)?@po0l是的,您将其设置为下一个可能的方向,并仅在有剩余可供探索时再次推动。你必须保持决策的原样,否则你可能会迷失方向。如果这是一条死胡同,所有决策都是以第一次遇到的方式为导向的,因此你还需要做出决策,以了解你之前探索的道路以及如何继续。