Odometry
- Detto anche: Wheel Odometry, Dead Reckoning
- Categoria: State estimation & navigation › Localisation
- Tag: navigation, localization, sensors, fundamentals
Stima della variazione di posizione di un robot nel tempo tramite dati di sensori come encoder delle ruote o telecamere.
Definizione
L'odometria è l'uso di dati dei sensori per stimare la variazione di posizione di un robot nel tempo rispetto al suo punto di partenza. Risponde alla domanda fondamentale: "Quanto mi sono spostato da dove sono partito?"
Le forme più comuni di odometria: - Odometria delle ruote: usa gli encoder delle ruote per contare i giri e calcolare la distanza percorsa. Semplice e veloce, ma accumula errori dovuti allo slittamento delle ruote, alle superfici irregolari e alle imprecisioni meccaniche. È la forma più elementare di localizzazione del robot. - Odometria visiva (VO): stima il movimento seguendo le caratteristiche visive tra i fotogrammi della telecamera. Più robusta allo slittamento delle ruote, ma computazionalmente onerosa e influenzata dall'illuminazione e dagli ambienti poveri di texture. - Odometria inerziale: usa i dati di una IMU (accelerometro + giroscopio) per stimare il movimento. Frequenza di aggiornamento molto elevata, ma deriva rapidamente a causa della doppia integrazione di dati di accelerazione rumorosi. - Odometria laser: confronta scansioni LiDAR consecutive per stimare il movimento. Precisa in ambienti strutturati.
Un limite critico di tutti i metodi odometrici è la deriva: piccoli errori si accumulano nel tempo e fanno divergere gradualmente la posizione stimata dalla realtà. Un robot che si affida solo all'odometria delle ruote potrebbe credere di aver percorso una linea retta quando in realtà ha deviato dalla rotta.
Per contrastare la deriva, l'odometria si combina di solito con: - SLAM: corregge la deriva accumulata tramite il rilevamento della chiusura del loop. - Fusione dei sensori: combina più fonti odometriche (ruote + visiva + inerziale) con filtri di Kalman estesi o con l'ottimizzazione su factor graph. - Riferimenti esterni: il GPS (all'aperto) o i marker fiduciali (al chiuso) forniscono punti di posizione assoluta.
L'odometria è la base della navigazione robotica: senza di essa un robot non ha alcuna percezione del proprio movimento nel mondo.
Perché è importante
L'odometria è la stima, da parte del robot, di quanta strada ha percorso, calcolata accumulando le proprie misure di movimento. È la forma più economica di conoscenza della posizione e la base che tutto il resto corregge: gli stack di navigazione si aspettano un flusso odometrico continuo, e lo SLAM la usa come stima a priori da raffinare. La sua proprietà distintiva è che deriva: gli errori si integrano e non si annullano mai, ed è per questo che l'odometria viene sempre abbinata a qualcosa che misura la posizione assoluta.
Applicazioni principali
- Navigazione stimata (dead reckoning) tra un aggiornamento di posizione assoluta e l'altro
- Fornire la stima a priori del movimento che SLAM e filtri a particelle raffinano
- Retroazione di velocità per il controllo ad anello chiuso della trazione
- Manovre a corto raggio come l'aggancio alla stazione di ricarica, dove la fluidità conta più della precisione globale
- Rilevamento dello slittamento, confrontando l'odometria delle ruote con le stime della IMU o visive
- Registrazione della distanza percorsa per la manutenzione e il monitoraggio del ciclo di lavoro
In pratica
Un robot a trazione differenziale conta gli impulsi degli encoder delle ruote e li integra in una posa, cosa che funziona benissimo finché una ruota non slitta su un pavimento liscio o il robot non viene spostato a mano. In ROS 2 questo si traduce nella distinzione tra i frame odom e map: odom è fluido e continuo ma deriva, map è corretto e assoluto ma salta quando il localizzatore si aggiorna. Capire questa divisione spiega perché ai controller si indica di usare odom per la fluidità a breve termine, mentre gli obiettivi di navigazione si esprimono in map.
Idee sbagliate comuni
- L'odometria dice dove si trova il robot: dice quanto si è spostato dalla partenza, con un errore accumulato
- Encoder migliori eliminano la deriva: slittamento delle ruote, compressione degli pneumatici e pavimenti irregolari causano errori che nessun encoder può rilevare
- Odometria e localizzazione sono la stessa cosa: una integra il movimento, l'altra lo corregge rispetto a una mappa o a un riferimento esterno
- La deriva è solo un problema di lungo periodo: una sola ruota che slitta può introdurre un grande errore di direzione in pochi secondi
Chi dovrebbe saperlo
- Chiunque metta in funzione per la prima volta una base mobile
- Sviluppatori che configurano stack di navigazione che usano l'odometria
- Ingegneri che diagnosticano un robot la cui mappa ruota o si deforma lentamente
- Studenti che imparano perché la sola navigazione stimata non basta mai
- Chiunque confronti fonti odometriche delle ruote, visive e inerziali
Tecnologie correlate
- Encoder delle ruote (incrementali e assoluti)
- Unità di misura inerziali (IMU)
- Odometria visiva (VO) e odometria visivo-inerziale (VIO)
- Filtro di Kalman esteso (EKF) e filtro di Kalman unscented (UKF)
- Odometria LiDAR (ad es. LOAM, LIO-SAM)
- GPS/GNSS per la correzione della deriva
- Localizzazione del robot (AMCL, filtri a particelle)
- Navigazione stimata (dead reckoning)
Termini correlati
Progetti correlati
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
- DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
- ROS Motion Planning: One repo implementing 40+ classic and learning-based robot path planners as ROS plugins
- AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
- MRPT: Comprehensive C++ toolkit for mobile robotics, SLAM, and sensor-based navigation
Video
- What is Odometry? An Introduction to the Essence of Robot Odometry: Rex Liu