2D三边定位技术

7
我正在编写一些代码参加AI挑战。AI挑战的主要目标是将模拟机器人引导穿过迷宫到达目的地区域。第二个可选目标是在迷宫中找到一个放置在未知位置的充电器。所有这些都在2D网格中完成。
我的程序可以调用一个方法从充电器获取距离测量值。因此,使用三边测量法,我应该能够通过调用此方法,在记录我的人工智能当前位置和充电器与该点的距离三次后找到充电器。
我在维基百科上找到了三边测量法的示例http://en.wikipedia.org/wiki/Trilateration,但这适用于3D空间。我只涉及2D空间。另外,我不理解如何使用维基百科中显示的公式,通过Google搜索查询具有数字插入且最终坐标简化的工作示例很少。
我不是数学专业的人;我只是一个探索AI问题的爱好者。
我需要的是一个解释和如何计算问题的逐步示例,因为数学不是我的强项。下面是一些样本数据:
  • 点1:x=39,y=28,距离=8
  • 点2:x=13,y=39,距离=11
  • 点3:x=16,y=40,距离=8

任何使用我的示例数据的示例都将不胜感激。一旦我能够理解数学问题,编程就会非常简单。


2
只需将3D公式取出并将高度设为零。 - Don Reba
这肯定行得通,但我不知道如何使用维基百科上的公式。我正在寻找逐步说明如何进行计算的示例。 - Nebri
请问是哪个人工智能挑战赛? - gak
Mohawk College的amazebot挑战。这是一个非常棒的学术项目。这完全是自愿的,不会给予任何成绩。 - Nebri
1个回答

14
如维基百科三点定位文章所述,计算(x,y)坐标需要依次计算:ex, i, ey, d, j, x, y。需要了解向量符号,例如,ex = (P2 - P1) / ‖P2 - P1‖ 表示:
  • ex,x = (P2x - P1x) / sqrt((P2x - P1x)2 + (P2y - P1y)2)
  • ex,y = (P2y - P1y) / sqrt((P2x - P1x)2 + (P2y - P1y)2)

你的数据是:

  • P1 = (39, 28); r1 = 8
  • P2 = (13, 39); r2 = 11
  • P3 = (16, 40); r3 = 8

计算步骤如下:

  1. ex = (P2 - P1) / ‖P2 - P1‖
  2. i = ex(P3 - P1)
  3. ey = (P3 - P1 - i · ex) / ‖P3 - P1 - i · ex
  4. d = ‖P2 - P1‖
  • j=ey(P3-P1)
  • x=(r12-r22+d2)/2d
  • y=(r12-r32+i2+j2)/2j-ix/j

  • 太好了,谢谢。现在我知道这些变量来自哪里了。当然我还需要练习一下向量的操作,但这已经是一个不错的开始了。谢谢你,唐 :)。 - Nebri
    获取未知点的真实坐标的最后一步,如维基所述,是执行以下操作:8. p1,2 = P1 + x*ex + y*ey,因为exey,即基本单位向量,是在原始坐标系中表示的,所以这些点是在原始坐标系中给出的。-- 一位匿名用户的编辑评论 - Dariusz
    你能也检查一下这篇帖子吗?http://stackoverflow.com/questions/23400351/localizing-a-point-using-distances-to-three-other-points-in-3-d/23401529?noredirect=1#23401529 - padawan
    @OnurÇağırıcı,太远了吗?这可能意味着输入的坐标有问题。例如,共线的坐标可能会导致这种情况。 - Don Reba
    @DonReba 我检查共线性。我的点是 [-0.8092775327548827,-19.576297388406005,0.0][0.8541381922861269,-9.975819993705937,0.0][-0.597554605602997,-18.347159283433726,0.0]y = 13233.037425080443 - padawan

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接