(a) ERIII. (b) ERIV. (c) ERV. Figura A.1: Scorbot nel laboratorio di Robotica.

Description
Appendice A Il sistema meccanico (a) ERIII. (b) ERIV. (c) ERV. Figura A.1: Scorbot nel laboratorio di Robotica. Il Robot SCORBOT-ER, visibile in Figura A.1, è un manipolatore antropomorfo a cinque gradi

Please download to get full document.

View again

of 26
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Leadership & Management

Publish on:

Views: 0 | Pages: 26

Extension: PDF | Download: 0

Share
Transcript
Appendice A Il sistema meccanico (a) ERIII. (b) ERIV. (c) ERV. Figura A.1: Scorbot nel laboratorio di Robotica. Il Robot SCORBOT-ER, visibile in Figura A.1, è un manipolatore antropomorfo a cinque gradi di libertà fornito di una pinza motorizzata come strumento di presa. I cinque giunti che collegano i link che lo compongono, vengono individuati con i nomi sotto indicati, assegnati a partire dal giunto più vicino al piano di lavoro: BASE, SHOULDER, ELBOW, PITCH (Wrist), ROLL (Wrist) (Figura A.2). I movimenti dei giunti sono ottenuti con MOTORI IN CC (corrente continua) dotati di rapporti di riduzioni diversi per ogni giunto. Da notare che nell involucro 1 Cap. A Il sistema meccanico Figura A.2: Nomenclatura e relative rotazioni dei giunti. meccanico del motore è gia presente un rapporto di riduzione. L informazione relativa alla posizione angolare del giunto è invece ottenuta mediante ENCODERS di tipo incrementale, montati in asse con l albero di ogni singolo motore (Figura A.3a). I giunti di BASE, SHOULDER e ELBOW sono gestiti da singoli motori mentre (a) Particolare Motore-Encoder. (b) Sistema differenziale. Figura A.3: Motori. i giunti di PITCH e ROLL sono gestiti da due motori montati in un sistema differenziale (Figura A.3b). Essendo gli assi dei motori posti uno verso l altro, con l applicazione ad essi di tensioni uguali e con lo stesso segno si ottiene il movimento di ROLL mentre con segno opposto si ottiene il movimento di PITCH. Poichè gli encoder sono di tipo incrementale, i giunti necessitano di un riferimento 2 Cap. A Il sistema meccanico che permetta di convertire gli incrementi forniti in posizioni assolute nello spazio di lavoro. Per questo motivo su ogni link è presente un microinterruttore ed una camma di azionamento che lo chiude quando l angolo del giunto relativo è in una posizione nota (Figura A.4). Riferendo i valori ottenuti dagli encoder all angolo nel quale è stato trovato il Figura A.4: Posizione dei microinterruttori e delle camme. microinterruttore, si ottengono valori assoluti, ovvero relativi al piano di lavoro. Pertanto l operazione preliminare, che prende il nome di Ricerca della HOME, all utilizzo del sistema robotico è quella di ricerca, per ogni link, del micro interruttore di riferimento. Quando tutti i microinterruttori sono stati individuati il robot è nella sua posizione di HOME. Gli encoders applicati sui motori dello SCORBOT-ER sono trasduttori di posizione ottici e permettono di gestire dal punto di vista logico un motore in corrente continua come un motore passo passo (Figura A.5a). Gli encoders generano due onde quadre, sfasate di 90 gradi, di frequenza proporzionale alla velocità del motore. Contando il numero di fronti si ricava lo spostamento. Dalla analisi delle successioni nelle combinazioni dei fronti delle due onde, si ricava 3 Cap. A Il sistema meccanico (a) Esploso dell encoder. (b) Onde quadre. Figura A.5: Encoder. l informazione relativa alla direzione del movimento (Figura A.5b). Il primo problema da affrontare nello sviluppo di un sistema di gestione dello SCOR- BOT-ER è il calcolo dei fattori di conversione tra passi encoder ed angoli di giunto. Per convertire i passi encoder in angoli è necessario tenere conto della risoluzione dell encoder e dei rapporti di riduzione nel sistema di trasmissione tra motore e giunto (Figura A.6). Figura A.6: Sistema di trasmissione. 4 Appendice B Start Up B.1 Operazioni Preliminari Dopo la creazione del nuovo account (lo si fa con il docente) effettuare la login: Login: nome del gruppo Password: password scelta Per modificare successivamente la password digitando da terminale il comando passwd: Inserire la vecchia password Inserire la nuova password Confermare la nuova password Una volta effettuata la login avremo davanti l interfaccia grafica di ubuntu Per entrare nella cartella di lavoro, da terminale digitate cd nome_cartella : cd robot2009/admin_script In questa cartella vi sono gli script per la creazione di un ambiente di lavoro controllato, in modo da non danneggiare il sistema. I file principali sono tre: 5 Cap. B Start Up B.2 Informazioni Aggiuntive aggiungi_utente.sh: serve a creare un nuovo utente con caratteristiche speciali in modo da poter essere sfruttato senza preoccuparsi di rovinare il sistema; backup_new_release.sh: serve a creare il backup del sistema che verrà poi usato dal precedente script (da usare solo se sono state apportate modifiche ai file della cartella robot, si consiglia comunque di effettuare un back-up dell intera cartella in caso di errori); rimuovi_utente.sh: serve a cancellare l utente creato con il primo script in caso di malfunzionamenti o errori di programmazione. Per prima cosa creiamo un nuovo utente che abbia al suo interno tutto il necessario ad utilizzare il robot digitando sudo sh aggiungi_utente.sh nome utente e seguendo le istruzioni fornite a schermo. Se tutto e andato a buon fine, avremo ora il nostro ambiente di lavoro che può essere usato senza preoccupazioni. B.2 Informazioni Aggiuntive Alcuni comandi utili in fase di lavorazione con Linux: cd: tasto di cambio directory, usato per entrare nelle varie directory; cd..: fa tornare alla directory precedente; CTRL+ALT+F1 : passa dall interfaccia grafica a quella di terminale; CTRL+ALT+F7 : passa dal terminale all interfaccia grafica; 6 Cap. B Start Up B.2 Informazioni Aggiuntive CTRL+ALT+F2 : apre una nuova finestra di terminale su cui effettuare di nuovo la login, senza chiudere la finestra di compilazione su F1; 7 Appendice C La Demo C.1 Eseguire la Demo Una volta creato il nuovo utente, possiamo iniziare ad utilizzare il sistema. Entriamo con la login e la password dell utente appena creato, apriamo la cartella di lavoro ( /robot2009/robot) e diamo un primo sguardo alla Demo, un piccolo programma che permette di famigliarizzare con il robot e il software. Compiliamo la demo tramite il comando make demo e facciamo partire il programma con il comando./run demo Avremo ora di fronte il programma base con cui muovere il robot e il cui utilizzo, specificato all interno dello stesso, verrà esposto nel prossimo capitolo. C.2 Descrizione della Demo Lanciata la Demo avremo a schermo la schermata visibile in Figura C.1. Come si può notare, i comandi utili al funzionamento del programma sono visibili a schermo: 8 Cap. C La Demo C.2 Descrizione della Demo Figura C.1: Schermata Principale della Demo. 0;1;...,7 : seleziona i motori da 0 a 7, il movimento del robot avviene tramite l ausilio dei tasti PageUp e PageDown ; O,o: Open, apertura dell effettore; C,c: Close, chiusura dell effettore; H,h,tasto Home,Home: porta il robot in posizione di home; Enter: azzera i passi Encoder (utile per le misurazioni); +,-: aumenta o diminuisce il passo; ESC : esce dalla Demo. Andiamo ora a esplicitare le varie parti della schermata (Figura C.1). Interrupt: indica il numero di cicli di clock effettuati dal programma dall inizio della sua esecuzione; RealTimeClock: indica il tempo, in ms, che intercorre tra due cicli di clock; 9 Cap. C La Demo C.3 Creazione di un progetto personale Passo: indica di quanto, in encoder, il motore selezionato si muoverà ad ogni pressione dei tasti PageUp o PageDown ; Kp: indica il guadagno del controllo applicato ai motori; mvolt: indica il numero di milli volt che stiamo dando al robot durante il movimento; Stato: indica lo stato dei motori del Robot; Encoder: indica di quanto si è spostato, in encoder, il motore rispetto alla posizione iniziale; Errore: indica l errore di posizione, in encoder, tra la posizione desiderata e quella raggiunta; Home: indica, se è stata compiuta la procedura di Home, se sul singolo motore è andata a buon fine, #, o no ; Switch: indica lo stato dello switch del motore, ossia se è attivo, #, o meno,. Questi sono i comandi base per utilizzare la demo ed interpretare ciò che appare a schermo. C.3 Creazione di un progetto personale Dalla cartella di lavoro ( /robot2009/robot) copiare nella cartella dei sorgenti dell utente (user_src) il file della demo e rinominarlo a piacimento (es. gruppox.c) cp./scorb/sbdemo.c./user\textunderscore src/gruppox.c 10 Cap. C La Demo C.3 Creazione di un progetto personale Per leggere e modificare il file appena copiato usare, per esempio, l editor grafico gedit gedit./user_src/gruppox.c Sullo schermo comparirà il listato del sorgente gruppox.c appena copiato che può essere modificato come un normale file di testo. Una volta modificato e salvato il file gruppox.c questo va compilato. La compilazione va effettuata dalla cartella di lavoro ( /robot2009/robot) con il seguente comando make bin PROG=gruppox Per avviare il programma, infine, sempre dalla cartella di lavoro, digitare:./run gruppox Se nessuna modifica è stata apportata con gedit, verrà aperta una Demo del tutto analoga a quella vista in precedenza. 11 Appendice D Il Software Il software di base necessario per lo sviluppo di applicazioni sul sistema robotico è stato sviluppato utilizzando il linguaggio ANSI C e viene fornito come punto di partenza per il lavoro da svolgere durante l esercitazione. Esso è stato concepito come mera interfaccia ai dispositivi hardware dei quali opera vari livelli di astrazione, nascondendo all utilizzatore i dettagli della loro programmazione e gestione, ma non ha una evoluta conoscenza del sistema che gestisce. Il Robot è considerato poco più di 6 motori indipendenti tra di loro. Il software implementa anche un semplice sistema Real-Time con il quale viene gestito il controllo del Robot interamente dal Personal Computer. Questa caratteristica permette l implementazione, con estrema facilità, delle più varie leggi di controllo. Nel sistema Real-Time implementato, una funzione del programma viene mandata in esecuzione ad intervalli di tempo periodici in completa asincronia rispetto al flusso del programma. L effetto di questa funzionalità è che, in qualsiasi punto sia l esecuzione del programma, ogni intervallo di Real-Time viene sospesa l esecuzione del flusso ed eseguita la funzione legata al Real-Time stesso. Il sistema Real-Time è stato implementato grazie all ausilio del progetto RTAI che permette l esecuzioni di certi task, appunto, in real time. 12 Cap. D Il Software Nel software è presente quindi una funzione di gestione dell interrupt di Real-Time che viene chiamata con un periodo configurabile 1. Quando viene chiamata, la funzione aggiorna le strutture dati che contengono lo stato del Robot (tra le altre cose la posizione angolare dei motori espressa in impulsi rispetto ad una posizione di riferimento). Una volta registrato lo stato del Robot, viene invocata la funzione di controllo dello stesso. La libreria prevede una funzione di controllo di default che potrà comunque essere sostituita da una fornita dall utilizzatore della libreria. La funzione di controllo pertanto non necessita e non deve essere chiamata direttamente (in modo esplicito) ma verrà periodicamente chiamata, al verificarsi dell interrupt di Real-Time-Clock. Nel caso del sistema in oggetto, per funzione di controllo si intende una funzione che permetta al Robot di raggiungere posizioni arbitrarie nel suo spazio di lavoro e nella quale sia possibile agire sulla modalità dello spostamento finalizzato all annullamento della differenza tra la posizione del Robot in un dato momento e quella da raggiungere. Nella funzione di controllo, utilizzando le altre funzioni di libreria, è possibile leggere la posizione dei motori e lo stato del robot (input del controllo), effettuare controlli, calcoli e richiedere che venga applicata una certa tensione ai motori (output del controllo). Quest ultima richiesta verrà soddisfatta dal software al termine della funzione di controllo. Attenzione D.0.1. `E necessario tenere conto che la funzione viene automaticamente chiamata alla frequenza scelta per il Real-Time-Clock e quindi la complessità computazionale della stessa deve essere tale che la funzione possa essere interamente eseguita in un lasso di tempo minore al periodo di Real-Time-Clock. 1 Il periodo di Real-Time-Clock si sceglie in funzione del sistema che si deve controllare. Normalmente per il sistema in discussione sono accettabili valori tra i 5 e 30 ms come compromesso tra necessità del sistema e capacità dell elaboratore. 13 Cap. D Il Software D.1 La struttura dati ROBOTMotor Il software fornito e composto da vari moduli scritti in linguaggio C/C++. I moduli e le loro funzioni sono i seguenti: Modulo mctype.h rtc.c rtc.h dda06-16-lxrt.c dda06-16-lxrt.h pu.c pu.h Scorb.c Scorb.h Descrizione Definizione di tipi di dati e macro semplificative Gestione del Real Time Clock Prototipi delle funzioni di rtc.c Gestione della scheda PCI-DDA06/16 Prototipi delle funzioni di dda6.c Gestione dell Unità di Potenza Prototipi delle funzioni di pu.c Gestione a livello superiore del sistema robotico Prototipi delle funzioni di scorb.c Tutte le funzioni necessarie per lo sviluppo dell applicazione finale sono contenute in Scorb.c. Queste a loro volta, quando necessario, utilizzano le funzioni degli altri moduli. Nonostante sia possibile farlo, non dovrebbe risultare necessario chiamare, dall applicazione, le funzioni definite in moduli diversi da Scorb.c. Tutti i valori necessari per implementare un controllo vengono aggiornati automaticamente ad ogni ciclo di Real-Time-Clock e registrati in una struttura dati interna di gestione (ROBOTMotor), disponibile al programmatore per vedere lo stato del sistema (encoder, home, errori), e per impostare i valori di modifica dello stato stesso (tensione ai motori). D.1 La struttura dati ROBOTMotor Questa struttura dati consiste in una array di record di sei elementi chiamato ROBOT_MAX_MOTOR (6). Il singolo elemento dell array contiene informazioni relative ad un motore del robot. L assegnazione inizia con l elemento di indice 0 associato al motore BASE fino all elemento di indice 5 associato al motore del GRIPPER (pinza). I campi del record ad uso esterno sono di seguito descritti: 14 Cap. D Il Software D.1 La struttura dati ROBOTMotor encoder Posizione del motore in impulsi letta dai contatori all interno della Unità di Potenza associati agli encoders del robot. Questo dato costituisce un ingresso per il controllo. Uso: sola lettura. oldencoder È la posizione precedente del motore, utile per determinare situazioni come movimento richiesto ma non eseguito (fine corsa oppure ostacolo). Uso: interno. state È lo stato del motore, costituisce un ingresso per il controllo e può contenere uno dei valori sotto indicati. Uso: sola lettura. ROBOT_STATE_READY: Il robot è pronto a muoversi, il precedente movimento è terminato; ROBOT_STATE_MOVING: Il robot è in movimento, il valore del campo encoder cambia nel tempo; ROBOT_STATE_ERROR: Il robot ha raggiunto i fine cosa o il movimento richiesto non e stato eseguito completamente per fine corsa oppure ostacoli; ROBOT_STATE_STOPPED: Il movimento del robot è stato interrotto dall operatore. mvolt Tensione in millivolt da applicare all ingresso dell amplificatore di potenza interno alla Unità di Potenza. Il range è 5000/5000 mvolt. Questo dato costituisce l uscita del controllo. Uso: Scrittura/Lettura. 15 Cap. D Il Software D.2 Variabili di configurazione del sistema homeok Esito della procedura di Home effettuata sul singolo asse (TRUE/FALSE). Se la HOME del singolo LINK non e mai stata trovata questo campo contiene FALSE altrimenti TRUE. Uso: Lettura/Scrittura home Stato del micropulsante di riferimento univoco dell angolo di movimento del link. Uso: Sola Lettura D.2 Variabili di configurazione del sistema Le variabili sotto descritte comunicano alla libreria le caratteristiche di parti del sistema gestito. Queste dovrebbero essere utilizzate in sola lettura. word dda_ioaddr Contiene l indirizzo della porta nell I/O-Bus della scheda PCI-DDA06/16. const long ROBOTMaxmVoltValue Contiene il valore in mvolt massimo applicabile al campo mvolt di ROBOTMotor. (5000) int ROBOTUserBreakKey Corrisponde al codice del tasto utilizzato come USER BREAK nelle procedure di movimento. Per default corrisponde a 98 = ALT-B. enum ROBOTGripperStatus Può assumere i valori di CLOSE e OPEN, ed indica lo stato attuale della pinza. int ROBOTGripperGap Contiene l apertura attuale della pinza in millimetri. Il suo valore è restituito dalle funzioni ROBOTGripperOpen e ROBOTGripperClose ed aggiornato ad ogni loro chiamata. 16 Cap. D Il Software D.3 Variabili di utilità const char *ROBOTMotorStateString[ ] Stringhe descrittive dello stato dei motori. L indice da passare deve esser il valore del campo ROBOTMotor[x].state. const char *ROBOTMotorLinkString[ ] Stringhe descrittive dei link del robot. L indice prevede valori da 0 (BASE) a 5 (GRIPPER). int ROBOTHomePulse[ ] Si tratta di un array di cinque numeri che corrispondo al numero massimo di impulsi che ogni motore deve compiere nella ricerca della Home. Può essere settato in base alla capacità e alla precisione, in encoder, del robot utilizzato per migliorare la ricerca della Home. D.3 Variabili di utilità volatile long ROBOTRealTimeCounter Conta il numero di periodi di real-time-clock completati dall attivazione dello stesso con la funzione ROBOTControlStart. bool ROBOTAutoPowerCtrl Questa variabile è legata al sistema di controllo dell alimentazione agli amplificatori di potenza. Se FALSE (valore di default) l utente deve esplicitamente gestire il controllo con le funzioni ROBOTPowerON, ROBOTPowerOFF, ROBOTPowerIsON. Se TRUE l alimentazione viene rispettivamente fornita e tolta con le chiamate alle funzioni: ROBOTControlStart e ROBOTControlStop. 17 Cap. D Il Software D.4 Variabili usate dal controllo di default previsto dalla libreria D.4 Variabili usate dal controllo di default previsto dalla libreria La libreria a scopo semplificativo e dimostrativo fornisce una funzione di controllo del robot riferita come Controllo di Default. Questi è un controllo di tipo proporzionale gestito dalle variabili sotto indicate. int ROBOTDefCtrlPosReq[ROBOT_MAX_MOTOR] Posizione desiderata in passi per ogni motore. long ROBOTDefCtrlPosError[ROBOT_MAX_MOTOR] Errore di posizione di ogni motore. int ROBOTDefCtrlKP Guadagno del controllo applicato su tutti i motori. int ROBOTDefCtrlErrorTol Delta di tolleranza dell errore in impulsi. word ROBOTDefErrorCheckRate Periodo di chiamata della procedura di controllo dello stato dei motori, espressa in periodi di real-time-clock. D.5 Macro ROBOT_MAX_MOTOR Numero complessivo di motori del robot. Comoda per i casi in cui sia necessario implementare cicli di scansione dei motori. Es: for(i = 0; i ROBOT_MAX_MOTOR; i++) ROBOT_MAX_LINK Numero complessivo di link del robot. Comoda per i casi in cui sia necessario imple- 18 Cap. D Il Software D.6 Funzioni di gestione generale del robot mentare cicli di scansione dei Link. Ex: for(i = 0; i ROBOT_MAX_LINK; i++) BASE, SHOULDER, ELBOW, PITCH, ROLL, GRIPPER Identificano i vari motori/links del robot. Si possono usare come indici della struttura dati principale ROBOTMotor e come argomenti delle funzioni di libreria. ROBOT_STATE_READY Motore pronto al movimento. Da usare per confrontare lo stato del robot. ROBOT_STATE_ERROR Motore in errore per raggiungimento di fine corsa oppure ostacoli. Da usare per confrontare lo stato del robot. ROBOT_STATE_MOVING Motore in movimento. Da usare per confrontare lo stato del robot. ROBOT_STATE_STOPPED Motore bloccato dall operatore con la funzione ROBOTMotorStop oppure ROBO- TStop HOME_SWITCH_STATE(nMotor) Restituisce lo stato del micro pulsante di HOME del singolo motore/link. D.6 Funzioni di gestione generale del robot bool ROBOTInit(void (*UserControlFunc)(void), void (*UserErrorCheckFunc)(void), void (*UserBreakMsgFunc)(void) ); Inizializza le strutture di gestione dell hardware e registra le funzioni rispettivamente di Controllo, Gestione Errori e Messaggi. Con NULL si abilita l uso di quelle presenti nella libreria. Ritorna l esito dell inizializzazione letto direttamente dalla Unità di 19 Cap. D Il Software D.6 Funzioni di ge
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks