Go Down

Topic: [Progetto comune] - Robotica (Read 29213 times) previous topic - next topic

gbm

#30
Mar 17, 2010, 04:07 pm Last Edit: Mar 17, 2010, 04:12 pm by gioscarab Reason: 1
il problema principale è il consumo di potenza di calcolo da parte del mapping software. credo che un 168 basti e avanzi per il PID!!
Questo progetto è una figata contiene tutto quello che serve imparare, cioè:
-interazione tra piu' arduini
-applicazione e sviluppo di un software complesso
-applicazione e acquisizione sensori
-una applicazione vera e sensata per il risultato finale (aspirapolvere diy)

ve li immaginate finalmente i nostri robot che dopo un po' di musate iniziano a filare veloci come fusi in casa senza sbattere da nessuna parte?
Community robotica / programmazione Arduino
www.gioblu.com

guiott

Per il controllo di velocità tramite encoder e PID non vedo grossi problemi con un architettura anche a 8bit. Il problema è più che altro la velocità di elaborazione o meglio, la capacità di gestire gli impulsi dagli encoder. Lo avevo già fatto con una MCU a 8 bit PIC18F (http://www.guiott.com/PID/index.html) gestendo ad interrupt i due encoder ricavati dalle rotelle dei mouse, quindi con meno risoluzione rispetto agli encoder che uso ora. Il vantaggio con il dsPIC33F è la presenza di due moduli QEI (quadrature encoder interface) che fanno già gran parte del lavoro in HW.

Ti devi fare bene i conti per i tuoi encoder, magari segui questa traccia:
http://www.guiott.com/dino/swmovimento.html
per capire se hai risorse a sufficienza, ad occhio dovresti farcela.

L'unico dubbio che ho è sulla scrittura del SW, non sono sicuro che basti usare il Wiring per realizzare una cosa del genere. Ho paura che ti debba gestire le cose a livello un po' più basso, ma è solo una sensazione, non conosco così bene gli Atmel, io avevo fatto tutto in C sul PIC, ottimizzando tutto, anche il flow del programma usando una specie di RTOS personalizzato.

Per quanto riguarda l'odometria invece serve un po' più di matematica, e una MCU a 16bit potrebbe fare la differenza.

All'epoca di Dino avevo cominciato a studiare le librerie Cordic per calcolare seni e coseni con gli interi ottimizzando al massimo i calcoli (http://www.guiott.com/dino/swdivide.html), poi ho deviato per la soluzione più facile con un PIC con core DSP che non ha grossi problemi nei calcoli anche di float.
Con un po' di applicazione non dovrebbe essere impossibile, non credo però che basti una sola scheda per controllo velocità, PID, odometria e navigazione.

ciao

P.S.
Scusate se cito così spesso pagine del mio sito, ma ci ho speso molto tempo e li ci sono tutti i miei appunti, credo possano essere utili senza che mi metto a ripetere gli stessi concetti.


gbm

No anzi sei un grande.
Suddividere in piu' microprocessori il lavoro è importante per piu' motivi. Si possono creare dei gruppi di lavoro e suddividere la sperimentazione in piu' blocchi inter-dipendenti.
uno schema di base potrebbe essere:
-un arduino che si fa la parte PID e pilotaggio motori
-un arduino che segue input sensori e li pilota (in caso si parli di US)
-un arduino che elabora dati spediti dagli altri due e salva su sd.
Cosa ne dici?
Community robotica / programmazione Arduino
www.gioblu.com

gbm

No anzi sei un grande.
Suddividere in piu' microprocessori il lavoro è importante per piu' motivi. Si possono creare dei gruppi di lavoro e suddividere la sperimentazione in piu' blocchi inter-dipendenti.
uno schema di base potrebbe essere:
-un arduino che si fa la parte PID e pilotaggio motori
-un arduino che segue input sensori e li pilota (in caso si parli di US)
-un arduino che elabora dati spediti dagli altri due e salva su sd.
Cosa ne dite?
Community robotica / programmazione Arduino
www.gioblu.com

guiott

Bellissimo! La suddivisione di più task a diversi gruppi di lavoro è molto interessante, ognuno farebbe la parte che gli piace di più.

Bisogna solo definire molto bene il colloquio tra le varie schede prima di partire. Fino a 2 va benissimo la classica seriale, anche a livello TTL. Oltre bisogna usare altri sistemi. Un sistema valido potrebbe essere un collegamento tramite RS485 o I2C. l'RS485 richiederebbe l'aggiunta di un driver in più per ogni scheda ma a quel punto si possono mettere quante schede si vuole e a qualsiasi distanza, poi si vede come una normale seriale. Con l'I2C si possono sfruttare tutte le librerie esistenti e senza aggiunta di HW, però si è più limitati sulla distanza (non è un problema su un robot) e sul numero massimo di device.

Sarebbero entrambi protocolli master/slave, quindi va definito un master che si occupi della supervisione (sconsiglio, almeno per ora, il multimaster). La cosa si complica un po' per la scheda sensori, che già avrebbe diversi dispositivi I2C da gestire come master. Bisogna verificarne la possibile convivenza, oppure usare una scheda con 2 I2C in HW, oppure usare un I2C HW e uno SW in modo che la scheda sia master verso i sensori e slave verso il supervisore.

Insisto sul definire molto bene questo punto, il resto viene poi con il tempo.

gbm

Beh qui bisogna valutare il parere comune.
Cosa ne pensate ragazzi?
Chi sarebbe interessato (e a che parte del progetto) ??
Community robotica / programmazione Arduino
www.gioblu.com

Federico Vanzati

Io sono interessato a tutto il progetto chiaramente, però se devo scegliere un "task" su cui lavorere, preferirei dedicarmi al controllo dei motori con encoder e PID.
F

gbm

Anche a me interessa molto quella parte, anche se spero di poter saltare anche nel gruppo del mapping  ::)
Community robotica / programmazione Arduino
www.gioblu.com

Davide

ciao gente.
Noto con piacere che il progetto si sta definendo.
@gbm: potresti usare il primo post ti questo thread per sintetizzare il progetto come fanno per il CNC?

Questo permette un più semplice update sui lavori.

gbm

#39
Mar 20, 2010, 01:26 pm Last Edit: Mar 20, 2010, 01:29 pm by gioscarab Reason: 1
Questo trhead verte sulla costruzione di un robot lavapavimenti tipo roomba, completamente costruito da noi sia a livello software che hardware, integrando tutte le funzionalità (volendo anche qualcosa di piu' avanzato) del roomba o degli altri robot lavapavimenti commerciali. Ho proposto questa sfida al forum italiano come esperimento per testare la nostra capacita' organizzativa e le nostre competenze messe non solo in share, ma organizzate verso un fine comune.  ;D

i gruppi delineati quindi sono:
-azionamento motori Encoder e PID
-modulo acquisizione dati dai sensori
-modulo di mapping

Io mi inserirei nel gruppo del mapping.
C'è qualche altro interessato?
Community robotica / programmazione Arduino
www.gioblu.com

Calamaro

vorrei farvi vedere questo video :D

http://www.youtube.com/watch?v=5FjT9nUkj-I

gbm

Quest'uomo è l'emblema del nerdismo!!! hahahah
Beh ottimo lavoro direi. Anche se non so con quanta precisione possa muoversi per casa in modo autonomo, sembra piu' un sistema per telepresenza e teleuccisione  :o.
Community robotica / programmazione Arduino
www.gioblu.com

Calamaro

il progetto è su instrutables o qualcosa del genere... per capirsi è quel sito di tutorial con la mano aperta!

gbm

Non questa domenica, la prossima ci sara' il primo incontro presso Via Savona 123 in Milano di questo gruppo. Chiunque è il benvenuto. Ci sara' un workshop GRATUITO su cui discuteremo il futuro del progetto e le sue direzioni future. ;)
Community robotica / programmazione Arduino
www.gioblu.com

Federico Vanzati

Il 4 Aprile? Ma non è Pasqua???
Wow a me interessa parecchio quand'è che avete deciso e poi...cosa c'è in via Savona 123?
F

Go Up