Tutorial · Intermedio · 30 min

Slittamento delle ruote: deriva e correzione dell'odometria

Le ruote ruotano più di quanto il robot avanzi. Scopri il limite di trazione, perché una rotazione slitta e perché lo slittamento sistematico è più pericoloso.

Introduzione

Fai percorrere a un robot un quadrato di un metro, con quattro rotazioni da 90°, fino a tornare al punto di partenza. Non arriva. Calibra il diametro delle ruote e la larghezza delle ruote finché i tratti rettilinei diventano esatti, ripeti l’operazione e il robot continua a non arrivare; inoltre, sul tappeto l’errore è diverso rispetto alla ceramica.

Questo sito indica lo slittamento delle ruote come causa nella pagina sull’odometria, nella pagina degli encoder, nel progetto micromouse e in altre sei pagine. Nessuna spiega che cos’è realmente lo slittamento, quanto ne hai o quali aspetti puoi affrontare.

Un encoder misura la ruota, non il terreno

Questa frase è tutto l’argomento.

Un encoder conta la rotazione della ruota. L’odometria richiede lo spostamento sul terreno. I due valori coincidono soltanto finché il contatto non scivola, e la differenza è il rapporto di slittamento, la frazione del movimento della ruota che non diventa movimento del robot:

slip = (wheel travel − ground travel) / wheel travel

Due conseguenze determinano tutto quanto segue:

Lo slittamento è invisibile dall’interno. Nessun encoder, per quanto buono, può rilevarlo, perché sta misurando proprio la cosa che si è mossa. È la stessa cecità del gioco di inversione del riduttore e ha la stessa soluzione: qualcosa che misura il mondo esterno.

Non è rumore. Il rumore si media; lo slittamento in genere no, e il motivo è la penultima sezione.

Il bilancio di trazione

Uno pneumatico può spingere soltanto quanto consentito dall’attrito:

F_max = µ × N

N è il peso che preme effettivamente sulle ruote motrici, non il peso totale del robot. Lo stesso prodotto determina quanto il robot può spingere un altro oggetto, l’unico compito per cui desideri che il limite di trazione sia il più alto possibile anziché semplicemente abbastanza alto. Un telaio 2WD tipico con ruota pivot trasporta circa da metà a due terzi della propria massa sull’asse motore, mentre il resto non contribuisce per nulla alla trazione.

Dividi per la massa e il soffitto diventa un’accelerazione:

a_max = µ × (weight fraction on driven wheels) × g
Due grafici sovrapposti. Quello superiore mostra l'accelerazione massima prima dello slittamento in funzione della quota di peso sulle ruote motrici, per tre superfici: gomma su legno con attrito 0.9, cemento verniciato con 0.6 e ceramica polverosa con 0.3; una linea tratteggiata segna 0.5 metri al secondo quadrato in basso nel grafico. Il grafico inferiore mostra l'errore di orientamento che cresce con il numero di rotazioni su se stesso da 90 gradi, con 2 percento di slittamento su una ruota: una retta per lo slittamento sistematico che raggiunge 27 gradi dopo 60 rotazioni e una curva molto più piatta, proporzionale alla radice quadrata, per lo slittamento di segno casuale che raggiunge circa 7 gradi.
In alto: sulla ceramica polverosa, con il 55% del peso sull'asse motore, un robot può raggiungere 1.6 m/s² prima che le ruote perdano presa, tre volte i 0.5 m/s² assunti dalla pagina di dimensionamento del motore, quindi il progetto ha margine. In basso: lo stesso slittamento del 2% equivale a 45° di errore di orientamento dopo 50 rotazioni se è sistematico e a 6° se il segno è casuale. Scarica SVG

L’informazione utile del pannello superiore è che, su un robot hobbistico, la marcia in linea retta è raramente limitata dalla trazione. Anche la superficie peggiore mostrata offre più di tre volte l’accelerazione richiesta da un progetto tipico. Se il tuo robot slitta in linea retta, stai comandando una variazione a gradino anziché una rampa, ed è proprio ciò che un profilo di movimento serve a prevenire.

La rotazione è un’altra storia.

Una rotazione su se stesso slitta sempre

Un robot a trazione differenziale ha ruote fisse. Possono rotolare in avanti e indietro, ma non spostarsi lateralmente, mentre una rotazione sul posto richiede esattamente questo.

Ruotando il telaio attorno al proprio centro, ogni punto del contatto di ciascuno pneumatico descrive un arco, mentre la ruota può rotolare soltanto lungo una retta tangente all’arco. La differenza è lo strisciamento: lo pneumatico viene trascinato lateralmente sul pavimento per tutta la rotazione. Un contatto largo striscia più di uno stretto e anche una ruota pivot che non gira liberamente ostacola la manovra.

Una rotazione su se stesso non è quindi una manovra che potrebbe slittare. Slitta per costruzione, e l’orientamento ricavato dagli encoder è sbagliato ogni volta all’incirca della stessa quantità e nella stessa direzione.

Quest’ultima frase è il problema.

Lo slittamento sistematico è il tipo pericoloso

Considera una larghezza tra le ruote di 90 mm. Una rotazione di 90° fa rotolare ciascuna ruota di 70.7 mm. Se una ruota perde il 2% di tale corsa per strisciamento, l’orientamento è 0.9° corto, un valore abbastanza piccolo da essere invisibile durante una singola rotazione.

Ora percorri un labirinto. Il pannello inferiore della figura mostra i due futuri possibili:

  • Segno casuale — alcune rotazioni brevi, altre lunghe. L’errore cresce come √N. Dopo 50 rotazioni è circa 6° ed è davvero una camminata casuale che puoi modellare.
  • Sistematico — ogni rotazione a sinistra striscia allo stesso modo per la stessa ragione. L’errore cresce come N. Dopo 50 rotazioni è 45° e il robot percorre un corridoio che, secondo lui, si trova altrove.

I robot reali sono molto più vicini al secondo caso. Lo strisciamento deriva da una geometria che non cambia tra una rotazione e l’altra, quindi non cambia neppure l’errore. Ecco perché «deriva un po’» diventa «si è perso» nel corso di una missione, ed è il motivo per cui il micromouse ha bisogno di un giroscopio anziché di encoder migliori.

Scoprire quanto slittamento hai

Tre test, dal più economico.

Guida in linea retta e misura. Contrassegna il pavimento, comanda esattamente 1000 mm e misura ciò che ottieni. Ripeti su due superfici. Un errore di scala costante è calibrazione; un errore che cambia con la superficie è slittamento.

Esegui dieci rotazioni su se stesso e guarda. Comanda dieci rotazioni da 90°, cioè 900° o due giri e mezzo. Contrassegna la direzione iniziale e misura quella finale. Dividi l’errore per dieci. Questo amplifica un errore per rotazione altrimenti non misurabile ed è la cosa più utile di tutta la pagina.

Confronta gli encoder con un giroscopio. Se hai un MPU-6050, integra la sua velocità Z durante una rotazione e confrontala con l’orientamento ricavato dagli encoder. Il disaccordo è lo slittamento, misurato direttamente e dal vivo, senza segni sul pavimento. Dove differiscono, gli encoder sono sbagliati: al giroscopio non importa che cosa abbiano fatto le ruote.

Un picco di corrente privo di un’accelerazione corrispondente è l’altra firma osservabile dal vivo: il motore sta lavorando e il robot non si muove.

Che cosa aiuta davvero

Applica una rampa a tutto. Una variazione a gradino nella velocità richiesta delle ruote domanda un’accelerazione infinita; lo pneumatico fornisce ciò che può e scivola per il resto. Dare una forma al comando è gratis ed è il maggiore guadagno singolo.

Quando puoi, curva lungo un arco. Un arco fa rotolare entrambe le ruote in avanti a velocità diverse e striscia molto meno di una rotazione sul posto. Dove la mappa lo consente, preferiscilo: è anche la correzione per il gioco di inversione, perché un arco non inverte mai una ruota.

Porta il peso sulle ruote motrici e lascia libera la ruota pivot. Il peso su una ruota pivot non motrice non produce trazione.

Restringi l’area di contatto se fai molte rotazioni sul posto. Pneumatici larghi e aderenti aiutano l’accelerazione e danneggiano le rotazioni; il compromesso è reale e merita una scelta consapevole.

Non puntare a migliorare µ aggiungendo soltanto aderenza. Più attrito significa che lo slittamento avviene più tardi, non che l’odometria diventi corretta. È un margine, non una correzione.

Che cosa non aiuta nulla

L’odometria basata sulle ruote è una stima della posizione. Non ha riferimenti esterni, quindi slittamento, gioco di inversione ed errore sul diametro si accumulano e non vengono mai corretti: è la stessa deriva illimitata contro cui avverte il percorso di controllo dei motori ed è una proprietà del metodo, non un difetto della tua costruzione.

La correzione è un secondo parere:

  • Un giroscopio corregge l’orientamento, l’errore che fa più danni, ed è economico.
  • Riferimenti di parete o linea ripristinano la posizione laterale ogni volta che li vedi, come fa un robot seguilinea lungo un corridoio.
  • Una mappa, tramite corrispondenza delle scansioni o SLAM, corregge entrambi, al costo di un lidar e di molto più calcolo.

L’odometria è eccellente per un metro e inutile per cento. Progetta tenendo conto di questo limite, invece di cercare di correggerlo.

Quando va storto

Sintomo Di solito
Il quadrato non si chiude nonostante tratti rettilinei perfetti Strisciamento durante la rotazione sul posto; misuralo con il test a dieci rotazioni
La distanza è corretta sulla ceramica e corta sul tappeto Slittamento, non calibrazione: l’errore segue la superficie
L’errore di orientamento cresce stabilmente in una direzione Slittamento sistematico; un giroscopio è la correzione economica
L’errore cresce rapidamente all’inizio, poi si stabilizza in un corridoio La parete ti sta correggendo: è il riferimento che funziona
Il robot slitta soltanto in accelerazione Variazione a gradino invece di una rampa
Giroscopio ed encoder sono in disaccordo durante le rotazioni Comportamento corretto: il disaccordo è la misura
Pneumatici più aderenti non hanno corretto l’odometria L’aderenza aumenta la soglia di slittamento, ma non rende onesti gli encoder
Sembra slittare soltanto una ruota Distribuzione del peso o ruota pivot bloccata, non il motore

L’abitudine da portare via è il test a dieci rotazioni. Converte un errore invisibile in un numero e, una volta conosciuto il numero, puoi stabilire se servono un giroscopio, una rampa o niente.

Il gruppo propulsivo in cui lo slittamento è il principio di funzionamento

Finora lo slittamento è stato trattato come un guasto. Su una base mecanum è invece il progetto: i rulli sganciano la ruota lateralmente di proposito ed è così che il robot riesce a muoversi lateralmente. Vale la pena enunciare con chiarezza le conseguenze, perché cambiano che cosa misurare, non quanto dovrebbe essere difficile.

  • L’odometria laterale è il valore più inaffidabile del robot, non un problema di regolazione. L’encoder è fissato alla ruota e la ruota non è deliberatamente il pavimento.
  • Esiste un controllo gratuito ed è metà cieco. Quattro ruote e tre gradi di libertà lasciano un’equazione ridondante, FL + FR = RL + RR su qualsiasi telaio rigido e aderente, quindi il residuo rileva una ruota che slitta e non vede tutte e quattro slittare insieme. La dimostrazione è qui.
  • La correzione è data da ruote non alimentate. Le ruote passive omnidirezionali montate su molle non trasmettono coppia, quindi non slittano sotto comando e trasformano il valore peggiore del robot nel migliore.

Riduci il cursore dell’aderenza e osserva gli encoder continuare a sostenere che il robot è arrivato.

Esplora il grafo

Fa parte di queste costruzioni

Progetti e percorsi di apprendimento che includono questo tutorial.

Per approfondire

Fonti