7

我正在编写一些代码来参与 AI 挑战。人工智能挑战的主要目标是模拟机器人并通过迷宫导航到目的地区域。可选的次要目标是找到放置在迷宫中未知位置的充电器。这一切都是在二维网格中完成的。

我的程序可以调用一种方法从充电器获取距离测量值。所以使用三边测量我应该能够通过调用这个方法来定位充电器,记录我的ai当前位置和充电器离那个点的距离3倍。

我在维基百科http://en.wikipedia.org/wiki/Trilateration上找到了这个三边测量的例子,但这适用于 3d 空间。我只处理二维空间。我也不明白如何使用维基百科中显示的公式,在网上搜索一个插入数字并归结为最终坐标的工作示例在谷歌搜索中很少见。

我不是数学专业的;我只是一个探索人工智能问题的爱好者。

我需要一个关于如何计算问题的解释和分步示例,因为数学不是我的强项。下面是一些示例数据:

  • 点 1:x=39,y=28,距离=8
  • 点 2:x=13,y=39,距离=11
  • 点 3:x=16,y=40,距离=8

任何使用我的样本数据的例子都将不胜感激。一旦我能把头放在数学上,对此的编程将非常简单。

4

1 回答 1

13

正如维基百科三边测量文章所述,您通过连续计算来计算 (x,y) 坐标:e x , i, e y , d, j, x, y。您必须熟悉矢量符号,例如,e x = (P2 - P1) / ‖P2 - P1‖ 表示:

  • e x,x = (P2 x - P1 x ) / sqrt((P2 x - P1 x ) 2 + (P2 y - P1 y ) 2 )
  • e x,y = (P2 y - P1 y ) / sqrt((P2 x - P1 x ) 2 + (P2 y - P1 y ) 2 )

您的数据是:

  • P1 = (39, 28); r 1 = 8
  • P2 = (13, 39); r 2 = 11
  • P3 = (16, 40); r 3 = 8

计算步骤为:

  1. e x = (P2 - P1) / ‖P2 - P1‖</li>
  2. i = e x (P3 - P1)
  3. e y = (P3 - P1 - i · e x ) / ‖P3 - P1 - i · e x ‖</li>
  4. d = ‖P2 - P1‖</li>
  5. j = e y (P3 - P1)
  6. x = (r 1 2 - r 2 2 + d 2 ) / 2d
  7. y = (r 1 2 - r 3 2 + i 2 + j 2 ) / 2j - ix / j
于 2012-03-17T22:31:57.470 回答