Tutorial · Intermedio · 21 min di lettura
SLAM, mappatura, localizzazione e deriva dell'odometria
Scopri come i robot mobili combinano odometria e distanze per SLAM, distinguono localizzazione e mappatura e diagnosticano deriva e chiusura del ciclo.
Un robot mobile necessita di due risposte correlate: com’è fatto l’ambiente e dove si trova il robot al suo interno. La localizzazione e mappatura simultanea (SLAM) stima entrambe mentre il robot esplora. Una volta esistente una mappa stabile, un sistema di localizzazione può stimare la posizione rispetto a quella mappa fissa senza ricostruirla.
SLAM non sostituisce l’odometria. Usa stime locali del movimento per collegare le osservazioni dei sensori, poi corregge la deriva accumulata quando l’ambiente fornisce prove sufficienti.
Separa le quattro funzioni
I termini risultano più chiari quando ciascuno ha un’uscita ben definita:
- Odometria: movimento locale fluido ricavato dagli encoder delle ruote, dai sensori inerziali, dal movimento visivo o dalla loro fusione. Deriva nel tempo.
- Mappatura: costruzione di una rappresentazione, come una griglia di occupazione, a partire da osservazioni dei sensori e pose.
- Localizzazione: stima della posa del robot in una mappa esistente.
- SLAM: costruzione della mappa mentre si stimano le pose e si correggono quelle passate.
La navigazione aggiunge pianificazione e controllo. Una buona mappa, da sola, non produce un comando di velocità sicuro.
Segui le informazioni nel sistema
Per SLAM bidimensionale in ambienti interni, un flusso di dati comune è:
- Gli encoder delle ruote e un’unità di misura inerziale stimano il movimento locale.
- Un lidar pubblica scansioni di distanza con marcatori temporali e un sistema di riferimento del sensore.
- TF2 collega il sensore a
base_linke la posa locale aodom. - La corrispondenza delle scansioni allinea le nuove osservazioni con scansioni recenti o con la mappa in crescita.
- Il backend ottimizza un grafo di pose e vincoli.
- Una griglia di occupazione viene aggiornata dalle pose corrette e dai dati di distanza.
L’odometria fornisce una buona stima iniziale. Senza di essa, la corrispondenza delle scansioni potrebbe cercare in uno spazio molto più ampio o allinearsi alla struttura ripetuta sbagliata. Senza osservazioni esterne, gli errori dell’odometria restano illimitati. Questo limite determina se un robot può spazzare un pavimento in file parallele: le file smettono di essere parallele dopo circa dieci, motivo per cui una macchina che pianifica la copertura porta anche un giroscopio, una telecamera rivolta al soffitto o un segnalatore. All’aperto lo stesso compito spetta a GPS, integrato anziché semplicemente seguito.
Comprendi la corrispondenza delle scansioni e la chiusura del ciclo
La corrispondenza delle scansioni trova una posa relativa che allinea meglio le misurazioni di distanza correnti alla struttura esistente. Può correggere piccoli errori di slittamento delle ruote e di scala, ma richiede caratteristiche geometriche. Un lungo corridoio privo di riferimenti, una parete di vetro, una folla in movimento o scaffalature altamente ripetitive possono far apparire simili più pose.
Una chiusura del ciclo si verifica quando il sistema riconosce un luogo visitato in precedenza e aggiunge un vincolo tra la posa corrente e una posa precedente. Ottimizzando quel vincolo, l’errore accumulato può distribuirsi lungo la traiettoria e far coincidere di nuovo le pareti.
Una chiusura del ciclo non è automaticamente corretta. Un abbinamento falsato tra due corridoi simili può piegare o lacerare la mappa. I sistemi robusti usano controlli geometrici, punteggi e soglie di accettazione configurabili. Esamina le correzioni grandi e sospette invece di festeggiare ogni ciclo chiuso.
Prepara il robot prima di regolare SLAM
SLAM non può compensare un contratto di ingresso errato. Verifica prima questi aspetti:
- direzione, scala e marcatori temporali degli encoder;
- odometria locale ragionevole durante i test in linea retta e in rotazione;
- trasformazioni
odom → base_link → sensorcorrette; - dati di distanza nelle unità corrette, con letture non valide identificate;
- sincronizzazione degli orologi tra i nodi;
- supporto rigido del sensore;
- portata e campo visivo sufficienti per l’ambiente.
Procedi lentamente mentre stabilisci la linea di base. La distorsione del movimento e le scansioni sparse peggiorano all’aumentare della velocità di rotazione. Se il sensore o il driver supporta la compensazione temporale, configurala in base al comportamento misurato, senza presumere che non serva.
Costruisci la mappa in modo deliberato
Parti da una posizione ricca di riferimenti e percorri dei cicli, anziché limitarti a lunghi tragitti di andata e ritorno. Ruota in modo uniforme, così lo scanner osserva le stesse strutture da punti di vista sovrapposti. Evita di trasportare o spostare oggetti grandi accanto al robot durante la mappatura.
Controlla la mappa in tempo reale per individuare pareti doppie, angoli sfumati, salti e stanze scollegate. Sono prove, non problemi estetici:
- pareti parallele doppie indicano un errore di pose o di temporizzazione;
- pareti curve durante la rotazione indicano trasformazioni errate o distorsione del movimento;
- deriva graduale della scala suggerisce una calibrazione delle ruote o vincoli deboli delle scansioni;
- riorganizzazione globale improvvisa suggerisce una chiusura del ciclo corretta o falsa.
Salva la mappa solo dopo aver verificato che i corridoi importanti restino attraversabili alla risoluzione scelta. Una griglia più fine consuma memoria e può conservare il rumore del sensore; una griglia grossolana può chiudere passaggi stretti.
Localizza nella mappa salvata
Dopo la mappatura, passa alla modalità di localizzazione rispetto alla mappa salvata. Un localizzatore a filtro particellare come Adaptive Monte Carlo Localization (AMCL) stima la posa dalle osservazioni di distanza e dal movimento. Richiede comunque un modello del sensore ragionevole, trasformazioni corrette e odometria.
Fornisci una posa iniziale abbastanza vicina da consentire al sistema di identificare la posizione corretta, soprattutto in ambienti simmetrici. Prova il recupero iniziando con piccoli errori di pose, poi con errori maggiori. Il recupero del «robot rapito» è un requisito separato, non qualcosa da dare per scontato solo perché il tracciamento normale funziona.
Nel modello standard di sistemi di riferimento, l’odometria locale pubblica odom → base_link, mentre SLAM o la localizzazione pubblica map → odom. La trasformazione globale corregge la deriva senza costringere il sistema di controllo localmente fluido a saltare.
Misura precisione e ripetibilità
Usa punti di riferimento fisici con posizioni rilevate o misurate con cura. Registra la posa stimata quando il robot si ferma su ciascun punto di riferimento, arrivando da direzioni diverse. Separa:
- ripetibilità nella stessa posizione;
- deriva locale a breve termine;
- coerenza globale della mappa dopo un ciclo;
- tempo di recupero dopo la perdita temporanea del sensore.
Confronta la mappa con distanze note, ma non giudicarla soltanto da un’immagine visivamente gradevole. La navigazione necessita soprattutto di spazio libero corretto, confini degli ostacoli e stabilità della posizione, più che di spessi muri esteticamente piacevoli.
Registra scansioni, odometria, trasformazioni e l’uscita SLAM, così un guasto potrà essere riprodotto. Un problema che si presenta solo in tempo reale è molto più difficile da diagnosticare.
Diagnostica i guasti comuni di SLAM
- Le pareti si raddoppiano guidando dritti: scala dell’odometria, tempo del sensore o corrispondenza delle scansioni non coerenti.
- La mappa si incurva durante la rotazione: trasformazione del sensore, odometria angolare o distorsione del movimento errate.
- La posa salta in corridoi ripetitivi: la corrispondenza delle scansioni o la chiusura del ciclo ha accettato un allineamento ambiguo.
- Nessun ciclo si chiude: il percorso ha troppa poca sovrapposizione, le osservazioni sono troppo sparse o le soglie di accettazione sono troppo severe.
- La localizzazione funziona solo vicino alla posa iniziale: l’ambiente è simmetrico oppure il recupero globale non è configurato.
- La mappa sembra corretta, ma la navigazione taglia i muri: footprint, inflazione o configurazione della costmap sono errate.
- Modificare ogni parametro SLAM non cambia nulla: il contratto di odometria/TF/sensore a monte è ancora errato.
Inizia dalla calibrazione degli encoder in quadratura e dall’odometria con trazione differenziale, poi usa i sistemi di riferimento ROS 2 TF2 per verificare la catena geometrica. Il Simulatore dei sensori mostra perché bias e deriva non possono essere eliminati con il solo filtraggio.
Esplora il grafo
Fa parte di queste costruzioni
Progetti e percorsi di apprendimento che includono questo tutorial.
Per approfondire