Articoli tecnici

Coinvolgimento degli studenti nell'identificazione pratica dei sistemi e nella progettazione dei controller presso la University of Arizona

Eniko T. Enikov, University of Arizona


“Questa attività pratica integra la parte di lezione dei nostri corsi con un apprendimento attivo e sensoriale, capace di stimolare l’interesse degli studenti per la progettazione dei controlli e l’identificazione dei sistemi.”

Durante l’ultimo anno di studi, circa 130 studenti di ingegneria meccanica e aerospaziale della University of Arizona completano la formazione obbligatoria nella progettazione dei sistemi di controllo. Di recente, il nostro dipartimento ha implementato un corso di laboratorio dedicato alla dinamica e ai controlli per integrare i tradizionali corsi in aula sull'identificazione e sui controlli dei sistemi. Lo scopo del laboratorio è offrire attività di progettazione coinvolgenti e significative a un ampio gruppo di studenti con conoscenze relativamente limitate di teoria del controllo. Lo sviluppo di un corso di questo tipo è stato impegnativo, poiché richiede il bilanciamento tra bassi costi operativi e la fornitura a ciascuno studente di tempo sufficiente per sperimentazioni pratiche e analisi.

Per rispondere a questa esigenza, abbiamo recentemente sviluppato un modulo di laboratorio wireless portatile basato su MATLAB®, Simulink®, Arduino® Nano 33 IoT e una trave di bilanciamento a doppia elica (Balancing Bi-Copter) (Figura 1). Gli studenti portano il dispositivo a casa o lavorano autonomamente in biblioteca per condurre esperimenti e completare i compiti. Questo lavoro pratico integra la parte teorica dei nostri corsi con un apprendimento attivo e sensoriale che entusiasma gli studenti riguardo alla progettazione del controllo e all'identificazione del sistema.

Una persona tiene in mano il Balancing Bi-Copter, mostrando il suo design a doppia elica.

Figura 1. Il Balancing Bi-Copter. (Crediti dell’immagine: The University of Arizona Department of Aerospace & Mechanical Engineering/Rachel Spitz)

Principi di base della progettazione dei controlli

Il bi-copter viene introdotto nella seconda metà del semestre; nella prima metà, gli studenti acquisiscono conoscenze di base sulla teoria del controllo e sulle modalità di modellazione di semplici sistemi elettromeccanici, come motori DC e sistemi massa-molla. Sviluppano inoltre capacità di identificazione dei sistemi e di estrazione dei parametri del modello da dati sperimentali, inclusi inizialmente sistemi statici e successivamente sistemi dinamici. Nelle lezioni utilizzo MATLAB e Simulink per illustrare nuovi concetti. Ad esempio, quando mi occupo dell'analisi dei diagrammi a blocchi e della creazione di modelli dinamici, utilizzo MATLAB e Simulink per creare una simulazione visiva. Una delle nuove caratteristiche del laboratorio è l’inclusione di argomenti di identificazione dei sistemi, a partire da semplici esperimenti che utilizzano la regressione lineare per determinare i coefficienti di un modello statico, fino all’uso di tecniche di regressione non lineare per la stima simultanea di parametri quali guadagno, frequenza naturale e coefficiente di smorzamento a partire dai dati di ingresso-uscita. Il modulo di laboratorio prevede una breve lezione introduttiva, in cui mostro agli studenti una derivazione manuale passo dopo passo delle formule per l'estrazione dei parametri. Segue un'illustrazione delle funzioni di System Identification Toolbox™, che consente agli studenti di eseguire l'estrazione dei parametri del modello in modo più efficiente.

Quando iniziano la sperimentazione in laboratorio, la maggior parte degli studenti ha familiarità con i comandi base MATLAB, avendoli utilizzati nel corso di metodi numerici. Pochi, tuttavia, hanno esperienza con Simulink o con gli strumenti di controllo e identificazione del sistema. Per aiutare gli studenti ad apprendere Simulink, creo gradualmente modelli Simulink in classe e fornisco modelli con blocchi vuoti, che gli studenti modificano per sviluppare un modello completo. Un percorso autodidattico più completo Simulink Onramp che gli studenti possono completare anche online.

Sperimentazioni con il Bi-Copter

Una volta acquisita dimestichezza con l’uso di Simulink e degli strumenti per il controllo e l’identificazione dei sistemi, gli studenti iniziano la sperimentazione con il bi-copter nella seconda metà del semestre. L’obiettivo dell’attività consiste nello sviluppo di un modello lineare della pianta, nell’identificazione dei suoi parametri e nella progettazione di un controller a loop chiuso in grado di mantenere il bilanciere a un angolo desiderato. L’applicazione di un disturbo esterno al bilanciere richiede dal sistema di controllo il ripristino della posizione corretta entro due secondi.

Gli esperimenti di progettazione del controllo e identificazione del sistema con il bi-copter sono disponibili in questo repository GitHub®. Gli script live di MATLAB, insieme ai modelli Simulink, vengono utilizzati per condurre esperimenti individuali comprendenti test a loop aperto, identificazione del modello, progettazione del controller e test a loop chiuso per mantenere il bi-copter agli angoli di riferimento desiderati. Nel primo esperimento, gli studenti inviano segnali di eccitazione al bi-copter utilizzando una sequenza binaria casuale (RBS) generata dal comando idinput() . La risposta risultante del bi-copter (Figura 2) viene quindi utilizzata per l’identificazione di diversi modelli black-box, quali modelli lineari ARX, a funzione di trasferimento e a spazio di stato.

Due grafici che mostrano i dati del test input-output misurati in ampiezza nel tempo.

Figura 2. Dati di test input-output.

Gli studenti poi usano comandi iddata(), arx(), n4sid(), compare()e resid() per identificare e analizzare diversi modelli dell’impianto. Tipicamente, modelli di quinto o sesto ordine forniscono un buon adattamento, ma anche modelli sottoparametrizzati di terzo ordine possono risultare sufficienti per la progettazione di controller a loop chiuso, purché catturino adeguatamente la dinamica essenziale del bi-copter.

Per il secondo compito, gli studenti utilizzano il modello identificato per progettare servocontrollori basati su PID o sullo spazio di stato. Il controller PID e i relativi metodi di taratura (Ziegler-Nichols) vengono introdotti nel corso di controlli classici. In laboratorio gli studenti utilizzano il comando pidtune() per arrivare a un controller adatto. Per il secondo metodo, gli studenti aggiungono un integratore al controller e progettano un controller osservatore, che colloca i poli a loop chiuso secondo la teoria LQR (Linear-Quadratic Regulator) per un sistema a singolo input e singolo output (SISO). Nella lezione preparatoria associata, viene presentato il compromesso tra la penalizzazione dell’output e dell’input. Per un sistema SISO, ciò equivale a modificare un singolo parametro che regola lo sforzo di controllo rispetto alla velocità di risposta. Tipicamente, gli studenti progettano due controllori: uno con caratteristiche aggressive per una risposta rapida e un altro con taratura più conservativa, che produce risposte più lente ma richiede minore sforzo di controllo. 

La configurazione del Bi-Copter

Il bi-copter utilizza due eliche azionate da segnali PWM generati dalla scheda microcontrollore Arduino Nano 33 IoT. L'accelerometro di bordo registra l'accelerazione gravitazionale per calcolare l'angolo di inclinazione del raggio. La figura 3 mostra uno schema del flusso del segnale e dei componenti principali del sistema. Il bi-copter è alimentato da due batterie agli ioni di litio collocate all’interno del bilanciere, permettendo la comunicazione wireless tra l’Arduino Nano IoT e un PC con MATLAB e Simulink. Il repository GitHub contiene le istruzioni per la configurazione dell'hardware, inclusi i pacchetti di supporto hardware MATLAB e Simulink richiesti per Arduino.

Un modello 3D del bi-copter con un diagramma che mostra il flusso del segnale.

Figura 3. Schema del bi-copter che mostra il flusso del segnale.

Per eseguire esperimenti in tempo reale vengono utilizzati modelli Simulink a loop aperto e a loop chiuso. A seconda del test desiderato, gli studenti generano automaticamente il codice dal modello Simulink corrispondente e lo deployano sulla scheda Arduino Nano IoT mentre è collegata al PC tramite USB. Dopo l'installazione, il bi-copter può essere azionato da remoto tramite una rete wireless. Durante gli esperimenti, il codice distribuito attende un segnale (dati di input) dal PC per eseguire un test a loop aperto o a loop chiuso. Al termine dell'esecuzione, i risultati dell'esperimento sono direttamente disponibili nel live script. 

Il dispositivo completo può essere realizzato con un costo inferiore a 100 dollari, utilizzando un supporto/struttura stampato in 3D e componenti commerciali disponibili su Amazon. Un elenco completo dei materiali e dei file CAD 3D è disponibile nel repository GitHub del progetto. 

I modelli a loop aperto (Figura 4a) e a loop chiuso (Figura 4b) prevedono la possibilità di regolare la potenza di base fornita alle eliche (segnale di livello zero). Inoltre, è possibile bilanciare la spinta delle eliche sinistra e destra modificando il livello di offset. La direzione del motore può essere specificata in modo indipendente per ciascun motore. Infine, l’utilizzo di un filtro FIR (Finite Impulse Response) a media mobile consente la riduzione del livello di rumore dovuto alle vibrazioni delle eliche.

Un modello Simulink che mostra il sistema a loop aperto del controller del bi-copter.

Figura 4a. Modello Simulink del sistema a loop aperto.

Un modello Simulink che mostra il sistema a loop chiuso del controller del bi-copter.

Figura 4b. Modello Simulink del sistema a loop chiuso con il controller PID. 

Prima dell'esecuzione, ogni controller viene compilato e distribuito sulla scheda Arduino Nano 33 IoT tramite un link seriale USB.

Nella Figura 2 sono illustrati esempi di dati di test input-output su un periodo di 20 secondi. Il segnale di uscita rappresenta l’angolo di rollio in radianti, mentre il segnale di ingresso rappresenta i valori PWM su una scala 0–255. Ingresso zero per il segnale u significa che entrambi i motori funzionano alla stessa potenza determinata dal parametro di livello zero. Un input positivo di u implica che il motore A funzionerà a [livello zero] +u, mentre il motore B funzionerà a [livello zero] –u

Sulla base delle conoscenze acquisite sui motori in corrente continua e sulla dinamica, gli studenti sviluppano un modello lineare che suggerisce un possibile modello del quarto ordine, considerando il funzionamento in sincronia di due motori (Figura 5). La modellazione individuale dei motori comporterebbe un incremento dell’ordine del modello fino al quinto. L’inclusione di effetti aggiuntivi, come l’inerzia e il flusso d’aria (effetto di massa aggiunta), determina l’innalzamento dell’ordine del modello fino al sesto. Pertanto, gli studenti ritengono che un ordine modello compreso tra quattro e sei sia adeguato. 

Equazioni modello per l'elica del bi-copter, i motori CC e il modello complessivo.

Figura 5. Un possibile modello lineare del bi-copter.

Analisi della risposta in loop aperto

Una volta completato il test a loop aperto, gli studenti procedono all'identificazione del sistema. Forti di una comprensione preliminare dell’ordine atteso, gli studenti eseguono l’adattamento di diverse strutture di modello di quarto, quinto e sesto ordine. Esempi di modelli a funzione di trasferimento continua, ARMAX e a spazio di stato sono mostrati in Figura 6, insieme al loro confronto con i dati sperimentali.

Un grafico che mostra i risultati dei test di un modello a loop aperto del quarto ordine, misurati in ampiezza nel tempo.

Figura 6. Test di modelli a loop aperto del quarto ordine.

La variabilità dei risultati della fase di identificazione del sistema, dipendente dai parametri della sequenza di ingresso, rappresenta una fonte di perplessità per la maggior parte degli studenti durante questa attività. I parametri più importanti sottoposti a test sono l’ampiezza e il contenuto in frequenza dell’eccitazione. Dopo diverse iterazioni, giungono alla conclusione che la banda di frequenza dovrebbe corrispondere alla frequenza dei poli testati e che l’ampiezza dovrebbe essere massima entro i limiti lineari della risposta. 

La qualità del modello viene esaminata utilizzando l'analisi residua implementata come il comando resid(). La figura 7 mostra un confronto tra i modelli ARMAX di quarto ordine e quelli dello spazio di stato. La minore correlazione dell’errore residuo nell’ARMAX indica una modellazione più accurata del processo sottostante. 

Un grafico che mostra l'analisi residua dei modelli identificati, misurata in ampiezza nel tempo.

Figura 7. Analisi residua dei modelli identificati.

Sincronizzazione di controller PID

Una volta completata l'identificazione del sistema, gli studenti procedono alla progettazione di un controller. Tutti hanno familiarità con l'uso dei controller PID, che rappresentano il metodo di progettazione predefinito. Gli studenti iniziano con un'ipotesi iniziale di un controller PID:

C0 = pid(1,1,1,'Ts',ts,'IFormula','BackwardEuler','DFormula','BackwardEuler');

Questo controller viene quindi utilizzato nell'attività live del PID Tuner. Utilizzando i cursori, gli studenti regolano la frequenza di crossover e il margine di fase desiderato, per poi valutare la risposta prevista (Figura 8). Alcuni studenti, che hanno completato anche il nostro corso opzionale di controlli moderni, utilizzano altresì il metodo di progettazione a spazio di stato.

Uno screenshot di un'attività in tempo reale utilizzata per regolare il controller PID e un grafico che mostra il tracciamento di riferimento.

Figura 8. Regolazione PID tramite un'attività live.

Test a loop chiuso

Una volta completata la progettazione del controller, gli studenti testano il loro controller a loop chiuso. La funzione di trasferimento identificata consente inoltre di prevedere la risposta a loop chiuso. Dopo aver eseguito il test, il live script genera un confronto tra il segnale di riferimento, la risposta prevista e la risposta misurata (Figura 9).

Un grafico che mostra le risposte a loop chiuso del bi-copter controllato da PID, misurate in ampiezza nel tempo.

Figura 9. Risposta a loop chiuso del bi-copter controllato da PID.

L’adozione di un controller avanzato, impiegante modelli di ordine superiore e il metodo di progettazione a spazio di stato basato sulla teoria LQR, consente il conseguimento di risultati di tracking più accurati (Figura 10).

Un grafico che mostra i risultati del controller basato sullo spazio di stato utilizzando la teoria LQR, misurati in ampiezza nel tempo.

Figura 10. Controller basato sullo spazio di stato che utilizza la teoria LQR.

Il bi-copter è adatto anche per insegnare altri metodi di controllo avanzati, come il controllo predittivo del modello (MPC). La progettazione e il deploy di un controller MPC, basato su un modello predittivo data-driven per il controllo del bi-copter, sono illustrati nel video “System Identification and MPC Design Using a Low-Cost Bi-Copter Hardware” (Identificazione dei sistemi e progettazione MPC utilizzando un hardware bi-copter a basso costo) (sezione ‘Per saperne di più’ alla fine dell’articolo).

Feedback degli studenti

Le risposte degli studenti al corso e agli esercizi pratici sono state molto positive. L’indagine sugli atteggiamenti degli studenti verso gli esperimenti pratici, l’utilità delle attività completate e l’impiego potenziale delle competenze acquisite in altri contesti è stata condotta mediante un sondaggio di valutazione del corso. In totale sono state valutate sei affermazioni da 18 partecipanti (Figura 11). Nella maggior parte delle categorie, il progetto risulta di grande impatto e gli studenti acquisiscono sicurezza nella progettazione dei controller. Sembra che i principali vantaggi siano stati ottenuti grazie alle componenti pratiche, anziché tramite lezioni frontali, tipiche dei corsi universitari. 

Un grafico che mostra i risultati di un sondaggio tra studenti, che include diverse domande sul corso.

Figura 11. Risultati del sondaggio tra studenti (le barre arancioni indicano la deviazione standard).

Discussioni informali con altri istruttori suggeriscono che è molto comodo utilizzare un collegamento wireless diretto all'ambiente Simulink e a MATLAB. La facilità di implementazione del sistema in qualsiasi istituzione è garantita dal basso costo e dalla disponibilità di sotto-componenti assemblati commercialmente. Per maggiori informazioni, visita la nostra pagina GitHub

Informazioni sull'autore'

Il Dott. Eniko T. Enikov è professore di ingegneria aerospaziale e meccanica presso la University of Arizona. È direttore dell'Advanced Microsystems Laboratory, specializzato nello sviluppo di dispositivi medici basati su sistemi microelettromeccanici.

Pubblicato nel 2025 - 91891v00