2d трилатерация
Я пишу некоторый код для участия в конкурсе искусственного интеллекта. Основная цель задачи ИИ - взять смоделированного робота и провести его через лабиринт в зону назначения. Дополнительная цель, которая является необязательной, состоит в том, чтобы найти зарядное устройство, помещенное в лабиринт в неизвестном месте. Это все сделано в 2D сетке.
Моя программа может вызывать метод для измерения расстояния от зарядного устройства. Таким образом, используя трилатерацию, я должен быть в состоянии определить местонахождение зарядного устройства, вызвав этот метод, записав текущее положение моего ИА и расстояние, на которое зарядное устройство удалено от этой точки в 3 раза.
Я нашел этот пример трилатерации в Википедии http://en.wikipedia.org/wiki/Trilateration но это относится к трехмерному пространству. Я имею дело только с 2D-пространством. Кроме того, я не понимаю, как использовать формулу, показанную в Википедии, поиск в Интернете рабочего примера с подключенными числами и переходом к конечным координатам маловероятен при поиске в Google.
Я не математик майор; Я просто энтузиаст, исследующий проблемы ИИ.
Объяснение и пошаговый пример того, как вычислить задачу, - это то, что мне нужно, так как математика не является моей сильной стороной. Ниже приведены некоторые примеры данных:
- Точка 1: х =39, у =28, расстояние =8
- Точка 2: х =13, у =39, расстояние =11
- Точка 3: х =16, у =40, расстояние =8
Любой пример с использованием моих данных образца будет принята с благодарностью. Программирование для этого будет очень простым, когда я смогу обернуть голову вокруг математики.
1 ответ
Как описано в статье по трилатерификации в Википедии, координаты (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
Этапы расчета:
- ex = (P2 - P1) / ‖P2 - P1‖
- i = ex(P3 - P1)
- ey = (P3 - P1 - i · ex) / ‖P3 - P1 - i · ex‖
- d = ‖P2 - P1‖
- j = ey(P3 - P1)
- x = (r12 - r22 + d2) / 2d
- y = (r12 - r32 + i2 + j2) / 2j - ix / j