Controllo di un mini Segway - C10056 Angelo Antonio Fraguglia - in SUPSI Tesi
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Controllo di un mini Segway Studente/i Relatore Angelo Antonio Fraguglia Roberto Bucher Correlatore Mikael Andreas Bianchi Committente Roberto Bucher Corso di laurea Modulo Ingegneria Elettronica C10056 Anno 2018/2019 Data 4 ottobre 2019
i Indice 1 Introduzione 3 1.1 Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Compiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Pianificazione del progetto 7 3 Altium e PCB 9 3.1 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Messa in opera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Il motore e la centralina 15 4.1 Il motore BRUSHLESS (senza spazzole) . . . . . . . . . . . . . . . 15 4.1.1 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1.2 Vantaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1.3 Svantaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1.4 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Il Faulhaber 4221 G024 BXT H . . . . . . . . . . . . . . . . . . . . . 18 4.3 La centralina Faulhaber MC 5005 S CO . . . . . . . . . . . . . . . . 19 5 Filtro complementare (Complemtary Filter) 21 5.1 Il Filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.2 Coefficienti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3 Implementazione del filtro con Matlab . . . . . . . . . . . . . . . . . 23 5.4 Implementazione Simulink . . . . . . . . . . . . . . . . . . . . . . . 28 6 Modellazione di sistemi elettromeccanici con Lagrange [3] 29 6.1 Definizione della "Lagrangiana" . . . . . . . . . . . . . . . . . . . . . 29 6.2 Definizione delle energie cinetiche del sistema T . . . . . . . . . . . 30 Controllo di un mini Segway
ii INDICE 6.3 Definizione dell’ energia potenziale del sistema U . . . . . . . . . . . 31 6.4 Definizione dell’energia dissipata dal sistema . . . . . . . . . . . . . 32 6.5 La Lagrangiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.6 wxMaxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 Definizione dei parametri 35 7.1 Parametri motore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.2 Python e pysimCoder . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7.3 Parametri body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8 Il controllo del sistema 47 8.1 Indici di prestazione [4] . . . . . . . . . . . . . . . . . . . . . . . . . 47 8.2 Il controllore LQR (Linear Quadratic Regulator)[4] . . . . . . . . . . . 49 8.3 Python e pysimCoder applicati al sistema . . . . . . . . . . . . . . . 51 8.3.1 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.3.2 Sistema reale . . . . . . . . . . . . . . . . . . . . . . . . . . 60 9 Conclusioni 63 10 Costi 65 11 Allegati 69 12 Ringraziamenti 71 Controllo di un mini Segway
iii Elenco delle figure 3.1 Altium_Piedinatura_STEVALMKI159V1 . . . . . . . . . . . . . . . . 9 3.2 Zoccolino_Passante . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Schematic_PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 PCB_blue_layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.5 PCB_red_layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.6 PCB_Finito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.7 PCB_Montato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1 Motore Brushless . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Faulhaber 4221 G024 BXT H . . . . . . . . . . . . . . . . . . . . . . 18 4.3 Faulhaber MC5005 S CO . . . . . . . . . . . . . . . . . . . . . . . . 19 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Codice Funzione Ang Matlab . . . . . . . . . . . . . . . . . . . . . . 24 5.3 Angle 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.4 Angle 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.5 Calcolo Errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.6 Angle 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.7 Simulink 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.8 Simulink 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.1 Modello Segway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.1 Simulinc_Angle_Motor . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.2 Matlab_Code_Fdt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.3 /Matlab_Code_Mymot . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.4 FdT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 7.5 Plot_Dati_Fdt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 7.6 code_py_alpha_k . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Controllo di un mini Segway
iv ELENCO DELLE FIGURE 7.7 Grafico_alpha_k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.8 Coefficienti_k_α . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.9 Det_J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.10 Det_Dm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.11 Segway_Appeso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.12 Grafico_Oscillazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.13 Teorema_Steiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.14 Inertia_cm_Steiner . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 8.1 Simulazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.2 Import_Librerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.3 Parametri_e_Costanti . . . . . . . . . . . . . . . . . . . . . . . . . . 52 8.4 Matrici_Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 8.5 Schema_Blocchi_Full_Obs . . . . . . . . . . . . . . . . . . . . . . . 53 8.6 Sysc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.7 c2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.8 Method_zoh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8.9 LQR_Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8.10 Poli_Sistema_Controllato . . . . . . . . . . . . . . . . . . . . . . . . 55 8.11 Full_Obs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8.12 Sys_Completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.13 Settings_Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.14 Block_Complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.15 Ass_Funz_Comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.16 Ass_Funz_sysc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 8.17 Grafico_Simulazione . . . . . . . . . . . . . . . . . . . . . . . . . . 59 8.18 Prove_Laboratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8.19 Tx_Rasp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8.20 Rx_Ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 8.21 Prove_Coefficienti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Controllo di un mini Segway
v Elenco delle tabelle 10.1 Tabella_costi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Controllo di un mini Segway
1 Abstract The purpose of this project was to realize the control system of a mini Segway using a Raspberry Pi 3B + microcontroller. It has been necessary to create a small PCB on which the inertial platform tested in the previous project has been mounted. To control the motor driver it is needed an intarface between the microcontroller (which uses an SPI interface to dialogue with the sensor) and the driver (which uses BUS CANopen interface). A dedicated card has been made in SUPSI in the previous years. The three cards has been assembled. Some tests have been made to check the proper functioning of the system. Than a suitable control system has been projected ad simulated. Finally the control system has been tested on the real model. Controllo di un mini Segway
3 Capitolo 1 Introduzione Il controllo di un segway propone la soluzione di diversi problemi di controllo e sen- sorica. Un sistema meccanico, da completare, è già presente in laboratorio. Con questo progetto si vuole preparare il sistema per essere controllato, ed even- tualmente, arrivare al controllo vero e proprio. La piattaforma di controllo è basata su un microcalcolatore Raspberry PI 3B+, a cui dovranno essere aggiunte una scheda per il controllo del bus CAN (schema già presente in SUPSI) ed una piattaforma inerziale per la lettura di velocità angolari ed accelerazioni frutto di un precedente lavoro di semestre. Una volta realizzata la piattaforma HW, si potrà passare alla gestione dei sensori ed al controllo del sistema. Un motore Faulhaber di nuova generazione permetterà la movimentazione di tutto il sistema. Controllo di un mini Segway
4 Introduzione 1.1 Motivazioni Una vecchia pubblicità di pneumatici recitava:"La potenza è nulla senza controllo". Riuscire a far fare alle macchine quello che si desidera sembra molto semplice visto dall’utente finale ma non è di sicuro elementare da parte di chi progetta questo tipo di sistemi. L’incremento di automatismi nella vita quotidiana spinge a credere che in futuro sia sempre più importante avere una solida base su questa materia. Frequentando i corsi di Dinamica e stabilità e Progettazione di controllori, mi sono reso conto di quanto poco sapessi in materia, ma ho finalmente capito come si utilizzano le conoscenze matematiche apprese con fatica durante tutto il percorso formativo applicandole alla fisica. Sono convinto che immergermi ulteriormente nella materia sia un’ ottima occasione per aggiungere qualcosa di significativo al curriculum. Il progetto impone inoltre di effettuare il design di un piccolo PCB, cosa che non ho avuto ancora l’occasione di fare e (secondo me) di significativa importanza per un ingegnere. 1.2 Obiettivi • Integrazione del sensore e lettura degli angoli tramite accelerometro e giro- scopio, insieme ad un filtro complementare o ad un filtro di Kalmann • Modellare il sistema • Realizzare un sistema di controllo per mantenere in equilibrio il segway • Eventualmente utilizzare un sistema per comandare le posizioni dall’esterno • Documentazione finale del sistema 1.3 Compiti • Integrare una piattaforma inerziale nel sistema formato dal microcontrollo- re Raspberry PI 3B+, assieme alla scheda già realizzata in SUPSI per la gestione del bus CAN Controllo di un mini Segway
5 • Leggere i sensori e realizzare il filtro complementare o filtro di Kalmann per la definizione dell’angolo di inclinazione • Realizzare il sistema di controllo, basandosi sulla piattaforma libera di CACSD basata su Python e realizzata presso la SUPSI Controllo di un mini Segway
6 Introduzione Controllo di un mini Segway
7 Capitolo 2 Pianificazione del progetto Si comincia col progettare il PCB. Appena pronto si effetua l’ordinazione e viene assemblata la scheda. Si lavora alla taratura del motore con il software dedicato Faulhaber e l’interfaccia BUS CAN. Viene poi assemblato tutto e si comincia a lavorare sul controllo studiando le equa- zioni che regolano il moto del Segway. Si eseguono varie prove di precisione della posizione, cambiando i valori del filtro complementare per cercare in modo empirico il coefficiente che ottimizza la preci- sione dell’angolo. Viene assemblato il segway. Si comincia a lavorare sul controllo e si esguono varie prove con il sistema montato. Controllo di un mini Segway
8 Pianificazione del progetto Controllo di un mini Segway
9 Capitolo 3 Altium e PCB 3.1 Progettazione La progettazione del PCB con i 3 componenti risulta relativamte semplice. L’unica difficoltà che si incontra è con le dimensioni non standard del sensore a causa della distanza (15.24 mm) tra le due file di pin più larghe di quelle dei nor- mali IC già presenti nel dabase di Altium, per cui si deve provvedere a disegnare manualmente un apposito componente ed inserirlo nella libreria del progetto. Figura 3.1: Altium_Piedinatura_STEVALMKI159V1 Controllo di un mini Segway
10 Altium e PCB Si decide di utilizzare per il micro uno zoccolo con i pin particolarmente lunghi che restituisca la piedinatura dello stesso in modo che sia possibile collegare a "cascata" più schede. Figura 3.2: Zoccolino_Passante Controllo di un mini Segway
11 Lo schematico del circuito risulta poi abbastanza semplice, si devono creare le 4 piste per la comunicazione tramite SPI, si deve inoltre pensare all’alimentazione ed alla massa per il sensore che vengono fornite direttamente dal micro. Si decide di aggiungere un jumper per decidere con quale Chp_Select lavorare, lasciando la possibilità di poter attivare anche il magnetometro. Figura 3.3: Schematic_PCB Controllo di un mini Segway
12 Altium e PCB I 2 layers del PCB vengono utilizzati come piani di massa per il circuito, si provvede anche a prevedere i fori per l’accoppiamento meccanico tra la scheda ed il micro. Figura 3.4: PCB_blue_layer Figura 3.5: PCB_red_layer Controllo di un mini Segway
13 3.2 Messa in opera Una volta arrivati i componenti, si eseguono le saldature e la scheda è pronta. Figura 3.6: PCB_Finito Il corretto funzionamento viene collaudato connettendo la scheda al micro e man- dando in esecuzione il programma di lettura dei dati. Viene anche controllato l’accoppiamento meccanico in modo da per poter montare poi la scheda superiore. Figura 3.7: PCB_Montato Controllo di un mini Segway
14 Altium e PCB Controllo di un mini Segway
15 Capitolo 4 Il motore e la centralina 4.1 Il motore BRUSHLESS (senza spazzole) Figura 4.1: Motore Brushless 4.1.1 Applicazioni Esistono applicazioni navali di tali motori con tecnologie a superconduzione che hanno potenze dell’ordine di MW. Ultimamente sono molto utilizzati in campo indu- striale e impiegati nelle macchine automatiche che necessitano di movimenti precisi e veloci con ingombri decisamente contenuti e grande versatilità, offerta anche da apparecchiature di controllo programmabili molto sofisticate che danno un completo controllo e diagnostica del motore. Questa tipologia di motore viene utilizzata nella Controllo di un mini Segway
16 Il motore e la centralina Formula E. Recentemente, grazie alla spinta commerciale legata alla richiesta di prodotti ad elevata efficienza energetica nel settore civile, questi motori sono stati introdotti sul mercato del condizionamento e della refrigerazione, dove possono ottenere elevati benefici in termini di consumi a favore dei grandi utilizzatori (ad esempio: la grande distribuzione organizzata che li può installare sui ventilatori che operano sugli scam- biatori dei banchi frigo; gli uffici di ampie dimensioni, che li possono montare nei fan coil utilizzati nei sistemi di condizionamento distribuito). Con la diminuzione dei costi dei sistemi di controllo elettronici, prodotta da economie di scala, è divenuta di rilievo la maggiore convenienza e conseguente estensione di utilizzo dei motori brushless anche per l’azionamento di bicicli, motocicli, e autovei- coli a trazione elettrica.[1] 4.1.2 Vantaggi Il primo notevole vantaggio riguarda la vita attesa del motore, dato che le spazzole sono il "punto debole" di un motore elettrico. L’assenza di spazzole elimina anche la principale fonte di rumore elettromagnetico presente nei motori elettrici in corrente continua. L’ingombro è limitato rispetto alla potenza e soprattutto rispetto alla coppia che que- sti motori riescono ad erogare. In termini di efficienza, i motori brushless lavora- no sempre in condizioni di rendimento ottimali. Non dovendo generare il campo magnetico rotorico, hanno efficienze maggiori. L’assenza di scintille è fondamen- tale quando il motore opera in ambienti saturi di composti organici volatili come i carburanti.[1] 4.1.3 Svantaggi Il principale svantaggio di questo tipo di motori sta nel maggiore costo. A differenza dei motori a spazzole, infatti, il controllo viene effettuato elettronicamente da un con- troller, un dispositivo elettronico fornito dal costruttore del motore o da terze parti, quindi al costo del motore va aggiunto il costo del sistema di controllo. Per i moto- ri a spazzole il "controllo" è realizzato da un potenziometro o un reostato (sistemi poco efficienti, ma estremamente economici) per la regolazione della velocità. La resistenza variabile, potenziometro o un reostato che sia, consente di variare l’inten- sità di corrente assorbita dai motori. Questo sistema di controllo può anche essere Controllo di un mini Segway
17 utilizzato per più motori analoghi in parallelo, mentre ogni motore brushless deve essere controllato da un suo dispositivo "controller".[1] 4.1.4 Conclusioni In conclusione questo tipo di motore si rivela ideale per questo tipo di applicazione in quanto fornisce un’ottima coppia in avvio e velocità di inversione del senso di marcia. Controllo di un mini Segway
18 Il motore e la centralina 4.2 Il Faulhaber 4221 G024 BXT H Figura 4.2: Faulhaber 4221 G024 BXT H Caratterizzato da dimensioni molto ridotte ma dotato di una coppia molto generosa (max 112 mN m) per un consumo di 40W, la versione a 24V di questo motore sembra essere ideale per l’applicazione sul mini Segway. Controllo di un mini Segway
19 4.3 La centralina Faulhaber MC 5005 S CO Figura 4.3: Faulhaber MC5005 S CO La centralina lavorando con l’iterfaccia CANopen, interpreta i dati che le vengono passati dal microprocessore in modo da poter pilotare in maniera ottimale il motore. Quindi, oltre alla scheda preparata nel lavoro precedente aggiungiamo una scheda di conversione tra SPI e CANopen. Controllo di un mini Segway
20 Il motore e la centralina Controllo di un mini Segway
21 Capitolo 5 Filtro complementare (Complemtary Filter) 5.1 Il Filtro Giroscopi ed accelerometri sono sensori progettati per misurare la velocità angolare e l’accelerazione. Le versioni attuali possono fornire in uscita i relativi dati già con- vertiti in digitale, nel caso specifico sui tre assi x,y,z. Volendo invece avere informazioni relative all’angolo che viene a formarsi rispetto ad uno degli assi, le misure effettuate non bastano in quanto i giroscopi sono soggetti ad un errore di deriva dovuto all’integrazione della velocità angolare (è integrando la velocità angolare che si ottiene l’angolo). Nell’accelerometro l’errore è dovuto a forze di traslazione. Specificando meglio, i giroscopi lavorano bene con veloci varia- zioni dell’angolo mentre gli accelerometri con variazioni lente. Al fine di migliorare la precisione della stima dell’angolo assoluto si ricorre all’utilizzo di filtri. Per esempio il filtro di Kalman è molto efficacie ma ha come svantaggio la complessità di calcolo e quindi il tempo computazionale molto lungo. Il filtro complementare (più semplice) sfrutta quanto di meglio si riesce ad ottene- re da ogni sensore: la misura tramite giroscopio ha una buona precisione ad alte frequenze, mentre quella tramite accelerometro ha buona precisione con variazioni lente. Segue lo schema a blocchi del filtro. Controllo di un mini Segway
22 Filtro complementare (Complemtary Filter) P θacc LP_Filter G1 θf R θ̇gyro θgyro HP_Filter G2 5.2 Coefficienti Calcolare i coefficienti di questo filtro può non essere facile a causa della differnza tra le due frequenze. Inoltre, trasformando tutto in Laplace e definendo G1 la fun- zione di trasferimento del filtro passa basso e G2 quella del passa alto deve anche valere G1 + G2 = 1 (5.1) in modo da non alterare il valore in uscita. L’equazione che si ricava risulta: 1 Ki θf = θ̇gyro − Kp + (θf − θacc ) (5.2) s s risolvendo per θf nel dominio di Laplace s2 1 Kp + Ki θf = 2 θ̇gyro + θacc (5.3) s + Kp s + Ki s s2 + Kp + Ki Semplificando si ottengono 2 coefficienti. Il primo moltiplica l’angolo ottenuto inte- grando il valore ricevuto dal giroscopio ed il secondo l’angolo ottenuto dall’accelero- metro in una formula di questo tipo −1 accz(t+1) θf (t+1) = K1 θf (t) + θ̇gyro(t+1) ∗ ∆t + K2 tan (5.4) accy(t+1) dove deve valere K1 + K2 = 1 (5.5) Nel caso specifico, per migiorare le prestazioni, al posto di usare il punto dell’acce- lerazione sull’asse delle y viene utilizzata la retta tra tra i 2 punti sugli assi x e y e Controllo di un mini Segway
23 l’equazione diventa accz(t+1) θf (t+1) = K1 θf (t) + θ̇gyro(t+1) ∗ ∆t + K2 tan−1 q (5.6) acc2y(t+1) + acc2x(t+1) 5.3 Implementazione del filtro con Matlab Viene programmato un file in Matlab in modo da poter analizzare i dati, effettuando delle prove con il sensore montato su una ruota di test. Figura 5.1: Controllo di un mini Segway
24 Filtro complementare (Complemtary Filter) Figura 5.2: Codice Funzione Ang Matlab Partendo da un punto certo, indicato dalla livella che segna lo zero, si fa girare la ruota nei due sensi e si analizzano i dati raccolti dall’encoder montato direttamente sul motore e quelli raccolti dall’IMU. Creando delle apposite matrici e moltiplicando i dati per i coefficienti in modo da poter avere il valore di entrambi gli angoli in radianti, si può infine calcolare l’errore e si possono confrontare i grafici. Controllo di un mini Segway
25 Figura 5.3: Angle 1 Si nota subito che sopra un certo valore i due segnali divergono. Osservando atten- π tamente si nota che cominciano a divergere a 2 . Analizzando dettagliatamente le matrici, ci si accorge che l’accelerometro sull’asse z non cambia di segno se viene capovolto il sensore, si risolve il problema imple- mentando i calcoli e facendo in modo che quando il valore dell’angolo supera giusto il punto di cambio del segno il calcolatore lo moltiplichi per -1. π Operazione comunque superflua nell’applicazione attuale in quanto 2 è ben al di fuori del campo di oscillazione previsto per il Segway. Si rieseguono prove e calcoli. Controllo di un mini Segway
26 Filtro complementare (Complemtary Filter) Figura 5.4: Angle 2 Figura 5.5: Calcolo Errore Controllo di un mini Segway
27 π Come si nota dal grafico, rimanendo sotto il valore di 2 non vi è più il problema riscontrato nelle prove precedenti. Si nota inoltre come variando a bassa velocità i 2 grafici convergono quasi perfettamente mentre aumentado quest’ultima tendano a divergere. L’errore medio (media matematica del vettore RMSE) in questo caso risulta: Xp mean (angenc − angIM U )2 = 0.07[rad] (5.7) Si effetua un’altra prova muovendo lentamente la ruota: Figura 5.6: Angle 3 Si osserva come ora le curve sono quasi sovrapposte e l’errore diventa: Xp mean (angenc − angIM U )2 = 0.0182[rad] (5.8) Controllo di un mini Segway
28 Filtro complementare (Complemtary Filter) 5.4 Implementazione Simulink Viene creato anche un file in Simulink da prendere come spunto per poter imple- mentare poi il sistema con pysimCoder. Figura 5.7: Simulink 1 Figura 5.8: Simulink 2 Controllo di un mini Segway
29 Capitolo 6 Modellazione di sistemi elettromeccanici con Lagrange [3] 6.1 Definizione della "Lagrangiana" Nella modellazione con il metodo di Lagrange al posto di utilizzare le equazioni newtoniane per descrivere le forze nel sistema ci si basa sulle energie e si utilizza- no coordinate indipendenti qi (coordinate generalizzate). Vengono definite: U Energia potenziale associata al sistema T Energia cinetica associata al sistema D Energia dissipata da sistema L La "Lagrangiana" del sistema: L = T - U Definita la Lagrangiana, le equazioni differenziali associate al sistema diventano d δL δD δL + − = Fext (6.1) dt δ q̇i δqi δ q̇i Controllo di un mini Segway
30 Modellazione di sistemi elettromeccanici con Lagrange [3] 6.2 Definizione delle energie cinetiche del sistema T Figura 6.1: Modello Segway Il modello d’esempio in figura mostra quali sono le grandezze del sistema. Vengono definite M = massa del carrello m = massa del pendolo L = distanza del centro di massa dal fulcro ϕb = angolo tra il pendolo e l’asse y ϕw = angolo della ruota del carrello Controllo di un mini Segway
31 Rw = raggio delle ruote xw = Rw ϕw = posizione del carrello xb = Rw ϕw − L sin(ϕb ) = posizione del pendolo asse x yb = L cos(ϕb ) = posizione del pendolo asse y T qw = forza in ingresso d = coefficiente d’attrito delle ruote Si definisccono l’energia cinetica totale, l’energia del carrello ruote (wheels) Tw e quella del pendolo (body) Tb 2 2 Θw d ϕ dt w M Rw 2 d ϕ dt w TW = + 2 2 2 2 d d + L2 sin (ϕb )2 d 2 m Rw ϕ dt w − L cos (ϕb ) ϕ dt b ϕ dt b Θb d ϕ dt b Tb = + 2 2 Ttot = TW + Tb (6.2) quindi: 2 2 d d + L2 sin (ϕb )2 d m Rw ϕ dt w − L cos (ϕb ) ϕ dt b ϕ dt b Ttot = + 2 2 2 2 Θw d ϕ dt w M Rw 2 d ϕ dt w Θb d ϕ dt b + + + 2 2 2 6.3 Definizione dell’ energia potenziale del sistema U L’energia potenziale nel sistema è dovuta al solo body: U = Lgm cos (ϕb ) Controllo di un mini Segway
32 Modellazione di sistemi elettromeccanici con Lagrange [3] 6.4 Definizione dell’energia dissipata dal sistema L’unica componente dissipata dal sistema è dovuta all’attrito delle ruote e viene definita: 2 d d dt phi w D= 2 6.5 La Lagrangiana Ai fini di semplificare il modello viene deciso di ignorare le perdite, quindi la Lagran- giana risulta: L=T −U 2 2 d d 2 2 d m Rw ϕ dt w − L cos (ϕb ) ϕ dt b + L sin (ϕb ) dt ϕ b L= + 2 2 2 2 Θw d ϕ dt w M Rw 2 d ϕ dt w Θb d ϕ dt b + + + − Lgm cos (ϕb ) 2 2 2 La quale inserita in apposito software di calcolo (wxMaxima) con anche le perdite del sistema D (che però non vengono utilizzate poi nei calcoli) e definite le tutte le variabili ci resituisce direttamente le matrici Jacobiane con le quali, una volta inserito il punto di lavoro desiderato ed i valori delle variabili, si può cominciare a studiare un sistema di controllo. Controllo di un mini Segway
33 6.6 wxMaxima Maxima è un software matematico di tipo CAS (Computer Algebra System) in grado di eseguire calcoli numerici ma anche simbolici che è la parte che qui verrà utilizza- re per estrarre le matrici dalla Lagrangiana. È open source e può essere utilizzato da linea di comando oppure tramite un’inter- faccia grafica chiamata appunto wxMaxima. Queso software offre una serie di comandi molto utili tra i quali: • expand: espande l’equazione eseguendo tutte le operazioni e cercando quin- di di semplificare il più possibile • trigreduce: combina prodotti ed esponaziali delle funzioni trigonometriche in modo da poter semplificare (formile di prostaferesi e Werner) • trigsimp: semplifica con l’obiettivo di far appare nelle espressini sin2 e cos2 in modo da poterli sommare • linsolve: risolve l’equazione in funzione della variabile desiderata • jacobian: passando a questa funzione le equazioni e le variabili questa ri- torna direttamente la matrice Jacobiana necessaria per la linearizzazone del sistema, essendo questo di secondo grado • at: valuta l’espressione assegnando alle variabili i valori desiderati. Viene utilizzata per impostare il punto di lavoro del sistema • ratsimp: semplifica se possibile anche le funzioni irrazionali In allegato il codice utilizzato per il sistema in analisi di seguito le matrici A e B ricavate dopo tutte le semplificazioni: 0 1 0 0 L2 Rw g m2 0 0 − 0 (L2 T hetaw +Rw 2 T hetab +L2 M Rw 2 )m+T hetab T hetaw +M Rw 2 T hetab A= 0 0 0 1 L Rw 2 g m2 +(L T hetaw +LM Rw 2 )gm 0 0 0 (L2 T hetaw +Rw 2 T hetab +L2 M Rw 2 )m+T hetab T hetaw +M Rw 2 T hetab Controllo di un mini Segway
34 Modellazione di sistemi elettromeccanici con Lagrange [3] 0 L2 m+T hetab B= ( L T hetaw +Rw T hetab +L M Rw )m+T hetab T hetaw +M Rw T hetab 2 2 2 2 2 0 − L2 T heta +R 2 T heta +L2 M RL R2w m ( w w b w )m+T hetab T hetaw +M Rw T hetab 2 Controllo di un mini Segway
35 Capitolo 7 Definizione dei parametri 7.1 Parametri motore Si procede alla ricerca dei parametri non definiti (gli attriti e le inerzie) partendo dalle equazioni che governano il sistema. Successivamente si fanno delle simulazioni fisiche. Infine con i dati ottenuti vengono restituiti i coefficienti dal calcolatore. d X J ωw = τn = Kt Ia − Dm ωw dt dove il termine d J ωw dt indica il totale delle forze agenti sul sistema che sono l’attrito (J = momento d’iner- zia) Dm ωw e l’energia in ingresso kt Ia questo termine tiene conto anche della corrente in ingresso , ma in questo tipo di sistema la corrente la determina la centralina che pilota il motore alla quale in ingresso viene quindi dato solo un valore numerico proporzionale a kt . Portata l’equazione nel dominio di Laplace, troviamo una funzione di trasferimento: k g= s2 + αs Controllo di un mini Segway
36 Definizione dei parametri dove : kt k= J ed: Dm α= J dalla quale si vogliono ricavare i valori di k ed α. Si procede quindi a dare uno step ben definito in ingresso e si raccolgono i dati di posizione in uscita forniti dall’encoder. Successivamente si inviano i dati ad un’appo- sita funzione di Matlab la quale ritorna la funzione di trasferimento con i coefficienti k ed α. Quindi si procede alla raccolta dei dati con piccolo programma Similink Figura 7.1: Simulinc_Angle_Motor Questo permette di vedere in tempo reale l’andamento degli angoli in funzione del tempo e contemporaneamente salva i dati in una matrice in modo da poterli poi riplottare in una funzione del tipo: y = f (t). Di seguito i codici utilizzati: Controllo di un mini Segway
37 Figura 7.2: Matlab_Code_Fdt Figura 7.3: /Matlab_Code_Mymot Controllo di un mini Segway
38 Definizione dei parametri La funzione lsqcurvef it risulta molto utile in quanto in base agli array di dati che le vengono forniti ed al tipo di funzione di trasferimento che si vuole ottenere trova i coefficienti in modo tale che la funzione di trasferimento trovata approssimi nel modo migliore possibile risolvendo il problema dei minimi quadrati. Cioè facendo in modo che lo scarto quadratico sia il minimo possibile. Si ottiene così la FdT: Figura 7.4: FdT Come si può osservare dal grafico i coefficienti trovati approssimano molto bene la curva fornita dai dati delle misure. Figura 7.5: Plot_Dati_Fdt Controllo di un mini Segway
39 7.2 Python e pysimCoder Si determinano i coefficienti anche utilizzando python, che è il software CAS che viene utilizzato da pysimCoder per le simulazioni. Viene definita una funzione molto simile a quella utilizzata precedentemente con Matlab, la quale viene passata al comando leastsq che provvede a calcolare i coefficienti. Figura 7.6: code_py_alpha_k Controllo di un mini Segway
40 Definizione dei parametri Si controlla che anche in questo caso il grafico sia coerente coi dati misurati Figura 7.7: Grafico_alpha_k Quindi vengono trovati i coefficienti che permettono l’identificazione dei parametri Dm e J . Si ottiene così un parametro k molto più piccolo di quello calcolato in precedenza. Ed a partire da questo, conoscendo il parametro kt , si determinano il momento d’inerzia J ed il coefficiente d’attrito DM Figura 7.8: Coefficienti_k_alpha dove il primo termine dell’array è il coefficiente k ed il secondo α. Quindi partendo da questi e conoscendo il valore di kt , si determinano il momento d’inerzia J ed il coefficiente d’attrito dinamico Dm . Controllo di un mini Segway
41 J: Figura 7.9: Det_J Dm : Figura 7.10: Det_Dm Controllo di un mini Segway
42 Definizione dei parametri 7.3 Parametri body Per il body si procede in modo analogo ma invece che far girare il motore lo si tiene fermo e viene movimentato il corpo del segway. Quindi vengono fissate le ruote e fatto oscillare il corpo in modo da poter misurare i parametri riguardanti lo stesso. Figura 7.11: Segway_Appeso Controllo di un mini Segway
43 Una volta fissato il sistema, il metodo per raccogliere i dati è il medesimo delle prove riguardanti il motore, semplicemente non si aziona il medesimo. In questo caso le equazioni necessitano di un altro tipo di soluzione, quindi il metodo per trovare i coefficienti cambia. In questo caso viene cercata l’inerzia nel centro di massa del body. Quindi viene fatto oscillare lo stesso, tenendo ferme le ruote fino a quando non ritrova la sua posizione di riposo, come in figura 7.11. Vengono poi raccolti i dati e plottati in un grafico che ci permette di contare il numero di oscillazioni ed il tempo in modo da poter ricavare la frequenza di oscillazione. Figura 7.12: Grafico_Oscillazioni Nota la frequenza di oscillazione viene utilizzata la formula: 2 mgRcm ωoscill = Jp quindi mgRcm Jp = 2 ωoscill dlla quale viene ricavata l’inerzia nel punto dove il body è collegato meccanicamente alle ruote. Si procede quindi tramite il teorema di Steiner a trovare l’inerzia nel punto desiderato Controllo di un mini Segway
44 Definizione dei parametri Figura 7.13: Teorema_Steiner_Wiki [1] quindi con i dati a disposizione 2 Jcm = Jp − mRcm i dati vengono inseriti nel calcolatore Figura 7.14: Inertia_cm_Steiner Vengono così ottenuti tutti i parametri di non semplice misurazione. Controllo di un mini Segway
45 Ci si affida invece alle misure per quello che riguarda le 2 masse (vengono separati e pesati carrello e body) ed il centro di massa. Controllo di un mini Segway
46 Definizione dei parametri Controllo di un mini Segway
47 Capitolo 8 Il controllo del sistema 8.1 Indici di prestazione [4] Un processo di controllo classico determina i valori di sovraelongazione (overshoo- ting) oppure tempo di setting. È però possibile anche determinare il controllo di un sistema in funzione di alcuni "indici di prestazione". Questi possonono essere ottimizzati per il tempo: Z t∞ J= dt = tf − t0 t0 oppure per il consumo: Z t∞ r X J= |u| dt t0 i=1 energia minima: Z t∞ J= uT · R · u dt t0 minima differenza rispetto all’equilibrio Z t∞ J= xT · Q · x dt t0 forma quadratica (compromesso tra energia ed errore): Z t∞ 1 J= xT · Q · x + uT · R · u dt 2 t0 Quest’ultima verrà utilizzata per imporre il controllo del sistema in esame. In pratica Controllo di un mini Segway
48 Il controllo del sistema si tratta di un problema di minimazzione dell’indice di prestazione cioè la ricerca di massimi e minimi di una funzione a più variabili. Come studiato nel corso di Analisi 2, questo viene fatto calcolando le derivate prime della funzione in esame, quindi creando la matrice Hessiana, dopo di che in funzione del valore del determinante della stassa nei punti di interesse si trovano i punti di massimo, minimo oppure sella. Così facendo però non si tiene conto degli eventuali vincoli che possono riguardare il sistema, quindi occore aggiungere all’equazione principale un’altra equazione, detta di vincolo, in modo da creare la funzione detta di Lagrange dove i coefficienti λi sono moltiplicatori di Lagrange. Controllo di un mini Segway
49 8.2 Il controllore LQR (Linear Quadratic Regulator)[4] Questo sistema, essendo stato linearizzato, risulta non controllabile con i poli po- sizionati sull’asse reale, uno positivo ed uno negativo. Per poter controllare questo tipo di sistemi si ricorre al "controllo ottimo", ossia si progetta un controllore LQR. Questo tipo di controllore minimizza una delle variabili del sistema in funzione di co- sa si vuole ottenere come risultato finale, ottimizzando l’errore quadratico minimo. Si può per esempio ottimizzare per il consumo di energia oppure per evitare over- shooting. Per descrivere bene questo tipo di controllo, il paragone che meglio spiega è quello della strada per andare al lavoro. Se si immagina di poter andare al lavoro a 30Km di distanza da casa in auto, a piedi oppure in elicottero, è possibile poi e dare impor- tanza al tempo che ci si mette, al costo del trasporto, oppure pesare l’uno e l’altro e quindi trovare un giusto compromesso. Ovviamente, ottimizzando per il tempo vince l’elicottero, per il costo a piedi, ma l’au- to sembra il compromesso migliore. Il controllo "OTTIMO" permette appunto di decidere quale peso dare a ciascuna del- le variabili. Nel caso del sistema in esame si cercherà di dare poco peso al consumo di energia in modo da migliorare l’accuratezza. Quindi, avendo la funzione dell’indice di prestazione nella forma quadratica: Z t∞ 1 J= xT · Q · x + uT · R · u dt 2 t0 e la funzione di vincolo che è data dal modello matematico del sistema nella forma matriciale: ẋ = A · x + B · u (8.1) y = C · x + D · u Quindi si può ora formare l’Hamiltoniano 1 H(x, λ, t) = · (xT · Q · x + uT · R · u) + λ0 · (A · x + B · u) (8.2) 2 Quest’ultima, dopo tutti i passagi dovuti, porta ad un’equazione detta di ”Riccati”, la quale risolta dà come risultato un vettore denominato K(t) , cioè un controllore di Controllo di un mini Segway
50 Il controllo del sistema stato con vettore di retroazione. Nel prossimo capitolo verrà descritto come tramite il calcolatore ed i software adatti questo viene fatto. Controllo di un mini Segway
51 8.3 Python e pysimCoder applicati al sistema 8.3.1 Simulazione Figura 8.1: Simulazioni Una volta definiti tutti i parametri e deciso che tipo di controllore utilizzare, si comin- cia ad applicare questo al sistema. Viene per prima cosa creato un file di scrittura (nel caso specifico con emacs in modo da potergli dare l’estensione .py) nel quale vengono riportati dati ed equazioni che vengono poi controllate tramite l’esecutivo jupyter-qtconsol ed infine simulate con pysimCoder fino ad arrivare a poter simulare il controllo al sistema vero e proprio. Per prima cosa come sempre vengono importate le librerie: Figura 8.2: Import_Librerie Controllo di un mini Segway
52 Il controllo del sistema Si noti come, oltre alle solite, due sono specifiche dell’università dedicate appunto al controllo. Quindi si passano al sistema le costanti, cioè i parametri fisici misurati o calcolati come descritto nel paragrafo precedente: Figura 8.3: Parametri_e_Costanti Infine le matrici che descrivono il sistema: Figura 8.4: Matrici_Sistema Una volta passati tutti i parametri, si comincia a progettare il controllo. Avendo a disposizione le misure dei soli angoli ed avendo bisogno anche delle velocità angolari, si decide di aggiungere un osservatore al sistema. Quindi si progetta un sistema di controllo ad anello chiuso come quello in figura: Controllo di un mini Segway
53 Figura 8.5: Schema_Blocchi_Full_Obs Dove il blocco denominato system è quello che simula il sistema, i due blocchi Full_Obs e K_LQR_Ctrl sono quelli dedicati al controllo ed il blocco Plot permet- te di simulare l’andamento del sistema in funzione del tempo. Ora si procede ad inserire le funzioni nello script in modo da poterle successiva- mente assegnare ai blocchi dedicati. Per prima cosa con le matrici A,B,C e D si crea il sistema in continuo: Figura 8.6: Sysc Lo si converte in digitale passando all’apposita funzione, oltre al sistema, sia Ts, cioè il periodo di sampling, che il metodo da utilizzare per la conversione: Figura 8.7: c2d il metodo deciso è quello di default (zoh = zero horder hold) Controllo di un mini Segway
54 Il controllo del sistema Figura 8.8: zoh_Method ~ dei coefficienti del controllore che Quindi si incomincia a calcolare il vettore K sposterà i poli del sistema in una posizione stabile: Figura 8.9: LQR_Controller Una volta determinati i poli si prende quello col valore assoluto maggiore, lo si mol- tiplica per 5 e si utilizza per realizzare l’osservatore, in quanto questo deve essere più veloce del sistema stesso: Controllo di un mini Segway
55 Figura 8.10: Poli_Sistema_Controllato_Per_Osservatore Vengono quindi calcolati i poli discreti moltiplicando quelli trovati in continuo per Ts e si può infine chiamare la funzione che crea l’osservatore completo passandole il sistema ed i poli desiderati: Figura 8.11: Full_Obs Si decide di semplificare il sistema creando un blocco unico che unisca controllore ed osservatore in modo che questo il sistema assuma la forma : Controllo di un mini Segway
56 Il controllo del sistema Figura 8.12: Sys_Completo Una volta creato il sistema dal Block Settings (chiave e cacciavite sull’interfaccia grafica), si assegna al file lo sript da utilizzare per le simulazioni (Parameter script) ed il tipo di file che si vuole ottenere (Template Makefile), ques’ultimo perchè è da qui che si seleziona (se si desidera) un file in C per lavorare col PC oppure è anche possibile compilare per una versione in tempo reale di Raspbian (il SO del Raspberry): Figura 8.13: Settings_Template Nello script si crea il blocco completo con l’apposita funzione: Controllo di un mini Segway
57 Figura 8.14: Block_Complete E si assegna con un doppio click sul blocco stesso la funzione desiderata: Figura 8.15: Ass_Funz_Comp Controllo di un mini Segway
58 Il controllo del sistema Figura 8.16: Ass_Funz_sysc Nel blocco del sistema si assegnano anche le condizioni iniziali, in questo caso viene assegnato un valore diverso da zero all’angolo del body in quanto si vuole simulare per vedere se, ed in che modo il controllore lo riporta a zero. Si lancia quindi la simulazione e, cliccando 2 volte sul Plot, in un grafico viene visualizzata la risposta: Controllo di un mini Segway
59 Figura 8.17: Grafico_Simulazione Ora si è preparati per il sistema reale. Controllo di un mini Segway
60 Il controllo del sistema 8.3.2 Sistema reale Si tratta di applicare lo stesso modello funzionante in simulazione al sistema vero e proprio sempre utilizzando pysimCoder, con le differenze che in questo caso i dati non sono quelli simulati ma quelli inviati dai sensori sul sistema. Figura 8.18: Prove_Laboratorio Per prima cosa si progetta in pysimCoder la parte di software da mandare al micro- controllore che gestisce il sensore per inviare i dati. Figura 8.19: Tx_Rasp Questo prende semplicemente i segnali di giroscopio ed accelerometro, i quali pas- sano attraverso il filtro complementare e vano ad un trasmettitore il quale tramite Controllo di un mini Segway
61 la rete LAN li manda ad un ip ben specifico. Con due click sul filtro si determina il coefficiente α del filtro mentre con un doppio click sul trasmetitore UDP si inserisce l’idirizzo di ricezione. Il blocco con il gain serve ad invertire un segnale in funzione dell’orientamento del sensore. La parte di ricezione e controllo è decisamente più complessa: Figura 8.20: Rx_Ctrl Subito dopo aver ricevuto il segnale lo si fa passare in un filtro passa basso in modo da eliminare parte delle oscillazioni ad alta frequenza dovute ai sensori ed alla loro posizione. L’angolo misurato del body viene poi sottratto a quello che deriva dalla posizione dell’encoder sul motore in modo da ottenere l’angolo esatto delle ruote. In questo modo otteniamo i due segnali da passare al controllore: ϕb , ϕw . Il blocco con la costante fornisce il riferimento (in questo caso zero). Il segnale in uscita del controllore viene fatto passare attraverso un blocco il quale ci permette di decidere se aggiungere o togliere gain, poi in un altro che limita i valori in uscita in modo che la richiesta di energia non sia superiore a quella disponibile. Vengono inoltre inseriti degli step in modo da generare un ritardo che dia tempo di far partire il sistema e mettersi in posizione per poter fisicamente agire su di esso. Ora vengono lanciati gli eseguibili creati dal sistema e si osserva come esso reagise tendando di trovare dei parametri idonei allo scopo prefittosi, cioè tenere il segway in equilibrio. Controllo di un mini Segway
62 Il controllo del sistema Figura 8.21: Prove_Coefficienti Da un lato si tiene aperto il file con lo script in modo da poter modificare i coefficienti ad ogni tentativo e dall’altra il terminale per lanciare gli eseguibili. Si eseguono numerose prove ma non si riesce a trovare una soluzione soddisfacen- te. Controllo di un mini Segway
63 Capitolo 9 Conclusioni Dopo numerosi tentativi, anche con controllori diversi da quello descritto in questo progetto non si riesce comunque a controllare il sistema. Si esegue quindi un’approfondita analisi dello stesso per cercare di capire quali pos- sano essere le cause di questa non controllabilità. Si riparte dalla ricerca del modello matematico e dalle equazioni alla base del siste- ma, ma tutto sembra combaciare. Vengono determinati alcuni punti che potrebbero essere causa del malfunziona- mento: • Calibrazione del sensore: è forse possibile studiare una calibrazione migliore che eviti le fluttuazioni anche da fermo del segnale • Inserire gli attriti nelle equazioni: anche se questi andrebbero ad inserire nella matrice di controllo valori molto vicini allo zero (10−4 , 10−5 ) • La posizione del sensore: posizionandolo più in basso si otterrebbe probabil- mente un risultato migliore • Una meccanica migliore: anche l’eccessivo attrito statico non aiuta In particolare la meccanica sembra il punto più problematico del sistema. A volte, durante le prove, si ha avuto l’impressione che il sistema per partire avesse bisogno di talmente tanta energia per vincere l’attrito statico da portare lo stesso a divergere. Controllo di un mini Segway
64 Conclusioni Controllo di un mini Segway
65 Capitolo 10 Costi Nella tabella che segue i costi sostenuti: DESCRIZIONE QUANTITÀ PREZZO UNITARIO TOTALE Connettore passante Raspberry 5 2.89 14.45 PCB 10 0.80 8.00 Trasporto PCB 1 20.00 20.00 Controller MC5005 s CO 1 418.65 418.65 Motore 4221G024BTXH IE3-1024 1 195.20 195.20 Steckerset MC50xx V3.0-Motorseite 1 7.85 7.85 Steckerset MC5005/5010 V3-Versorg. 1 14.70 14.70 TOTALE CHF 678.85 Tabella 10.1: Tabella_costi I costi sono da intendersi iva esclusa. Controllo di un mini Segway
66 Costi Controllo di un mini Segway
67 Bibliografia [1] Wikipedia.org [2] Prof Roberto Bucher, "Python for control purposes", 2019. [3] Prof Roberto Bucher, "Modellazione di sistemi elettromeccanici con Lagrange", 2011. [4] Prof.Silvano Balemi, Docente Ivan Furlan, "Progettazione di controllori", 1998- 2008. Controllo di un mini Segway
68 BIBLIOGRAFIA Controllo di un mini Segway
69 Capitolo 11 Allegati Allegato_1 : Codice wxMaxmima delle equazioni Allegato_2 : Codice python del sistema Controllo di un mini Segway
70 Allegati Controllo di un mini Segway
71 Capitolo 12 Ringraziamenti Ringrazio: Il professor Bucher per l’assistenza e la disponibilità Il professor Bianchi per l’aiuto Tutti i professori che mi hanno aiutato e sostenuto Andrea Bernaschina per l’aiuto sopratutto col PCB La mia famiglia che mi ha sopportato e supportato in questi 3 anni I miei compagni tutti in particolare Flavio Valoti per l’aiuto Controllo di un mini Segway
Puoi anche leggere