progetto robot bipede - CARL-O.

Transcript

progetto robot bipede - CARL-O.
Esame di stato 2012/2013
PROGETTO ROBOT BIPEDE
Dalla Pellegrina Ivan
Indice
● Introduzione Progetto
● Ricerca
● I vantaggi della costruzione di un Robot
● Lista materiali (breve descrizione componenti)
● Principio di funzionamento dei servomotori
● Struttura e funzioni del software
● Problemi riscontrati
● Conclusioni
● Bibliografia
● Codice Arduino
Introduzione Progetto
Per l’esame è stato deciso di realizzare un progetto che potesse simulare i movimenti di
una persona, venendo controllato da diversi dispositivi.
Vi è stata una prima fase di costruzione meccanica del robot frutto di ricerche
precedentemente svolte.
Il robot dovrà soddisfare dei requisiti di funzionamento per cercare di rendere i movimenti i
più fluidi possibili, quindi vi è stata una fase di sviluppo del software on board per arrivare
al risultato sopra citato.
In seguito si è dovuto creare un software realizzato per l’interfacciamento con un
dispositivo android necessario per comandare il robot.
Ricerca
Per effettuare questo progetto si è dovuta svolgere un’attenta ricerca relativa ad alcuni
componenti nello specifico i servomotori, la batteria e il microcontrollore .
Per quanto riguarda il microcontrollore si è deciso di optare per la piattaforma open
source arduino programmabile tramite l’uso del linguaggio di programmazione c++
studiato negli anni precedenti a scuola, e grazie all’elevata versatilità con cui questa
piattaforma può dialogare con dei servomotori tramite l’uso di segnali PWM.
Mentre la scelta del dispositivo che attiva i servomotori si è presentata semplice, scegliere
questi ultimi è stato impegnativo.
La batteria sviluppata con tecnologia Lipo si presenta all’avanguardia in quanto le sue
piccole dimensioni consentono di occupare uno spazio contenuto, elemento necessario
viste le dimensioni del robot.
Inoltre le caratteristiche tecniche di questa batteria sono 3300 mA e 7,2 V questi due
elementi consentono l’efficace funzionamento dei servomotori in quanto questi possono
essere attuati solamente in un range tra i 5 V e i 7,2 V.
Per garantire un funzionamento ottimale del robot sarebbe necessario utilizzare una
batteria avente più Ampere ma il costo sarebbe molto più alto, però consentirebbe di
supplire al fenomeno “swing”.
Questa batteria necessita di un carica­batterie specifico perchè essendo costituita da due
celle avente ciascuna 3,5 V, consente di ricaricarle separatamente in modo da garantire
un equilibrio delle cariche delle celle.
I vantaggi della costruzione di un Robot
Costruire un robot ai giorni nostri diviene fondamentale in quanto lo sviluppo della
tecnologia della robotica consente di contribuire a risolvere alcuni problemi relativi al
campo medico ed ergonomico.
Il mio progetto si presenta come un modello da integrare con elementi quali una camera,
sensori di movimento, ma avendo avuto poco tempo a disposizione e in mancanza di
risorse economiche non sono stato in grado di implementare queste funzionalità.
Lista materiali
Arduino Mega: a differenza dell’Arduino uno questa scheda è costituita da molti più pin
digitali, sono 53 anzichè 13.
Questa caratteristica è importante perché ogni servomotore per essere attuato necessita
di un pin, quindi sull’Arduino uno sarebbero stati insufficenti.
Rispetto alla versione uno presenta una RAM più consistente e un processore più potente.
Caratteristiche:
●
Microcontrollore: ATmega2560
●
Tensione operativa: 5V
●
Input Voltage: (consigliata) 7-12V
●
Input Voltage: (limiti) 6-20V
●
Pin di I/O Digitali: 54 (14 dei quali forniscono in uscita segnali PWM)
●
Pin di Input Analogici: 16
●
DC Current per I/O Pin: 40mA
●
DC Current per Pin alimentati a 3.3V: 50mA
●
Flash Memory: 256KB (dei quali 8KB utilizzati dal bootloader)
●
SRAM: 8KB
●
EEPROM: 4KB
●
Frequenza di Clock: 16MHz
Servomotori: Si tratta di dispositivi meccanici di precisione che servono per gestire la
posizione angolare di un braccio meccanico. Sostanzialmente un servomotore è
composto da un motore elettrico, un motoriduttore ed un circuito di feedback per la
gestione della posizione. In commercio, esiste una vasta scelta di servi, ciascuno
caratterizzabile per valore di coppia e precisione.
questa tipologia di servomotori è utilizzata per la robotica in quanto presenta due punti di
connessione necessari per agganciarli con maggior stabilità.
Sono stati acquistati sul mercato cinese in quanto sul mercato europeo presentavano dei
costi molto dispendiosi ma sono molto conosciuti per la loro qualità in quanto sono
costruiti con ingranaggi in metallo e riescono ad alzare 13kg se alimentati a 7,2V.
Hardware e connettori: E’ stata realizzata una shield per permettere di collegare
agevolmente i servomotori all’Arduino inoltre è stato implementato un modulo bluetooth per
la connessione ad uno smartphone android grazie all’applicazione da me sviluppata.
Modulo bluetooth: Il modulo bluetooth utilizzato è un modello JY­MCU, che fornirà una
connessione seriale, con baudrate pari a 9600bit/s che verrà utilizzato da Arduino per
comunicare con Android
Batteria : questa batteria con tecnologia Lipo riesce a fornire 7,2 V e 3300 mA
Principio e funzionamento del servomotore
Il segnale di comando è costituito da un’onda quadra inviata ripetutamente, il fronte
positivo deve avere una durata compresa tra 1 e 2 millisecondi se il servomotore ruota di
90° mentre può assumere un valore compreso 0,5 e 2,5 millisecondi se il servo ruota di
180° come nel mio caso,e la somma del fronte positivo e quello negativo (ovvero: il
periodo) deve essere di circa 20millisecondi (frequenza: 50 Hz). Il segnale fatto in questo
modo deve essere inviato di continuo se si vuole che il servocomando, sotto sforzo,
mantenga la posizione desiderata:
Quindi per variare l’angolo del servomotore si dovrà variare la durata del fronte positivo,
nel mio caso l’angolo 0° sarà costituito da un segnale di 0,5 millisecondi e l’angolo 180°
varrà 2,5 millisecondi.
Struttura e funzioni del software
Questo programma consente di comandare il robot tramite
connessioni bluetooth.
Per i comandi viene utilizzata un’applicazione per android, questa
attraverso la pressione dei tasti invia dei caratteri all Arduino.
I comandi sono riportati nella tabella sottostante.
COMANDI APP
LETTERA
CORRISPONDENTE
AZIONE ROBOT
(sottoprogramma)
Freccia su
A
avanti
Freccia giù
B
dietro
Freccia destra
D
dx
Freccia sinistra
S
sx
Pulsante stop
F
reset
Pulsante rosso
R
fr
Pulsante verde
V
fv
Pulsante giallo
G
fg
Pulsante blu
T
fb
Inoltre per connettere e disconnettere i due dispositivi sono stati implementati altri due
pulsanti con questo scopo.
Per controllare i servomotori Arduino utilizza una libreria di codici usata per collegare il
segnale PWM mandato al servomotore controllato semplicemente tramite delle
angolazioni.
Il software di Arduino necessita di questo carattere che viene inviato dalla piattaforma di
controllo per poter poi svolgere dei sottoprogrammi contenenti delle istruzioni per far
muovere il robot.
Problemi riscontrati
La messa a punto di questo progetto mi ha messo di fronte ad una serie di difficoltà:
l’unione di diversi tipi di hardware e soprattutto la creazione un’interfaccia comune a livello
di software.
Durante lo svolgimento dei vari tentativi di collaudo mi sono reso conto che la
progettazione e la realizzazione della shield ha presentato alcuni problemi.
Inizialmente avevo creato un primo progetto in cui la shield era staccata dall’Arduino e
connessa tramite dei cavi flat, ma la sua disposizione ha presentato alcuni problemi
relativi alla presenza di interferenze, dovuto al passaggio dei cavi di alimentazione che
erano molto vicini al dato proveniente da Arduino.
Dopo diversi tentativi, si è pensato che il problema derivasse da Arduino, in quanto si
riteneva che fosse incapace di gestire più di 8 segnali PWM. Si è cercato di risorverlo
introducendo 2 integrati 74244 buffer­tristate, che una volta inviato il dato di servomotori
solo in grado di inibire la linea di controllo. Ma nonostante questo cambiamento il
problema continua a ripresentarsi. Così ho ritenuto opportuno cambiare e ridisegnare
strutturalmente lo shield per eliminare queste interferenze, così ho ideato una nuova
struttura che fosse in grado semplificare le connessioni, distribuendole in modo uniforme e
ravvicinato.
PRIMA DOPO
Inizialmente la batteria era di tipo PB avente 1300mA e il robot presentava un elevato
fenomeno di swing così ho ritenuto opportuno sostituire la batteria con una più
potente(3300 mAmpere) per cercare di sopperire a questo problema anche se non si è
risolto totalmente perché la batteria è ancora troppo poco potente.
Per quanto concerne il problema del movimento tenuto conto dell’instabilità del robot ho
pensato di riprogettare la struttura in quanto inizialmente le sue dimensioni erano 5x7 ma
non consentivano una stabilità nei movimenti, ora i piedi misurano 13x8, e garantiscono la
non caduta del robot.
Ho incontrato difficoltà nella progettazione e nella pianificazione nella sequenza di
movimenti mi sono dovuto documentare su internet per comprendere quali erano i
meccanismi sottostanti per consentire al robot di muoversi in modo corretto.
Inizialmente il modo di camminare si basava sulla simulazione di una camminata umana
ossia il baricentro veniva spostato sulla gamba per permettere all'altra di portarsi su una
posizione più avanzata, ma questa modalità ha presentato molta instabilità, così ho dovuto
abbandonare per il momento questa fase di testing per la mancanza di tempo per poter
sviluppare una sequenza di funzioni più semplice.
Conclusioni
Sviluppare questo progetto è sempre stato un mio obiettivo che volevo raggiungere fin
dall'infanzia in quanto ho sempre coltivato la passione per la robotica, ma non ho mai
avuto l'opportunità e le competenze per progettare e realizzare questo prototipo di robot.
Nonostante le difficoltà che ho incontrato nella realizzazione, ritengo che il mio lavoro
possa essere una buona base per alcune implementazioni future basate sulle nuove
tecnologie per lo studio dei movimenti umani.
Sarebbe interessante implementare sul robot dispositivi come per esempio un girometro,
utile per consentire l'individuazione nello spazio sugli assi x y z e garantendo così
maggiore stabilità e nuove funzionalità.
Inoltre, potrebbe essere innovativo implementare un dispositivo come la Kinect, una
speciale videocamera capace di rilevare i movimenti di una persona e tramite l'apposito
software capace di far muovere il robot simulando i movimenti della persona.
Infine, per consentire un più rapido sviluppo del software se pensato di rilasciare i sorgenti
in licenza open source e pubblicarli su un sito che sto sviluppando, così ogni utente ha la
possibilità di realizzare un proprio robot e di far progredire la complessità di
programmazione attraverso il suo contributo offrendo istruzioni dettagliate su come
realizzarlo.
Bibliografia
Datasheet Arduino Mega
Datasheet modulo Bluetooth
Datasheet servomotori