2012-03-17 93 views
5

Escribo un código para participar en un desafío de IA. El objetivo principal para el desafío AI es tomar un robot simulado y navegarlo a través de un laberinto hasta una zona de destino. El objetivo secundario que es opcional es encontrar un recargador colocado en el laberinto en un lugar desconocido. Todo esto se hace en una grilla 2D.2d trilateration

Mi programa puede llamar a un método para obtener una medición de distancia del recargador. Entonces, usando la trilateración, debería poder ubicar el recargador llamando a este método, registrando la posición actual de mi ai y la distancia que el recargador está lejos de ese punto 3 veces.

Encontré este ejemplo de trilateration en wikipedia http://en.wikipedia.org/wiki/Trilateration pero esto se aplica a un espacio 3d. Solo estoy lidiando con un espacio 2D. Además, no entiendo cómo usar la fórmula que se muestra en Wikipedia, buscando en la web un ejemplo de trabajo con los números enchufados y la reducción a las coordenadas finales es escasa con las búsquedas de Google.

No soy matemático; Solo soy un entusiasta que explora problemas de IA.

Explicación y ejemplo paso a paso de cómo calcular el problema es lo que necesito, ya que las matemáticas no son mi punto fuerte. A continuación se muestra algunos datos de la muestra:

  • Punto 1: x = 39, y = 28, distancia = 8
  • Point 2: x = 13, y = 39, distancia = 11
  • Punto 3: x = 16, y = 40, distancia = 8

Cualquier ejemplo que use mis datos de muestra sería muy apreciado. La programación de esto será muy directa una vez que pueda entender las matemáticas.

+2

Sólo tomar las fórmulas 3D y ajustar la altura a cero. –

+0

Eso definitivamente funcionaría, pero no sé cómo usar la fórmula en wikipedia. Estoy buscando un ejemplo paso a paso de cómo realizar los cálculos. – Nebri

+0

¿Puedo preguntar qué desafío de IA? –

Respuesta

10

A medida que el trilateriation Wikipedia article describe, a calcular (x, y) las coordenadas mediante el cálculo de forma sucesiva: e x, i, e y, d, j, x, y.Usted tiene que estar familiarizado con la notación vectorial, así, por ejemplo, e x = (P2 - P1)/‖P2 - P1‖ significa:

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

Sus datos son:

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

Las etapas de cálculo son:

  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 - r + d)/2d
  7. y = (r - r + i + j)/2j - ix/j
+0

perfecto gracias. Ahora puedo entender de dónde vienen estas variables. Tendré que practicar con vectores, por supuesto, pero este es un buen comienzo. Gracias Don :). – Nebri

+0

y el último paso para obtener coordenadas reales del punto desconocido como lo dice Wiki son los siguientes: '8. p1,2 = P1 + x * ex + y * ey' da los puntos en el sistema de coordenadas original ya que 'ex' y' ey', los vectores unitarios base, se expresan en el sistema de coordenadas original. - un comentario de una edición del usuario anónimo – Dariusz

+0

http://stackoverflow.com/questions/23400351/localizing-a-point-using-dstances-to-three-other-points-in-3-d/23401529?noredirect = 1 # 23401529 ¿podrías consultar esta publicación también, por favor? – padawan