Inhoudsopgave:

RoboGlove: 12 stappen (met afbeeldingen)
RoboGlove: 12 stappen (met afbeeldingen)

Video: RoboGlove: 12 stappen (met afbeeldingen)

Video: RoboGlove: 12 stappen (met afbeeldingen)
Video: Verwijder de batterij NIET uit de auto. Doe het goed! 2024, Juli-
Anonim
RoboHandschoen
RoboHandschoen

Wij zijn een groep studenten van de ULB, Université Libre de Bruxelles. Ons project bestaat uit de ontwikkeling van een robothandschoen die een grijpkracht kan creëren om mensen te helpen dingen vast te pakken.

DE HANDSCHOEN

De handschoen heeft een draadverbinding die de vingers verbindt met sommige servomotoren: een draad is bevestigd aan het uiteinde van de vinger en aan de servo, dus wanneer de servo draait, wordt aan de draad getrokken en wordt de vinger gebogen. Op deze manier kunnen we, door de greep van de gebruiker te regelen via enkele druksensoren in het uiteinde van de vingers, de motoren op een gecontroleerde manier aansturen en het grijpen helpen door de vinger evenredig te buigen met de rotatie van de motoren en dus tot het oprollen van de draden. Op deze manier zouden we in staat moeten zijn om ofwel zwakke mensen objecten te laten grijpen of zelfs mensen in fysiologische omstandigheden te helpen objecten vast te pakken en zonder enige inspanning vast te houden.

HET ONTWERP

Het model is ontwikkeld om de handbeweging zo vrij mogelijk te maken. In feite hebben we alleen de strikt noodzakelijke onderdelen 3D geprint die we nodig hadden om draden, motoren en vingers aan te sluiten.

We hebben op elke vinger een bovenste koepel gedrukt in PLA: dit is het eindgedeelte waar de draden moeten worden aangesloten en het moet bescherming bieden aan de druksensor die binnenin is bevestigd. De druksensor wordt met hete lijm tussen het PLA-uiteinde en de handschoen gelijmd.

Dan hebben we twee 3D-geprinte ringen, per vinger, die een geleider vormen voor de draden. De duim is de enige vinger die slechts één bedrukte ring heeft. Er is één draad per vinger, dubbelgevouwen aan het uiteinde van de vingers. De twee helften gaan door de twee geleiders van het koepelgedeelte en in beide ringen: ze worden recht in gaten gezet die we aan de buitenkant van deze ringen hebben gemaakt. Vervolgens worden ze samengevoegd tot een wiel dat rechtstreeks op de motor is aangesloten. Het wiel is zo gemaakt dat het om de draden kan worden gewikkeld: aangezien onze motor een niet volledige rotatie heeft (lager dan 180°), hebben we het wiel zo gemaakt dat de draad over een afstand van 6 centimeter kan worden getrokken, dat is de afstand nodig om de hand volledig te sluiten.

We hebben ook twee platen geprint om de servomotoren en de arduino aan de arm te bevestigen. Het zou beter moeten zijn om het in hout of een hard plastic te snijden met een lasersnijder.

Stap 1: Boodschappenlijstje

Boodschappenlijst
Boodschappenlijst
Boodschappenlijst
Boodschappenlijst
Boodschappenlijst
Boodschappenlijst

Handschoen en draden:

1 bestaande handschoen (moet naaibaar zijn)

Oude spijkerbroek of een andere harde stof

Nylon draden

Lage dichtheid polyethyleen buizen (Diameter:4mm Dikte:1mm)

Elektronica:

Arduino Uno

1 Batterij 9V + 9V Batterijhouder

1 elektronische schakelaar

1 veroboard

3 servomotoren (1 per vinger)

3 propellers (meegeleverd met de servo's)

4 Batterijen AA + 4 AA Batterijen houder

3 druksensoren (1 per vinger)

3 weerstanden 330 ohm (1 per vinger)

6 elektrische draden (2 per sensoren)

Schroeven, moeren en bevestigingen:

4 M3 10 mm lang (om de Arduino te repareren)

2 M2.5 12mm lang (om de 9V batterijhouder te bevestigen)

6 bijbehorende noten

6 M2 10 mm lang (2 per servo om de wielen aan de servo's te bevestigen)

12 kleine kabelbinders (om de platen en de schakelaar te bevestigen)

7 grote kabelbinders (2 per motor en 1 voor de houder voor 4 AA-batterijen)

Gebruikt gereedschap:

3D-printer (Ultimaker 2)

Materiaal om te naaien

Heet lijmpistool

Optioneel: lasersnijder

Stap 2: Bereid draagbare structuur voor

Draagbare structuur voorbereiden
Draagbare structuur voorbereiden

De draagbare structuur is gemaakt met wat kleding: in ons geval gebruikten we een normale handschoen voor elektriciens en een jeansdoek voor de structuur om de pols. Ze waren aan elkaar genaaid.

Het doel is om een flexibele draagbare structuur te hebben.

De structuur moet sterker zijn dan een gewone wollen handschoen aangezien deze genaaid moet worden.

We hebben een draagbare structuur rond de pols nodig om de stroomleveranciers en de actuatoren vast te houden, en we moeten deze stabiel houden, dus we hebben ervoor gekozen om de sluiting verstelbaar te maken door klittenband (zelfklevende banden) aan de pols van de jeans aan te brengen.

Er werden wat houten stokken aan de binnenkant genaaid om de jeans steviger te maken.

Stap 3: Bereid de functionele onderdelen voor

Bereid de functionele onderdelen voor
Bereid de functionele onderdelen voor

De stijve delen worden gerealiseerd door middel van 3D-printen in PLA vanuit de.stl-bestanden in de beschrijving:

Finger Ring x5 (met verschillende schalen: 1x schaal 100%, 2x schaal 110%, 2x schaal 120%)

Finger Extremity x3 (met verschillende schalen: 1x schaal 100%, 1x schaal 110%, 1x schaal 120%)

Wiel voor motor x3

Voor de vingerdelen zijn verschillende schalen nodig vanwege de verschillende grootte van elke vinger en van elke falanx.

Stap 4: Bevestig de sensoren aan de extremiteiten

Bevestig de sensoren aan de extremiteiten
Bevestig de sensoren aan de extremiteiten

De druksensoren worden eerst aan kabeldraden gesoldeerd.

Vervolgens worden ze met behulp van een lijmpistool in de vingeruiteinden gelijmd: een kleine hoeveelheid lijm wordt in de extremiteit geplaatst, aan de kant met de twee gaten, dan wordt de sensor onmiddellijk aangebracht met het actieve (ronde) deel op de lijm (laat de piëzo-elektrische kant naar de binnenkant van de structuur wijzen en het plastic gedeelte direct op de lijm). De kabeldraden moeten over de top van de vinger naar de rug lopen om de elektrische bekabeling op de rug van de hand te laten lopen.

Stap 5: Bevestig de 3D-geprinte onderdelen aan de handschoen

Bevestig de 3D-geprinte onderdelen aan de handschoen
Bevestig de 3D-geprinte onderdelen aan de handschoen

Alle stijve delen (extremiteiten, ringen) moeten aan de handschoen worden genaaid om te worden vastgemaakt.

Om de ringen correct te plaatsen, draag je eerst de handschoen en probeer je de ringen om te doen, één per falanx, zonder dat ze elkaar raken tijdens het sluiten van de hand. Ongeveer zullen de ringen op de index 5 mm boven de basis van de vinger en 17 tot 20 mm boven de eerste worden bevestigd. Wat betreft de middelvinger, de eerste ring zal ongeveer 8 tot 10 mm boven de basis van de vinger zijn en de tweede ongeveer 20 mm boven de eerste. Voor wat betreft de duim, de benodigde precisie is erg laag, omdat het geen risico loopt om de andere ringen te hinderen, dus probeer het op de versleten handschoen aan te brengen, trek een lijn op de handschoen waar je de voorkeur geeft aan de ring zodat u deze vervolgens kunt naaien.

Wat betreft het naaien, is er geen specifieke techniek of vaardigheid vereist. Met een naald gaat het naaigaren in cirkels rond de ringen en gaat door het oppervlak van de handschoen. Een stap van 3-4 mm tussen twee gaten in de handschoen zorgt al voor een sterke fixatie, het is niet nodig om zeer dicht naaiwerk te maken.

Dezelfde techniek wordt toegepast om de extremiteiten te fixeren: de bovenkant van de extremiteit is geperforeerd om de naald gemakkelijk te laten passeren, dus alleen de kruisvormige vormen op de bovenkant van de vinger hoeven aan de handschoen te worden genaaid.

Dan moeten ook de polyethyleen geleiders worden bevestigd, volgens drie criteria:

het distale uiteinde (naar de vinger gericht) moet in de richting van de vinger wijzen, om hoge wrijvingen met de nylondraad die erin gaat te voorkomen;

het distale uiteinde moet ver genoeg zijn om de sluiting van de hand niet te hinderen (ongeveer 3 cm lager dan de basis van de vinger is goed genoeg, 4 tot 5 cm voor de duim);

de buizen moeten zo min mogelijk over elkaar gaan, om het grootste deel van de hele handschoen en de mobiliteit van elke buis te verminderen

Ze worden bevestigd door ze aan de handschoen en aan de pols te naaien, met dezelfde techniek als hierboven.

Om te voorkomen dat je door het naaiwerk glijdt, is er wat lijm tussen de buizen en de handschoenen aangebracht.

Stap 6: Bereid de wielen voor op de servo's

Bereid de wielen voor op de servo's
Bereid de wielen voor op de servo's

We hebben speciaal ontworpen wielen gebruikt, getekend en 3D geprint door onszelf voor dit project (.stl-bestand in de beschrijving).

Zodra de wielen zijn afgedrukt, moeten we ze aan de propellers van de servo's bevestigen door te schroeven (M2, 10 mm-schroeven). Omdat de gaten van de propellers kleiner zijn dan 2 mm diameter door de M2 te schroeven, zijn er geen moeren nodig.

De 3 propellers kunnen op elke servo worden toegepast.

Stap 7: Bevestig de motoren aan de arm

Bevestig de motoren aan de arm
Bevestig de motoren aan de arm

Deze stap bestaat uit het bevestigen van de motoren aan de arm; om dat te doen moesten we een extra PLA-plaat afdrukken om een steun te krijgen.

Eigenlijk konden de motoren niet direct aan de arm worden bevestigd, omdat de wielen, die nodig waren om de draden te trekken, tijdens de beweging geblokkeerd konden worden door de handschoen. Dus hebben we een PLA-plaat met de afmeting 120x150x5 mm 3D geprint.

Daarna hebben we de plaquette aan onze handschoen vastgemaakt met wat kabelbinders: we hebben met een schaar enkele gaten in de handschoen gemaakt, daarna hebben we gaten in de plastic plaquette gemaakt met een boor en alles in elkaar gezet. Er zijn vier gaten in de plaquette nodig in het midden, tussen de omtrek, om de kabelbinders door te laten. Ze zijn gemaakt met een boor. Deze bevinden zich in het midden en niet aan de zijkanten van de plaat om de jeans rond de arm te kunnen sluiten zonder dat de plaat deze blokkeert omdat de plaat niet flexibel is.

Vervolgens worden er nog andere gaten in de plastic plaat geboord om de motoren te bevestigen. De motoren worden vastgezet met twee gekruiste kabelbinders. Aan de zijkanten werd wat lijm toegevoegd om de fixatie te verzekeren.

De motoren moeten zo geplaatst worden dat de wielen elkaar niet hinderen. Er zijn dus gescheiden in de linker- en rechterkant van de hand: twee aan een kant, met de wielen in tegengestelde richting en één aan de andere kant.

Stap 8: Coderen op de Arduino

Code op de Arduino
Code op de Arduino

De code is op een eenvoudige manier ontwikkeld: om de motoren al dan niet aan te sturen. De servo's worden alleen geactiveerd als de waarde een bepaalde waarde overschrijdt (het werd opgelost met vallen en opstaan omdat de gevoeligheid van elke sensor niet precies hetzelfde is). Er zijn twee mogelijkheden om te buigen, nederig voor een lage kracht en volledig voor een sterke kracht. Als de vinger eenmaal is gebogen, is er geen kracht van de gebruiker nodig om de vinger in de werkelijke positie te houden. De reden van deze implementatie is dat anders is vermeld dat de vingers continu een kracht op de sensoren moeten uitoefenen en dat de handschoen geen enkel voordeel geeft. Om het buigen van de vinger op te heffen, moet een nieuwe kracht op de druksensor worden uitgeoefend, waarbij een stopopdracht wordt gegeven.

We kunnen de code in drie delen splitsen:

Sensoren init:

Allereerst hebben we drie integer-variabelen geïnitialiseerd: reading1, reading2, reading3 voor elke sensor. De sensoren zijn in de analoge ingangen A0, A2, A4 geplaatst. Elke variabele voor de uitlezing wordt als volgt ingesteld:

  • reading1 waar de waarde wordt geschreven die wordt gelezen in de ingang A0,
  • reading2 waar wordt geschreven de waarde gelezen in de ingang A2,
  • reading3 waar is geschreven de waarde gelezen in de input A4

Met de vinger worden twee drempels vastgesteld die overeenkomen met de twee bedieningsstanden van de servo's. Deze drempels zijn voor elke vinger verschillend, omdat de uitgeoefende kracht niet voor elke vinger hetzelfde is en de gevoeligheid van de drie sensoren niet precies hetzelfde is.

Motoren init:

Drie variabelen char (save1, save2, save3), één voor elke motor worden geïnitialiseerd op 0. Vervolgens hebben we in de setup de pinnen gespecificeerd waar we respectievelijk de motoren aansluiten: pin 9, pin 6 en pin 3 voor servo1, servo2, servo3; alle geïnitialiseerd op waarde 0.

Vervolgens worden de servo's aangestuurd via het commando servo.write() dat in staat is de hoek vast te leggen die als invoer op de servo wordt ontvangen. Ook werden door vallen en opstaan de twee goede hoeken gevonden, die nodig waren om de vinger in twee posities te buigen, overeenkomend met een kleine greep en een grote greep.

Aangezien een motor vanwege zijn fixatie in de tegenovergestelde richting moet draaien, is het startpunt niet nul maar de maximale hoek en neemt deze af wanneer een kracht wordt uitgeoefend om in de tegenovergestelde richting te kunnen draaien.

Koppeling tussen sensoren en motoren:

De keuze van save1, save2, save3 en reading1, reading2, reading3 hangt af van het solderen. Maar voor elke vinger moeten de sensor en de bijbehorende motor hetzelfde nummer hebben.

Dan in de lus, of er voorwaarden zijn gebruikt om te testen of de vinger al in een buigpositie is of niet en of de druk al dan niet op de sensoren wordt uitgeoefend. Wanneer de sensoren een waarde retourneren, moet er kracht worden uitgeoefend, maar er zijn twee verschillende gevallen mogelijk:

  • Als de vinger nog niet gebogen is, wordt deze door de sensoren geretourneerde waarde vergeleken met de drempels, de overeenkomstige hoek toegepast op de servo.
  • Als de vinger al is gebogen, betekent dit dat de gebruiker de buiging wil loslaten en dat vervolgens de starthoek op de servo's wordt toegepast.

Dit wordt gedaan voor elke motor.

Vervolgens hebben we een vertraging van 1000 ms toegevoegd om te voorkomen dat de waarden van de sensoren te vaak worden getest. Als een te kleine vertragingswaarde wordt toegepast, bestaat het risico dat de hand direct weer wordt geopend nadat deze is gesloten als de kracht wordt uitgeoefend gedurende een langere tijd dan de vertragingstijd.

Het hele proces voor één sensor wordt weergegeven in het stroomschema hierboven.

DE HELE CODE

#inclusief Servo servo1; Servo-servo2; Servo-servo3; int lezen1; int lezen2; int lezen3; teken opslaan1 = 0; // de servo begint bij staat 0, slaapstand char save2 = 0; teken opslaan3 = 0; void setup (void) { Serial.begin (9600); servo2.attach (9); // servo op digitale pin 9 servo2.write (160); // beginpunt voor servo servo1.attach (6); // servo op digitale pin 6 servo1.write (0); // beginpunt voor servo servo3.attach (3); // servo op digitale pin 3 servo3.write (0); // beginpunt voor servo

}

void loop (void) { reading1 = analogRead (A0); // gekoppeld aan analoge 0 lezen2 = analoog lezen (A2); //bevestigd aan analoge 2 lezen3 = analogRead (A4); //bevestigd aan analoge 4

// if (reading2 >= 0) { Serial.print ("Sensorwaarde = "); // Voorbeeld van een commando dat wordt gebruikt voor de kalibratie van de drempels van de eerste sensor

// Serial.println(reading2); } // else { Serial.print ("Sensorwaarde = "); Serieel.println(0); }

if (reading1 > 100 and save1 == 0){ // als de sensor een hoge waarde krijgt en niet in slaapstand is save1 = 2; } // ga naar toestand 2 else if (reading1 > 30 and save1 == 0){ // als de sensor een gemiddelde waarde krijgt en niet in slaapstand is save1 = 1; } // moet toestand 1 else if (reading1 > 0){ // if value is non nul en geen van de voorgaande condities correct save1 = 0;} // ga naar de slaapstand

if (save1 == 0) { servo1.write (160); } // laat else if(save1 == 1){ servo1.write(120); } // gemiddelde trekhoek else{ servo1.write(90); } // maximale trekhoek

if (reading2> 10 en save2 == 0) {// hetzelfde dan servo 1 save2 = 2; } else if (reading2 > 5 en save2 == 0){ save2 = 1; } else if (reading2 > 0){ save2 = 0;}

if (save2 == 0) { servo2.write (0); } else if(save2 == 1){ servo2.write(40); } else{ servo2.write(60); }

if (reading3> 30 en save3 == 0) {// hetzelfde dan servo 1 save3 = 2; } else if (reading3 > 10 en save3 == 0){ save3 = 1; } else if (reading3 > 0){ save3 = 0;}

if (save3 == 0) { servo3.write (0); } else if(save3 == 1){ servo3.write(40); } else{ servo3.write(70); } vertraging (1000); } // wacht even

Stap 9: Bevestig de Arduino, de batterijen en het Veroboard aan de arm

Bevestig de Arduino, de batterijen en het Veroboard aan de arm
Bevestig de Arduino, de batterijen en het Veroboard aan de arm
Bevestig de Arduino, de batterijen en het Veroboard aan de arm
Bevestig de Arduino, de batterijen en het Veroboard aan de arm

Een andere plaat werd in PLA gedrukt om de batterijhouders en de arduino te kunnen bevestigen.

Het bord heeft de afmetingen: 100x145x5mm.

Er zijn vier gaten aanwezig om de arduino vast te schroeven en twee om de 9V batterijhouder vast te schroeven. Er is een gat gemaakt in de 6V batterijhouder en in de plaat om ze met een kabelbinder aan elkaar te bevestigen. Er is wat lijm toegevoegd om de bevestiging van deze houder te verzekeren. De schakelaar zit vast met twee kleine kabelbinders.

Er zijn ook vier gaten die worden gebruikt om de plaat op de jeans te bevestigen met kabelbinders.

Het veroboard wordt als een schild op de Arduino geplaatst.

Stap 10: Sluit de elektronica aan

Sluit de elektronica aan
Sluit de elektronica aan

Het circuit is gesoldeerd op het veroboard zoals vermeld in het bovenstaande schema.

De Arduino heeft een 9V batterij als voeding en hiertussen is een schakelaar aangesloten om de Arduino uit te kunnen schakelen. Voor de servomotor die veel stroom nodig heeft is een 6V batterij nodig en de derde pin van de servo's wordt aangesloten op de pinnen 3, 6 en 9 om ze te bedienen met PWM.

Elke sensor is aan een kant verbonden door de 5V van de Arduino en aan de andere kant door een weerstand van 330 ohm die is verbonden met de grond en de pinnen A0, A2 en A4 om de spanning te meten.

Stap 11: Voeg de nylon draden toe

Voeg de nylon draden toe
Voeg de nylon draden toe

De nylon draden zijn gemaakt om door beide gaten aan het uiteinde en de ringen te gaan, zoals te zien is op de afbeelding, dan gaan de twee helften van de draad beide in de polyethyleen geleider en blijven ze samen tot het einde van de geleider, naar de motor. De lengte van de draden wordt op dit punt bepaald, ze moeten lang genoeg zijn om een keer met de rechte vingers rond het stuur van de servo te cirkelen.

Ze worden op de wielen bevestigd met een knoop die door twee kleine gaatjes in de.stl-bestanden gaat en met hete lijm voor extra stabilisatie.

Stap 12: Geniet

Het werkt zoals verwacht.

Bij de eerste impuls buigt hij de vinger en bij de tweede laat hij hem los. Bij het buigen van de vingers is geen kracht nodig.

Toch blijven er drie problemen over:

- We moeten voorzichtig zijn om een impuls korter dan 1 seconde te maken om de servo's te activeren, anders worden de draden onmiddellijk losgelaten na het trekken, zoals uitgelegd in stap 8 over de Arduino-code.

- De plastic onderdelen glijden een beetje weg, dus we hebben wat hete lijm aan het uiteinde toegevoegd om wrijving toe te voegen.

- Als er een zware belasting op de vinger komt, zal de sensor altijd een grote waarde hebben en zal de servo dus continu draaien.

Aanbevolen: