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 caricabatterie 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 JYMCU, 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 buffertristate, 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