Costruisci un robot seguilinea: dal simulatore alla pista reale
Un robot seguilinea funzionante che capisci dall'inizio alla fine—dal modo in cui legge la linea al ciclo PID che lo sterza—costruito con componenti prima regolati in simulazione.
Un robot seguilinea è il miglior primo robot: sente, decide e si muove, eppure ogni sua parte è abbastanza semplice da capire completamente. Questo percorso di costruzione lo tratta esattamente così: come un percorso. Invece di una lista di componenti e di una foto del cablaggio da copiare, sblocchi un nodo alla volta, imparando il meccanismo dietro ogni passo prima di costruirlo.
Inizi capendo come una fila di sensori a infrarossi (IR) diventa un unico errore di sterzata e come un ciclo Proporzionale-Integrale-Derivativo (PID) trasforma quell’errore in movimento regolare. Cinque sensori sono il punto ideale per una prima costruzione: tre bastano a bassa velocità ma danno una posizione grossolana, otto danno una risoluzione più fine ad alta velocità ma complicano cablaggio e calibrazione. La media ponderata che riduce quelle letture a un unico numero con segno—negativo quando la linea è a sinistra, positivo quando è a destra—è l’unico segnale che il ciclo di sterzata vede mai; per questo ottenere correttamente quel numero conta più che scegliere una scheda particolare.
Quel segnale deve poi diventare due velocità diverse per le ruote. La trazione differenziale significa che il robot sterza facendo girare le ruote a velocità diverse, e l’albero tecnologico ti porta dal driver grezzo del motore attraverso la modulazione di larghezza d’impulso (PWM) e la cinematica che trasforma una singola correzione in comandi per sinistra e destra. Vedrai anche dove si inserisce l’odometria: contare il movimento delle ruote dice quanto hai percorso e perché questa stima deriva senza un riferimento esterno, un tema che ritorna in ogni robot da labirinto.
Prima di spendere qualcosa o rischiare un collegamento errato, regoli il comportamento nel simulatore del browser, disegnando una pista, cambiando numero e spaziatura dei sensori e trascinando i guadagni Proporzionale, Integrale e Derivativo mentre osservi errore, tempo sul giro e tempo sulla pista. Il simulatore è un modello didattico, non hardware: presuppone una pista piatta, binaria e ad alto contrasto, una calibrazione ideale, nessuna variazione della luce ambiente e un ciclo perfettamente periodico senza slittamento delle ruote. I guadagni trovati qui sono un buon punto di partenza, ma dovrai comunque calibrare l’array reale e regolarlo di nuovo sul tuo nastro.
Solo dopo colleghi il robot vero: uscite a riflessione verso pin capaci di accettare segnali analogici, PWM e direzione verso l’L298N (i pin logici non possono fornire corrente al motore: l’H-bridge doppio commuta invece la corrente reale), alimentazione separata per i motori sulla propria linea e una massa comune che colleghi ogni modulo. L’ultimo nodo è l’assemblaggio e l’iterazione su un percorso reale nastrato, dove trasferisci i guadagni del simulatore e li modifichi in base a superficie, tensione della batteria e temporizzazione del ciclo. La stessa struttura riappare più avanti nel risolutore di labirinto di linee, che aggiunge a questo seguilinea uno strato decisionale: consolidare questa base ti fa risparmiare tempo due volte.
Percorri l’albero tecnologico qui sotto dall’alto verso il basso. Ogni nodo si sblocca quando i suoi prerequisiti sono completi e i progressi vengono salvati su questo dispositivo, così puoi costruire il robot durante un fine settimana senza perdere il punto.
Lista dei componenti
| Componente | Quantità | Costo indicativo | Note |
|---|---|---|---|
| Arduino Uno o Nano | 1 | $5–8 | Un Nano è la scelta migliore qui: porta fuori A6 e A7, quindi si inserisce un array a 8 canali |
| Array IR a riflessione | 1 | $4–10 | 5 canali per imparare, 8 se vuoi più velocità in seguito. Insisti su un’uscita analogica |
| L298N o TB6612FNG | 1 | $2–4 | TB6612FNG se acquisti: evita i ~1.5 V che l’L298N dissipa come calore |
| Motore TT con riduttore | 2 | $4 | Quelli gialli. Le versioni con encoder costano $2 in più e ti fanno risparmiare una ricostruzione |
| Telaio 2WD con ruote e supporto girevole | 1 | $6–10 | Di solito venduto come kit con i motori |
| Pacco batteria | 1 | $3–8 | 6×AA NiMH, oppure 2×18650 con supporto protetto. Non un blocco da 9 V |
| Ponticelli, nastro, interruttore | — | $5 | Nastro elettrico opaco da 19 mm per la pista |
Totale: circa $30–45. L’aggiornamento più prezioso dell’elenco è un motore con encoder, non per questo progetto, che non ne ha bisogno, ma perché un robot seguilinea quasi sempre diventa un risolutore di labirinto di linee, e quello sì ne ha bisogno.
Per la pista: nastro nero opaco su un pavimento chiaro opaco. Il nastro lucido riflette come il bianco se l’angolo è sbagliato, e lo fa anche un pavimento lucido: ottieni così un robot che funziona su una superficie e non su un’altra per ragioni che sembrano software.
Come si collega tutto
| Da | A | Perché è importante |
|---|---|---|
Array VCC, GND |
Arduino 5 V, GND | Gli emettitori sono il consumo di corrente qui: 100–200 mA su un array a 8 canali |
Array OUT1–8 |
A0–A7 | Analogici, un canale ciascuno. Ecco perché un Nano batte un Uno |
Driver PWMA, PWMB |
D9, D3 | Pin devono supportare il PWM |
| Pin di direzione del driver | D8, D7, D5, D4 | Qualsiasi pin digitale |
STBY del driver (solo TB6612FNG) |
D12, pilotato ALTO | Se resta flottante non succede proprio nulla, in silenzio |
Batteria + |
VM / +12V del driver |
Mai il pin 5 V dell’Arduino |
Batteria − |
GND del driver, GND dell’Arduino, GND dell’array | Una massa comune, riportata a un solo punto a stella |
Due guasti spiegano la maggior parte dei problemi alla prima esecuzione, e nessuno dei due produce un messaggio di errore. Una massa comune mancante fa sì che i segnali di direzione non abbiano riferimento, così nulla si muove mentre tutto sembra collegato correttamente. La corrente dei motori attraverso l’Arduino abbassa la linea a 5 V, resetta la scheda e si manifesta come un blocco software.
Costruiscilo in traguardi
Non collegare tutto il robot e poi eseguire il debug. Ogni fase qui sotto ha un test e una fase che non lo supera si nasconde dentro la successiva.
| # | Traguardo | Il test | Un risultato positivo sembra |
|---|---|---|---|
| 1 | I motori girano | Porta ogni ruota avanti e indietro al duty 200, su blocchi | Entrambe girano in entrambe le direzioni; annota il duty a cui ciascuna inizia |
| 2 | Deadband misurata | Aumenta il duty da 0 a passi di 5 | Hai due numeri e sono diversi, spesso di 5–10 |
| 3 | Marcia diritta | Porta entrambe le ruote avanti per 2 m sul pavimento | Deriva inferiore a 10 cm; altrimenti regola un motore via software |
| 4 | Sensori letti | Stampa tutti i canali sopra la linea e sul pavimento | Le due letture di ogni canale differiscono di centinaia di conteggi |
| 5 | Calibrazione | Scorri l’array sulla linea per 3 s, poi stampa i valori normalizzati | 0 sul pavimento, vicino a 1000 sulla linea, su ogni canale |
| 6 | Posizione | Sposta il robot a mano attraverso la linea e stampa la posizione ponderata | Fluida e monotona: nessun salto quando la linea attraversa il confine di un sensore |
| 7 | Solo P | Pilotare con solo guadagno proporzionale, senza I né D | Segue una curva dolce, oscillando un po’. L’oscillazione qui è prevista |
| 8 | Aggiungi D | Aumenta il derivativo finché l’oscillazione si attenua | Inseguimento fluido sui rettilinei e sulle curve dolci |
| 9 | Pista completa | Esegui un ciclo chiuso con una curva stretta | Completa i giri senza perdere la linea |
| 10 | Recupero dopo perdita della linea | Solleva il robot dalla linea a metà corsa | Continua a girare nella direzione in cui stava già girando, invece di andare dritto |
Il traguardo 6 è quello che le persone saltano e non dovrebbero. Se il segnale di posizione salta mentre la linea passa tra due sensori, nessun ciclo di controllo può essere regolato: la discontinuità sembra un errore improvviso enorme e il robot scatta esattamente in quel punto a ogni giro. Un salto lì significa che l’array non è calibrato per canale oppure che la soglia di un canale lo esclude troppo presto.
Che aspetto ha un buon risultato
| Misura | Costruzione per principianti | Ben regolata |
|---|---|---|
| Velocità sui rettilinei | 0.15–0.25 m/s | 0.4–0.6 m/s |
| Ampiezza dell’oscillazione su un rettilineo | ±15 mm | Inferiore a ±5 mm |
| Curva più stretta che riesce a seguire | ~30 cm di raggio | ~15 cm di raggio |
| Frequenza del ciclo | 50 Hz | 200 Hz o meglio |
| Giri prima di perdere la linea | Qualche | Indefinitamente, finché la batteria si affossa |
La frequenza del ciclo merita attenzione perché limita silenziosamente tutto il resto. Un ciclo
di controllo a 50 Hz vede la linea ogni 20 ms e, a 0.5 m/s, percorre 10 mm tra una decisione e
l’altra. Rimuovere ogni delay() dal ciclo e leggere solo i sensori che usi porta di solito una
prima costruzione da 50 Hz a diverse centinaia, e l’inseguimento migliora senza toccare alcun guadagno.
Risoluzione dei problemi
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Non si muove assolutamente nulla | Nessuna massa comune, oppure STBY basso |
Collega tutte le masse a terra; porta STBY ALTO |
| La scheda si resetta quando inizia a muoversi | Corrente dei motori attraverso l’Arduino | Separare l’alimentazione dei motori; si condivide solo la massa |
| Va dritto oltre la linea | Array non calibrato oppure troppo alto | Ricalibra su questa superficie; imposta l’altezza da terra a 3–8 mm |
| Segue, ma oscilla molto | P troppo alta oppure D troppo bassa | Dimezza P, poi aumenta D |
| Oscilla sempre più velocemente | P ben troppo alta | Riduci finché si stabilizza, poi regola da lì |
| Deriva sui rettilinei | Motori diversi | Regola via software, poi ricontrolla alla velocità di funzionamento |
| Sterza solo a bassa velocità | Due soglie di attrito statico diverse | Misura la deadband di ogni motore e compensala separatamente |
| Perde la linea sulle curve brusche | Troppo veloce, oppure array troppo vicino alle ruote | Rallenta; sposta l’array in avanti per avere più tempo di anticipo |
| Si allontana quando perde la linea | Errore impostato a 0 alla perdita della linea | Mantieni l’ultimo errore: zero significa «centrato» |
| Funziona, poi peggiora durante una corsa | La batteria si affossa e i guadagni non sono più adatti | Previsto; chiudi un ciclo di velocità oppure accetti una corsa più breve |
| Fallisce vicino a una finestra | Infrarossi ambientali | Sottrai la lettura con emettitore spento, oppure scherma l’array |
Da dove proseguire
Il robot seguilinea è deliberatamente una base, e tre direzioni si costruiscono direttamente su di esso.
Aggiungi il rilevamento dei bivi e diventa un risolutore di labirinto di linee: lo stesso ciclo PID sotto, con uno strato decisionale sottile sopra che classifica le ramificazioni e ricorda il percorso. Questo è il miglior progetto successivo, perché riutilizza tutto ciò che hai qui e aggiunge una sola idea realmente nuova.
Aggiungi gli encoder e potrai mantenere una velocità comandata anziché un duty comandato, eliminando completamente il problema «peggiora mentre la batteria si scarica» e rendendo stabile la regolazione per tutta la corsa.
Vai più veloce, il che è più difficile di quanto sembri e insegna di più. La velocità espone ogni approssimazione: la frequenza del ciclo diventa il limite, l’array deve essere più avanti per dare tempo di anticipo, le curve vanno rallentate prima di arrivare invece che dopo, e le ruote iniziano a slittare. Quest’ultimo è il muro: vedi slittamento delle ruote e trazione per capire dove si trova.
Roadmap del progetto
Il percorso di costruzione
Segui l'albero tecnologico dai componenti fino a un robot funzionante. Ogni nodo si sblocca quando i suoi prerequisiti sono completati, e i tuoi progressi vengono salvati su questo dispositivo.
0 / 15 completati
Componenti
- ControllerArduino UnoLa scheda a 8 bit tollerante con cui la maggior parte delle persone scopre la robotica.
- SensoreArray di sensori a riflessione IRUna fila di occhi a infrarossi che indica al robot dove si trova la linea.
- DriverDriver del motore L298NIl doppio ponte H che trasforma deboli pin logici in potenza per i motori.
- AttuatoreMotore DC con ingranaggi (motore TT)Il motore giallo con ingranaggi che trasforma un telaio nudo in un'auto robot in movimento.
- TelaioTelaio robotico 2WDLa piattaforma su cui si montano due motori, un caster libero e tutta la tua elettronica.
- AlimentazionePacco batteria e alimentazione del robotLa differenza tra un robot che funziona e uno che continua a riavviarsi.
Tutorial in questo percorso
- Principiante · 20 min di letturaCostruisci un robot seguilinea: dai sensori allo sterzo con PIDDai sensori a riflessione IR all'errore ponderato e allo sterzo PID fluido: come funziona davvero un robot seguilinea.
- Principiante · 20 minLeggere un array di sensori IR per seguire una lineaTrasforma una fila di sensori IR in un'unica posizione di linea uniforme su cui puoi governare.
- Principiante · 18 min di letturaControlla motori in corrente continua (DC) con PWM e un ponte HControlla in sicurezza un motore DC con spazzole usando PWM, un ponte H e limiti di corrente realistici.
- Intermedio · 20 min di letturaOdometria differenziale con encoder sulle ruoteIntegra il movimento delle ruote sinistra e destra per ottenere la posa di un robot mobile, poi identifica e calibra la deriva.
- Principiante · 18 min di letturaCome regolare un controllore PID: guida praticaUn ordine pratico per regolare i guadagni P, I e D senza tirare a indovinare, e come provare ogni passo dal vivo.
Esercitati prima di cablare
Mettilo a punto nel simulatore
Il percorso di costruzione passa per un laboratorio nel browser. Ottieni qui il comportamento giusto, poi trasferisci le tue impostazioni sul robot reale.
Domande frequenti
Devo comprare i componenti prima di iniziare questo progetto?
No. Tutta la parte di rilevamento e controllo del progetto funziona nel simulatore del browser, quindi puoi capire come un robot seguilinea legge la linea e regolare i suoi guadagni PID prima di comprare qualsiasi cosa. Solo i passaggi finali di costruzione—cablaggio e assemblaggio—richiedono l'Arduino fisico, l'array IR e il driver del motore.
Quanto tempo serve per costruire un robot seguilinea?
Se hai i componenti, il primo robot seguilinea funzionante è un progetto di un fine settimana: un pomeriggio per imparare il rilevamento e il controllo e regolarli nel simulatore, poi poche ore per collegare Arduino, array IR e driver del motore e iterare su una pista nastrata. La regolazione fatta in simulazione si trasferisce direttamente, eliminando la maggior parte delle prove a tentoni.
Qual è la parte più difficile della costruzione di un robot seguilinea?
Quasi sempre il ciclo di controllo, non il cablaggio. Far seguire al robot curve dolci senza oscillazioni significa regolare i guadagni PID per i tuoi motori, l'altezza dei sensori e la velocità specifici. Ecco perché questo percorso di costruzione ti fa regolare prima nel simulatore: così i guadagni sono già vicini quando il robot tocca il pavimento.
Perché il mio robot seguilinea oscilla attorno alla linea?
L'oscillazione di solito significa che il guadagno proporzionale è troppo alto, l'attenuazione derivativa è troppo bassa o il robot si muove più velocemente di quanto possa supportare la frequenza di aggiornamento dei sensori. Riduci prima la velocità di base, poi abbassa Kp di circa il 20% e aggiungi un po' di Kd. Sull'hardware, un lungo delay() nel ciclo aggiunge tempo morto e rende inefficace il termine derivativo, per quanto alto lo imposti: mantieni fisso l'intervallo di controllo.
Quanti sensori IR servono a un robot seguilinea?
Cinque sono un punto di partenza pratico: sufficienti per calcolare una posizione ponderata fluida e vedere verso quale parte curva la linea, mantenendo semplici da ispezionare il cablaggio e il calcolo della posizione. Tre sensori funzionano per una pista didattica lenta e con una linea larga; i robot da competizione ne usano spesso otto per una risoluzione più fine ad alta velocità, ma ogni sensore in più è un'altra calibrazione e un altro filo da sistemare.
Come calibro l'array di sensori IR a riflessione?
Prima di una corsa, fai scorrere lentamente l'array sia sul nastro nero sia sul pannello bianco e registra per ogni sensore la lettura minima e massima; poi normalizza le letture dal vivo rispetto a quell'intervallo. La calibrazione conta perché altezza del sensore, riflettanza della superficie e illuminazione della stanza spostano i valori grezzi, e un array non calibrato sbilancia la posizione ponderata anche quando il robot è centrato.