Percorso di costruzioneIntermedioUn fine settimana, poi un secondo

Costruisci un robot di copertura che percorre un'intera stanza

Un robot che copre una stanza autonomamente con soli due finecorsa a urto — e una valutazione misurata per capire se aggiungere odometria e un pianificatore valga la pena.

Schema tecnico: Costruisci un robot di copertura che percorre un'intera stanzaBRUSHSERPENTINE COVERAGE PATH

Cosa stai costruendo

Un robot il cui compito non è arrivare da qualche parte, ma essere passato ovunque. Sembra un problema più piccolo della navigazione, ma è più grande, perché non c’è un bersaglio verso cui orientarsi né un modo per stabilire, da dove ti trovi, se stai vincendo.

È anche il progetto che premia maggiormente la misurazione prima della costruzione. Tutta la prima metà consiste in un robot con due interruttori e nessuna idea di dove si trovi, eppure funziona — una scoperta genuinamente scomoda se stavi per dedicare un fine settimana a una mappa.

Il numero che governa il progetto

L’area del pavimento divisa per la larghezza della spazzola è la distanza che percorrerebbe un robot perfetto:

d_optimal = A / w

Una stanza di 20 m² e una spazzola da 250 mm danno 80 m. Ogni strategia viene valutata come multiplo di tale valore, e i multipli non sono vicini:

Strategia Distanza per raggiungere il 90% In quella stanza, a 0.25 m/s
Passata perfetta 1.0× 5 min
Passata a serpentina pianificata 1.35× 7 min
Rimbalzo casuale 2.9× 15 min
Spirale e ricollocazione 5.5× 30 min

Questi valori provengono dall’esecuzione del simulatore di copertura su cinque stanze. Prima di acquistare qualsiasi cosa, eseguilo tu e sposta i mobili mentre avanza — i numeri cambiano con la stanza, ed è la parte principale della lezione.

Elenco dei componenti

Componente Quantità Costo approssimativo Note
Arduino Uno 1 $5–8 La modalità a rimbalzo casuale richiede quasi nulla; la passata pianificata richiede gli encoder
Finecorsa a urto 2 $1 Sinistra e destra, dietro una scocca avvolta. Il sensore principale in questo progetto
Schiera di sensori IR a riflettanza 1 $5 Rilevamento del bordo — puntata verso il basso sul bordo del pavimento, non verso una linea
Motori N20 con encoder 2 $16 Obbligatori per la passata pianificata; il percorso casuale funziona senza di essi
TB6612FNG 1 $3
Telaio 2WD 1 $10 Qui è meglio rotondo che quadrato — non si incastra negli angoli
Pacco batteria 1 $8 Le passate di copertura sono lunghe; la capacità conta più che in altre costruzioni

Totale: circa $50–65.

Questo è l’unico progetto del sito in cui il sensore più economico è quello principale. Due finecorsa a urto e una svolta casuale coprono un’intera stanza, se hai tempo a sufficienza — ed è esattamente così che funzionava la prima generazione di robot aspirapolvere; vale la pena costruirlo prima di ricorrere a qualcosa di più sofisticato.

La schiera IR viene usata in modo insolito: puntata verso il basso sul pavimento come sensore di dislivello anziché in avanti verso una linea. Un robot che copre una stanza troverà la cima delle scale.

Ordine di costruzione

1 — Metti in gara le strategie nel simulatore. Un’ora qui ti fa risparmiare un fine settimana. Osserva la curva di copertura appiattirsi e nota che tutte e tre le strategie sono identiche per la prima metà del pavimento.

2 — Costruisci il sistema di trazione e il paraurti, e nient’altro. Due microswitch a leva dietro una scocca elastica che avvolge almeno 45° su ciascun lato, cablati normalmente aperti a massa con i pull-up interni attivati. Esegui correttamente l’eliminazione del rimbalzo — una pressione genera nove fronti e un interrupt che effettua il conteggio segnalerà una collisione nove volte.

3 — Aggiungi i sensori di dislivello prima che il robot venga mai lasciato funzionare senza supervisione. Sensori di riflettanza rivolti verso il basso agli angoli anteriori, letti a ogni ciclo. Poi determina quanto veloce ti è consentito avanzare: latenza per velocità, più v²/2µg di frenata, deve rientrare nella distanza tra il punto in cui il sensore vede il dislivello e quello in cui le ruote lo raggiungono.

4 — Scrivi il rimbalzo casuale e lascialo funzionare per un’ora. Avanza in linea retta; in caso di urto, torna indietro brevemente e ruota di una quantità casuale compresa tra 90° e 270°. La casualità è essenziale — un angolo di riflessione fisso trasforma la stanza in un tavolo da biliardo e il robot traccia per sempre un percorso chiuso.

5 — Misuralo. Traccia una griglia sul pavimento con gesso o nastro adesivo, eseguilo per un tempo prestabilito e conta i quadratini. Questa è la base di riferimento ed è l’unico modo onesto di sapere se il passo 6 ti sia utile.

6 — Solo ora, aggiungi l’odometria. Encoder e odometria a trazione differenziale forniscono una stima della posizione. Pianifica file a serpentina distanti una spazzola, con una sovrapposizione del 10–20%, e aggira i mobili invece di investirli.

7 — Osserva le file smettere di essere parallele. Succederà entro circa dieci file, perché l’odometria deriva. Non è un bug del pianificatore; è il motivo per cui le macchine commerciali montano un giroscopio, una camera rivolta al soffitto o un segnalatore. Decidere se aggiungerne uno è la vera conclusione di questo progetto.

Note hardware che contano

Telaio rotondo, ruote sul diametro. Un robot circolare può sempre ruotare per uscire da una collisione in cui è entrato. Uno quadrato può incastrarsi in diagonale in un angolo e per liberarsi richiede un paraurti posteriore e un comportamento aggiuntivo.

La spazzola deve essere più larga del robot. Non è decorazione. Un pianificatore mantiene il corpo lontano da ogni parete, quindi tutto ciò che il corpo non raggiunge è pavimento che non verrà mai coperto — nel simulatore, 130 dei 133 quadratini mancati dal pianificatore si trovano entro due celle da una parete o da una gamba di tavolo. Una spazzola a sbalzo è ciò che li recupera.

Due metà di paraurti, non una. Un singolo interruttore ti dice che hai colpito qualcosa. Due ti dicono quale lato, l’informazione necessaria alla direzione di svolta, e costa un pin.

Dimensiona la batteria in metri, non in minuti. Un’ora a 0.25 m/s equivale a 900 m. Una stanza con rimbalzo casuale richiede circa 540 m per raggiungere il 99%. Tre stanze sono impossibili, ed è proprio questa aritmetica, non alcuna intuizione algoritmica, che ha spinto l’intera categoria di prodotti verso la creazione di mappe.

Come appare un risultato buono

La copertura è uno dei pochi comportamenti robotici associati a un singolo numero pulito, e il confronto tra le strategie è netto:

Strategia Copertura dopo 1× l’area della stanza percorsa Dopo 3× Dopo 10×
Rimbalzo casuale ~35% ~70% ~93%
Spirale, poi rimbalzo ~45% ~78% ~95%
Passata pianificata a boustrofedon ~85% ~99% ~99%

La forma di quelle colonne è l’intera lezione. Il rimbalzo casuale si avvicina alla copertura completa in modo asintotico senza mai raggiungerla del tutto — gli ultimi punti percentuali richiedono più tempo dei primi novanta. Una passata pianificata vi arriva all’incirca con una sola percorrenza e poi non ha più nulla da fare.

Questa è la differenza tra avere una memoria e non averla, espressa da un numero.

Misura Valore tipico
Distanza tra le linee di passata 80–90% della larghezza efficace del robot, in modo che le passate si sovrappongano
Deriva della direzione durante una passata da 4 m 3–8° senza giroscopio, meno di 2° con uno
Errore di posizione dopo dieci passate 15–40 cm con la sola odometria
Dimensione pratica della stanza per la sola odometria Fino a circa 4 × 4 m prima che la passata diventi visibilmente storta

L’ultima riga è il limite reale di questo progetto. Una passata pianificata dipende dalla conoscenza della propria posizione, e l’odometria deriva senza limite — quindi oltre circa 4 m le passate parallele smettono di essere parallele e si aprono dei vuoti. Non è un problema di regolazione; è il motivo per cui esiste la creazione di mappe.

Quando va storto

Sintomo Causa abituale
Traccia sempre lo stesso ciclo L’angolo di rimbalzo è deterministico; rendilo casuale
Copre rapidamente il 90%, poi sembra fermarsi Funziona come progettato — è la curva esponenziale di copertura
Un urto viene contato più volte Nessuna eliminazione del rimbalzo oppure una finestra più breve del rimbalzo di 5 ms
Esce da un gradino Troppo veloce per il budget dei sensori di dislivello oppure ciclo bloccante
Le file derivano e non sono più parallele Odometria, non pianificatore. Aggiungi un riferimento per la direzione
Salta strisce tra le file La distanza tra le file è impostata esattamente alla larghezza della spazzola senza sovrapposizione
Si incastra in un angolo Telaio quadrato oppure assenza di paraurti posteriore
Non raggiunge mai dietro il divano Gli spostamenti tra una fila e l’altra non sono mai stati pianificati

Sei degli otto problemi riguardano i sensori, la meccanica o l’aritmetica anziché l’algoritmo — la stessa distribuzione del micromouse, e per la stessa ragione.

Per lo strato reattivo condiviso con ogni altro robot mobile, il robot che evita gli ostacoli è la costruzione più semplice con gran parte dello stesso hardware, mentre il percorso di navigazione reattiva copre i sensori e il comportamento sottostanti a entrambi.

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 / 18 completati

100%
Tutorial

Fai in modo che una pressione equivalga a una pressione

25 min

Apri il tutorial
Costruzione

Fai coprire una stanza al robot con due interruttori

Costruzione

Costruzione

Aggiungi la passata pianificata

Costruzione

Obiettivo

Copri una stanza con una sola carica

Obiettivo

Componenti

Tutorial in questo percorso

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

Questo è un robot aspirapolvere?

È la metà di navigazione di uno, che è la metà interessante. Aggiungere l'aspirazione è un problema meccanico — una ventola, una spazzola rotante, un contenitore per la polvere e una batteria decisamente più grande — e non insegna nulla che il problema della copertura non insegni già. Costruiscilo con un panno asciutto o un piumino antapolvere sul lato inferiore e pulirà davvero un pavimento duro; inoltre ogni algoritmo è lo stesso usato da una macchina commerciale.

Perché iniziare dal rimbalzo casuale se una passata pianificata è migliore?

Perché il rimbalzo casuale funziona con sensori che puoi costruire in un pomeriggio e perché fornisce una base di misurazione che il pianificatore deve superare. Nel simulatore, il metodo casuale raggiunge metà del pavimento alla stessa distanza del pianificatore — il divario si apre soltanto dopo. Se costruisci prima il pianificatore, passerai un fine settimana a combattere la deriva dell'odometria senza mai sapere che cosa ti ha dato.

Quanto guadagna davvero il pianificatore?

Misurato in laboratorio su cinque stanze: una passata pianificata raggiunge il 90 percento di copertura percorrendo 1.35 volte la distanza minima teorica, il rimbalzo casuale ne richiede 2.9 volte e una strategia a spirale 5.5. In una stanza di 20 metri quadrati con una spazzola da 250 mm a 0.25 m/s, sono 7 minuti contro 15 contro 30. Il problema è che il pianificatore non raggiunge mai il 99 percento, perché mantiene un margine di sicurezza da ogni parete e gamba di tavolo.

Servono gli encoder?

Non per il primo robot — non ha alcun uso per loro. Sono nell'elenco dei componenti perché la seconda metà del progetto ne ha bisogno e perché aggiungere gli encoder a un telaio già costruito è molto più scomodo che montarli all'inizio. Acquista motori con encoder, lascia i fili scollegati e usali quando arriverai alla passata pianificata.

Che cosa impedisce al robot di cadere dalle scale?

Sensori di riflettanza rivolti verso il basso agli angoli anteriori, letti a ogni ciclo, e un limite di velocità ricavato da calcoli anziché da preferenze. Il robot percorre la propria latenza moltiplicata per la velocità prima che inizi a frenare, poi la distanza di frenata data dal quadrato di v diviso per il doppio di μ g. Entrambi i termini devono rientrare nella distanza tra il punto in cui il sensore vede il dislivello e quello in cui le ruote lo raggiungono.

Perché un telaio rotondo?

Perché l'ingombro di un robot circolare non cambia durante la rotazione, quindi può sempre ruotare sul posto per uscire da una collisione in cui è finito. Un robot quadrato incastonato in diagonale in un angolo deve prima tornare indietro, operazione che richiede un paraurti posteriore e ulteriori comportamenti. È la stessa ragione per cui quasi tutti i robot commerciali per pavimenti sono rotondi.