Tutorial · Gevorderd · 30 min

Wielslip: waarom odometrie afdrijft en hoe je eraan werkt

De wielen draaien verder dan de robot rijdt. Waar de tractiegrens ligt, waarom een draai op de plaats altijd slipt en waarom systematische slip gevaarlijk is.

Inleiding

Laat een robot een vierkant van één meter rijden, vier draaibewegingen van 90°, terug naar het begin. Hij komt niet aan. Kalibreer de wieldiameter en de spoorbreedte tot de rechte lijnen exact kloppen, voer het opnieuw uit, en hij komt nog steeds niet aan — en op tapijt mist hij een ander bedrag dan op tegels.

Deze site noemt wielslip als de reden op de odometriepagina, de encoderpagina, het micromouse-project en een half dozijn andere. Wat geen van die zegt, is wat slip werkelijk is, hoeveel je ervan hebt, of welke delen je iets kunt doen.

Een encoder meet het wiel, niet de grond

Die zin is het hele onderwerp.

Een encoder telt wielomwenteringen. Odometrie heeft verplaatsing over de grond nodig. Dat is hetzelfde getal zolang het raakvlak niet slijt, en het verschil is de slipverhouding — het deel van de wielbeweging dat geen robotbeweging werd:

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

Twee gevolgen die al het volgende vormgeven:

Slip is van binnenuit onzichtbaar. Geen encoder, hoe goed ook, kan hem detecteren, want de encoder meet het ding dat is bewogen. Dit is dezelfde blindheid als bij de rondgang in de overbrenging en heeft dezelfde genezing: iets dat de buitenwereld meet.

Het is geen ruis. Ruis middelt weg; slip doet dat doorgaans niet, en de reden staat in het voorlaatste onderwerp.

Het tractiebudget

Een band kan alleen zo hard duwen als de wrijving toestaat:

F_max = µ × N

N is het gewicht dat werkelijk op de aangedreven wielen drukt — niet het hele gewicht van de robot. Hetzelfde product bepaalt hoe hard de robot iets anders kan duwen, en dat is de enige taak waarbij je de tractiegrens zo hoog mogelijk wilt hebben in plaats van net hoog genoeg. Een typisch 2WD-chassis met een zwenkwiel draagt ergens rond de helft tot twee derde van zijn massa op de aandrijfas, en de rest draagt niets bij aan tractie.

Deel door de massa en het plafond is een versnelling:

a_max = µ × (weight fraction on driven wheels) × g
Twee gestapelde grafieken. Het bovenste toont de maximale versnelling voor slip oplopend met het aandeel gewicht op de aangedreven wielen, voor drie oppervlakken: rubber op hout met wrijving 0,9, geschilderd beton met 0,6 en stoffige tegels met 0,3, met een gestreepte lijn die 0,5 meter per seconde kwadraat markeert, laag in de grafiek. De onderste grafiek toont de gierfout oplopend met het aantal draaibewegingen van 90 graden op de plaats bij 2 procent slip op één wiel: een rechte lijn voor systematische slip die 27 graden bereikt bij 60 draaibewegingen, en een veel vlakkere wortelcurve voor slip met willekeurig teken die ongeveer 7 graden bereikt.
Boven: op stoffige tegels kan een robot met 55% van zijn gewicht op de aandrijfas 1.6 m/s² halen voordat de wielen wegbreken — drie keer de 0.5 m/s² die de pagina over motorkeuze aannam, dus dat ontwerp heeft marge. Onder: dezelfde 2% slip is 45° gierfout na 50 draaibewegingen als hij systematisch is en 6° als het teken willekeurig is. SVG downloaden

De nuttige lezing van het bovenste paneel is dat rechtdoor rijden op een hobbymodel zelden tractiebeperkt is. Zelfs het slechtste oppervlak daar levert meer dan driemaal de versnelling waar een typisch ontwerp om vraagt. Als je robot rechtdoor slipt, geef je een stapverandering op in plaats van een helling — en dat is precies wat een bewegingsprofiel moet voorkomen.

Draaien is een ander verhaal.

Een draai op de plaats slipt altijd

Een robot met differentiële aandrijving heeft vaste wielen. Ze kunnen vooruit en achteruit rollen en kunnen niet zijwaarts bewegen — en een draai op de plaats vraagt precies dat.

Draai het chassis om zijn middelpunt en elk punt op het raakvlak van elke band beschrijft een boog, terwijl het wiel alleen langs een rechte lijn kan rollen die daaraan raakt. Het verschil heet schuren: de band wordt de hele draaibeweging lang zijwaarts over de vloer gesleept. Een breed raakvlak schuurt meer dan een smal, en een zwenkwiel dat niet vrij kan draaien voert ook verzet tegen de draai.

Een draai op de plaats is dus geen manoeuvre dat misschien slipt. Het is er een dat per constructie slipt, en zijn uit de encoder afgeleide gierhoek is elke keer ongeveer evenveel fout, in dezelfde richting.

Die laatste bijzinnade is het probleem.

Systematische slip is de gevaarlijke soort

Neem een spoorbreedte van 90 mm. Een draai van 90° op de plaats rolt elk wiel 70.7 mm. Verliest één wiel daar 2% van aan schuren, dan komt de gierhoek 0.9° te kort uit — een getal dat klein genoeg is om bij één enkele draai onzichtbaar te zijn.

Rij nu een doofhof. Het onderste paneel van de figuur toont de twee toekomsten:

  • Willekeurig teken — sommige draaibewegingen te kort, sommige te lang. De fout groeit als √N. Na 50 draaibewegingen is hij ongeveer 6°, en het is werkelijk een willekeurige wandeling die je kunt modelleren.
  • Systematisch — elke draai naar links schuurt om dezelfde reden dezelfde kant op. De fout groeit als N. Na 50 draaibewegingen is hij 45°, en de robot rijdt een gang af die hij ergens anders denkt te zijn.

Echte robots liggen veel dichter bij de tweede. Het schuren komt uit geometrie die niet verandert tussen draaibewegingen, en dus verandert de fout ook niet. Daarom wordt “hij drijft een beetje” over een run “hij is verloren”, en daarom heeft de micromouse een gyroscope nodig in plaats van betere encoders.

Uitzoeken hoeveel je hebt

Drie tests, goedkoopste eerst.

Rij een rechte lijn en meet. Markeer de vloer, geef exact 1000 mm op, meet wat je kreeg. Herhaal op twee oppervlakken. Een consistente schaalfout is kalibratie; een fout die met het oppervlak verandert is slip.

Draai tien keer en kijk. Geef tien draaibewegingen van 90° op — dat is 900°, oftewel twee en een halve volledige omwenteling. Markeer de beginrichting en meet het eind. Deel de fout door tien. Dit versterkt een fout per draaibeweging die anders niet meetbaar is, en het is het nuttigste op deze pagina.

Vergelijk de encoders met een gyroscope. Heb je een MPU-6050, integreer dan de Z-snelheid door een draai en vergelijk die met de uit de encoder afgeleide gierhoek. Het verschil is de slip, rechtstreeks gemeten, live, zonder vloermarkeringen. Waar ze verschillen hebben de encoders het mis — de gyroscope geeft niet om wat de wielen deden.

Een stroompiek zonder bijbehorende versnelling is het andere live signaal: de motor werkt en de robot beweegt niet.

Wat er echt helpt

Ram alles op. Een opgedwongen stap in wielsnelheid vraagt om oneindige versnelling, en de band levert wat hij kan en slijt voor de rest. Het profielvorm geven van het commando is gratis en het is de grootste afzonderlijke winst.

Draai in een boog waar dat kan. Een boog rolt beide wielen vooruit met verschillende snelheden en schuurt veel minder dan een draai op de plaats. Waar de kaart het toelaat, heeft dat de voorkeur — het is ook de oplossing voor de rondgang, want in een boog wordt een wiel ook nooit omgekeerd.

Krijg het gewicht boven de aandrijwielen, en houd het zwenkwiel vrij. Gewicht op een niet-aangedreven zwenkwiel is gewicht dat geen tractie maakt.

Versmal het raakvlak als je vaak draait. Brede, grijzende banden helpen bij versnellen en hinderen draaibewegingen op de plaats; de afweging is reëel en je kunt hem bewust kiezen.

Jaag µ niet na met alleen meer grip. Meer wrijving betekent dat de slip later optreedt, niet dat odometrie klopt. Het is marge, geen oplossing.

Waar niets helpt

Wielodometrie is doodse schatting. Ze heeft geen referentie aan de wereld, dus slip, rondgang en diametrafout stapelen zich op en worden nooit gecorrigeerd — dit is dezelfde onbegrensde drift waar de het pad motorbesturing voor waarschuwt, en het is een eigenschap van de methode in plaats van een gebrek in je bouwsel.

De oplossing is een tweede mening:

  • Een gyroscope corrigeert de gierhoek, en dat is de fout die het meest pijn doet, en hij is goedkoop.
  • Muur- of lijnreferenties zetten de laterale positie elke keer terug wanneer je er een ziet — zo blijft een murenvolger een gang af recht.
  • Een kaart — scanmatching of SLAM — corrigeert beide, ten koste van een lidar en veel meer rekenkracht.

Odometrie is uitstekend over een meter en waardeloos over honderd. Ontwerp daaromheen in plaats van te proberen het te repareren.

Als het misgaat

Symptoom Meestal
Het vierkant sluit nooit ondanks perfecte rechte lijnen Schuren bij draaien op de plaats; meet het met de test met tien draaibewegingen
Afstand klopt op tegels, te kort op tapijt Slip, geen kalibratie — de fout volgt het oppervlak
De gierfout groeit gestaag in één richting Systematische slip; een gyroscope is de goedkope oplossing
De fout groeit eerst snel en vlakt dan af in een gang De muur corrigeert je — dat is de referentie die zijn werk doet
De robot slipt alleen bij het starten Een opgedwongen stap in plaats van een helling
Gyroscope en encoders verschillen tijdens draaibewegingen Correct — dat verschil is de meting
Greppige banden verhelpt de odometrie niet Grip verhoogt de slipdrempel; hij maakt encoders niet eerlijk
Slechts één wiel lijkt te slijpen Massaverdeling of een klemmend zwenkwiel, niet de motor

De gewoonte die het waard is om mee te nemen is de test met tien draaibewegingen. Die maakt van een fout die niemand ziet een getal, en zodra je het getal hebt kun je bepalen of je een gyroscope, een helling of helemaal niets nodig hebt.

De aandrijflijn waarin slip het mechanisme is

Alles hierboven behandelt slip als een fout. Op een mecanumbasis is het het ontwerp: de rollen laten bewust zijwaarts los, en zo beweegt de robot überhaupt zijwaarts. De gevolgen zijn het waard plat te zeggen, want ze veranderen wat je moet meten en niet hoe hard je je moet inspannen.

  • Zijdelingse odometrie is het zwakste getal op de robot, geen afstelprobleem. De encoder is aan het wiel vastgeschroefd en het wiel is bewust niet de vloer.
  • Er is één gratis controle en die is half blind. Vier wielen en drie vrijheidsgraden laten één vergelijking over — FL + FR = RL + RR op elk star, grijzend chassis — dus de rest ziet één wiel dat slipt en kan niet zien dat alle vier tegelijk slippen. De afleiding staat hier.
  • De oplossing zijn wielen zonder aandrijving. Omni-dodewielen op veren dragen geen koppelmoment, slippen dus niet bij een commando, en maken van het slechtste getal op de robot het beste.

Zet de gripschuif op minimum en kijk hoe de encoders volhouden dat de robot gearriveerd is.

Verken de graaf

Onderdeel van deze bouwprojecten

Projecten en leerroutes waarin deze tutorial voorkomt.

Verder lezen

Bronnen