Line following con controllo PID: dalla teoria a un robot che non serpeggia
Ogni robot Rescue Line nasce come controllore bang-bang: linea a sinistra, sterza a sinistra; linea a destra, sterza a destra. Funziona, e serpeggia come un carrello della spesa. Il serpeggiamento costa tempo, e su un percorso Rescue Line è quello che ti butta fuori dalla linea nei gap e dopo gli ostacoli.
L'idea dietro il PID
Invece di una decisione binaria, calcola un errore: quanto dista la linea dal centro del tuo array di sensori? Una media pesata sui sensori dà un valore di posizione continuo. Il controllore PID trasforma quell'errore in una correzione di sterzata:
- P (proporzionale): sterza in proporzione all'errore attuale. Errore grande, correzione grande.
- I (integrale): accumula l'errore passato. Corregge un robot che viaggia costantemente un po' fuori centro, ad esempio nelle curve lunghe.
- D (derivativo): reagisce alla velocità con cui l'errore cambia. È il termine di smorzamento che uccide l'oscillazione.
L'output è un singolo numero sommato alla velocità di un motore e sottratto all'altro.
Tarare senza impazzire
Un metodo che funziona nella pratica:
- Metti Ki e Kd a zero. Alza Kp finché il robot segue la linea ma oscilla visibilmente.
- Alza Kd finché l'oscillazione muore. Se il robot diventa nervoso sui rettilinei, sei andato troppo oltre.
- Aggiungi un piccolo Ki solo se vedi un offset costante sugli archi lunghi. Molti robot Rescue Line girano benissimo con Ki = 0.
- Ora alza la velocità di base e ritara. I guadagni che funzionano al 50% della velocità non funzioneranno al 100%.
Logga i valori di errore o trasmettili via Bluetooth/seriale mentre il robot gira, guardare la curva dell'errore dice più che guardare il robot.
Specificità della Rescue Line
Alcune cose che la teoria pura non ti dice. Calibra i sensori su ogni campo: illuminazione e usura delle piastrelle cambiano drasticamente le letture, quindi fai una calibrazione prima di ogni round. Limita il termine integrale (anti-windup), o una linea persa lo saturerà mandando il robot in testacoda. E disattiva il PID quando serve: sui quadrati verdi degli incroci, nei gap e sugli ostacoli non vuoi una correzione, vuoi una macchina a stati che prende il controllo, esegue la manovra e poi lo restituisce al PID. Il line following è l'80% facile. La macchina a stati intorno è il 20% difficile che fa i punti.