BouwrouteGevorderdEen weekend

Bouw een grijp-en-plaatsrobot die weet wanneer hij misgreep

Een arm die onderdelen uit een lade oppakt en in twee bakken sorteert, een misgreep detecteert, het opnieuw probeert en vastlegt hoeveel cycli goed gingen.

Technisch schema: Bouw een grijp-en-plaatsrobot die weet wanneer hij misgreepTAPER 20°SERVOSPRING kGRASP LINECONE ±31° AT μ 0.6WINDOWCRUSHSLIP0 STEPS FITTHE KNOB IS A POSITION · THE WALLS ARE FORCES

Wat u bouwt

Een arm die een lade leeghaalt. Onderdelen gaan in één van twee bakken, afhankelijk van iets dat u eraan kunt zien — afmeting, kleur, uit welke houder ze komen — en de machine draait zonder toezicht door tot de lade leeg is of er iets misgaat, waarna hij stopt en aangeeft in welke toestand dat gebeurde.

De robot is niet het interessante deel. Robotarmkits met vier vrijheidsgraden kosten £40 en de kinematica is een pagina met trigonometrie. Het interessante deel is dat een machine voor grijpen en plaatsen met een percentage wordt beoordeeld, en de stap van “het werkte op video” naar “hij deed het vijftig keer achter elkaar” is een ander technisch probleem dan de stap naar “hij beweegt überhaupt”.

Twee dingen brengen u daar, en beide zitten in de grijper.

De twee beslissingen die ertoe doen

1. De vinger mag niet stijf zijn

Dit is het punt waarvan mensen verrast zijn, dus zet het op een rij voordat u iets print.

De knop van uw grijper is een positie — een servohoek. De grenzen van het object zijn krachten: een vloer waaronder het eruit valt en een plafond waarboven het wordt vernietigd. De verhouding daartussen is de serie-stijfheid k van alles tussen het hoornschoen en het object. Het venster waarop u werkelijk moet mikken is dus

window (mm) = ( min(F_crush, F_servo) − F_slip ) / k

Een stijve geprinte vinger heeft ongeveer 25 N/mm. Een hobby-servomotor op een hefboomsarm van 30 mm lost ongeveer 0,524 mm vingerverplaatsing op. Reken het door voor een aardbei en het venster is 0,108 mm — vijf keer fijner dan één stap, dus er bestaat geen werkend commando en afstemming vindt er geen.

Vinger k Venster Werkende servoposities
Stijf geprint 25 N/mm 0,108 mm 0
Schuimdrukstuk 4 N/mm 0,677 mm 1
Veer in serie 0,8 N/mm 3,386 mm 7
Geprinte flexure 0,35 N/mm 7,739 mm 15

Plaats een 40p-rekveer tussen het hoornschoen en de vinger en het probleem verdwijnt. Dimensioneer uw exemplaar in het lab met uw eigen object en uw eigen hefboomsarm voordat u filament gebruikt, en lees kracht, vastlopen en soepelheid bij servogrijpers voor de volledige redenering.

2. Er moet een verificatiestap komen

De cyclus bestaat uit naderen, dalen, grijpen, verifiëren, tillen, overbrengen en plaatsen. Zonder de verificatietoestand is elke mislukking stil: de grijper sluit op niets, de arm vervoert lucht over de tafel en opent boven de bak, en de teller zegt dat het gelukt is.

Een hefboommicroschakelaar aan de binnenkant van één vinger kost vijftig pence en één ingangspin, en is het waardevolste onderdeel van deze build. Lees hem af na 300–400 ms wachttijd — een soepele vinger meetrilt na het sluiten en bemonstering tijdens die rilling is een kwestie van geluk — ontdanker hem over drie opeenvolgende metingen en geef de toestandsmachine een RECOVER-toestand met een begrensd aantal nieuwe pogingen. De tutorial over de toestandsmachine bevat het hele ontwerp.

De build, in volgorde

  1. Kies de eind-effector. Zijn uw onderdelen vlak en van boven bereikbaar, bekijk dan eerst de prijs van een zuignap en een kleine pomp — die verslaan alles wat u print. Kies anders twee vingers. Grijpertypen en grijpkracht.
  2. Meet uw object. Massa op een keukenweegschaal, platdrukkraft op dezelfde weegschaal met enkele opofferingsonderdelen en μ met een bagageweegschaal die u over het materiaal van het drukstuk trekt. Deze drie getallen bepalen het ontwerp, en de waarden die u online vindt kloppen niet voor uw onderdeel.
  3. Controleer krachtafsluiting. Als de vlakken waarop de drukstukken komen sterker taps lopen dan atan(μ), houdt geen enkele kracht het onderdeel vast en hebt u een V-groef of een ander grippunt nodig. Wrijving en krachtafsluiting.
  4. Dimensioneer de grijper in het lab. Bepaal de hefboomsarm vanaf het breedste object en controleer het venster tegen de servostap. De grippersimulator.
  5. Print de grijper met een flexure of een veer in serie, TPU-drukstukken, een harde aanslag en een microschakelaar. Servogrijper.
  6. Bekabel vijf servomotoren goed. PCA9685 via I²C, een aparte spanningsrail voor de servomotoren en ontkoppeling. Doe dit voordat u firmware schrijft, anders besteedt u een dag aan het debuggen van resets die door een spanningsprobleem worden veroorzaakt.
  7. Schrijf de toestandsmachine, niet-blokkerend, met VERIFY en RECOVER. Toestandsmachine voor grijpen en plaatsen.
  8. Begrenst de versnelling met een bewegingsprofiel, zodat de gedimensioneerde grijpkracht het overbrengen overleeft.
  9. Voer vijftig cycli uit en tel.

De meting

Vijftig opeenvolgende cycli zonder toezicht, met een teller en een foutenlog dat bij iedere mislukking de toestand vastlegt. Dat is de oplevering en het is veel veeleisender dan een video.

Resultaat Betekenis
Boven 95% U hebt een machine. Ga verder met de stand meten in plaats van die handmatig vast te leggen
80–95% Meestal de naderingsstand of te weinig stabilisatietijd vóór de verificatie
Onder 80% Meestal voeding of een grip die is gedimensioneerd zonder versnellingsterm
Mislukt alleen laat in de reeks Servomotoren worden warm of drukstukken raken vuil. Beide zijn reëel en beide lijken op spoken

De tabel met storingen in de tutorial over de toestandsmachine koppelt de meeste symptomen aan oorzaken.

Wat dit project niet is

Het doet geen visuele waarneming en het plant niet om obstakels heen. De lade staat op een bekende plek, de bakken staan op bekende plekken en de arm gaat waar hij heen wordt gestuurd. Dat is bewust — het doel van deze build is dat grijpen een afzonderlijk probleem is dat moeilijker is dan het lijkt, en anders dan positioneren, en dat de twee door elkaar halen de reden is waarom de eerste builds voor grijpen en plaatsen vastlopen.

Wanneer u de arm het onderdeel wilt laten vinden in plaats van te vertellen waar het is, hebt u camerakalibratie en markerstand nodig. Dat komt boven op een werkende grijpcyclus, niet ter vervanging ervan.

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

100%
Doel

Een arm die een lade sorteert en weet wanneer hij misgreep

Het hele project

Tutorial

Vijf servomotoren aansturen zonder het bord te laten resetten

30 min

Tutorial openen
Bouw

Sorteer vijftig onderdelen zonder toezicht

De meting

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

Wat is het lastigste onderdeel van een robot voor grijpen en plaatsen?

Niet de arm en niet de kinematica — het feit dat de grijper een positie aanstuurt, terwijl het object om een kracht vraagt. Met stijve, geprinte vingers is het bruikbare venster tussen het laten vallen van een onderdeel en het platdrukken ervan ongeveer een tiende van een millimeter breed, terwijl één stap van een hobby-servomotor de vingers ongeveer een halve millimeter verplaatst. Geen enkel commando valt binnen dat venster. De oplossing is een veer of flexure in serie, waardoor het venster evenredig met 1/k groter wordt. Dit is de beslissing die het hele project kan maken of breken. Dimensioneer de grijper in de grippersimulator voordat u iets print.

Waarom laat mijn robotarm het onderdeel vallen zodra hij beweegt?

Omdat u de greep hebt gedimensioneerd op het gewicht terwijl de beweging meer nodig heeft. De benodigde grijpkracht is m(g + a)·SF/(μ·n), en bij een vlotte robotarm is de versnellingsterm groter dan de zwaartekracht. Een greep die 58 g in rust kan houden met 1,63 N, heeft 1,93 N nodig tijdens een lift van 250 mm in 0,9 s en 2,59 N als u die in 0,35 s uitvoert — hij laat los na ongeveer 40 ms, voordat de arm merkbaar is verplaatst. Daardoor lijkt het alsof de grijper faalt en niet alsof er een rekensom fout is. Begrenst de versnelling met een bewegingsprofiel of grijp krachtiger; meestal is het profiel de goedkopere oplossing.

Hoe weet ik of de grijper echt iets heeft opgepakt?

Gebruik een hefboommicroschakelaar aan de binnenkant van één vinger, aangesloten op een ingangspin met een pull-up. Dat kost ongeveer vijftig pence, één draad en levert een rechtstreeks digitaal antwoord. Plaats hem op het soepele deel van de vinger, zodat hij bij een reproduceerbare kracht schakelt; ontdanker hem in software (drie opeenvolgende metingen, niet één) en lees hem af na 300–400 ms wachttijd, zodat u het meetrillen van de vinger vermijdt. Stroomsensoring werkt ook en signaleert bovendien platdrukken, maar vereist een gekalibreerde drempel en loopt weg naarmate de accu leegloopt.

Heb ik inverse kinematica nodig?

Niet strikt genomen — u kunt standen handmatig aanleren en de gewrichtshoeken opslaan, en voor een vaste lade en twee vaste bakken is dat werkelijk genoeg. U hebt inverse kinematica nodig zodra u in een rechte lijn wilt naderen en terugwijken, want dat zijn Cartesiaanse bewegingen die handmatig aangeleerde gewrichtshoeken niet opleveren. Omdat een onderdeel vanuit een hoek omgooien en optillen langs een curve het meetrekt, willen de meeste builds rechte segmenten, en dat betekent inverse kinematica.

Hoeveel servomotoren en stroom zijn er nodig?

Vijf: basis, schouder, elleboog, pols en grijper. Dat is meer kanalen dan een Uno betrouwbaar zelf mag aansturen, dus gebruik een PCA9685 via I²C. Voeding wordt onderschat — vijf hobby-servomotoren die tegelijk bewegen vragen bij inschakelen meerdere ampères, waardoor de 5 V-regelaar van het bord een brown-out krijgt en de besturingseenheid midden in een greepcyclus reset. Geef de servomotoren een eigen voeding met een gemeenschappelijke massa en plaats enkele honderden microfarad bij het bord.

Wanneer is het klaar?

Vijftig opeenvolgende cycli zonder toezicht, met een teller en een foutenlog. Dat is een veel beter doel dan een video van één geslaagde greep, want het dwingt u de verificatiestap, het begrensde aantal nieuwe pogingen en een voeding te bouwen die niet inzakt — precies de drie dingen die een demo van een machine scheiden. Onder 95% is er altijd één specifieke oorzaak, en het log vertelt u in welke toestand de mislukking optrad.