Innehållsförteckning:

RoboGlove: 12 steg (med bilder)
RoboGlove: 12 steg (med bilder)

Video: RoboGlove: 12 steg (med bilder)

Video: RoboGlove: 12 steg (med bilder)
Video: Как сделать шестерню на токарном станке. 2024, Juli
Anonim
RoboGlove
RoboGlove

Vi är en grupp studenter vid ULB, Université Libre de Bruxelles. Vårt projekt består av att utveckla en robothandske som kan skapa en greppkraft som hjälper människor att ta tag i saker.

HANDSKAN

Handsken har en trådanslutning som länkar fingrarna till några servomotorer: en tråd är fäst vid fingrets ytterkant och till servon, så när servon vänder, dras tråden och fingret böjs. På så sätt kan vi genom att styra greppet som görs av användaren genom några trycksensorer i fingrarnas ytterkant aktivera motorerna på ett kontrollerat sätt och hjälpa greppet genom att böja fingret proportionellt mot motorernas rotation och så till upprullningen av trådarna. På detta sätt borde vi antingen kunna låta svaga människor greppa föremål eller hjälpa till och med människor under fysiologiska förhållanden att greppa föremål och behålla det utan ansträngning.

DESIGNEN

Modellen har utvecklats för att göra handrörelsen så fri som möjligt. Faktum är att vi i 3D bara skrev ut de strikt nödvändiga delarna som vi behövde för att ansluta ledningar, motorer och fingrar.

Vi har en övre kupol tryckt i PLA på varje finger: det här är terminaldelen där ledningarna måste anslutas och den måste ge skydd för trycksensorn som är fixerad inuti. Trycksensorn limmas, med varmt lim, mellan PLA -extremiteten och handsken.

Sedan har vi två 3D -tryckta ringar, per finger, som utgör en guide för trådarna. Tummen är det enda fingret som bara har en tryckt ring. Det finns en tråd per finger, halvvägs vid fingrarna. De två halvorna passerar genom de två styrningarna i kupeldelen och i båda ringarna: de sätts rakt in i hål som vi gjorde på utsidan av dessa ringar. Sedan sätts de ihop till ett hjul direkt anslutet till motorn. Hjulet har realiserats för att kunna linda runt trådarna: eftersom vår motor har en icke fullständig rotation (lägre än 180 °) insåg vi hjulet för att dra tråden i ett gap på 6 centimeter som är avståndet behövs för att helt stänga handen.

Vi har också skrivit ut två plattor för att fixa servomotorerna och arduino på armen. Det borde vara bättre att skära det i trä eller en styv plast med en laserskärare.

Steg 1: Inköpslista

Inköpslista
Inköpslista
Inköpslista
Inköpslista
Inköpslista
Inköpslista

Handske och trådar:

1 befintlig handske (måste sys)

Gamla jeans eller annan stel tyg

Nylontrådar

Lågdensitetspolyetenrör (Diameter: 4 mm Tjocklek: 1 mm)

Elektronik:

Arduino Uno

1 batteri 9V + 9V batterihållare

1 elektronisk omkopplare

1 veroboard

3 servomotorer (1 per finger)

3 propeller (levereras med servon)

4 batterier AA + 4 AA batterier hållare

3 trycksensorer (1 per finger)

3 motstånd 330 ohm (1 per finger)

6 elektriska ledningar (2 per sensorer)

Skruvar, muttrar och fixeringar:

4 M3 10 mm lång (för att fixa Arduino)

2 M2,5 12 mm lång (för att fixa 9V batterihållaren)

6 motsvarande muttrar

6 M2 10 mm lång (2 per servo för att fästa hjulen på servon)

12 små buntband (för att fixera plattorna och omkopplaren)

7 stora buntband (2 per motorer och 1 för 4 AA -batterihållare)

Begagnade verktyg:

3D -skrivare (Ultimaker 2)

Material för sömnad

Het limpistol

Valfritt: laserskärare

Steg 2: Förbered bärbar struktur

Förbered bärbar struktur
Förbered bärbar struktur

Den bärbara strukturen har gjorts med några kläder: i vårt fall använde vi en vanlig handske för elektriker och en jeansduk för strukturen runt handleden. De sydde ihop.

Målet är att ha en flexibel bärbar struktur.

Strukturen måste vara starkare än en vanlig ullhandske eftersom den måste sys.

Vi behöver en bärbar struktur runt handleden för att hålla kraftleverantörerna och ställdonen, och vi behöver att den ska vara stabil, så vi valde att göra stängningen justerbar genom att applicera kardborreband (självhäftande band) på jeansens handled.

Några träpinnar syddes inuti för att göra jeansen styvare.

Steg 3: Förbered funktionella delar

Förbered funktionella delar
Förbered funktionella delar

De styva delarna realiseras genom 3D -utskrift i PLA från.stl -filerna i beskrivningen:

Fingerring x5 (med olika skalor: 1x skala 100%, 2x skala 110%, 2x skala 120%);

Finger Extremity x3 (med olika skalor: 1x skala 100%, 1x skala 110%, 1x skala 120%);

Hjul för motor x3

För fingerdelarna behövs olika skalor på grund av olika fingerstorlek och varje falang.

Steg 4: Fixera sensorerna till extremiteterna

Fixera sensorerna till extremiteterna
Fixera sensorerna till extremiteterna

Trycksensorerna löds först till kabeltrådar.

De limmas sedan med hjälp av en limpistol inuti fingern: en liten mängd lim placeras inuti extremiteten, på sidan med de två hålen, sedan appliceras sensorn omedelbart med den aktiva (runda) delen på lim (ha den piezoelektriska framsidan inuti strukturen och plastdelen direkt på limmet). Kabeltrådarna måste löpa över fingertoppen upp till ryggen, för att den elektriska kablingen ska kunna köras på baksidan av handen.

Steg 5: Fixa de 3D -tryckta delarna på handsken

Fäst de 3D -tryckta delarna på handsken
Fäst de 3D -tryckta delarna på handsken

Alla styva delar (extremiteter, ringar) måste sys i handsken för att fixas.

För att placera ringarna på rätt sätt, använd först handsken och försök att sätta på ringarna, en per falang, utan att de ska röra vid handen stängning. Ungefär kommer ringarna på indexet att fixeras 5 mm ovanför fingrets bas och 17 till 20 mm över det första. När det gäller långfingret kommer den första ringen att vara ungefär 8 till 10 mm ovanför fingrets bas, och den andra cirka 20 mm över den första. När det gäller tummen är precisionen mycket låg, eftersom det inte riskerar att störa de andra ringarna, så försök att applicera den på den slitna handsken, dra en linje på handsken där du helst vill ha ring så att du sedan kan sy den.

När det gäller sömnad krävs ingen särskild teknik eller förmåga. Med en nål går sytråden i cirklar runt ringarna och passerar genom handskens yta. Ett steg på 3-4 mm mellan två hål i handsken gör redan en tillräckligt stark fixering, det finns ingen anledning att göra en mycket tät sömnad.

Samma teknik tillämpas för att fixera extremiteterna: toppen av extremiteten är hålig för att få nålen att passera lätt, så bara de tvärliknande formerna på fingrets ovansida måste sys i handsken.

Sedan måste polyetenstyrningarna också fixeras genom att följa tre kriterier:

den distala änden (vänd mot fingret) måste vända i fingerets riktning, för att undvika höga friktioner med nylontråden som går in i det;

det distala slutet måste vara tillräckligt långt för att inte störa handens stängning (cirka 3 cm lägre än fingrets bas är tillräckligt bra, 4 till 5 cm för tummen);

rören måste passera över varandra så mindre som möjligt för att minska huvuddelen av hela handsken och rörligheten för varje rör

De fixas genom att sy dem på handsken och på handleden, med samma teknik som ovan.

För att undvika risk för glidning genom sömmen tillsattes några lim mellan rören och handskarna.

Steg 6: Förbered hjulen för servon

Förbered hjulen för servon
Förbered hjulen för servon

Vi använde specialdesignade hjul, ritade och 3D -tryckta av oss själva för detta projekt (.stl -fil i beskrivningen).

När hjulen tryckts måste vi fixa dem till servosens propeller genom att skruva (M2, 10 mm skruvar). Eftersom hålen på propellrarna är mindre än 2 mm i diameter genom att skruva M2 behövs inga muttrar.

De 3 propellerna kan appliceras på varje servo.

Steg 7: Fixera motorerna på armen

Fixera motorerna på armen
Fixera motorerna på armen

Detta steg består i fixering av motorerna på armen; för att göra det var vi tvungna att skriva ut en extra PLA -plack för att få ett stöd.

Faktum är att motorerna inte kunde fästas direkt på armen eftersom hjulen, som behövs för att dra i trådarna, kunde blockeras under rörelsen på grund av handsken. Så vi 3D -skrivit ut en PLA -platta med dimensionen 120x150x5 mm.

Sedan fixade vi placket till vår handske med några buntband: vi gjorde några hål i handsken helt enkelt med hjälp av en sax, sedan gjorde vi hål i plastplattan med en borr och satte ihop allt. Fyra hål i placket behövs i mitten, bland dess omkrets, för att passera buntbanden. De är gjorda med en borr. Dessa är i mitten och inte på sidorna av plattan för att kunna stänga jeansen runt armen utan att plattan blockerar den eftersom plattan inte är flexibel.

Sedan borras också andra hål i plastplattan för att fixera motorerna. Motorerna är fixerade med två korsade buntband. Något lim tillsattes på sidorna för att säkerställa fixeringen.

Motorerna måste sättas på ett sådant sätt att hjulen inte stör varandra. Så det är åtskilda i vänster och höger sida av handen: två i en sida, med hjulen svängande i motsatta riktningar och ett i den andra sidan.

Steg 8: Kod på Arduino

Kod på Arduino
Kod på Arduino

Koden har utvecklats på ett enkelt sätt: att aktivera eller inte motorerna. Servon aktiveras bara om avläsningen är över ett visst värde (det fixades med försök och fel eftersom känsligheten för varje sensor inte är exakt densamma). Det finns två möjligheter att böja, lågt för en låg kraft och helt för en stark kraft. När fingret väl är böjt behövs ingen användares kraft för att hålla fingret i den aktuella positionen. Anledningen till denna implementering är att det annars har nämnts att fingrarna kontinuerligt måste applicera en kraft på sensorerna och handsken ger ingen fördel. För att släppa böjningen av fingret måste en ny kraft appliceras på trycksensorn, som verkar som ett stoppkommando.

Vi kan dela koden i tre delar:

Sensorer init:

Först och främst initierade vi tre heltalsvariabler: läsning1, läsning2, läsning3 för varje sensor. Sensorerna sattes in i de analoga ingångarna A0, A2, A4. Varje variabel för avläsningen ställs in som:

  • läsning1 där är skrivet värdet läst i ingången A0,
  • läsning2 där skrivs värdet som läses i ingången A2,
  • läsning3 där skrivs värdet som läses i ingången A4

Två trösklar fixeras med fingret som motsvarar servos två manövreringslägen. Dessa trösklar är olika för varje finger eftersom kraften som appliceras inte är densamma för varje finger och känsligheten för de tre sensorerna inte är exakt densamma.

Motors init:

Tre variabler char (save1, save2, save3), en för varje motor initieras vid 0. Sedan i inställningen specificerade vi stiften där vi pluggar in motorerna respektive: pin 9, pin 6 och pin 3 för servo1, servo2, servo3; alla initialiserade till 0 -värde.

Därefter aktiveras servon genom kommandot servo.write () som kan fixera den mottagna vinkeln som ingång på servon. Även genom försök och fel hittades de två goda vinklarna, som behövs för att böja fingret i två positioner som motsvarar ett litet grepp och ett stort grepp.

Eftersom en motor behöver svänga i motsatt riktning på grund av dess fixering är dess utgångspunkt inte noll utan den maximala vinkeln och minskningen när en kraft appliceras för att kunna svänga i motsatt riktning.

Länk mellan sensorer och motorer:

Valet av save1, save2, save3 och läsning1, läsning2, läsning3 beror på lödningen. Men för varje finger måste sensorn och den motorrelaterade ha samma nummer.

Sedan i slingan, om förhållanden användes för att testa om fingret redan är i böjningsläge eller inte och om trycket appliceras eller inte på sensorerna. När sensorerna returnerar ett värde måste en kraft appliceras men två olika fall är möjliga:

  • Om fingret ännu inte är böjt och jämför detta värde som sensorerna returnerar till trösklarna, appliceras motsvarande vinkel på servon.
  • Om fingret redan är böjt betyder det att användaren vill släppa böjningen och sedan appliceras startvinkeln på servon.

Detta görs för varje motor.

Sedan lade vi till en fördröjning på 1000 ms för att undvika att testa för ofta sensorernas värden. Om ett för litet fördröjningsvärde tillämpas riskerar det att direkt öppna handen igen efter att ha stängt den om kraften appliceras under en längre tid än fördröjningstiden.

Hela processen för en sensor presenteras i flödesschemat här ovan.

HELA KODEN

#inkludera Servo servo1; Servo servo2; Servo servo3; int läsning1; int läsning2; int läsning3; char save1 = 0; // servon börjar vid tillstånd 0, sovande tillstånd char save2 = 0; char save3 = 0; void setup (void) {Serial.begin (9600); servo2. bifoga (9); // servo vid digital pin 9 servo2.write (160); // startpunkt för servoservo1.attach (6); // servo vid digital stift 6 servo1.write (0); // startpunkt för servoservo3.attach (3); // servo vid digital pin 3 servo3.write (0); // startpunkt för servo

}

void loop (void) {reading1 = analogRead (A0); // kopplad till analog 0 läsning2 = analogRead (A2); // bifogad till analog 2 läsning3 = analogRead (A4); // kopplad till analog 4

// if (reading2> = 0) {Serial.print ("Sensorvärde ="); // Exempel på kommando som används för kalibrering av trösklarna för den första sensorn

// Serial.println (läsning2); } // else {Serial.print ("Sensorvärde ="); Serial.println (0); }

if (läsning1> 100 och spara1 == 0) {// om sensorn får ett högt värde och inte är i viloläge save1 = 2; } // gå till tillstånd 2 annars om (läsning1> 30 och spara1 == 0) {// om sensorn får ett medelvärde och inte är i viloläge save1 = 1; } // fick ange 1 annat om (läsning1> 0) {// om värdet inte är noll och inget av de tidigare villkoren är korrigerat spara1 = 0;} // gå till viloläge

if (save1 == 0) {servo1.write (160); } // släpp annars om (save1 == 1) {servo1.write (120); } // medelhög dragvinkel annars {servo1.write (90); } // maximal dragvinkel

if (läsning2> 10 och spara2 == 0) {// samma än servo 1 save2 = 2; } annars if (läsning2> 5 och spara2 == 0) {spara2 = 1; } annat om (läsning2> 0) {save2 = 0;}

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

if (läsning3> 30 och save3 == 0) {// samma än servo 1 save3 = 2; } annars if (läsning3> 10 och spara3 == 0) {save3 = 1; } annars om (läsning3> 0) {save3 = 0;}

if (save3 == 0) {servo3.write (0); } annars if (save3 == 1) {servo3.write (40); } annat {servo3.write (70); } fördröjning (1000); } // vänta en sekund

Steg 9: Fäst Arduino, batterier och Veroboard på armen

Fäst Arduino, batterier och Veroboard på armen
Fäst Arduino, batterier och Veroboard på armen
Fäst Arduino, batterier och Veroboard på armen
Fäst Arduino, batterier och Veroboard på armen

En annan platta trycktes i PLA för att kunna fixa batterihållarna och arduinoen.

Plattan har måtten: 100x145x5mm.

Fyra hål finns för att skruva arduino och två för att skruva 9V -batterihållaren. Ett hål gjordes i 6V -batterihållaren och i plattan för att fästa dem med ett kabelband. En del lim tillsattes för att säkerställa fixeringen av denna hållare. Brytaren är fixerad med två små buntband.

Det finns också fyra hål som används för att fixera plattan på jeansen med kabelband.

Veroboardet sätts på arduino som en sköld.

Steg 10: Anslut elektroniken

Anslut elektroniken
Anslut elektroniken

Kretsen löds på veroboardet enligt rapporterna i schemat ovan.

Arduino har ett 9V batteri som försörjning och en switch är ansluten mellan dessa för att kunna stänga av Arduino. Ett 6V batteri behövs för servomotorn som behöver mycket ström och den tredje stiftet på servon är ansluten vid stift 3, 6 och 9 för att styra dem med PWM.

Varje sensor är ansluten på en sida av 5V på Arduino och på andra sidan med ett 330 ohm motstånd anslutet till marken och stiften A0, A2 och A4 för att mäta spänningen.

Steg 11: Lägg till nylontrådarna

Lägg till nylontrådarna
Lägg till nylontrådarna

Nylontrådarna är gjorda för att passera genom båda hålen på extremiteten och ringarna som ses på bilden, då kommer de två halvorna av tråden båda att gå in i polyetenstyrningen och förbli tillsammans till slutet av guiden, till motorn. Ledarnas längd bestäms vid denna tidpunkt, de måste vara tillräckligt långa för att cirkulera när servohjulet har de raka fingrarna.

De sitter fast på hjulen med en knut som passerar genom två små hål på.stl -filerna och med varmt lim för ytterligare stabilisering.

Steg 12: Njut

Det fungerar som förväntat.

Vid den första impulsen böjer den fingret och vid den andra släpper det det. Ingen kraft behövs när fingrarna böjs.

Ändå återstår tre problem:

- Vi måste vara försiktiga med att göra en impuls som är kortare än 1 sekund för att aktivera servon, annars släpps ledningarna omedelbart efter dragningen enligt förklaringen i steg 8 om Arduino -koden.

- Plastdelarna halkar lite så vi har lagt till lite varmt lim i ytterdelen för att lägga till friktion.

- Om en tung belastning är på fingret kommer sensorn hela tiden att ha ett stort värde och så kommer servon att rotera kontinuerligt.

Rekommenderad: