Post by Marco d'Ambrosiohttp://www.roboteck.org/NERD_front.jpg
http://www.roboteck.org/NERD_rear.jpg
Oggi doveva essere il giorno 0, però ieri non ho potuto dedicarmi al
completamento dei lavori come previsto dalla tabella di marcia, lo farò
questo week end.
Le foto mostrano l'attuale stato del robot, devo montare una scheda
elettronica, fare tutto il cablaggio elettrico, installare il pianale
superiore, già pronto, dove si trova un minipc, 1 GHz 256 mega di ram, una
webcam CCD ad alta risoluzione (1024x768) e un generatore di riga laser
brandeggiabile.
Il software è pronto al 100% per le funzioni di base e al 90% per quelle
avanzate, comunque quanto basta per farlo funzionare e affrontare una RTC.
Le dimensioni della base sono 30x30cm, è in compensato di betulla rinforzato
con fibra di vetro, è provisoria e mi farà da dima per quella definitiva in
lega di alluminio lavorata a CNC, probabilmente porterò le dimensioni a
35x35 cm, per il momento va benissimo così, il pianale è sufficientemente
rigido e leggero, peso finale, stimato, del robot 3.2 kg batterie incluse.
Le ruote sono da 123 mm, la copertura è in gomma shore 50, abbastanza rigida
per essere usata su tutti i fondi, non si deforma col peso del robot e nel
contempo mantiene un ottimo grip, i motori sono dei GHM04 da 175 rpm, ho
anche dei motori alternativi con maggiore potenza in grado di arrivare fino
a 310 rpm, sui motori c'è il solito encoder da 300 cpr.
La velocità di crociera ottimale, punto di massima potenza meccanica, è di
60 cm/s, quella nel punto di massima efficienza è di 100 cm/s., se uso i
motori alternativi questi valori raddoppiano però perdo accelerazione e
capacità di superare i dislivelli, con i GHM04 il robot è in grado di
superare agevolmente pendenze di 20° mantenendo una buona accelerazione, la
pendenza massima che può affrontare è circa 30°
L'elettronica di controllo è composta da 1 dsPic 33MC, due dsPic33GP e un
pic 18F2550, ogni micro ha una sua scheda dedicata, in origine il progetto
prevedeva la realizzazione di una sola scheda contenente tutti i micro e i
vari connettori, però ho optato per la soluzione multischeda perchè mi è
stato possibile usare dei prototipi di futuri prodotti Robot Italy, in
questo modo ho risparmiato qualche Euro e mi trovo con un dimostratore per
questi prodotti già pronto.
La parte di potenza è affidata a due ponti con LM18200 che mi garantiscono
fino a 3A continui, picchi fino a 6A, e il feedback della corrente assorbita
dal motore.
Sui ponti è presente un LM35 che oltre a fornire il valore della temperatura
sul ponte viene usato dalla fancontroller, la schedina montata lateralmente
alla ventola, come sensore per l'attivazione della ventola di raffreddamento
(a 60°).
Nella foto non sono presenti, ma ci sono anche due regolatori switching da
5A, uno con out a 5 Volt e uno con out a 6.5 Volt, il primo alimenta le
schede con regolatore LDO da 3.3 Volt e il mini pc (circa 1.5 A per questo),
il secondo le schede con regolatore LDO da 5 Volt.
Il dsPic33MC ovviamente viene usato come motion controller, sopra c'è
implementato il dual pid controller e la gestione dei comandi del motion
controller, il software è il porting, con vari miglioramenti, verso dsPic
della mia precedente motion controller realizzata con tre pic serie 18.
Sul primo dei dsPic33GP gira il controllo navigazione, cioè la capacità del
robot di spostarsi da solo tra due punti assegnati evitando gli ostacoli e
di mappare l'ambiente.
Sul secondo gira una rete neurale, per il momento a livello sperimentale,
che determina il comportamento del robot nella scelta della rotta, l'idea è
che col tempo e l'esperienza il robot migliorerà sempre di più la strategia
di calcolo del percorso ottimale in funzione degli ostacoli presenti.
Attualmente la rete è ancora a esperienza 0, si basa solo sulle indicazioni
guida che ho inserito io, pertanto non mi aspetto scelte ottimali fin da
subito, però conto di farla evolvere in tempi brevi tramite vari percorsi
realizzati su misura nelle prossime settimane, non escludo che il software
di base della rete richieda aggiustamenti e modifiche varie, in fin dei
conti è un esperimento che sto facendo, se la cosa funziona come mi aspetto
in breve tempo il robot sarà in grado di spostarsi agevolmente in qualunque
percorso senza dover scrivere una sola di riga di software aggiuntivo.
La quarta scheda, con sopra un 18F2550, gestisce i telemetri sharp posti sul
perimetro del robot, hanno la funzione di antibumper e di sensori a corto
raggio, legge le tensioni delle batterie e dialoga via USB, device HID, col
minipc da cui arrivano le informazioni del sensore a lungo raggio, può anche
dialogare con un pc esterno per leggere la telemetria direttamente, in
questo caso viene escluso il mini pc.
La telemetria viene trasmessa tramite il solito modulo Xbee, o Bluetooth,
montato sulla scheda dedicata alla navigazione, è quella che dispone di
tutti i dati, ed è inviata circa 10 volte al secondo, è anche possibile
inviare le coordinate da raggiungere e altri comandi, è anche possibile
richiedere la matrice della mappa perimetrale acquisita, per trasmetterla
servono diversi secondi perchè sono svariati k di memoria.
Il minipc sul pianale superiore serve per gestire la webcam che a sua volta,
abbinata al laser brandeggiabile, svolge la vitale fuzione di scanner
perimetrale 2D, lo scopo è ottenere una precisa mappa del perimetro in un
raggio di 6 metri dal robot, la distanza diventa fino a 10 metri se
l'ambiente è in penombra o con luce artificiale a livelli normali, può
ridursi a 5 metri se l'illuminazione è di origine solare e molto intensa.
Nella prossima evoluzione userò una riga laser IR con relativo filtro sulla
web in modo da aumentare la distanza utile e ridurre l'influenza della luce
ambientale, in questa fase di sviluppo mi fa comodo usare una riga laser
rossa in modo che posso vederla facilmente.
L'analisi dell'immagine fornita dalla web viene fatta tramite una rete
neurale, anche questa di mia creazione (non uso le open cv), il tutto
implementato su Win CE, in questo modo riesco ad analizzare circa 35 frame
al secondo senza problemi nonostante il mini pc non sia dotato di un super
processore.
Il mini pc mi fornisce direttamente la mappa perimetrale sotto forma di
matrice rettangolare con risoluzione variabile a richiesta, posso anche
chiedere solo una porzione della mappa con la massima risoluzione, quadrati
di 5x5 mm, la reale precisione del perimetro rilevato varia con la distanza,
si va dai 5x5 mm per distanze inferiori a 1m fino a 3x3 cm per distanze
superiori ai 5 metri.
Volendo è possibile collegarsi al minipc tramite ethernet, cavo o key usb
wifi, e vedere in tempo reale la mappa rilevata.
Neural
Enhanced
Robotic
Device
Questo fine settimana completo il montaggio e farò un video del robot
all'opera su un percorso con ostacoli.
Ciao
Marco "the robopedia" d'Ambrosio
"Keep Your Mind Wide Open "