BouwrouteGevorderdEen weekend, en daarna nog een

Bouw een robot die een gebied afdekt en de vloer veegt

Een robot die zelfstandig een ruimte afdekt met alleen twee botsingsschakelaars — plus gemeten bewijs of odometrie en een planner toevoegen de moeite waard is.

Technisch schema: Bouw een robot die een gebied afdekt en de vloer veegtBRUSHSERPENTINE COVERAGE PATH

Wat u bouwt

Een robot waarvan de taak niet is om ergens te komen, maar om overal te zijn geweest. Dat klinkt eenvoudiger dan navigatie, maar het is een groter probleem, want er is geen doel om naartoe te sturen en vanuit uw eigen positie kunt u niet bepalen of u vooruitgang boekt.

Het is ook het project waarbij meten vóór het bouwen het meeste oplevert. De hele eerste helft bestaat uit een robot met twee schakelaars die geen idee heeft waar hij is, en hij werkt — een werkelijk ongemakkelijke ontdekking als u net een weekend aan een plattegrond wilde besteden.

Het getal dat het project aanstuurt

De vloeroppervlakte gedeeld door de borstelbreedte geeft de afstand die een perfecte robot zou afleggen:

d_optimal = A / w

Een ruimte van 20 m² en een borstel van 250 mm leveren 80 m op. Elke strategie wordt beoordeeld als een veelvoud van die waarde, en die veelvouden liggen niet dicht bij elkaar:

Strategie Afstand voor 90% dekking In die ruimte, bij 0,25 m/s
Perfecte veeggang 1,0× 5 min
Geplande zigzagbanen 1,35× 7 min
Willekeurig afsturen 2,9× 15 min
Spiraal en verplaatsen 5,5× 30 min

Die getallen komen uit tests met de dekkingssimulator in vijf ruimten. Voer hem zelf uit voordat u iets koopt en verplaats het meubilair terwijl hij rijdt — de getallen veranderen met de ruimte, en dat is het grootste deel van de les.

Materialenlijst

Onderdeel Aantal Geschatte kosten Opmerkingen
Arduino Uno 1 $5–8 De willekeurige wandeling heeft bijna niets nodig; de geplande veeggang vereist encoders
Botsingsschakelaars 2 $1 Links en rechts, achter een omhullende behuizing. De primaire sensor hier
IR-reflectiearray 1 $5 Detectie van afdalingen — naar beneden op de vloerrand gericht, niet naar een lijn
N20-motoren met encoder 2 $16 Vereist voor de geplande veeggang; de willekeurige wandeling werkt zonder
TB6612FNG 1 $3
2WD-onderstel 1 $10 Rond is hier beter dan vierkant — het blijft niet in hoeken vastzitten
Accupack 1 $8 Afdekkingstochten duren lang; capaciteit is hier belangrijker dan bij andere builds

Totaal: ongeveer $50–65.

Dit is het enige project op de site waarvoor de goedkoopste sensor de belangrijkste is. Twee botsingsschakelaars en een willekeurige draai dekken een volledige ruimte als er genoeg tijd is — precies zo werkte de eerste generatie stofzuigrobots, en het is de moeite waard dit te bouwen voordat u naar iets slimmers grijpt.

De IR-array krijgt hier een ongebruikelijke taak: naar beneden op de vloer als afdalingssensor in plaats van vooruit naar een lijn. Een robot die een ruimte afdekt, komt bij de bovenkant van een trap.

Bouwvolgorde

1 — Laat de strategieën in de simulator racen. Een uur hier bespaart een weekend. Bekijk hoe de dekkingscurve vlak wordt en merk op dat alle drie de strategieën gelijk zijn over de eerste helft van de vloer.

2 — Bouw de aandrijving en de bumper, en niets anders. Twee hefboommicroschakelaars achter een veerkrachtige behuizing die aan elke kant minstens 45° om de robot loopt, normaal open (NO) naar GND bekabeld, met de interne pull-ups ingeschakeld. Contactdoorslag onderdrukken — één druk geeft negen flanken en een interrupt die telt, meldt een botsing negen keer.

3 — Voeg de afdalingssensoren toe voordat de robot ooit zonder toezicht rijdt. Reflectiesensoren aan de voorhoeken kijken naar beneden en worden bij elke doorloop gelezen. Bepaal daarna hoe snel u mag rijden: latentie maal snelheid, plus v²/2µg remafstand, moet passen binnen de afstand tussen het zien van de afdaling en die bereiken.

4 — Schrijf willekeurig afsturen en laat hem een uur rijden. Rijdt rechtdoor; keer na een botsing kort terug en draai een willekeurige hoek tussen 90° en 270°. De willekeur is essentieel — bij een vaste reflectiehoek wordt de ruimte een biljartafel en tekent de robot eindeloos een gesloten pad.

5 — Meet het. Teken met krijt of tape een raster op de vloer, laat de robot een vaste tijd rijden en tel de vakjes. Dit is het uitgangspunt en de enige eerlijke manier om vast te stellen of stap 6 u iets oplevert.

6 — Voeg nu pas odometrie toe. Encoders en odometrie voor differentiële aandrijving geven een schatting van de positie. Plan zigzagbanen op 80–90% van de borstelbreedte afstand, dus met 10–20% overlap, en route om meubilair heen in plaats van er tegegaan.

7 — Bekijk hoe de rijen niet meer evenwijdig worden. Dat gebeurt binnen ongeveer tien rijen, omdat odometrie afwijkt. Dat is geen bug in uw planner; het is de reden dat commerciële machines een gyroscoop, een plafondcamera of een baken hebben. De beslissing of u er een toevoegt, is het echte einde van dit project.

Hardware-opmerkingen die ertoe doen

Rond onderstel, wielen op de middellijn. Een ronde robot kan na elke botsing altijd draaien. Een vierkante robot kan diagonaal in een hoek vastzitten en heeft een achterbumper en extra gedrag nodig om los te komen.

De borstel moet breder zijn dan de robot. Dit is geen versiering. Een planner houdt het lichaam bij elke muur op afstand, dus alles wat het lichaam niet kan bereiken blijft onbedekte vloer — in de simulator liggen 130 van de 133 vakjes die de planner mist binnen twee cellen van een muur of poot van een tafel. Een uitstekende borstel bereikt die gebieden wel.

Twee helften van een bumper, niet één. Eén schakelaar vertelt u dat u ergens tegenaan bent gekomen. Twee vertellen u welke kant, en dat is de informatie die de draairichting nodig heeft, en het kost één pin.

Budget de accu in meters, niet minuten. Een uur bij 0,25 m/s is 900 m. Eén ruimte met willekeurig afsturen vergt ongeveer 540 m voor 99%. Drie ruimten zitten er niet in, en dat rekenwerk — niet enig algoritmisch inzicht — heeft de hele productcategorie naar kaartvorming gestuurd.

Zo ziet goed eruit

Dekking is een van de weinige robotgedragingen met één helder getal, en de vergelijking tussen strategieën is dramatisch:

Strategie Dekking na 1× de vloeroppervlakte aan rijafstand Na 3× Na 10×
Willekeurig afsturen ~35% ~70% ~93%
Spiraal, daarna afsturen ~45% ~78% ~95%
Geplande zigzagveeggang ~85% ~99% ~99%

De vorm van die kolommen is de hele les. Willekeurig afsturen nadert asymptotisch volledige dekking aan en komt er nooit helemaal — de laatste paar procent kosten langer dan de eerste negentig procent. Een geplande veeggang bereikt dat in ongeveer één veegbaan en heeft daarna niets meer te doen.

Dat is het verschil tussen geheugen hebben en niet hebben, uitgedrukt als getal.

Meting Typisch
Afstand tussen de rijen 80–90% van de effectieve breedte van de robot, zodat de banen overlappen
Afwijking van de koers tijdens één veegbaan van 4 m 3–8° zonder gyroscoop, minder dan 2° met een gyroscoop
Positieafwijking na tien veegbanen 15–40 cm met alleen odometrie
Praktische ruimtegrootte met alleen odometrie Tot ongeveer 4 × 4 m voordat de veeggang zichtbaar scheef loopt

De laatste rij is de eerlijke bovengrens van dit project. Een geplande veeggang hangt af van het weten waar u bent, en odometrie wijkt onbeperkt af — dus voorbij ongeveer 4 m zijn de evenwijdige veegbanen niet meer evenwijdig en ontstaan er gaten. Dat is geen afstemmingsprobleem; het is waarom er kaartvorming bestaat.

Wanneer het misgaat

Symptoom Meestal
Tekent dezelfde lus voor altijd De reflectiehoek bij een botsing is vast (deterministisch); maak hem willekeurig
Bereikt snel 90% en lijkt daarna te stoppen Werkt zoals ontworpen — dat is de exponentiële dekkingscurve
Eén botsing wordt meerdere keren geteld De contactdoorslag wordt niet onderdrukt, of het venster is korter dan de contactdoorslag van 5 ms
Rijdt de trap af Te snel om de afdaling binnen het detectiebudget te zien, of de lus blokkeert
Rijen wijken af van evenwijdig Odometrie, niet de planner. Voeg een koersreferentie toe
Mist stroken tussen rijen De afstand tussen de rijen staat exact op de borstelbreedte, zonder overlap
Komt in een hoek vast Vierkant onderstel of geen achterbumper
Komt nooit achter de bank De overgang tussen de rijbanen is nooit gepland

Zes van die acht hebben te maken met waarneming, mechanica of rekenwerk en niet met een algoritme — dezelfde verdeling als bij de micromouse, en om dezelfde reden.

Voor de reactieve laag die dit project deelt met elke andere mobiele robot is de robot voor obstakelvermijding de eenvoudigere build met grotendeels dezelfde hardware, en het pad voor reactieve navigatie behandelt de waarneming en het gedrag onder beide.

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 / 18 klaar

100%
Bouw

Laat hem met twee schakelaars een ruimte afdekken

Bouwstap

Bouw

Voeg de geplande veeggang toe

Bouwstap

Doel

Dek een ruimte af op één lading

Doel

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

Is dit een stofzuigrobot?

Het is de navigatiehelft van een stofzuigrobot, en juist die helft is interessant. Zuigkracht toevoegen is een mechanisch probleem — een ventilator, een borstelas, een stofbak en aanzienlijk meer accucapaciteit — en levert niets op dat het dekkingsprobleem niet al biedt. Bouw hem met een droge doek of een stofdoek aan de onderkant en hij reinigt een harde vloer echt, terwijl elk algoritme hetzelfde is als bij een commerciële machine.

Waarom beginnen met willekeurig afsturen als een geplande veeggang beter is?

Omdat willekeurig afsturen werkt met sensoren die u in een middag kunt bouwen en omdat het u een gemeten uitgangspunt geeft dat de planner moet verslaan. In de simulator bereikt willekeurig afsturen de helft van de vloer over dezelfde afstand als een planner — het verschil ontstaat pas daarna. Bouwt u de planner eerst, dan besteedt u een weekend aan het corrigeren van de odometrische afwijking zonder ooit te weten wat hij u opleverde.

Hoeveel levert de planner werkelijk op?

Gemeten over vijf ruimten in het lab: een geplande veeggang bereikt 90 procent dekking over 1,35 keer de theoretische minimumafstand, willekeurig afsturen heeft 2,9 keer nodig en een spiraalstrategie 5,5 keer. In een ruimte van 20 vierkante meter met een borstel van 250 mm bij 0,25 m/s is dat 7 minuten tegenover 15 tegenover 30. De keerzijde is dat de planner nooit 99 procent haalt, omdat hij bij elke muur en poot van een tafel een veiligheidsmarge aanhoudt.

Heb ik de encoders nodig?

Niet voor de eerste robot — hij heeft er geen gebruik voor. Ze staan op de onderdelenlijst omdat de tweede helft van het project ze nodig heeft en omdat achteraf encoders op een gebouwd onderstel veel lastiger is dan ze meteen monteren. Koop de motoren met encoders, laat de draden onverbonden en pak ze pas op wanneer u aan de geplande veeggang begint.

Wat voorkomt dat hij de trap af rijdt?

Reflectiesensoren die aan de voorhoeken naar beneden kijken en bij elke doorloop van de lus worden gelezen, plus een snelheidsgrens die uit rekenwerk volgt in plaats van uit gewoonte. De robot legt zijn eigen latentie maal zijn snelheid af voordat het remmen begint, en heeft daarna een remafstand van v kwadraat gedeeld door tweemaal mu g. Beide termen moeten passen binnen de afstand tussen waar de sensor de afdaling ziet en waar de wielen die bereiken.

Waarom een rond onderstel?

Omdat de voetafdruk van een ronde robot bij het draaien niet verandert en hij dus altijd ter plaatse kan draaien na een botsing. Een vierkante robot die diagonaal in een hoek vastzit, moet eerst achteruit, waarvoor een achterbumper en extra gedrag nodig zijn. Om dezelfde reden is vrijwel elke commerciële vloerrobot rond.