home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Robotica, CNC, 3D
Finalmente un posto dove poter discutere di robotica di CNC e stampanti 3D, scambiarsi idee, progetti ed opinioni. Partecipa anche tu...


rilevare la posizione di un robot
     
Autore Messaggio opzioni
schottky





postato il:
18.05.2012, alle ore 09:30
multimetro:
Mnagggg!!!
Non riesco a capire come fare a calcolare l'angolo tra la retta che rappresenta il tratto percorso dal robot e l'asse x sapendo che alla partenza la bussola rilevava un angolo di n gradi nord e alla fine un angolo di m gradi nord.
In parole povere l'angolo x in funzione degli angoli m (arrivo) e n (partenza).


Devi ragionare sempre in termini differenziali siano xk, yk e ak rispettivamente la posizione ad un certo istante tk misurata su un riferimento ortogonale con l'asse x orientato nella direzione del Nord e l'angolo rispetto al nord, si inoltre vk la velocita del robot allo stesso istante. Passato un piccolo (molto piccolo) intervallo di tempo delta_t i dati si aggiornano, in prima approssimazione, come segue:
tk+1=tk+delta_t
xk+1=xk+vk*delta_t*cos(ak)
yk+1=yk+vk*delta_t*sen(ak)
La velocità vk+1 si calcola invece moltiplicando una costante di proporzionalità da calcolare sperimentalmente per il rapporto tra il numero di impulsi contati dell'encoder e il delta_t
Dalla mia descrizione si capisce che vi sono numerose fonti di imprecisione oltre agli errori strumentali dovuti alla bussola e all'encoder.
a) la prima è il fatto che considero tra tk e tk+1 costante sia la velocità che l'ancolo cosa in genere nonvera.
b) la seconda deriva dal fatto che sia come sia l'encoder da una misura discreta e invece la velocità è una grandezza continua.
c) la terza dipende dalle imprecisioni del calclolo di seni e coseni con l'aritmetica di un microcomtrollore, cerca su google "cordic" per avere lumi su questo.
d) la quarta, e di gran lunga più importante è che in questo modello si considera il robot come un punto materiale animato da un vettore velocità applicto sul baricentro e ruotante su se stesso attorno al medesimo baricentro. Questa assunzione vale se il robot è dotato di una singola ruota e sta in equilibrio su di essa "monociclo". Non credo sia il caso del tuo robot. In qualsiasi altra configurazione (duo o tre o quattro ruote) ogni ruota ha una sua velocità diversa dalle altre e nessuno degli ipotetici encoder fissati su di esse fornisce la velocità esatta del robot. Per calcolarla occorre risolvere l'equazione della cinematica del robot, che indipendentemete dalla struttura ancora non si può risolvere in modo "esatto".
Tutti questi errori si sommano e si "integrano" dando risultati divergenti.
Dopo questa lunga chiacchierata spero ti sarai reso conto della correttezza di quanto ti avevo raccomandato nel mio primo post, cioè che per conoscere con (una certa) precisione la posizione del robot occorre farlo controllando continuamente la localizzazione rispetto a oggetti noti.
Questa operazione si chiama controreazione, per renderti conto di quanto sia importante cerca di rispondere a questa domanda.
Ti fidersti tu di guidare una automobile per qualche centinaio di metri tenendo gli occhi bendati fidando solo sui fatti che
a) la strada è perfettamente diritta
b) la strada è chiusa al traffico non ci sono ne mezzi ne persone ne animali
d) tu tieni il volante diritto
Io non mi fiderei perchè sono certo che le imperfezioni dell'auto, della strada del mio tener dritto il volante im poche decine di metri mi mandano contro il muro. Occorrono gli occhi che sono la controreazione.



Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
multimetro





postato il:
18.05.2012, alle ore 18:31
mumble...
potrei usare due sensori ad ultrasuoni posti a 90° l'uno dall'altro per leggere la distanza lungo gli assi usando come riferimanto due pannelli di legno posti a 90° l'uno dallaltro. Per mantenerli sempre allineati con le pareti anche quando il robot ruota su se stesso potrei usare un servomotore.



W l'ambiente.
sito internet:
http://scientificamente.weebly.com
Daniels118





postato il:
19.05.2012, alle ore 00:02
E come faresti a pilotare il servomotore in modo che resti sempre allineato? Ovvio che ci sono delle soluzioni, ma valutane la complessità, inoltre considera che un servomotore standard non può ruotare sempre nella stessa direzione, quindi se il robot girasse ad esempio sempre a destra, ad un certo punto non riusciresti più a tenere i sensori allineati.


http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
schottky





postato il:
19.05.2012, alle ore 07:42
multimetro:
mumble...
potrei usare due sensori ad ultrasuoni posti a 90° l'uno dall'altro per leggere la distanza lungo gli assi usando come riferimanto due pannelli di legno posti a 90° l'uno dallaltro. Per mantenerli sempre allineati con le pareti anche quando il robot ruota su se stesso potrei usare un servomotore.


puoi provare, usando il segnale della bussola per mantenere i sonar allineati agli assi dei pannelli, é vero però quello che dice daniels, cioè che esiste un'angolo morto nel posizionamento del servo. A meno che tu per servomotore non intendi un servo da RC ma un vero e proprio servomotore con controllo di posizione e magari encoder assoluto, che però è una soluzione complessa e parecchio costosa. Un'altra criticità della soluzione è il fatto che la stanza in cui esegui le operazioni deve essere vuota e pirva di ostacoli.



Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
Daniels118





postato il:
19.05.2012, alle ore 09:29
Io ti consiglio di prefiggerti un obiettivo, determinare tutte le condizioni e cercare insieme la soluzione migliore. Le informazioni che devi conoscere sono queste:
- posizionamento inerziale o globale?
- distanza da coprire
- risoluzione desiderata
- precisione desiderata
- tolleranza alla deriva nel tempo
- possibilità di installare punti di riferimento ambientali
- presenza di ostacoli
- condizioni ambientali (luce e suoni)
- trazione del robot (traslazione su due assi, differenziale, sterzo)
- sensori a disposizione (gps, accelerometri, encoder, bussola, ultrasuoni, telemetri, ecc.)



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
multimetro





postato il:
19.05.2012, alle ore 14:34
Prima di tutto vi ringrazio per la vostra disponibilità!
Dò piena ragione a shottky, devo dire che non avevo ragionato appieno sull'uso del servo, però direi che quello è il minore dei mali.
Seguendo il consiglio di Daniels, invece, faccio il punto della situazione:
si tratta di un robot che deve muoversi in uno spazio di max 2m di lato, in questo spazio ci sono degli ostacoli e lo scopo del robot è mapparne la posizione. Il robot ha quattro ruote motrici pilotate a coppie.
Quindi:
- posizionamento globale;
- distanza max di 2m;
- risoluzione di 1cm;
- precisione la più alta possibile;
- si possono installare dei punti di riferimento;
- ci sono ostacoli, ma faccio in modo che non disturbino la lettura della posizione;
- condizioni ambientali "normali" (si tratta di una stanza);
- qualsiasi sensore a disposizione;

Al momento la soluzione migliore sembra quella con i due sensori ad ultrasuoni, solo che non riesco a capire come calcolare l'angolo tra l'asse x del sistema di riferimento del robot rispetto a quello di terra.



W l'ambiente.
sito internet:
http://scientificamente.weebly.com
Daniels118





postato il:
20.05.2012, alle ore 10:16
Vediamo di analizzare la situazione.
Il posizionamento globale implica la presenza di punti di riferimento esterni e rende non necessari sistemi inerziali come odometri ed accelerometri, anche se non li esclude.
La distanza da coprire è sufficientemente piccola per poter usare sensori a corto raggio come quelli ad ultrasuoni.
La risoluzione richiesta esclude sistemi basati sul tempo di volo di segnali radio e quindi anche tutti i ricevitori gps convenzionali.
Io ti consiglierei di realizzare un sistema gps utilizzando gli ultrasuoni al posto delle onde radio. Lo descrivo in breve:
nella "stanza" dovrai posizionare tre trasmettitori ad ultrasuoni disposti preferibilmente disposti sui vertici di un triangolo equilatero. Questi trasmettitori avranno un timer interno sincronizzato con quello del robot ed invieranno "impulsi ultrasonici" a turno. Il robot si aspetterà di ricevere questi impulsi da ciascun trasmettitore in un particolare momento; la differenza di tempo tra la ricezione dell'impulso e l'orario in cui si ci aspettava di riceverlo permette di calcolare la distanza da quel particolare trasmettitore. Combinando le tre distanze e le posizioni note dei trasmettitori è possibile calcolare la posizione del robot. Sul robot è sufficiente mettere un singolo ricevitore ad ultrasuoni montato sulla sommità. I trasmettitori devono essere posti in alto, in maniera tale che in qualunque punto si trovi il robot il suo sensore sia "a vista". Le onde riflesse impiegano più tempo di quelle dirette per raggiungere il sensore e quindi possono essere facilmente scartate. E' consigliabile utilizzare un sistema ad onde radi per tenere sincronizzati il timer interno del robot con quello dei trasmettitori. I trasmettitori possono tenersi sincronizzati con un segnale via cavo.



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
schottky





postato il:
20.05.2012, alle ore 10:22
multimetro:
Il robot ha quattro ruote motrici pilotate a coppie.

ahi Ahi allora di fidarsi dell'odometria non se ne parla proprio la cinematica di una "auto" normale con quattro ruote due sterzanti e due motrici + differenziale è già complicata (modello di Ackermann) ma se le quattro ruote sono pilotate a coppie (immagino alla stessa velocità) allora la cinematica "non può" in nessun caso essere risolta perchè lo slittamento delle ruote è inevitabile (la condizione di puro rotolamento è che nelle curve tutti gli assi delle ruota si incontrino nello stesso punto (centro istantaneo di rotazione) condizione non realizzabile in questo caso.
multimetro:

- distanza max di 2m;
- risoluzione di 1cm;
- precisione la più alta possibile;
- si possono installare dei punti di riferimento;
- ci sono ostacoli, ma faccio in modo che non disturbino la lettura della posizione;
- condizioni ambientali "normali" (si tratta di una stanza);
- qualsiasi sensore a disposizione;

Al momento la soluzione migliore sembra quella con i due sensori ad ultrasuoni, solo che non riesco a capire come calcolare l'angolo tra l'asse x del sistema di riferimento del robot rispetto a quello di terra.


I sensori agli utrasuoni non ti possono garantire una precisione di due centimetri a due metri e non puoi schermare esattamente gli ostacoli semplicemente perchè i sensori a ultrasuoni (e sto parlando dei modelli professionali tipo Polaroid, quelli tipo Sparkfun vanno peggio) hanno un fascio di cira 24 gradi per cui ammesso che la misura la fai esattamente puoi localizzare il tuo oggetto solo su un arco di circonfernza di questa ampiezza e ovviamente l'errore è molto più grande di 2cm.

Non devi confondere la precisione della localizzazione globale con quella ottenibile in navigazione, se io devo andare da un punto A ad un punto B io ci posso andare con una precisione molto elevata anche se la precisione di posizinamento è bassa, in genere si usano strategie di navigazione adattative che consento errori grandi quando il robot è ben lontano dagli ostacoli e piccoli mam mano che si avvicinano, in pratica nella navigazione si tratta di una successione di trial and error non dissimile da quanto facciamo noi guidando un'automobile (faccio sempre lo stesso esempio).

Ti ho gia detto qual'è l'unico strumento che consente misure precise in ambito robotico ma non so se ti puoi permettere un dstanziometro laser.

Se il tuo problema però è localizzare più o meno esattamente il robot in una stanza ti potrei proporre una soluzione alternativa realizzabile hobbisticamente anche se è un po complessa sopratutto dal punto di vista computazionale. Si tratta di mettere due telecamere stereo lungo le pareti della tua stanza e puntare un segnale particolarmente evidente (per esempio una luce di un certo colore) montato sul robot, le camere stereo non sono altro che coppie di telecamere poste a distanza fissa e forniscono due immagini leggermente diverse della stessa scena. Nel tuo caso facendo la differenza tra i punti rappresentativi del tuo segnale nelle due coppie di immagini è possibile con un po geometria e trigonometria (geometria epipolare) calcolare la distanza dalle pareti del robot con notevole precisione, per capire come fare devi leggere un libro di Computer Vision (puoi per esempio leggere laslide che trovi qui http://www.dmi.unict.it/~battiato/CVision0809/CVision0809.ht… )

L'ultimo quesito poi è banale se hai una bussola a bordo: prima di tutto misuri l'angolo dell'asse x della stanza rispetto al nord sia alfa, durante la navigazione leggi l'idicazione della bussola che sarà l'angolo dell'asse del robot rispetto al nord sia esso beta, l'angolo del robot rispetto all'asse x è beta-alfa (NB, gli angoli vanno contati col proprio segno)




Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
Jasson





postato il:
20.05.2012, alle ore 10:55
Mentre leggevo questo post, e con la mano destra muovevo il mosue, mi si accesa la lampadina, il mouse,un sistema tipo quello che controlla lo spostamento del mouse, può essere una soluzione praticabile a livello hobbistico.
Non sò precisamente come funziona, ma di sicuro un mouse è in grado di leggere lo spostamento di pochi millimetri e pure la direzione.
schottky





postato il:
20.05.2012, alle ore 11:29
Jasson:
Mentre leggevo questo post, e con la mano destra muovevo il mosue, mi si accesa la lampadina, il mouse,un sistema tipo quello che controlla lo spostamento del mouse, può essere una soluzione praticabile a livello hobbistico.
Non sò precisamente come funziona, ma di sicuro un mouse è in grado di leggere lo spostamento di pochi millimetri e pure la direzione.


problema già affrontato nella stessa discussione il mouse è capace di leggere non di misurare, avete un po tutti la stessa deformazione, quella di trascurare la grande importanza del feedback visuale in tutte le cose che facciamo. Applicare la tecnologia del mouse alla localizzazione del robot è equivalente a rispondere alla seguente richiesta: sposta il puntatore del mouse di 2 cm a destra e 3 cm in alto SENZA GUARDARE LO SCHERMO!



Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale