gpt4 book ai didi

java - 对机器人进行编程以探索网格

转载 作者:行者123 更新时间:2023-12-01 11:54:41 27 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

7年前关闭。




Improve this question




在我的项目中,我只是想制作一个机器人,它可以尽可能多地探索网格,而不用两次走相同的路径。此外,它还有一个传感器,可以查看是否有物体挡道(该物体只能在走廊中)。但是我很难让机器人避免走同样的路。

我尝试通过创建一个二维数组来为网格中的每个正方形存储一个整数值来解决这个问题。值为 0 表示机器人尚未在网格中的该方格上,值为 1 表示方格在方格中被阻挡,值为 2 表示机器人之前曾在该方格上。如果机器人看到其当前航向前方的方格值为 2,则它会继续旋转以找到值为 0 的方格,但如果机器人周围不存在值为 0 的方格,则开始回溯。

这个例子可以更清楚地解释我的问题:

enter image description here

三角形代表机器人及其起始位置,左下角假定为我网格中的位置 (0,0)。绿色圆圈代表阻挡其路径的元素。红色方 block 是机器人的目标。机器人只能移动到网格中的白色方 block 上。

当我启动我的程序时,机器人向前移动(向东,因为那是它的当前方向)直到它到达绿色圆圈之前的交叉点。它向前看并检测到挡路的物体,因此它逆时针旋转 90 度并检查是否有另一个阻塞,因此再次发生阻塞,因此它再次逆时针旋转。所以现在机器人在位置 (0,2) 向西移动。它只能向西移动以避免离开网格或撞到物体,因此它会回到初始位置但仍向西移动。它现在将继续顺时针旋转 90 度,直到它找到一个将它保持在网格上的方向,即直到它再次面向东方。所以网格现在看起来像:

enter image description here

但是现在我想通过忽略该方向并再次逆时针旋转 90 度以面向北方来忽略继续前进并走上同一条路径,这样我的机器人就可以向北移动到一条新路径中。我可以简单地忽略方向并继续旋转以找到新路径,但是如果我被之前的路径包围并且我希望我的机器人回溯到它的最后一个路口怎么办。我怎样才能有效地做到这一点。另外,如何有效地检测何时需要回溯。

谢谢

最佳答案

解决图 2 中的困境可以像检查其他 white 一样简单。在你采取行动之前,在机器人周围的方 block 。在图 2 中,机器人会看到他所面对的方格是“灰色的”,并决定检查所有其他方向,最终发现在他的北边有一个空的白色方格。

编辑:没有意识到这是一个真正的机器人。

由于了解单元格中内容的唯一方法是转向该单元格并使用传感器,因此无论您做什么,机器人都必须进行一定量的转动。当它遇到墙壁或绿色物体时,它必须转身,直到找到新的行进路径。您可以通过忽略外壳的墙壁来优化它。例如,当机器人回到起始位置朝西时,你已经知道南边有一堵墙,因为它的坐标位置是(0,-1),这是无效的。这使您可以确定打开的图 block 在北边,因为您已经访问了东边的图 block ,只需要转一圈。

此外,当机器人最终一直向北移动时,由于其位置,您知道在北面和西面都有一堵墙 (0,6)。然后,您可以明智地猜测开放槽必须在东方,因为西方瓷砖 (-1,6) 无效并且 (0,7) 也无效。

无需更改传感器以查看 2 个 block 或在机器人上安装更多传感器(即每侧一个),由于信息的可用性有限,无法进行更多优化。

关于java - 对机器人进行编程以探索网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com