2d трилатерация - PullRequest
       26

2d трилатерация

5 голосов
/ 17 марта 2012

Я пишу некоторый код для участия в соревновании ИИ.Основная цель задачи ИИ - взять симулированного робота и провести его через лабиринт в зону назначения.Дополнительная цель, которая является необязательной, состоит в том, чтобы найти зарядное устройство, помещенное в лабиринт в неизвестном месте.Все это делается в двумерной сетке.

Моя программа может вызывать метод для получения измерения расстояния от зарядного устройства.Таким образом, используя трилатерацию, я должен быть в состоянии определить местонахождение зарядного устройства, вызвав этот метод, записав текущее положение моего ИА и расстояние, на которое зарядное устройство удалено от этой точки в 3 раза.1005 *http://en.wikipedia.org/wiki/Trilateration но это относится к трехмерному пространству.Я имею дело только с 2D-пространством.Кроме того, я не понимаю, как использовать формулу, показанную в Википедии, поиск в Интернете рабочего примера с подключенными числами и переходом к конечным координатам маловероятен при поиске в Google.

Я нематематика майор;Я просто энтузиаст, исследующий проблемы ИИ.

Объяснение и пошаговый пример того, как вычислить проблему, - это то, что мне нужно, так как математика не является моей сильной стороной.Ниже приведены некоторые примеры данных:

  • Точка 1: x = 39, y = 28, расстояние = 8
  • Точка 2: x = 13, y = 39, расстояние = 11
  • Точка 3: x = 16, y = 40, расстояние = 8

Любой пример, использующий мои данные выборки, был бы очень признателен.Программирование для этого будет очень простым, как только я смогу обернуться вокруг математики.

1 Ответ

11 голосов
/ 18 марта 2012

Как описывает статья в Википедии *1001*, координаты (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‖
  2. i = e x (P3 - P1)
  3. e y = (P3 - P1 - i · e x ) / ‖P3 - P1 - i · e x
  4. d = ‖P2 - P1‖
  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
...