Insegnare il controllo PID alle squadre di robotica delle scuole superiori senza usare l'analisi matematica

Non servono equazioni differenziali per spiegare il controllo PID: bastano tre concetti intuitivi, ovvero la distanza dal bersaglio, il tempo trascorso fuori posizione e la velocità di avvicinamento.
Non serve l'analisi matematica per insegnare il controllo PID agli studenti delle scuole superiori. Un controllore PID è semplicemente una formula che stabilisce con quanta forza un motore deve spingere in base a tre domande intuitive: quanto siamo distanti dal bersaglio in questo momento? Da quanto tempo siamo bloccati fuori posizione? E con che velocità ci stiamo avvicinando?
Quando le squadre di FIRST Tech Challenge (FTC) o gli studenti dei laboratori di robotica scolastici leggono la documentazione sul PID, si scontrano spesso con simboli di integrali e derivate che scoraggiano chiunque non abbia nozioni avanzate di matematica. Nella realtà, il codice in esecuzione su un robot non risolve equazioni differenziali continue. Esegue una serie di calcoli aritmetici elementari ogni pochi millisecondi. Una volta compreso il ruolo pratico di P, I e D, gli studenti sono in grado di scrivere, tarare ed eseguire il debug degli anelli di controllo in modo affidabile.
Il concetto fondamentale: l'errore
Ogni anello di controllo esiste per minimizzare un singolo valore: l'errore.
L'errore è semplicemente Obiettivo - Posizione attuale. Se il braccio di un robot si trova a 20 gradi e deve portarsi a 90 gradi, l'errore è +70. Se un volano deve girare a 2.000 giri/min ma ruota a 2.100 giri/min, l'errore è -100. Ciascun termine del PID prende questo valore di errore e lo converte in potenza per il motore.
1. Proporzionale (P): il presente
Il termine proporzionale agisce come un semplice elastico. Più si è lontani dall'obiettivo, più forte tira.
Se si guida un'auto e si devia di cinque metri a sinistra rispetto al centro della corsia, si applica una correzione decisa verso destra. Se si è fuori traiettoria di appena due centimetri, basta un minimo ritocco al volante. A livello di codice, la formula è semplicemente kP * errore.
I limiti del solo termine P:
- Sovraelongazione (overshoot) e oscillazione: se
kPè troppo alto, il robot accelera con troppa aggressività verso l'obiettivo e l'inerzia lo spinge oltre il punto di arresto. A quel punto inverte la marcia con forza, supera di nuovo il bersaglio nella direzione opposta e inizia a oscillare violentemente. - Errore a regime (steady-state error): se
kPè troppo basso, man mano che l'errore diminuisce la potenza del motore cala fino a non riuscire più a vincere l'attrito meccanico o la gravità. Il meccanismo di un elevatore che solleva una pinza da 500 grammi si fermerà semplicemente qualche centimetro sotto l'altezza voluta, poiché la spinta del motore echeggia esattamente la forza di gravità, andando in stallo.
2. Derivativo (D): il futuro (il freno)
Il termine derivativo misura la rapidità con cui l'errore varia da un ciclo del loop a quello successivo. La sua funzione è agire come un ammortizzatore o un freno.
Pensiamo a quando si parcheggia un'auto in garage. Se il muro dista dieci metri, si preme l'acceleratore. Ma quando si vede la parete avvicinarsi rapidamente, non si aspetta che il paraurti sia a un centimetro dai mattoni per toccare i freni: si frena in base alla propria velocità di avvicinamento.
Nel codice, derivata = (errore_attuale - errore_precedente) / tempo_trascorso. Quando il robot si dirige a gran velocità verso l'obiettivo, l'errore diminuisce rapidamente; questo rende negativo il termine derivativo, sottraendo potenza al motore prima che superi il traguardo. Il termine D smorza le oscillazioni e consente di utilizzare un guadagno P più alto senza rischiare di disintegrare la struttura con vibrazioni eccessive.
3. Integrale (I): il passato (la memoria)
Il termine integrale somma l'errore accumulato nel corso del tempo. Se un robot resta bloccato leggermente fuori bersaglio per diversi secondi, la somma dell'integrale continua a crescere fino a fornire ai motori una spinta supplementare sufficiente a superare l'attrito o la forza di gravità.
Immaginiamo di spingere un carrello lungo una salita. Si applica una forza (P), ma la gravità ferma il carrello poco prima della cima. Se si resta fermi lì per cinque secondi senza riuscire a completare la salita, il termine integrale dice essenzialmente: "Siamo bloccati qui da troppo tempo; aggiungi più potenza finché non superiamo il crinale."
L'insidia: l'integrale è rischioso se non gestito con attenzione. Se un braccio si blocca meccanicamente, la somma dell'integrale tenderà all'infinito (fenomeno noto come "integral windup" o saturazione dell'integrale). Quando il blocco viene rimosso, il motore si scaglierà a tutta potenza contro i finecorsa. Nelle competizioni FTC e nella robotica scolastica, l'integrale deve essere limitato con una soglia massima nell'accumulatore, o attivato solo all'interno di un intervallo di errore molto ridotto.
Una procedura di taratura in 4 fasi per il laboratorio
Non cercate di indovinare tutti e tre i valori contemporaneamente. Fate seguire ai vostri studenti una sequenza di regolazione ripetibile, utilizzando una batteria completamente carica (le variazioni di tensione modificano la risposta dei motori):
| Fase | Azione | Comportamento desiderato | Segnali di errore |
|---|---|---|---|
| 1. Impostare tutti i guadagni a 0 | kP = 0, kI = 0, kD = 0 | I motori non fanno nulla. | — |
| 2. Aumentare kP | Aumentare kP a piccoli passi finché il meccanismo non raggiunge l'obiettivo rapidamente. | Raggiunge il bersaglio con un piccolo rimbalzo o una lieve oscillazione attorno al setpoint. | Vibrazioni violente indicano che kP è troppo alto; l'assenza di movimento indica che è troppo basso. |
| 3. Aggiungere kD | Aumentare gradualmente kD fino a eliminare il rimbalzo. | Il meccanismo scatta rapidamente in posizione e si arresta in modo netto senza oscillare. | Un ronzio o un tremolio ad alta frequenza indica che kD è troppo alto (sta amplificando il rumore dei sensori). |
| 4. Aggiungere kI (solo se necessario) | Aggiungere un valore molto piccolo di kI se il meccanismo si ferma a 1–2 mm dall'obiettivo per via dell'attrito. | L'errore residuo a regime scende a zero. | Un'oscillazione lenta e continua a onda indica che kI è troppo alto. |
Errori comuni nei robot degli studenti
- Rumore dei sensori: gli encoder ottici sulle trasmissioni FTC sono generalmente affidabili, ma il gioco meccanico (backlash) confonde il termine derivativo. Se la scatola degli ingranaggi ha gioco, D reagirà alle tolleranze meccaniche anziché al movimento reale.
- Variabilità del tempo di ciclo (loop time): se il codice della squadra esegue algoritmi di visione artificiale in background su un unico thread, il tempo di ciclo può saltare imprevedibilmente da 10 ms a 80 ms, compromettendo i calcoli standard del PID. Mantenete gli anelli di controllo snelli e isolati.
- Volani contro bracci meccanici: il controllo di velocità (volani) ha una dinamica differente rispetto al controllo di posizione (bracci). Gli anelli di velocità raramente necessitano del termine D, perché l'inerzia del sistema funge già da filtro passa-basso; al contrario, beneficiano ampiamente di un termine di feedforward di base (kV) abbinato a modesti valori di P e I.
Per le squadre che puntano alle competizioni regionali, padroneggiare il controllo ad anello chiuso è l'elemento che distingue i meccanismi incerti dalle routine autonome capaci di fare punti con costanza in ogni partita. Se la vostra squadra si sta preparando per il circuito di gara locale e cerca una guida tecnica strutturata sulla cinematica della trasmissione e sull'integrazione dei sensori, scoprite i nostri programmi di robotica FTC per accedere a percorsi di formazione pratica.



