-2

我有 LEGO NXT 和一个 100x100cm 的方形房间。我想始终使用房间的中心作为我的起点(黑匣子)。绿色的盒子将成为我的公园区域。圆圈可能是我路上随机放置的障碍物。红色是房间的墙壁。目标:

  • 启动时,无论机器人在哪里,它都应该回到中心,然后它应该能够在请求时停入绿框。
  • 在其返回中心/回家的过程中,途中可能会遇到障碍,我应该尝试克服这些障碍并成功停车。障碍物不必是圆形的,它们也可以是方形的。
  • 如果公园/中心区域有障碍物,我应该给出一个错误,无法停车或中止停车......

最坏情况:机器人从拐角处开始,停车途中遇到障碍物。我暂时使用的是颜色传感器和超声波传感器,我也可以添加一个陀螺仪传感器,但还没有深入研究它。我也有 RFID 传感器,但我认为只有 2 个转发器不会有太大帮助。

我的第一个挑战是对于初学者来说没有任何障碍是识别机器人的中心,它知道它必须来自随机位置。有小费吗?我正在使用 leJOS。

机器人室

超声波能够以 +/-3 厘米的精度测量 5 到 255 厘米的距离。任何低于 5 厘米的物体都显示为 6-8 厘米,三角形/圆形面是有问题的,在那个时候距离误差可能是 10 厘米,但我们会在一开始就将所有物体都视为方形/漂亮的物体。颜色传感器位于超声波传感器下方,它们都位于我的机器人前面,就像汽车的灯一样。

4

1 回答 1

0

我同意这些评论:很难想象一个“可接受”的答案会是什么。尽管这样的任务看起来很简单,但它是一个高度复杂的过程,涉及到经典的“感知-计划-行动”循环

  • 使用传感器检测物体并将其整合到您对世界的了解中
  • 规划路径,包括获得的知识
  • 朝着目标前进

这里有很多未知数。例如,机器人被障碍物墙包围的“退化”情况呢?机器人是否知道它的方向(即前进的方向)?你如何控制机器人?使用DifferentialPilot类?机器人是否知道它的大小(宽度)以厘米为单位,以便它可以检测它是否可以通过两个靠得很近的障碍物?机器人应该尝试走一些“最短路径”,还是可以广泛探索世界一段时间?假设通过距离传感器检测到帽子障碍物并通过颜色传感器检测到停车区是否有效?颜色传感器只有几厘米的范围是真的吗?也许最重要的是:你知道停车位在哪里吗?

考虑到所有这些问题,人们只能尝试对可能的方法给出一般性的提示。我会在答案关闭之前尝试这样做。但这应该被认为是一个真正深刻的逐步解决方案,而只是作为建议,因为必须先回答上述所有问题,然后才能说一个解决方案是否可行(以及它是否可行是另一个问题...)


你应该考虑你对“世界”的预期表示(或者描述这个表示,如果你已经想到了!)。我可以想象某种“网格”在这里可能就足够了。但是使用LineMap来表示世界可能是有益的,因为这使您能够使用 NXT API 的现有基础设施。

一旦你有了世界的代表,你就必须找到它的中心。同样,当有障碍物时,这甚至可能是不可能的(我正在考虑这里的洞穴寓言)。但是当没有障碍物时,您可以将机器人旋转到位,大约 360°:这将提供所有墙点的距离信息。有了这些信息,应该可以检测到世界的角落——这些正是LineMap. 计算这些角位置的平均值将产生中心。

移动到中心后,您必须移动到停车位置。如果我正确理解了设置,你甚至不知道这个停车位置在哪里。在这种情况下,您必须开始系统的探索:您可以尝试从中心开始向外“螺旋”移动。每当遇到障碍物时,您都会尝试移动到此“螺旋”上的下一个自由点。如果您知道停车位置在哪里,您可以尝试直接移动到该位置,避开所有障碍物。

在这两种情况下,你都会有一个“当前位置”和一个“目标位置”——后者要么是“螺旋上的下一个自由点”,要么是“停车位置”。为了在世界地图中找到这些点之间的路径,您可以使用A* 搜索算法。幸运的是,NXT API 已经提供了ShortestPathFinder。集成它以便正确控制您的机器人可能仍然很棘手。但是,例如,如果您使用DifferentialPilot该类,则可能有许多免费/示例源代码资源用于已经与您尝试执行的任务相似的任务,也许您可​​以在那里找到一些……“灵感”。

于 2014-04-26T13:06:51.967 回答