0

就在场中定位对象的速度而言,最好的算法是什么?

该场地由 18 x 18 个正方形组成,边长为 30.48 厘米。机器人放置在正方形 (0,0) 中,它的工作是在避开沿途障碍物的同时到达光源。为了定位光源,机器人进行 360 度转动以找到具有最高光读数的角度,然后向光源行进。它可以可靠地检测 100 厘米以外的光源。

我目前实现这一点的方式是将有关每个图块的信息存储在 2x2 数组中。瓦片的可能值是未探索(默认)、阻塞(有障碍物)、空(那里什么都没有)。我正在考虑使用 DFS 算法,其中孩子位于 (i+3,j) 或 (i,j+3) 位置。但是,考虑到我将进行旋转以定位每个孩子的最高光读数的角度,我认为可能有一种算法可以比 DFS 更快地定位光源。此外,我只会在 x 和 y 方向上行驶,因为机器人将使用地板上的网格线来修正它的 x 和 y 位置。

如果可以建议一种快速可靠的算法来完成这项任务,我将不胜感激。

4

2 回答 2

0

这是一个非常广泛的问题,我不是专家,所以我的回答是基于“第一原则”的思维而不是该领域的经验。

(我假设您的机器人通常具有无障碍的视线和运动;即它是一个有分散障碍物的开放区域,而不是在迷宫中。)

问题在于解释您从 360 度扫描中获得的信息。

  • 如果机器人看到光源,那么穿过通往光源的路线要么是微不足道的,要么是“简单”的迷宫行走任务。

  • 困难在于你看不到源头。这可能意味着源不在可见范围内。但这也可能意味着光线在障碍物后面。不幸的是,像您描述的简单传感器无法区分这两种情况。

如果您的传感器系统允许您看到障碍物,您可以绘制“阴影”区域(障碍物后面的区域)的位置,并使用它来跟踪需要搜索的位置。因此,您的策略是访问少数几个位置并在每个位置进行扫描,然后有条不紊地“整理”少数处于阴影中的区域。

但是由于您无法轻易分辨出阴影区域的位置,因此您需要一种(最终)到处搜索的算法。DFS 是一种在任何地方搜索的通用策略,但它通过(实际上)首先查看角落和缝隙来做到这一点。更好的策略是广度优先搜索,如果大规模扫描没有找到光源,则只访问角落和缝隙。


如果可以建议一种快速可靠的算法来完成这项任务,我将不胜感激。

我认为您将需要自己开发一个。(这不是问题/任务/竞争的重点吗?)

于 2012-11-09T23:55:30.640 回答
0

虽然它可能看起来不像,但这看起来更像是一个迷宫跟踪问题。我想这是某种挑战或竞赛情况,从开始到目标总是有一条路径,但假设暂时没有。机器人导航完全被障碍物包围的信标的成功结果之一将是一份报告,其中描述了信号周围障碍物的封闭路径。如果没有这样封闭的路径,那么你可以在某个地方找到一个洞;这就是为什么看起来像迷宫一样。

所以我选择的基本算法是从一个螺旋向内的横向开始,扫出一条足够窄的路径,这样你肯定会看到一个信标,如果存在的话。如果没有障碍物(退化情况),这会在最短的时间内找到目标。(提示:每转一圈都会减少传感器每步可定位的单元数。)

以螺旋遍历为逆时针方向。您所拥有的与通过将右手放在墙上并遵循生成的路径来解决迷宫的规则有关。在这种情况下,您会遇到复杂情况,虽然迷宫的起点在边界上,但终点可能不在。在这种情况下,右手触摸路径可能会失败。检测这种情况需要在与墙壁相邻的区域中寻找“空洞”。

于 2012-11-10T00:25:02.463 回答