PDA

View Full Version : Studio sistema di posizionamento trilaterazione triangolazione


Garz
26-11-2012, 11:29
Ciao forum...

Attualmente sto trafficando con un sistema di posizionamento che si basa sulla trilaterazione e la triangolazione.
Praticamente ho dei "target" riflettenti che vengono letti da un laser, e vene misurato l'angolo e la distanza.


Tutto bello e figo, il problema è come scegliere di mettere giù i target.
E' necessario evitare ripetizioni dello schema di questi target, e farlo a naso, con un centinaio di target, non è semplice


A questo punto ho pensato di farmi uno scriptino in matlab che mi controlli il "layout" dei target che ho installato, e che mi segnali se ci sono delle zone che mostrano uno schema di target simile ad altre.


Il problema è che non so come approcciare questo script.
considerando che è uno script offline non c'è problema di potenza di calcolo, ma non so cosa guardare.

ho pensato di andare a tappeto e calcolare su un reticolo di posizioni XY (nei punti dove posso "navigare" e con differenti assetti per ogni posizione) se ci sono simmetrie tra due punti.
viene una cosa eterna, anche se non è un problema il tempo, ma è tuttosommato una soluzione brutta e imprecisa...

ho quindi pensato che non mi interessa poi molto dove sono io che guardo i target, ma che posso tranquillamente preoccuparmi solo dei target. se io vedo una ripetizione è perchè la ripetizione c'è e non dipende da me che osservo.

Mi era sembrata un grande pensata, ma adesso sono bloccato di nuovo. :D
avevo in mente un ciclo su ogni target (e i target sono decisamente meno dei punti del reticolo..):
- da un target costruisco tutti i triangoli possibili con gli altri target.
- creo una funzione di costo che dipende dalla somiglianza di questi triangoli.
- sul layout faccio una funzione di potenziale che cresce con il risultato della funzione di costo, quindi alzo parecchio se trovo due triangoli somiglianti e lascio più o meno basso se trovo triangoli diversi.

ciclando in questo modo dovrei ottenere un output grafico delle zone problematiche.
Ammesso che funzioni in maniera affidabile non avrei l'indicazione di chi è simile con cosa.. ma solo che li c'è una somiglianza con un altro punto.

Non sono per niente convinto di aver trovato una soluzione valida..
:help:

!fazz
26-11-2012, 11:45
Ciao forum...

Attualmente sto trafficando con un sistema di posizionamento che si basa sulla trilaterazione e la triangolazione.
Praticamente ho dei "target" riflettenti che vengono letti da un laser, e vene misurato l'angolo e la distanza.


Tutto bello e figo, il problema è come scegliere di mettere giù i target.
E' necessario evitare ripetizioni dello schema di questi target, e farlo a naso, con un centinaio di target, non è semplice


A questo punto ho pensato di farmi uno scriptino in matlab che mi controlli il "layout" dei target che ho installato, e che mi segnali se ci sono delle zone che mostrano uno schema di target simile ad altre.


Il problema è che non so come approcciare questo script.
considerando che è uno script offline non c'è problema di potenza di calcolo, ma non so cosa guardare.

ho pensato di andare a tappeto e calcolare su un reticolo di posizioni XY (nei punti dove posso "navigare" e con differenti assetti per ogni posizione) se ci sono simmetrie tra due punti.
viene una cosa eterna, anche se non è un problema il tempo, ma è tuttosommato una soluzione brutta e imprecisa...

ho quindi pensato che non mi interessa poi molto dove sono io che guardo i target, ma che posso tranquillamente preoccuparmi solo dei target. se io vedo una ripetizione è perchè la ripetizione c'è e non dipende da me che osservo.

Mi era sembrata un grande pensata, ma adesso sono bloccato di nuovo. :D
avevo in mente un ciclo su ogni target (e i target sono decisamente meno dei punti del reticolo..):
- da un target costruisco tutti i triangoli possibili con gli altri target.
- creo una funzione di costo che dipende dalla somiglianza di questi triangoli.
- sul layout faccio una funzione di potenziale che cresce con il risultato della funzione di costo, quindi alzo parecchio se trovo due triangoli somiglianti e lascio più o meno basso se trovo triangoli diversi.

ciclando in questo modo dovrei ottenere un output grafico delle zone problematiche.
Ammesso che funzioni in maniera affidabile non avrei l'indicazione di chi è simile con cosa.. ma solo che li c'è una somiglianza con un altro punto.

Non sono per niente convinto di aver trovato una soluzione valida..
:help:

mmm se ho capito bene hai in mano un sistema rtls ottico basato su toa e aoa e devi decidere come spaziare le ancore in maniera che il tag mobile riesca a tracciarle in modo da ottenere la maggior accuratezza possibile

in questo modo imho non devi neanche sbatterti ad ottimizzare poi troppo con matlab ecc ecc, più sono lontani tra di loro sia in senso angolare che come distanza meglio è

posizionamento 2d o 3d?, come mai così tante ancore? calcola che per ottenere un punto univoco ti servono 3 ancore (2d) o 4 ancore (3d)

Garz
26-11-2012, 13:30
si, hai capito bene, sto usando un rtls per avere una misura assoluta di posizione 2D.

purtroppo l'ottimizzazione mi serve perchè i target sono un bel numero (una 50ina) perchè il sistema deve essere robusto per:
- navigazione in corridoi "simili" (es: corsie di un magazzino. li i target vanno per forza sulle colonne e non c'è tanto margine per differenziare un corridoio dall'altro)
- navigazione su aree relativamente grandi e complesse, nel senso di non semplicemente grandi con tutto ben visibile ma con ostacoli belli grossi e da aggirare
- ostacoli mobili che possono oscurare un po' quello che vogliono.

se può essere utile posso linkare un txt con le posizioni (o un .m o .dat ...) ma il concetto rimane, non è una cosa da fare a occhio ma da calcolare analiticamente.

Riassumendo: preso un insieme di coordinate XY a caso, come ricerco delle similitudini tra due o più differenti zone?

!fazz
26-11-2012, 16:34
si, hai capito bene, sto usando un rtls per avere una misura assoluta di posizione 2D.

purtroppo l'ottimizzazione mi serve perchè i target sono un bel numero (una 50ina) perchè il sistema deve essere robusto per:
- navigazione in corridoi "simili" (es: corsie di un magazzino. li i target vanno per forza sulle colonne e non c'è tanto margine per differenziare un corridoio dall'altro)
- navigazione su aree relativamente grandi e complesse, nel senso di non semplicemente grandi con tutto ben visibile ma con ostacoli belli grossi e da aggirare
- ostacoli mobili che possono oscurare un po' quello che vogliono.

se può essere utile posso linkare un txt con le posizioni (o un .m o .dat ...) ma il concetto rimane, non è una cosa da fare a occhio ma da calcolare analiticamente.

Riassumendo: preso un insieme di coordinate XY a caso, come ricerco delle similitudini tra due o più differenti zone?

capisco è un bel problema mai pensato a farlo radio invece che ottico? imho ti eviti una cifra di problemi (ancore fisse e tag mobili a batteria) con una posizione assoluta del tag (quindi senza problemi di localizzazione di posti similari) e trasparenza agli ostacoli (a meno di un muro di piombo XD)

imho con un sistema ottico come quello che vuoi far tu è un casino (come punti il laser su oggetti mobili? tracciamento ottico e collimazione? un bel casino, ok che hai i catarifrangenti ma se il laser colpisce una lastra di acciaio è la stessa cosa

sistemi del genere li ho visto solo o radio o ottici con marker a infrarossi ma è un casino gestirli se non hai un sistema di riferimento assoluto e il riferimento assoluto lo puoi avere con almeno 3 ancore (toa) 2 ancore (toa+aoa) fisse che guardano l'intera struttura oppure con un sistema che riconosca con un identificativo il marker (o l'ancora) e che quindi permetta di fissare le coordinate relative su un riferimento assoluto.

ps per distinguere le zone potresti pure pensare ad una soluzione banale come una telecamera superiore e un codice qr dipinto sul soffitto




imho ottico è un suicidio XD io punterei sul radio.

ps che precisione ti serve sul punto 2D? indoor o outdoor? budget alto o basso? la navigazione terminale / come la gestisci? ultrasuoni / telemetro circolare?

Garz
27-11-2012, 07:45
Diciamo che il sistema laser è stato usato per la sua precisione che, almeno nominalmente, adesso è 1cm.
In ogni caso il sistema adesso è definitivamente quello quindi il problema di confrontare altri sistemi non si pone più.

Astraendo dalla situazione specifica, resta il problema di come determinare degli schemi ripetuti in un insieme di coordinate.

ps: non è un suicidio, funziona anche bene. è che le simmetrie, quando capitano, vengono attualmente individuate a naso guardando le letture.
è solo per fare una cosa più strutturata e precisa rispetto all'ottimizzazione a spanne. :sofico:

!fazz
27-11-2012, 08:32
Ok quindi non è un sistema di navigazione autonoma, pensando all'ottimizzazione il ho dovresti trovare un indice ( es una somma pesata della distanza lineare e angolare) da massimizzare / minimizzare una volta trovato io userei un algoritmo genetico per ottimizzare la funzione

Garz
27-11-2012, 10:40
Hemm... veramente E' un sistema di navigazione autonoma... :D

Non vorrei sembrare saccente ma la tua risposta è "un po' " vaga.. ;)
Il mio problema è proprio trovare un indice, o funzione di costo, valido.
Per quanto riguarda l'algoritmo genetico non ne ho mai visto uno, quindi non so neanche da dove partire.
Sinceramente andare di algoritmi genetici mi sembra di andare a caccia di farfalle col bazooka, ma se funziona... :sofico:

attualmente sto meditando sulle matrici dot per studiare, per ogni coppia di target, le correlazioni tra distanze e angoli.

mi spiego meglio:
prendo un target e calcolo un vettore con le distanze di tutti gli altri.
per lo stesso target calcolo un vettore di tutti gli angoli in cui ho i target.
ordino per distanza crescente il vettore distanze e, trasferisco lo stesso ordinamento agli angoli.
detto ciò, costruisco una matrice che, presi 2 vettori di 2 target diversi, ha un valore positivo se le due distanze in esame sono paragonabili, e zero se sono oltre una certa soglia (es +-10% della distanza 1).
Poi non mi resta che cercare in questa matrice binaria delle serie diagonali di 3 o più elementi.
In questo modo ho i gruppi di target che presentano delle distanze comparabili.
Sapendo che target sono posso fare un controllo relativamente veloce per vedere se gli angoli a cui corrispondono sono sovrapponibili con una certa incertezza o se sono così diversi da rendere i due schemi univoci.

Ci devo lavorare un po' ma forse così può funzionare..

!fazz
27-11-2012, 11:32
Hemm... veramente E' un sistema di navigazione autonoma... :D

Non vorrei sembrare saccente ma la tua risposta è "un po' " vaga.. ;)
Il mio problema è proprio trovare un indice, o funzione di costo, valido.
Per quanto riguarda l'algoritmo genetico non ne ho mai visto uno, quindi non so neanche da dove partire.
Sinceramente andare di algoritmi genetici mi sembra di andare a caccia di farfalle col bazooka, ma se funziona... :sofico:

attualmente sto meditando sulle matrici dot per studiare, per ogni coppia di target, le correlazioni tra distanze e angoli.

mi spiego meglio:
prendo un target e calcolo un vettore con le distanze di tutti gli altri.
per lo stesso target calcolo un vettore di tutti gli angoli in cui ho i target.
ordino per distanza crescente il vettore distanze e, trasferisco lo stesso ordinamento agli angoli.
detto ciò, costruisco una matrice che, presi 2 vettori di 2 target diversi, ha un valore positivo se le due distanze in esame sono paragonabili, e zero se sono oltre una certa soglia (es +-10% della distanza 1).
Poi non mi resta che cercare in questa matrice binaria delle serie diagonali di 3 o più elementi.
In questo modo ho i gruppi di target che presentano delle distanze comparabili.
Sapendo che target sono posso fare un controllo relativamente veloce per vedere se gli angoli a cui corrispondono sono sovrapponibili con una certa incertezza o se sono così diversi da rendere i due schemi univoci.

Ci devo lavorare un po' ma forse così può funzionare..

beh, gli indici dipendono strettamente dalla tua applicazione, difficile ipotizzare una serie di indici di performance senza aver visto con mano il sistema e l'ambiente

ps davvero fai navigazione solo mediante trilaterazione senza nessun sistema di navigazione terminale? come gestisci le sicurezze?, le eventuali collisioni con persone / attrezzature in transito o il posizionamento di precisione dove l'avg si deve posizionare? (te lo chiedo perchè questi dati potrebbero essere utilizzati per risolvere i problemi di riconoscimento di corridoi / percorsi similari ) per la tua idea, potrebbe funzionare ma devi anche compensare il diverso sistema di coordinate perchè l'agv si muove secondo una direzione non facilmente predicibile a priori ( nb potresti usare anche delle figure geometrice facili da riconoscere in maniera da determinare la posizione assoluta e l'orientamento spaziale dell'agv non so sarebbe da studiare)

riguardo agli algoritmi genetici, guarda che non sono poi una cosa trascendentale anzi è una tecnica piuttosto semplice da usare per massimizzare / minimizzare una funzione di merito in maniera pseudocasuale senza fare un'ottimizzazione a griglia provando tutte le combinazioni possibili di valori :D

Garz
27-11-2012, 12:01
Le sicurezze, collisioni, persone che passano, fusione con odometria ecc ecc sono tutto un altro problema.
Ho capito e ti do ragione sul fatto che si possano implementare altre tecniche/controlli/strumentazione ma al momento quello, per quanto sensato, è fuori tema e fuori topic.

Il punto è trovare schemi ripetuti nella disposizione dei target riflettenti.
Un esempio di distribuzione di questi target è nel file allegato xy.txt

Non capisco la necessità di "compensare" il sistema di coordinate perchè l'agv si sposta a random... :confused:
Il mio problema è indipendente da chi e come va a leggersi i target, è relativo solo alla disposizione dei target.

per l'algoritmo genetico non saprei, dovrei guardarmeli un po' per capire come eventualmente applicarli.
hai qualche link semplice per una veloce infarinatura sull'argomento?
grazie..

!fazz
27-11-2012, 12:10
Le sicurezze, collisioni, persone che passano, fusione con odometria ecc ecc sono tutto un altro problema.
Ho capito e ti do ragione sul fatto che si possano implementare altre tecniche/controlli/strumentazione ma al momento quello, per quanto sensato, è fuori tema e fuori topic.

Il punto è trovare schemi ripetuti nella disposizione dei target riflettenti.
Un esempio di distribuzione di questi target è nel file allegato xy.txt

Non capisco la necessità di "compensare" il sistema di coordinate perchè l'agv si sposta a random... :confused:
Il mio problema è indipendente da chi e come va a leggersi i target, è relativo solo alla disposizione dei target.

per l'algoritmo genetico non saprei, dovrei guardarmeli un po' per capire come eventualmente applicarli.
hai qualche link semplice per una veloce infarinatura sull'argomento?
grazie..

io pensavo ad data fusion tra i dati dei vari sensori per levarti dalle scatole parte del problema di posizionamento dei riflettori :D,


riguardo alla compensazione, forse non mi sono spiegato bene intendevo che la mappa che fai deve tenere conto del diverso orientamento dell'agv (ad esempio anche con l'odometria si deriva e di parecchio) quindi non puoi assumere una certa vista se il rover ruota magari due target risultano allineati, capisci cosa intendevo?

ps sugli algoritmi trovi parecchio in giro, una breve introduzione la trovi in queste slide

http://areeweb.polito.it/didattica/gcia/lucidi/Esercizi_Approfondimenti/Algoritmi_Genetici/Colore/Introduzione%20agli%20algoritmi%20genetici%20x2.pdf