Ciao a tutti, sono nuovo del forum, ho appena acquistato un kit con arduino, ma mi deve ancora arrivare, pero' ho gia' tante idee che mi piacerebbe sperimentare... sono un programmatore, della parte di elettronica ho pochissima esperienza...
quello che vorrei fare e' trovare un modo per localizzare con precisione di 5-10 cm il mio mezzo semovente in un determinato campo aperto di circa 300 x 300 metri con un refresh di circa 0,5 sec, inizialmente speravo che bastasse un buon GPS, ma vedo che hanno una precisione di 1-2 metri nel migliore dei casi. Altro tipo di soluzione potrebbe essere di ricavare le distanze da tre emettitori fissi in determinate posizioni e di usare la trigonometria per avere il posizionamento rispetto ad essi, essendo campo aperto posso avere anche un contatto visivo con tali emettitori, non so se esiste qualcosa in commercio che permetta di fare una cosa del genere, o se qualcuno ha qualche idea a proposito.
Non vorrei fare un errore madornale... ma in teoria puoi usare 2 localizzatori gps.
1 fisso, di coordinate note
mentre il 2 sull'oggetto da localizzare.
Con il primo localizzatore sapendo le coordinate reali, eseguendo una lettura delle coordinate dal modulo gps, riesci a trovarti l'errore, percui il tuo scarto in metri. cosa che andrai a regolare nelle letture delle coordinate del secondo localizzatore. (se non sbaglio l'errore deriva soprattutto dalle condizioni metereologiche e dalla zona)
Poi dipende dal caso... potresti far partire il tuo oggetto direttamente da un punto di coordinate note, senza doverti avvalere di gps fisso di appoggio.
Altro trucchetto sarebbe far partire sempre il tuo oggetto da coordinate dote: anche relative al tuo spazio, e tramite un meno esoso giroscopio+acceletrometro (like FreeIMU) ti calcoli gli spostamenti.
Grazie per la risposta,
potrebbe essere una buona idea quella dei 2 gps, bisogna solo verificare che l'errore sia lo stesso, e capire fino a che precisione si puo' arrivare con questo metodo.
partire da un punto fisso utilizzando 1 solo gps invece potrebbe non essere ottimale, infatti l'operazione che voglio svlogere puo' durare anche delle ore, in quel lasso di tempo i satelliti spostandosi potrebbero cambiare l'errore.
utilizzare freeIMU non credo che mi darebbe la precisione di cui ho bisogno, dopo diversi spostamenti l'errore si accumulerebbe, per non parlare del terreno disconnesso...
nessuno sa se esiste un sensore di distanza che arrivi a 400-500 metri con una precisione attorno ai 5 cm?
Una triangolazione via radio o basata su laser potrebbe essere una soluzione ?
Ianira:
Grazie per la risposta,
potrebbe essere una buona idea quella dei 2 gps, bisogna solo verificare che l'errore sia lo stesso, e capire fino a che precisione si puo' arrivare con questo metodo.
partire da un punto fisso utilizzando 1 solo gps invece potrebbe non essere ottimale, infatti l'operazione che voglio svlogere puo' durare anche delle ore, in quel lasso di tempo i satelliti spostandosi potrebbero cambiare l'errore.
utilizzare freeIMU non credo che mi darebbe la precisione di cui ho bisogno, dopo diversi spostamenti l'errore si accumulerebbe, per non parlare del terreno disconnesso...nessuno sa se esiste un sensore di distanza che arrivi a 400-500 metri con una precisione attorno ai 5 cm?
Teoreticamente, con attrezzatura professionale con questo metodo del ricevitore di riferimento per la misura dell'inprecisione puoi arrivare a una precisione sotto il mm. Con moduli alla portata di privati non so dirtelo.
Ciao Uwe
ratto93:
Una triangolazione via radio o basata su laser potrebbe essere una soluzione ?
stavo proprio pensando a questo, sapreste indicarmi dei componenti in commercio, considerando un terreno accidentato che non so se riuscirebbe a permettere un allineamento in moto nel caso di utilizzo del laser?
uwefed:
Teoreticamente, con attrezzatura professionale con questo metodo del ricevitore di riferimento per la misura dell'inprecisione puoi arrivare a una precisione sotto il mm. Con moduli alla portata di privati non so dirtelo.
anche questa soluzione non sarebbe male se abbastanza precisa, pero' ho paura di quello che significa "attrezzatura professionale"...
Ianira:
...uwefed:
Teoreticamente, con attrezzatura professionale con questo metodo del ricevitore di riferimento per la misura dell'inprecisione puoi arrivare a una precisione sotto il mm. Con moduli alla portata di privati non so dirtelo.anche questa soluzione non sarebbe male se abbastanza precisa, pero' ho paura di quello che significa "attrezzatura professionale"...
Anche avendo le disponibilità economiche, non potresti raggiungere la precisione cercata. La rete GPS è una rete militare messa a disposizione dei civili, ma ...diminuendone apposta la precisione così da non permetterne (... almeno in teoria) un uso balistico. Nella pratica, una parte dei segnali e criptata e solo i ricevitori militari possono decriptarla.
Certo, ci sono tecniche matematiche e acquisizioni multiple che permettono un miglioramento della precisione, ma ... costano e comunque, non raggiungono la precisione che si ha decodificando la parte criptata
Direi che con il GPS difficilmente risolvi ....
Guglielmo
ok, allora escludendo il gps concentriamici sulla triangolazione...
pensandoci bene potrei triangolare con gli angoli invece che con le distanze, praticamente avendo 3 emettitori fissi dovrei avere con precisione le 3 direzioni di provenienza (al posto delle distanze), tra l'altro cosi' potrei ricavare anche l'orientamento oltre che la posizione... pero' il problema e' sempre quello, esiste qualcosa in commercio che mi permetta di ricavare con precisione la distanza o la direzione da punti fissi?
gpb01:
Anche avendo le disponibilità economiche, non potresti raggiungere la precisione cercata. La rete GPS è una rete militare messa a disposizione dei civili, ma ...diminuendone apposta la precisione così da non permetterne (... almeno in teoria) un uso balistico. Nella pratica, una parte dei segnali e criptata e solo i ricevitori militari possono decriptarla.
Non è proprio così, la SA (Selective Availability) è stata disattiva il 1/5/2000 per ordine del presidente Clinton, questo perché l'uso dei gps differenziali rendeva inutile l'applicazione di questo limite.
Tutti i gps attuali hanno un circolo di confusione tipico di circa 20-30 metri in condizioni ottimali di ricezione dei satelliti, il che implica oltre all'intensità del segnali ricevuto anche la loro posizione la ricezione diretta del segnale e non tramite riflessioni come può succedere in ambito cittadino.
Se il gps è in grado di ricevere anche il segnale WASS (USA) o Egnos (Europa) il circolo di confusione può scendere a solo tre metri, il che è un'ottima precisione per un "cosino" che costa qualche decina di Euro parlando del solo modulo GPS.
Esistono gps per uso ingegneristico che arrivano ad una precisione centimetrica, però parliamo di apparati che costano qualche decina di miglia di Euro, vengono usati per fare misure su i terreni o per la guida automatica di macchine agricole.
Il massimo ottenibile spendendo poco, qualche centinaio di Euro, è usare due gps di buona qualità dotati con capacità Egnos (praticamente tutti i gps recenti), uno fisso in posizione nota che fa da riferimento, il gps mobile è collegato tramite datalink a quello fisso e comparando le letture è possibile ridurre il circolo di confusione a circa 80-50 cm, meglio di così è impossibile, da notare che è indispensabile la disponibilità del segnale Egnos nella zona di lavoro e non è detto che sia presente, senza questo l'errore rimane di qualche metro.
Ultima nota, come già detto molte volte con Arduino è impossibile elaborare la distanza tra due coordinate gps con precisione al singolo metro, e sulle brevi distanze. perché non è disponibile la matematica float a 64bit, detto in altri termini, con Arduino al massimo è possibile stimare la distanza tra due coordinate gps distanti molte decine di km con precisione di qualche kilometro.
astrobeed:
Non è proprio così, la SA (Selective Availability) è stata disattiva il 1/5/2000 per ordine del presidente Clinton, questo perché l'uso dei gps differenziali rendeva inutile l'applicazione di questo limite.
....
Grazie Astro, questa del decreto Clinton mi mancava ... buono a sapersi ...
Comunque, si, con i normali GPS commerciali, difficile raggiungere precisioni maggiori di quanto hai descritto. Vedremo quando Galileo sarò operativo ... quale sarà la precisione che daranno (anche se nei preliminary non ho visto questa grande accuratezza H/V), ma ho già inteso che ... più precisione vorrai, più dovrai pagare ... come al solito ...
Guglielmo
Non dimentichiamo poi che con arduino uno o arduini basati su processori ad 8bit cè l'errore introdotto dalla matematica a soli 16bit dei float che renderebbe decisamente sballata ogni lettura
Una delle possibilita' di riduzione dell'errore dovuto al circolo di confusione, potrebbe essere la calibrazione "al volo" sul posto ... mi spiego meglio con un'esempio.
Metti di avere un quadrato di 10 metri per 10 da monitorare ... ci si procurano 2 moduli GPS identici ... il primo lo si posiziona sul mezzo mobile, e lo si mette in un'angolo (considera questo angolo come il punto zero, o se preferisci x=0 ed Y=0), il secondo lo si posiziona in un punto esterno preciso, ad esempio all'esterno, sullo stesso angolo del punto 0, ma spostato in diagonale, diciamo ad x-1m ed y-1m ... prima di tutto "azzeri" la lettura del secondo GPS, impostandolo come punto di origine del riferimento (e dici al tuo software che il riferimento si trova ad x-1m ed y-1m dal punto 0), poi "azzeri" la lettura del GPS che sta sul veicolo, che hai posizionato nell'anglolo zero, dichiarandogli il valore x=0 ed Y=0 ... a questo punto, anche se la lettura dovuta ad interferenze e condizioni atmosferiche varie cambia, i due riferimenti spaziali dovrebbero rimanere abbastanza sincronizzati da consentirti una lettura sufficentemente precisa.
ratto93:
Non dimentichiamo poi che con arduino uno o arduini basati su processori ad 8bit cè l'errore introdotto dalla matematica a soli 16bit dei float
Su Arduino, e in generale su tutti i micro/mcu, la matematica float è a 32 bit, per gli interi è possibile la presenza di quella a 64 bit, dipende dal compilatore, rammento che questo è un limite imposto dal software più che dal hardware, da un punto di vista puramente teorico anche una mcu a 8 bit può fare calcoli con float a 64 bit, ma anche a 128 bit, però i tempi di esecuzione sarebbero inaccettabili per un normale uso, parliamo di molti ms per ogni singolo calcolo.
Un esempio pratico, un dsPIC33 @40 MHz riesce a calcolare, con precisione di +/- 10 cm tramite algoritmo semplificato, la distanza tra due coordinate gps in 2.625 ms pari a 105000 cicli macchina, un STM32F @72MHz esegue lo stesso calcolo (il codice è perfettamente identico per tutti e due i micro) in 0.960 ms pari a 69125 cicli macchina, questi sono valori realmente misurati durante un test che ho fatto recentemente proprio per determinare il reale tempo di calcolo su tutti e due i micro, ovviamente con float a 64 bit.
Lo stesso test fatto su un pic 18F2620 @10MHz e su Arduino (@16 MHz) utilizzando una libreria float 64 bit, è un prodotto commerciale non chiedetemela perché non posso allegarla, ha fornito questi risultati:
PIC 18F2620 220.48 ms pari a 2204800 cicli macchina
Arduino 250.16 ms pari a 4067642 cicli macchina
Da notare che sebbene i PIC serie 18 hanno un clock minore rispetto ad Arduino risultano più veloci perché hanno quasi tutte le istruzioni ad un solo ciclo macchina, solo pochissime ne richiedono due, al contrario degli AVR dove le istruzioni ad un solo ciclo macchina sono poco più della metà mentre le altre sono a due, tre, quattro cicli macchina e questo si fa sentire non poco durante l'esecuzione del programma.
Anche se sulla carta gli AVR sembrano più veloci dei PIC perché accreditati di 20 mips come velocità massima, contro i 10 mips dei pic, all'atto pratico le cose sono un pochino diverse
Etemenanki:
Una delle possibilita' di riduzione dell'errore dovuto al circolo di confusione, potrebbe essere la calibrazione "al volo" sul posto ... mi spiego meglio con un'esempio.
La calibrazione va fatta in modo diverso, c'è una sostanziosa dimostrazione matematica di questa cosa, i due GPS devono trovarsi nello stesso punto all'accensione, si aspetta una decina di minuti per dare modo di stabilizzare il sistema e far acquisire il maggior numero possibile di satelliti, a questo punto si fa lo zero su tutti e due i gps (non è identico) e si procede col controllo costante della deviazione da questo punto del primo gps, si passa il dato al secondo gps che lo usa per correggere la sua posizione tramite appositi algoritmi, dal punto di vista matematico non è una cosa semplice da implementare, serve un kalman per filtrare gli errori.