Tutorial · Intermedio · 30 min

Pianificazione di copertura: percorre un'intera stanza

Raggiungere una destinazione e coprire ogni punto sono problemi diversi. Confronta percorrenze casuali, a spirale e boustrophedon con una percorrenza ideale.

Un problema diverso dal raggiungere una destinazione

A* trova una rotta verso un obiettivo. Un pianificatore di copertura deve toccare ogni casella raggiungibile, il che cambia completamente l’obiettivo: non c’è un obiettivo vicino al quale stare, non c’è un’euristica che ti guidi e il successo non è binario.

La misura che lo sostituisce è la distanza per metro quadrato percorso. Con un’area del pavimento A e uno strumento di larghezza w, un robot perfetto percorre ogni casella una sola volta e non ripete mai:

d_optimal = A / w

Una stanza di 20 m² con una spazzola da 250 mm richiede 80 m. Ogni valore seguente è un multiplo di questo, perché il confronto tra più percorsi è l’unico che sopravvive al cambiamento di stanza.

La legge che governa la percorrenza senza mappa

Un robot che non sa dove sia passato copre il pavimento nuovo in proporzione a quanta parte del pavimento è ancora scoperta. Si tratta di un’equazione differenziale con una sola soluzione:

covered(d) ≈ 1 − e^(−d / d_optimal)

Leggi tre punti dalla curva e la forma dell’intero problema appare:

Copertura Distanza
63% 1.0 × ottimale
90% 2.3 × ottimale
99% 4.6 × ottimale

Gli ultimi 9% costano più dei primi 90%. Questo è il problema del collezionista di coupon con una spazzola montata ed è l’unico fatto che spiega tutti i robot aspirapolvere che hai mai osservato.

Che cosa accade davvero

La teoria presume che ogni metro cada su un pavimento scelto indipendentemente. Un robot reale percorre linee rette, quindi i metri consecutivi sono correlati: continua a ripassare sulla zona su cui si trova già. Misurato in cinque stanze nel simulatore di copertura:

Due grafici sovrapposti. Quello superiore mostra la percentuale di pavimento coperta in funzione della distanza percorsa divisa per una percorrenza perfetta, per tre strategie misurate più la curva teorica tratteggiata uno meno e alla meno d. La percorrenza pianificata sale più ripidamente e si stabilizza al novanta percent; il rimbalzo casuale sale più lentamente ma supera il novantanove; la spirale è la più lenta. Il grafico inferiore è un diagramma a barre orizzontali della distanza necessaria a ogni strategia per raggiungere il cinquanta, il novanta e il novantanove percent di copertura, con la percorrenza pianificata indicata come mai raggiungente il novantanove percent.
Metà sinistra del pannello superiore: per la prima metà del pavimento non c'è differenza tra le tre strategie. La differenza emerge nel pannello inferiore: al 90% la distanza è 1.3× l'ottimale per la strategia pianificata, 2.9× l'ottimale per il rimbalzo casuale e 5.5× l'ottimale per la spirale, e soltanto le due strategie non pianificate raggiungono mai il 99%. Scarica SVG
Strategia 50% 90% 99% Termina al
Percorrenza pianificata 0.75× 1.35× mai 90.4%
Rimbalzo casuale 0.91× 2.90× 6.76× 99.6%
Spirale + riposizionamento 0.87× 5.54× 10.96× 99.5%

Tre elementi di quella tabella valgono più di tutto il resto della pagina.

Per la prima metà del pavimento non importa nulla. Al 50%, tutte e tre le strategie rientrano entro il 20% l’una dall’altra. Un robot senza sensori e senza memoria è davvero altrettanto valido di un pianificatore nella prima metà del lavoro, ed è esattamente il motivo per cui l’approccio economico è commercialmente praticabile e per cui un’osservazione superficiale non ne rivela mai la differenza.

Il caso è peggio rispetto alla sua stessa teoria. 6.76× contro un valore previsto di 4.61× al 99%, perché un rimbalzo in linea retta torna a visitare il pavimento appena percorso. Considera 1 − e^(−d) il limite ottimistico, non la stima.

Il pianificatore non termina mai. Si ferma al 90.4% e vi rimane, e non è un bug.

Perché il pianificatore lascia un decimo del pavimento

Un pianificatore di copertura deve mantenere il corpo del robot lontano da ogni parete e da ogni gamba di un tavolo, quindi gonfia ogni ostacolo del raggio del robot più un margine e pianifica nello spazio rimanente. Tutto ciò che rimane all’esterno è pavimento che il robot non può mai raggiungere.

Nella prova misurata, 130 delle 133 caselle mancate dal pianificatore si trovavano entro due celle da una parete o da un mobile. Solo tre erano su pavimento libero. Le aree mancate non sono sparse, ma formano un anello attorno a ogni ostacolo nella stanza.

Questo spiega due caratteristiche di ogni macchina commerciale:

  • La spazzola laterale che sporge oltre il telaio. La spazzola è più larga dell’elemento che entra in collisione, quindi raggiunge il pavimento a cui le ruote non possono mai arrivare.
  • La passata di seguimento del muro. È un comportamento separato, eseguito separatamente, perché la percorrenza sistematica non può strutturalmente eseguirlo.

Il rimbalzo casuale raggiunge prima o poi quei bordi, per caso, ed è l’unica cosa in cui è migliore.

Scelta delle file

Per una percorrenza sistematica, l’unico parametro davvero importante è la distanza tra le file.

Distingui le file a esattamente una larghezza di spazzola e anche il minimo errore di orientamento lascerà una striscia non pulita tra loro. Niente di ciò che farai in seguito la troverà, perché il piano ritiene che quel pavimento sia già stato completato. Sovrapponi il 10–20% e le strisce si chiudono, al costo esatto della stessa percentuale in distanza.

Questa sovrapposizione, insieme alla distanza percorsa per aggirare i mobili, spiega il valore di 1.35× del pianificatore. Non è uno spreco, ma il prezzo di un piano che sopravvive al contatto con un robot reale.

Due altre scelte contano più di quanto sembrino:

  • Percorri le file lungo l’asse maggiore della stanza. Ogni curva costa tempo e non copre nuovo pavimento, quindi dimezzare il numero di file dimezza il sovraccarico delle curve.
  • Instrada il passaggio tra un tratto e l’altro, non il tragitto in linea retta. Quando un mobile divide una fila in due tratti, il robot deve passarci attorno. Pianificare quel passaggio come percorso più breve nello spazio libero distingue un piano da un desiderio.

Sensori richiesti da ciascuna strategia

Questa è la vera ragione per cui esistono tutte e tre.

Il rimbalzo casuale richiede un solo bit. Ho colpito qualcosa? Due interruttori a molla e un generatore di numeri casuali costituiscono l’intero robot. Nessun encoder, nessuna mappa, nessuna localizzazione e nulla che possa derivare.

La spirale deve sapere quanto è avanzata dal centro della spirale corrente, quindi ha bisogno di un’odometria grossolana: abbastanza precisa per far crescere un raggio, ma non abbastanza per chiudere un anello.

Una percorrenza pianificata deve sapere dove si trova. File rettilinee, angoli di curva noti e uno spostamento laterale di una larghezza di spazzola sono tutte affermazioni basate sull’odometria, e l’odometria deriva. Dopo dieci file, non sono più parallele. Ecco perché le macchine commerciali che pianificano montano anche un giroscopio, una telecamera rivolta al soffitto o un segnalatore: il pianificatore è economico, ma la localizzazione che presuppone non lo è.

Scegli quindi la strategia in base al budget dei sensori, non all’eleganza dell’algoritmo. Costruisci prima quella casuale: funziona, richiede venti righe e fornisce il riferimento iniziale che il pianificatore deve superare.

Che cosa costa in minuti

Considera quella stanza di 20 m², una spazzola da 250 mm e un robot che viaggia a 0.25 m/s:

Strategia Distanza Tempo
Percorrenza perfetta 80 m 5 min
Pianificata 108 m 7 min
Casuale, fino al 90% 232 m 15 min
Casuale, fino al 99% 541 m 36 min
Spirale, fino al 99% 877 m 58 min

Una batteria è un budget di distanza. Un’autonomia di un’ora a 0.25 m/s equivale a 900 m, che coprono comodamente una stanza in modo casuale ma non tre ed è proprio questo, più di qualsiasi intuizione algoritmica, che ha spinto il mercato verso robot dotati di mappa.

Quando qualcosa va storto

Sintomo Di solito
Il robot traccia lo stesso ciclo per sempre L’angolo di rimbalzo è deterministico: una riflessione fissa su un pavimento rettangolare produce un percorso chiuso
Le file escono dal parallelismo L’odometria, non il pianificatore. Aggiungi un riferimento di orientamento
Strisce di pavimento saltate tra le file Distanza tra le file impostata uguale alla larghezza della spazzola senza sovrapposizione
Salta i bordi di ogni stanza Funziona come progettato: aggiungi una passata di seguimento del muro o una spazzola più larga
Copre il 90% rapidamente, poi sembra fermarsi Anche questo è previsto. Osserva la curva di copertura, non il robot
Non termina mai dietro il divano Il passaggio tra i tratti delle file non è mai stato pianificato
La batteria si scarica a metà stanza Budget di distanza superato; misura la copertura per metro, non per minuto

Prova tutte e tre le strategie nella stessa stanza nel simulatore di copertura: trascina i mobili mentre sono in esecuzione e i numeri cambieranno di conseguenza. Poi costruisci il robot per la copertura della stanza, che inizia dalla strategia che non richiede nulla e aggiunge sensori solo dove la misurazione mostra che ne vale la pena.

Esplora il grafo

Fa parte di queste costruzioni

Progetti e percorsi di apprendimento che includono questo tutorial.

Per approfondire

Fonti