Robot inseguitori di linea: la fisica e il codice

Un robot inseguitore di linea legge la luce riflessa, la trasforma con una soglia in dentro o fuori linea e sterza con un anello di controllo. Ecco la fisica, il codice e perché la vera lezione è la taratura.
Un robot inseguitore di linea funziona leggendo quanta luce rimbalza sul pavimento sotto di sé, decidendo se ciascun sensore si trova sopra la linea scura o sopra la superficie chiara, e sterzando poi per mantenere la linea al centro. La fisica è la riflettanza. Il codice è un piccolo anello di controllo che gira qualche centinaio di volte al secondo. Se entrambi sono giusti il robot si incolla a una curva stretta; se la taratura è sbagliata ondeggia e finisce contro la gamba di un tavolo. Questa guida spiega come funziona, i due metodi di sterzata più comuni e perché la taratura è la parte che insegna davvero l'ingegneria.
Come il sensore legge la linea
Il componente centrale è un sensore di riflettanza a infrarossi. Accoppia un piccolo LED a infrarossi con un fototransistor che misura quanta di quella luce torna indietro. Una linea scura assorbe gran parte dell'infrarosso, quindi ne torna poco. Un pavimento chiaro ne riflette la maggior parte, quindi ne torna molto. Il sensore sta a pochi millimetri dal suolo e riporta un valore analogico, letto di solito come un numero da un convertitore analogico-digitale (ADC).
La maggior parte dei robot per principianti usa due o più di questi sensori affiancati, a cavallo della linea. Quando la linea scivola sotto il sensore di sinistra, la lettura di sinistra cala. Quando scivola a destra, cala quella di destra. Quella differenza è tutta la base della sterzata. Qui contano due verità pratiche: l'altezza del sensore cambia la lettura, e la luce ambientale si intrufola. Un robot provato sotto le luci dell'aula può comportarsi diversamente accanto a una finestra assolata, ed è per questo che il passo successivo è la calibrazione.
Trasformare una lettura in una decisione
Un numero grezzo dell'ADC non è utile di per sé, perché varia con la superficie, con l'illuminazione e persino con una batteria che si scarica. Il rimedio è la soglia. Si fanno scorrere lentamente i sensori sia sulla linea sia sul pavimento, si registrano la lettura più bassa e quella più alta e si fissa la soglia al punto intermedio. Tutto ciò che sta sotto la soglia conta come sulla linea, tutto ciò che sta sopra come sul pavimento, o il contrario a seconda del cablaggio.
Questo passaggio di calibrazione non è facoltativo. Va fatto sul percorso vero, nella stanza vera, ogni volta che ci si sposta. Il nastro isolante nero opaco su un pavimento chiaro dà un contrasto netto; il nastro lucido o un pavimento di piastrelle scure ne danno uno debole. Dieci minuti di calibrazione fanno risparmiare un'ora di debug confuso.
Due modi di sterzare: bang-bang e proporzionale
Il controllo più semplice è il bang-bang, detto anche on-off. La logica dice: se il sensore di sinistra vede la linea, gira a sinistra; se la vede quello di destra, gira a destra; altrimenti procedi dritto. È facile da scrivere e da capire, ma sterza a scatti bruschi. Il robot zigzaga lungo un rettilineo e deve andare a passo d'uomo per restare in curva, perché sa soltanto acceso o spento, mai quanto è fuori.
Il controllo proporzionale risolve il problema usando le letture analogiche invece di un sì o no. Si calcola un errore, per esempio error = left - right, e si fa scalare con esso l'intensità della sterzata: turn = Kp * error. Un errore piccolo produce una correzione dolce; un errore grande ne produce una decisa. Un solo numero, Kp, il guadagno proporzionale, decide quanto aggressivamente risponde il robot. È il primo assaggio vero di teoria del controllo, e basta a far scivolare un robot lungo un percorso che con il bang-bang percorrerebbe a sobbalzi. Aggiungere i termini I e D per ottenere un anello PID completo è il passo successivo naturale, una volta che il proporzionale funziona bene.
La vera lezione è la taratura
Il codice qui sopra è breve. Quasi tutto l'apprendimento sta nel tararlo, e questo è un pregio, non una seccatura. La taratura è dove gli studenti incontrano il metodo ingegneristico: cambia una variabile, prova, osserva, ripeti. Procedi in quest'ordine:
- Calibra sul percorso vero e sotto le luci vere prima di toccare qualsiasi altra cosa.
- Imposta una velocità di base abbastanza bassa da poter osservare il robot e afferrarlo.
- Parti con
Kppiccolo e alzalo finché il robot segue la linea invece di allontanarsene. - Se comincia a oscillare, serpeggiando da un lato all'altro, abbassa un po'
Kpo riduci la velocità di base. - Prova sulla curva più stretta del percorso, non sul rettilineo facile. Il rettilineo mente.
Tieni un quaderno e cambia una cosa alla volta. Uno studente che annota che un guadagno alto faceva serpeggiare il robot impara più di uno che gira i numeri a caso finché per caso funziona.
Guasti comuni e come fare debug
Quasi tutti i problemi degli inseguitori di linea rientrano in una manciata di schemi. Associa il sintomo alla causa probabile prima di riscrivere qualsiasi codice:
- Il robot ignora del tutto la linea: la soglia è sbagliata, i sensori sono montati troppo in alto, oppure la batteria è così scarica da indebolire i LED.
- Zigzag violento:
Kpo la velocità di base sono troppo alti. Riduci un parametro alla volta. - Scappa via nelle curve strette: va troppo veloce, oppure i due sensori sono troppo vicini fra loro per accorgersi in anticipo della svolta.
- Devia da un lato in rettilineo: i due motori non sono perfettamente appaiati. Aggiungi un piccolo trim fisso su un lato.
- Funziona di mattina, fallisce dopo pranzo: la luce del sole ha cambiato le letture. Ricalibra per la nuova illuminazione.
- Tutti i sensori leggono quasi lo stesso valore: controlla il cablaggio e i numeri dei pin, e verifica che il nastro sia opaco e non lucido.
Provarlo in aula
Un inseguitore di linea è uno dei migliori primi progetti di robotica, perché l'intero anello, percepire poi decidere poi agire, è visibile in una sola corsa attraverso il pavimento. Il rover costruito sulla scheda sheenbot∞ offre agli studenti i sensori di riflettanza e il controllo dei motori di cui hanno bisogno su un'unica scheda, e i kit completi sono disponibili nello store. Se preferisci che venga insegnato, l'academy di Città del Capo tiene lezioni settimanali e laboratori durante le vacanze in cui l'inseguimento di linea è una costruzione ricorrente.
In sintesi
La rilevazione della riflettanza dice al robot dove si trova la linea, la soglia la trasforma in una decisione chiara e il controllo proporzionale trasforma la decisione in una sterzata fluida. Il codice è breve di proposito. L'abilità vera è la taratura paziente, una modifica alla volta, che porta un robot ballerino a tenere una curva, ed è un'abilità che si trasferisce a quasi ogni altro progetto. Per altri resoconti di costruzione, vedi la newsroom di sheen.bot.
Domande frequenti
Quanti sensori servono a un inseguitore di linea?
Due bastano per sterzare, perché alla sterzata serve solo sapere se la linea è scivolata a sinistra o a destra. Aggiungerne altri, cinque è una scelta comune, permette al robot di valutare con più precisione quanto è fuori e di affrontare curve più strette, il che rende più fluido il controllo proporzionale.
Perché il mio robot segue la linea in una stanza ma non in un'altra?
La luce ambientale e il colore del pavimento cambiano quanto infrarosso rimbalza indietro, quindi la soglia calibrata in una stanza è sbagliata in un'altra. Ricalibra sulla nuova superficie e sotto la nuova illuminazione ogni volta che sposti il robot.
Il controllo proporzionale è la stessa cosa del PID?
Il proporzionale è la P del PID ed è il primo e più importante termine. Il PID aggiunge un termine integrale per annullare la deriva costante e uno derivativo per smorzare la sovraelongazione. Gran parte dei progetti degli adolescenti funziona bene con il solo proporzionale, per poi aggiungere gli altri due come miglioria.



