Page 1 of 1

Come calcolare la pose di un robot con due ruote?

PostPosted: 22 Oct 2011, 11:30
by umanoide
Vorrei gentilmente sapere se qualcuno mi può spiegare come calcolare la pose di un robot, cioè x,y e l'orientamento,
conoscendo continuamente il numero di passi letti con un encoder incrementale attaccato alle ruote.
Ho sentito parlare di calcoli odometrici con gli encoder, ho letto su un pò di pdf in giro sulla rete ma, di sicuro per colpa mia,
non riesco a capirci una mazza.

vorrei conoscere questi valori per far muovere il mio robottino con cognizione e non a caso....

grazie per l'aiuto

Re: Come calcolare la pose di un robot con due ruote?

PostPosted: 27 Oct 2011, 18:13
by Fagos
anche io sto realizzando un piccolo robot con due ruote motrici + 1 ruota libera.
devo decidere come comandare i motori delle ruote, che sono dei servo tipo radiomodelli.
non so se conviene pilotarli con dei relè o con un circuito elettronico con il controllo della velocità.

poi verrei mettere dei sensori per leggere la posizione del robot ... tipo encoder, untrasuoni e altro.

mi potete consigliare?

ciao

Re: Come calcolare la pose di un robot con due ruote?

PostPosted: 01 Nov 2011, 09:13
by deluca
Salve,
(prima di parlare di pose ed odometria e navigazione del robot abbiamo bisogno di alcuni accorgimenti da implementare sul robot)
intanto premetto di aver capito che già, sul tuo robottino, hai montato delle ruote accoppiate a dei motorini con encoder. OK?
di sicuro sono dei motorini da 7.2 o da 12 volt. Gli encoder saranno di certo di tipo ottico, rotativo incrementale, con non meno di 10-50 impulsi per giro. ok?
Quelli che utilizzo io sono di solito sono da 100-1000 impulsi giro.
In uscita devi avere due segnali (canale A e canale B sfasati di 90 gradi).
Adesso hai bisogno di un sistema per realizzare un controllo per la regolazione sia della velocità, sia della posizione del delle ruote;
di solito viene utilizzata una regolazione a loop chiuso di tipo PID (proporzionale, integrativo, derivativo), ma non so se tu hai mai utiizzato.
Nel caso peggiore, visto che la materia è un pò ostica, ti conviene utilizzare soltanto la lettura degli encoder per mezzo di una routine di gestione
degli interrupt con un micro ad es: atmega32 utilizzando un pin (INT0) per leggere la frequenza e un altro bit per leggere la direzione.

Spero di essere stato chiaro, fin qui.
Vedi se intanto riesci a fare quanto detto... poi andremo avanti.

ciao.

Re: Come calcolare la pose di un robot con due ruote?

PostPosted: 02 Nov 2011, 20:43
by umanoide
grazie tante per il consiglio, sto cercando di capirci qualcosa,
ma volevo sapere se potrei utilizzare un chip da collegare ad un micro per leggere gli encoder.
ho visto sulla rete qualcosa, ho capito che leggere gli encoder con un micro non è cosi semplice
e la gestione degli interrupt porta via molto tempo al programma.
Ho pensato di fare leggere gli encoder ad un chip e memorizzare il valore su di esso per poi passarlo al micro
è possibile?
mi potresti dare qualche direttiva? tipo il chip da usare o altro?

ti ringrazio a priori.

Re: Come calcolare la pose di un robot con due ruote?

PostPosted: 09 Nov 2011, 12:14
by deluca
umanoide wrote:grazie tante per il consiglio, sto cercando di capirci qualcosa,
ma volevo sapere se potrei utilizzare un chip da collegare ad un micro per leggere gli encoder.
ho visto sulla rete qualcosa, ho capito che leggere gli encoder con un micro non è cosi semplice
e la gestione degli interrupt porta via molto tempo al programma.
Ho pensato di fare leggere gli encoder ad un chip e memorizzare il valore su di esso per poi passarlo al micro
è possibile?
mi potresti dare qualche direttiva? tipo il chip da usare o altro?

ti ringrazio a priori.


La gestione degli encoder incrementali, specie se vuoi una buona risoluzione (quadratura), non è
banale con i uC, poichè potresti tenere il conteggio se vai ad una frequenza bassa.... altrimenti
addio, con la gestione degli interrupts è improbabile che ci riesci.
Se invece ti affidi a dei chip dedicati, ad es: HCTL2032, puoi senza problemi gestire il conteggio
di 2 encoder fino a rate di 5000 impulsi x giro di asse del motore.
Leggono in quadratura, puoi conteggiare fino a 32 bit e li puoi interfacciare facilmente, ad esempio, con
un uC ATmega128, mappandoli direttamente in memoria.
Cioè li puoi interfacciare come se stessi collegando una memoria RAM esterna.

Anche questo tipo di approccio non è semplice, ma se dai on'occhiata al pdf del chip penso che riuscirai a tirarci fuori qualcosa.....
fammi sapere.

ciao