2012-03-17 8 views
5

Sto scrivendo del codice per partecipare a una sfida AI. L'obiettivo principale della sfida dell'IA è quello di prendere un robot simulato e spostarlo attraverso un labirinto verso una zona di destinazione. L'obiettivo secondario che è facoltativo è quello di trovare un caricatore posizionato nel labirinto in un luogo sconosciuto. Questo è tutto fatto in una griglia 2D.trilaterazione 2d

Il mio programma può chiamare un metodo per ottenere una misurazione della distanza dal caricatore. Quindi, usando la trilaterazione, dovrei essere in grado di localizzare il caricatore chiamando questo metodo, registrando la posizione corrente del mio ai e la distanza che il caricatore è lontano da quel punto per 3 volte.

Ho trovato questo esempio di trilaterazione su wikipedia http://en.wikipedia.org/wiki/Trilateration ma questo vale per uno spazio 3d. Mi occupo solo di uno spazio 2D. Inoltre, non capisco come utilizzare la formula mostrata in Wikipedia, la ricerca sul web di un esempio funzionante con i numeri inseriti e la ricapitolazione delle coordinate finali è scarsa con le ricerche di Google.

Non sono un esperto di matematica; Sono solo un appassionato che esplora i problemi di intelligenza artificiale.

Una spiegazione e un esempio dettagliato di come calcolare il problema è ciò di cui ho bisogno in quanto la matematica non è il mio punto di forza. Sotto è alcuni dati di esempio:

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

Qualsiasi esempio che utilizza i miei dati di esempio sarebbe molto apprezzato. La programmazione di questo sarà molto semplice una volta che riesco a capovolgere la matematica.

+2

Basta prendere le formule 3D e impostare l'altezza a zero. –

+0

Funzionerebbe sicuramente, ma non so come usare la formula su wikipedia. Sto cercando un esempio passo per passo su come passare attraverso i calcoli. – Nebri

+0

Posso chiedere quale sfida con l'IA? –

risposta

10

Come il trilateriation Wikipedia article descrive, si calcola (x, y) le coordinate per il calcolo in successione: e x, i, e y, d, j, x, y.È necessario avere familiarità con la notazione vettoriale, così, ad esempio, 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))

tuoi dati sono:

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

Le fasi di calcolo sono:

  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 0.123.093,557 mila‖
  4. d = ‖P2 - P1‖
  5. j = e y (P3 - P1)
  6. x = (r - r + d)/2d
  7. y = (r - r + i 2 + j)/2J - ix/j
+0

perfetto grazie. Ora capisco da dove vengono queste variabili. Dovrò fare un po 'di pratica con i vettori, ovviamente, ma questo è un buon inizio. Grazie Don :). – Nebri

+0

e l'ultimo passo per ottenere le coordinate reali del punto sconosciuto come dice Wiki sono i seguenti: '8. p1,2 = P1 + x * ex + y * ey' fornisce i punti nel sistema di coordinate originale poiché 'ex' e' ey', i vettori dell'unità di base, sono espressi nel sistema di coordinate originale. - un commento da una modifica da utente anonimo – Dariusz

+0

http://stackoverflow.com/questions/23400351/localizing-a-point-using-distances-to-three-other-points-in-3-d/23401529?noredirect = 1 # 23401529 potresti controllare anche questo post, per favore? – padawan