BouwrouteGevorderdEen weekend

Bouw een Mecanum-robot die zijwaarts rijdt

Een robot die een vierkant van 1 m zijwaarts aflegt, binnen 5 cm terugkomt zonder ooit te draaien en dezelfde kant op blijft rijden over de vloer terwijl je hem laat draaien.

Technisch schema: Bouw een Mecanum-robot die zijwaarts rijdtBASE_LINKVxVyωzFOUR WHEELS · THREE DEGREES OF FREEDOMROLLERS AT 45° MAKE AN X

Wat je bouwt

Een vierwielerrobot die op de vloer elke richting op kan zonder eerst te draaien en kan draaien zonder te veranderen waar hij heen gaat. Duw hem zijwaarts door een gang waarin hij net past; houd een camera op iets gericht terwijl je om dat punt heen beweegt; corrigeer 3 cm van een lijn door 3 cm te stappen, in plaats van een boog uit te rijden en weer terug.

Dit is de eerste robot op deze site met drie onafhankelijk regelbare snelheden in plaats van twee. Het is ook de eerste waarvan de aandrijving werkelijk moeilijker is dan de sensoren, en daarom bestaat vrijwel de hele bouw uit motoren, encoders en regellussen.

De acceptatietest is bewust bot: rij een vierkant van 1 m zijwaarts af en kom binnen 5 cm terug met dezelfde koers. Geen enkele robot met differentiële aandrijving kan die test zelfs maar proberen.

Het getal dat dit project bepaalt

Alles in deze bouw komt terug op één constante:

k = lx + ly

waar lx de halve wielbasis is (van vooras tot achteras, gehalveerd) en ly de halve spoorbreedte (van linker- tot rechterwielen, gehalveerd). In de referentieopbouw zijn dat 75 mm en 85 mm, dus k = 0,160 m.

Dat ene getal koppelt rotatie aan de wielen. Is het verkeerd, dan rijdt de robot nog steeds — maar een zuivere spinopdracht kruipt over de vloer en een zuivere zijwaartse beweging maakt een bocht, omdat rotatie en translatie in elkaar overlopen. Meet van wielmiddelpunt tot wielmiddelpunt, niet vanaf de chassisplaat; die is meestal breder dan je denkt.

De andere getallen die je voor de start met marker op het chassis wilt schrijven:

Grootheid Referentieopbouw Herkomst
Wielstraal r 48,5 mm Mecanum-wielen van 97 mm
Tellingen per wielomwenteling 1440 12 CPR × 30:1 × 4 kwadratuurranden
Meter per telling 212 µm 2πr ÷ 1440
Maximale wielsnelheid V_MAX 0,60 m/s Op blokken gemeten, daarna 15% verlaagd
Diagonale bovengrens 0,424 m/s V_MAX ÷ √2, en geen verbetering van de motor haalt die grens weg
Acceleratiebovengrens 5,9 m/s² μg/√2 bij μ = 0,85 — massa valt weg

Stuklijst

Onderdeel Aantal Geschatte kosten Opmerkingen
Mecanum-wielen, 80 of 97 mm 4 £28–70 Koop ze als set van vier — twee linkshandige en twee rechtshandige
N20-tandwielmotor met encoder, 30:1 4 £9–14 per stuk Gebruik gelijke motoren. 100–250 rpm aan het wiel is het bruikbare bereik
TB6612FNG dubbele H-brug 2 £4–8 per stuk Een L298N werkt en verliest ~3 V; op een 2S-pakket is dat het meeste van je snelheid
ESP32-ontwikkelbord 1 £6–12 Vier PWM-kanalen, vier encoder-interruptparen en gratis Wi-Fi-telemetrie
MPU6050-IMU 1 £2–4 Monteer hem vlak, uit de buurt van de motoren, op de middellijn van het chassis
2S LiPo, 1500–2200 mAh, 25C 1 £12–20 Kies op stroom, niet op capaciteit — vier motoren vragen bij vastlopen samen ~5 A
5 V-BEC of buck-converter 1 £3–5 Voed de ESP32 niet vanaf de motorvoeding
Chassisplaat, 200 × 180 mm 1 £10–25 Lasergesneden acryl, 3 mm aluminium of zelf snijden
Motorhouders, naafstukken, bevestigers 1 set £8–15 Pas de boring van de naaf op de motoras — 3, 4 of 6 mm
Bulkcondensator, 470 µF 2 £1 Eén over de motorvoeding van elke motordriver

£90–170 in totaal. De wielen en het viervoudige aantal motoren zijn de reden dat een £50-robot met twee wielen hier uiteindelijk deze robot wordt.

Hoe alles samenhangt

        2S LiPo ──┬── 470 µF ── TB6612FNG #1 ── FL motor ── FL encoder ─┐
                  │                         └── FR motor ── FR encoder ─┤
                  ├── 470 µF ── TB6612FNG #2 ── RL motor ── RL encoder ─┼── ESP32
                  │                         └── RR motor ── RR encoder ─┘   (4 PWM,
                  └── 5 V BEC ──────────────────────────────── ESP32 ──────  8 GPIO,
                                                                   │         I²C)
                                                   MPU6050 ── I²C ─┘

Drie bedradingskeuzes zijn niet voor de hand liggend:

  • De ESP32 krijgt zijn eigen spanningsregelaar. Vier motoren die tegelijk starten laten het pakket hard inzakken, waardoor een besturingseenheid op dezelfde baan brown-out krijgt en tijdens een commando herstart. Het lijkt precies op een firmwarecrash. Lees de tutorial over het stroombudget voordat je de schuld op je code legt.
  • Een bulkcondensator over elke motordriver. 470 µF dicht bij het bord. H-bruggen trekken stroom in korte pieken en de inductie van de leiding zet die pieken om in overspanningen.
  • De IMU gaat op de middellijn, vlak en zo ver van de motoren als het chassis toelaat. Yaw-drift is al slecht genoeg zonder een magnetisch veld van vier motoren erbij.

Bouw hem in mijlpalen

Elke mijlpaal heeft een test. Draag een mislukking niet verder — bij een vierwielerrobot vermenigvuldigen ze zich.

1. Wielen monteren en de X-controle

Monteer de vier wielen en ga recht boven de robot staan. Volg de lijn van de rollen die je bovenop elk wiel ziet.

Twee bovenaanzichten van dezelfde vierwielerrobot, met de neus naar boven. In het bovenste paneel, met de titel correct, zijn de armen lx + ly samen 160 millimeter; de langs de zichtbare rollen verlengde gestippelde cyanlijnen vormen een X en kruisen elkaar in het midden van de robot. In het onderste paneel, met de titel fout, staat een O; de absolute waarde van |lx − ly| is 10 millimeter; dezelfde lijnen van de rood gemarkeerde wielen vormen in plaats daarvan een ruit om de robot en gaan er nooit doorheen. Een bijschrift zegt dat je boven de robot moet staan en de rollen moet volgen die je bovenop ziet.
Mijlpaal 1, en de goedkoopste vijf seconden van de hele bouw. Verleng de rollen die je bovenop elk wiel ziet: ze moeten elkaar kruisen in het midden van de robot. SVG downloaden

Test: die vier lijnen wijzen naar het midden van de robot en vormen een X. Vormen ze een ruit, verwissel dan twee wielen diagonaal. Geslaagd: een X. Dit is een controle van vijf seconden die een dag bespaart.

2. Elke motor afzonderlijk

Sluit alle vier aan en schrijf een sketch die één wiel tegelijk een seconde lang op 40% laat draaien.

Test: roep ze één voor één aan en bevestig dat het juiste wiel de juiste kant op draait. Geslaagd: vier wielen, vier juiste richtingen, geen verwisselde paren. Herstel de bedrading in hardware, niet met minteken in code — anders raak je het overzicht kwijt.

3. Encoders

Draai elk wiel met de hand één omwenteling.

Test: druk de telling af. Geslaagd: binnen 2% van 1440 en positief wanneer het wiel vooruit draait. Een telling die springt of terugloopt betekent dat je op één kanaal in plaats van twee onderbreekt, of dat je een volatile long leest zonder interrupts uit te schakelen.

4. Kinematica op blokken

Zet de robot op blokken en geef een zuivere zijwaartse beweging op.

Test: diagonale paren werken tegen elkaar in — voor links en achter rechts gaan de ene kant op, voor rechts en achter links de andere kant. Geslaagd: precies dat patroon. Geef daarna een zuivere spinopdracht: de linkerkant de ene kant op, de rechterkant de andere. Is een motor het oneens, dan staat die in de verkeerde hoek en heeft stap 1 je misleid.

5. Eén snelheidsregellus

Stel feedforward en daarna PI in op één wiel, eerst op blokken en daarna onder belasting.

Test: geef 0,3 m/s op en druk met een vinger tegen de band. Geslaagd: de snelheid blijft gelijk en de PWM stijgt zichtbaar. Doe dit één keer goed; de andere drie zijn kopieën met hun eigen kS en kV.

6. Alle vier op een rechte lijn

Vier regellussen, 100 Hz, op de vloer. Rij 3 m rechtdoor.

Test: meet de zijdelingse drift aan het einde. Geslaagd: minder dan 20 mm en reproduceerbaar over drie ritten. Bij open lus is dit doorgaans 80–200 mm en elke keer anders.

7. Rij 1 m zijwaarts

Test: rij precies één meter zijwaarts en meet zowel de afstand als de koersverandering. Geslaagd: binnen 5 cm en de koers binnen 3°. Een consistente bocht betekent dat de constante k verkeerd is; een willekeurige bocht betekent dat een snelheidsregellus niet vasthoudt.

8. IMU en veldgeoriënteerd rijden

Kalibreer de bias bij het opstarten en voeg de resetknop voor de koers toe.

Test: houd de stuurknuppel naar voren en draai de robot met de hand een volledige omwenteling. Geslaagd: hij blijft dezelfde kant op over de vloer rijden. In stilstand drift yaw minder dan 3° per minuut.

9. Het vierkant

De acceptatietest. Rij 1 m vooruit, 1 m naar rechts, 1 m terug en 1 m naar links, zonder ergens een rotatie op te geven.

Test: afstand tot het startpunt en koersverandering. Geslaagd: binnen 5 cm en 3°.

Hoe een goed resultaat eruitziet

Meting Eerste poging, open lus Afgesteld, gesloten lus
Zijdelingse drift over een rechte lijn van 3 m 80–200 mm, varieert met de accu Minder dan 20 mm, reproduceerbaar
Nauwkeurigheid van 1 m zijwaarts rijden 10–20 cm, met een zichtbare bocht Binnen 5 cm
Koersverandering over het zijwaartse vierkant 10–30° Minder dan 3°
Maximale diagonale snelheid Wat overblijft bij verzadiging 0,42 m/s — de √2-grens, volledig benut
Snelheid wanneer het pakket inzakt van 8,4 → 7,0 V Daalt ~17% Blijft gelijk totdat de motoren verzadigd raken
Odometriefout over het vierkant Niet het meten waard 2–5 cm op een goede vloer, veel erger op een stoffige

Die laatste rij is eerlijk in plaats van teleurstellend. Bij deze aandrijving is het slippen van de rollen het mechanisme, dus de odometrie is het zwakste getal op de robot, zelfs wanneer alles werkt. Veranker die verwachting in je ontwerp in plaats van ernaar te jagen.

Hardware-opmerkingen die ertoe doen

De links-/rechthandigheid is een eigenschap van de set. Twee losse wielen die apart uit dezelfde advertentie worden besteld, hebben vaak dezelfde handigheid. Controleer dat voordat je boort.

Elke rol moet vrij kunnen draaien. Tik er met de hand tegen voordat je de wielen monteert. Een vastgelopen rol verandert die hoek in een gewoon wiel dat 45° af wijst, met onderbrekingen; dat leest precies als een softwarebug.

Mecanum-wielen zijn zwaar. 180–400 g per stuk, dus tot 1,6 kg van de robot bestaat uit wielen. Dat is roterende massa aan de uiteinden van de hefboomsarmen. De robot voelt daardoor traag en daarom is de acceleratiebovengrens belangrijk.

De vloer is een component. Gepolierd beton en vinyl hebben ongeveer μ = 0,8. Een stoffige sportvloer, een laag hairspray die iemand op een andere robot gebruikte of een naad in het linoleum halveren die waarde lokaal, waardoor het gedrag van de robot verandert terwijl hij erover rijdt. Bekijk wat μ = 0,25 doet voordat je de afstelling de schuld geeft.

Als het misgaat

Symptoom Oorzaak Oplossing
Vooruit goed, maar bij zijwaarts rijden maakt hij een bocht en draait hij Een wiel staat in de verkeerde hoek Doe de X-controle; het kinematische restsignaal is groot en constant
Rijdt de andere kant op dan het commando Alle vier wielen zijn gespiegeld Verwissel het linkerpaar met het rechterpaar
Ook draaien op de plek verplaatst hem k verkeerd of gemeten op het chassis Meet opnieuw van wielmiddelpunt tot wielmiddelpunt
Robot reset wanneer alle vier motoren starten Brown-out, geen crash Eigen spanningsregelaar voor de ESP32; bulkcondensatoren; controleer de inwendige weerstand van het pakket
Diagonaal veel langzamer dan rechtdoor De √2-grens — werkt zoals ontworpen Niets te repareren
Leunt bij elke automatische regeling uit de bochten Per motor wordt de regeling begrensd in plaats van het commando geschaald Schaal op basis van het slechtste wiel
Rijd goed met de hand, maar hopeloos zelfstandig Odometrie, niet de regeling IMU voor de koers; houd ritten kort; overweeg dode wielen
Eén wiel zit altijd verzadigd Te hoge opdracht of die motor is de zwakste Verlaag V_MAX tot wat alle vier echt kunnen vasthouden
Encodertellingen drijven over minuten Overgeslagen randen bij hoge snelheid Onderbreek op beide kanalen; controleer of de ISR kort is

Waar je daarna kunt gaan

Dode wielen. Twee of drie ongekrachtte omnidirectionele wielen op veren, elk met een eigen encoder. Ze dragen geen aandrijfkoppel en slippen dus niet, en ze maken van het slechtste getal op deze robot het beste.

Holonome padvolging. Pure pursuit en Stanley gaan uit van een bestuurbare robot met conventionele besturing. Een basis die zijwaarts kan rijden, kan beter — volg de positie op het pad en de koers onafhankelijk, want je hebt aparte actuatoren daarvoor.

Een camera op een basis die de koers vasthoudt. De natuurlijke combinatie: een beeldverwerkingspipeline is veel eenvoudiger wanneer de camera op het doel kan blijven wijzen terwijl de basis van positie verandert. Daar is holonome aandrijving werkelijk voor bedoeld.

ROS 2. Deze aandrijving is de eerste hier waarin het veld linear.y van cmd_vel — door een robot met differentiële aandrijving expliciet genegeerd — eindelijk betekenis krijgt. Het vervangen van de twist-to-wheelsfunctie door de vierregelige Mecanum-versie is het meeste werk.

Projectroadmap

De bouwroute

Volg de techboom van onderdelen tot een werkende robot. Elk knooppunt wordt ontgrendeld zodra de voorwaarden klaar zijn, en je voortgang wordt op dit apparaat opgeslagen.

0 / 17 klaar

100%
Doel

Een robot die een vierkant zijwaarts aflegt en thuiskomt

Het hele project

Componenten

Tutorials in deze route

Oefen voordat je bedraadt

Stem het af in de live simulator

De bouwroute loopt via een lab in de browser. Krijg het gedrag hier goed en zet je instellingen daarna over naar de echte robot.

Veelgestelde vragen

Kan ik dit bouwen met een Arduino Uno?

Niet comfortabel, en de reden is het aantal pinnen, niet de rekenkracht. Vier wielen hebben vier PWM-uitgangen nodig en vier kwadratuur-encoders vier pinparen die interrupts kunnen verwerken. Een Uno heeft zes PWM-pinnen verdeeld over drie timers — en zodra je de Servo-bibliotheek of tone() gebruikt, stoppen er twee met werken — en precies twee externe interrupt-pinnen. Je kunt het oplossen met pin-change-interrupts en één encoder opgeven, maar dan vecht je het hele weekend met het bord in plaats van met de robot. Een ESP32 of Mega 2560 kost een paar pond meer en neemt het hele probleem weg. Deze bouw gebruikt een ESP32 omdat die ook Wi-Fi-telemetrie geeft, echt nuttig wanneer je vier regellussen tegelijk afstelt.

Hoeveel kost het bouwen van een mecanum-robot?

Rond £90–170, afhankelijk van de wielgrootte en motorkwaliteit; dat is ongeveer tweemaal een vergelijkbare tweekielerrobot. De stijging zit op voorspelbare plekken: vier mecanum-wielen in plaats van vier gewone wielen is de grootste post, vier motoren in plaats van twee, vier H-brugkanalen, vier encoderkabels en een grotere accu omdat vier vastgelopen tandwielmotoren tweemaal de stroom in het zwaarste geval vragen. De verhoging van het budget voor de besturingseenheid verrast mensen — reserveer daarvoor aan het begin, niet nadat het chassis is geboord.

Waarom rijdt mijn mecanum-robot goed vooruit maar draait hij bij zijwaarts rijden?

Eén wiel staat in de verkeerde hoek en dat is veruit de meest voorkomende fout bij het bouwen van een mecanum-robot. Vooruit lijkt normaal omdat de zijwaartse componenten elkaar nog grotendeels opheffen; bij zijwaarts rijden wordt de fout zichtbaar, omdat het verkeerd gemonteerde wiel dwars op het commando duwt in plaats van ermee mee. Ga boven de robot staan, kijk recht naar beneden en volg de rollen die je op elk wiel ziet: die vier lijnen moeten naar het midden van de robot wijzen en een X vormen. Vormen ze een ruit, verwissel dan twee wielen diagonaal. Je kunt precies zien wat een verkeerd gemonteerd wiel doet, nog voordat je er zelf een hebt, via de voorinstelling in de simulator voor één achterwaarts gemonteerd wiel.

Heb ik de IMU nodig?

Voor de zelfstandige tests niet — de robot rijdt zijn vierkant ook zonder IMU. Voor handmatig besturen wel, binnen ongeveer tien seconden na het overnemen van de besturingseenheid. Een holonome robot kan de ene kant op wijzen terwijl hij de andere kant op beweegt, dus een mens raakt vrijwel meteen de weg kwijt. Veldgeoriënteerde regeling lost dat op met één rotatiematrix en heeft daarvoor een yaw-hoek nodig. Het is een onderdeel van £2 en zes regels code, en elk team dat het oversloeg voegde het toe nadat iemand de robot voor de eerste keer tegen een tafel had gereden.

Hoe nauwkeurig is de odometrie op een mecanum-basis?

Minder nauwkeurig dan op de tweekielerrobots op deze site, en dat is geen afstemprobleem. De rollen slippen om zijwaartse beweging mogelijk te maken, dus een wielencoder meet het wiel en niet noodzakelijk de vloer. Verwacht dat de voorwaartse schatting op basis van de eigen beweging ongeveer zo goed is als bij elke robot met differentiële aandrijving en dat de zijwaartse schatting op basis van de eigen beweging merkbaar slechter is — enkele procenten op een goede vloer, veel meer op een stoffige. Plan daarop: gebruik de IMU voor de koers, houd zelfstandige ritten kort en voeg als de robot echt moet weten waar hij is ongekrachtte omnidirectionele wielen toe die geen aandrijfkoppel dragen en dus niet slippen.

Kan deze robot dingen duwen?

Slecht. Een mecanum-wiel kan alleen grijpen langs de as van zijn rol bij 45°, wrijving begrenst de volledige krachtvector en alleen de component langs de rolrichting verplaatst je — je krijgt dus ongeveer 71 procent van de tractie die dezelfde robot op gewone wielen zou hebben, nog zonder rekening te houden met het feit dat rolrubber meestal minder grip heeft dan een band. Meer gewicht helpt niet, omdat meer massa evenredig meer wrijving en evenredig meer traagheid oplevert en die elkaar exact opheffen. Als duwen het punt is, bouw dan een mini-sumo op gewone wielen; die wint elke keer.