.: robotitaly.NET :. - la community italiana sulla robotica  

Vai indietro   .: robotitaly.NET :. - la community italiana sulla robotica > Blogs > Blog di Emanuele T.

Rating: 2 votes, 5.00 average.

Robottino semi-autonomo.

Submit "Robottino semi-autonomo." to Twitter Submit "Robottino semi-autonomo." to Facebook
Posted 11-22-2013 at 11:04 PM by Emanuele Terrasi
Updated 11-12-2014 at 10:43 AM by Emanuele Terrasi (allegato+P.S.+video)

In questa realizzazione ho riunito alcune positive esperienze:

- La marcia semi-autonoma avviene facendo un primo giro di auto-apprendimento in modalità radiocomandata e memorizzando tutti i comandi per ripeterli poi in sequenza, quante volte si voglia.

- I motori sono del tipo Brushless BLDC direttamente controllati dalla MCU in modalità passo-passo.

- I piccoli slittamenti delle ruote vengono azzerati battendo, prima di ogni ripetizione del percorso, su un riferimento fisso, che comprende anche una stazione di ricarica per la batteria .

- La trasmissione del moto avviene per frizione diretta sulle ruote gommate (questo non è l'ottimo ma semplifica la costruzione).

- Il radiocomando è con codifica AFSK a tre toni, decodificata dalla stessa MCU mentre la sezione radio ricevente è costituita da un piccolo scanner.


Per ottenere la suddetta marcia semi-autonoma bisognava escogitare qualcosa che conciliasse la flessibilità della guida con la esatta ripetibilità del percorso. Un radiocomando proporzionale come quello dei modelli RC avrebbe complicato le cose; meglio usare una levetta di comando con tre sole possibilità di azionamento: sinistra, destra e centro. Il fatto che questi comandi siano On-Off non deve far pensare ad una marcia troppo discontinua perchè l'esecuzione di ciascun comando si svolge poi in modo graduale ed ha una sua durata nel tempo. I cambiamenti di direzione vengono eseguiti rallentando la sola ruota interna progressivamente, fin tanto che il relativo comando dura, ed anche il riallineamento avviene con delle rampe di accelerazione ben dosate. Le rampe vengono generate dal programma, quindi sempre nello stesso modo. Vi è un contatore per la somma dei passi compiuti dai due motori, ed ogni comando viene memorizzato insieme col valore presentato dal contatore nel momento in cui il comando è stato ricevuto. Considerando anche il fatto che i motori vengono controllati passo-passo, è chiaro che ripetendo la sequenza dei comandi si rigenera esattamente lo stesso percorso. Per la memorizzazione si utilizza un formato a 16 bit, di cui 14 rappresentano il contatore dei passi mentre i rimanenti 2 bit rappresentano il tipo di comando: sinistra, destra, riallinea o rallenta. Il rallentamento è utile alla fine del percorso per agevolare il ritorno verso il riferimento e per non battervi troppo rudemente. Nel caso in cui 14 bit non bastassero per un tratto rettilineo particolarmente lungo (più di un paio di metri), il programma inserisce automaticamente un nuovo comando in prosecuzione di quello corrente.
La codifica AFSK a tre toni consiste nel modulare il trasmettitore con un'onda di bassa frequenza generata da un multivibratore astabile. Muovendo la levetta di comando a 3 posizioni si inseriscono opportune resistenze che ne modificano la frequenza: a sinistra abbiamo la frequenza più bassa, a destra la più alta e al centro la mediana. Le due frequenze estreme stanno fra loro nel rapporto 1,414 (radice di 2) in modo che siano le più distanti possibile senza che le armoniche vadano a sovrapporsi, e la frequenza mediana è la media geometrica delle due estreme.
In ricezione abbiamo uno scanner palmare Yaesu, grazie al quale possiamo scegliere con libertà la frequenza e il tipo di modulazione del trasmettitore. Dalla presa auricolare dello scanner il segnale di bassa frequenza viene trasferito a un ingresso analogico della MCU. Quì vengono simulati due risonatori accordati alle due frequenze estreme già dette, seguìti da rivelatori a valor massimo. Confrontando le uscite dei due rivelatori, il programma stabilisce l'inizio e la durata di ciascun comando esercitato tramite la levetta: quando una uscita prevale nettamente sull'altra bisogna svoltare a sinistra o a destra, quando le due uscite hanno circa la stessa ampiezza bisogna riallineare, e quando entrambe le uscite mancano vuol dire che il pilota ha spento un attimo il trasmettitore e questo vale come comando di rallentamento.
Per simulare i risonatori LC ho usato il metodo della sostituzione Z bilineare che comporta un bel po' di calcoli iniziali ma poi gira con sole moltiplicazioni e addizioni in virgola fissa, usando per i prodotti una variabile ausiliaria a 32 bit. La frequenza di campionamento è 14 kHz, largamente sufficiente visto che le frequenze AFSK sono appena 263-313-372 Hz.
La MCU dspic33 programmata in C è davvero ben sfruttata: controlla i brushless facendo anche la regolazione di corrente in PWM a 36 kHz, simula i due filtri come appena detto, elabora e memorizza la sequenza dei comandi ed emula una EEprom nella flash memory di programma per evitare che, spegnendo il micro, il percorso memorizzato venga perduto. Quest'ultima funzione a differenza della altre non è DIY ma utilizza dei moduli forniti dalla stessa Microchip.
Allego una foto in cui si vede il supporto in policarbonato che sostiene lo scanner sopra l'assale, in modo che il peso influisca il meno possibile sui piccoli slittamenti delle ruote. Per attivare una sessione di auto-apprendimento basta accendere mentre il trasmettitore è pure acceso, compiuto il primo giro si può spegnere e togliere lo scanner.
Allego un videoclip della marcia "a memoria" semi-autonoma.
Allego pure l'algoritmo del filtro in formato .doc del Word, anche limitato.

P.S. Ho apportato questa modifica: il primo giro di auto-apprendimento viene effettuato a velocità moderata per consentire una certa precisione di guida, mentre i giri successivi vengono effettuati a velocità via via crescenti sempre rispettando rigorosamente lo stesso percorso!
https://www.youtube.com/watch?v=_1QM...ature=youtu.be
Icone allegate
Clicca sull'immagine per ingrandirla

Nome:   Immag0738.jpg
Visite: 777
Dimensione:   17.5 KB
ID: 235  
File allegati
Tipo di file: doc formula.doc (44.0 KB, 766 visite)
Posted inUncategorized
Visite 3306 Comments 0 Email Blog Entry
« Prec.     Main     Seguente »
Total Comments 0

Comments

 

Tutti gli orari sono GMT. Attualmente sono le 11:17 AM.


Powered by vBulletin versione 3.8.7
Copyright ©: 2000 - 2017, Jelsoft Enterprises Ltd.