Cuprins:

RoboGlove: 12 pași (cu imagini)
RoboGlove: 12 pași (cu imagini)

Video: RoboGlove: 12 pași (cu imagini)

Video: RoboGlove: 12 pași (cu imagini)
Video: Ce înseamna semnul tau din nastere 2024, Iulie
Anonim
RoboGlove
RoboGlove

Suntem un grup de studenți ai ULB, Université Libre de Bruxelles. Proiectul nostru constă în dezvoltarea unei mănuși robot capabile să creeze o forță de prindere care să ajute oamenii să prindă lucruri.

MANUSA

Mănușa are o conexiune de sârmă care leagă degetele de unele servo-motoare: un fir este atașat la extremitatea degetului și la servo, astfel încât atunci când servo-ul se rotește, firul este tras și degetul este flexat. În acest fel, controlând prinderea făcută de utilizator prin intermediul unor senzori de presiune din extremitatea degetelor, suntem capabili să acționăm motoarele într-un mod controlat și să ajutăm prinderea prin îndoirea degetului proporțional cu rotația motoarelor și deci la rostogolirea firelor. În acest fel, ar trebui să putem permite persoanelor slabe să prindă obiecte sau să ajutăm chiar și persoanele aflate în condiții fiziologice să prindă obiecte și să le păstreze fără niciun efort.

DESIGN-UL

Modelul a fost dezvoltat pentru a face mișcarea mâinilor cât mai liberă posibil. De fapt, am imprimat 3D doar piesele strict necesare de care aveam nevoie pentru a conecta fire, motoare și degete.

Avem o cupolă superioară imprimată în PLA pe fiecare deget: aceasta este partea terminală la care trebuie conectate firele și trebuie să acorde protecție senzorului de presiune fixat în interior. Senzorul de presiune este lipit, cu adeziv fierbinte, între extremitatea PLA și mănușă.

Apoi avem două inele imprimate 3D, pe deget, care constituie un ghid pentru fire. Degetul mare este singurul deget care are un singur inel imprimat. Există un fir pe deget, pliat în jumătate la extremitatea degetelor. Cele două jumătăți trec prin cele două ghidaje ale părții cupolei și în ambele inele: sunt puse direct în găuri pe care le-am făcut în exteriorul acestor inele. Apoi, acestea sunt asamblate într-o roată conectată direct la motor. Roata a fost realizată pentru a putea înfășura firele: deoarece motorul nostru are o rotație necompletă (mai mică de 180 °) am realizat roata pentru a trage firul pentru un spațiu de 6 centimetri care este distanța trebuia să închidă complet mâna.

De asemenea, am imprimat două plăci pentru a fixa servomotorele și arduino-ul pe braț. Ar trebui să fie mai bine să îl tăiați în lemn sau într-un plastic rigid cu un tăietor cu laser.

Pasul 1: Lista de cumpărături

Lista de cumparaturi
Lista de cumparaturi
Lista de cumparaturi
Lista de cumparaturi
Lista de cumparaturi
Lista de cumparaturi

Mănuși și fire:

1 mănușă existentă (trebuie să fie cusută)

Blugi vechi sau altă pânză rigidă

Sârme din nailon

Tuburi din polietilenă cu densitate redusă (diametru: 4 mm grosime: 1 mm)

Electronică:

Arduino Uno

1 Baterie 9V + 9V Suport baterie

1 comutator electronic

1 veroboard

3 servo-motoare (1 pe deget)

3 elice (furnizate cu servomotoare)

4 baterii AA + 4 suport baterii AA

3 senzori de presiune (1 pe deget)

3 rezistențe 330 ohmi (1 pe deget)

6 fire electrice (2 pe senzori)

Șuruburi, piulițe și fixări:

4 M3 10mm lungime (pentru a repara Arduino)

2 M2.5 12mm lungime (pentru fixarea suportului bateriei de 9V)

6 nuci corespunzătoare

6 M2 de 10 mm lungime (2 pe servo pentru a fixa roțile pe servo)

12 legături de cablu mici (pentru a fixa plăcile și comutatorul)

7 legături mari de cablu (2 pe motoare și 1 pentru suportul pentru 4 baterii AA)

Unelte folosite:

Imprimantă 3D (Ultimaker 2)

Material pentru cusut

Pistol cu lipici fierbinte

Opțional: tăietor cu laser

Pasul 2: Pregătiți structura purtabilă

Pregătiți structura purtabilă
Pregătiți structura purtabilă

Structura purtabilă a fost realizată cu niște haine: în cazul nostru am folosit o mănușă normală pentru electrician și o cârpă de blugi pentru structura din jurul încheieturii mâinii. Au fost cusute împreună.

Scopul este de a avea o structură portabilă flexibilă.

Structura trebuie să fie mai puternică decât o mănușă obișnuită din lână, deoarece trebuie cusută.

Avem nevoie de o structură purtabilă în jurul încheieturii mâinii pentru a ține furnizorii de energie electrică și dispozitivele de acționare și avem nevoie ca aceasta să fie stabilă, așa că am ales să facem închiderea reglabilă prin aplicarea benzilor cu velcro (benzi autoadezive) la încheietura blugilor.

Unele bețe de lemn au fost cusute în interior pentru a face blugii mai rigizi.

Pasul 3: Pregătiți piesele funcționale

Pregătiți piesele funcționale
Pregătiți piesele funcționale

Părțile rigide sunt realizate prin imprimare 3D în PLA din fișierele.stl din descriere:

Finger Ring x5 (cu scări diferite: 1x scară 100%, 2x scară 110%, 2x scară 120%);

Finger Extremity x3 (cu scări diferite: 1x scară 100%, 1x scară 110%, 1x scară 120%);

Roată pentru motorul x3

Pentru părțile degetelor, sunt necesare cântare diferite datorită dimensiunii diferite a fiecărui deget și a fiecărei falange.

Pasul 4: Fixează senzorii la extremități

Fixează senzorii la extremități
Fixează senzorii la extremități

Senzorii de presiune sunt mai întâi lipiți pe firele cablurilor.

Acestea sunt apoi lipite cu ajutorul unui pistol de lipit în interiorul extremităților degetelor: o cantitate mică de lipici este plasată în interiorul extremității, pe partea cu cele două găuri, apoi senzorul este aplicat imediat cu partea activă (rotundă) pe lipici (are fața piezoelectrică în interiorul structurii și partea de plastic direct pe lipici). Cablurile trebuie să treacă peste partea de sus a degetului până în spatele său, pentru ca cablarea electrică să ruleze pe partea din spate a mâinii.

Pasul 5: fixați piesele imprimate 3D pe mănușă

Fixează piesele imprimate 3D pe mănușă
Fixează piesele imprimate 3D pe mănușă

Toate părțile rigide (extremități, inele) trebuie cusute la mănușă pentru a fi fixate.

Pentru a plasa corect inelele, purtați mai întâi mănușa și încercați să puneți inelele, câte una pe falang, fără ca acestea să se atingă în timpul închiderii mâinii. Aproximativ, inelele de pe index vor fi fixate la 5 mm deasupra bazei degetului și la 17 la 20 mm deasupra primei. În ceea ce privește degetul mijlociu, primul inel va fi la aproximativ 8-10 mm deasupra bazei degetului, iar al doilea la aproximativ 20 mm deasupra primului. Pentru ceea ce privește degetul mare, precizia necesară este foarte mică, deoarece nu riscă să interfereze cu celelalte inele, așa că încercați să o aplicați pe mănușa uzată, trageți o linie pe mănușă unde ați prefera să aveți sunați astfel încât să o puteți coase.

În ceea ce privește cusutul, nu este necesară o anumită tehnică sau abilitate. Cu un ac, firul de cusut merge în cercuri în jurul inelelor, trecând prin suprafața mănușii. Un pas de 3-4 mm între două găuri din mănușă face deja o fixare suficient de puternică, nu este nevoie să faceți o cusut foarte dens.

Aceeași tehnică este aplicată pentru fixarea extremităților: partea superioară a extremității este găurită pentru a face acul să treacă cu ușurință, astfel încât numai formele în formă de cruce din partea de sus a degetului vor trebui să fie cusute pe mănușă.

Apoi, ghidajele din polietilenă trebuie fixate și ele, urmând trei criterii:

capătul distal (orientat spre deget) trebuie să fie orientat în direcția degetului, pentru a evita fricțiunile mari cu firul de nailon care va intra în el;

finalul distal trebuie să fie suficient de îndepărtat pentru a nu interfera cu închiderea mâinii (cu aproximativ 3cm mai jos decât baza degetului este suficient de bun, de la 4 la 5cm pentru degetul mare);

tuburile trebuie să treacă unul peste celălalt cât mai puțin posibil, pentru a reduce volumul întregii mănuși și mobilitatea fiecărui tub

Se fixează prin coaserea lor pe mănușă și pe încheietura mâinii, cu aceeași tehnică ca mai sus.

Pentru a evita orice risc de alunecare prin coasere, s-a adăugat câteva lipici între tuburi și mănuși.

Pasul 6: Pregătiți roțile pentru Servo

Pregătiți roțile pentru Servo
Pregătiți roțile pentru Servo

Am folosit roți proiectate special, desenate și imprimate 3D de noi înșine pentru acest proiect (fișierul.stl din descriere).

Odată imprimate roțile, trebuie să le fixăm pe elicele servo-urilor prin înșurubare (șuruburi M2, 10 mm). Deoarece orificiile elicelor sunt mai mici de 2 mm diametru prin înșurubarea M2, nu sunt necesare piulițe.

Cele 3 elice pot fi aplicate pe fiecare servo.

Pasul 7: Fixează motoarele pe braț

Fixează motoarele pe braț
Fixează motoarele pe braț

Acest pas constă în fixarea motoarelor pe braț; pentru a face acest lucru, a trebuit să imprimăm o placă auxiliară PLA pentru a obține un suport.

De fapt, motoarele nu au putut fi fixate direct pe braț, deoarece roțile, necesare pentru tragerea firelor, ar putea fi blocate în timpul mișcării din cauza mănușii. Așa că am imprimat 3D o placă PLA de dimensiuni 120x150x5 mm.

Apoi am fixat placa de mănușă cu niște legături de cablu: am făcut niște găuri în mănușă folosind pur și simplu foarfece, apoi am făcut găuri în placa de plastic cu un burghiu și am pus totul împreună. Patru găuri în placă sunt necesare în centru, printre perimetrul său, pentru a trece legăturile cablului. Sunt făcute cu burghiu. Acestea sunt în partea centrală și nu în părțile laterale ale plăcii pentru a putea închide blugii în jurul brațului fără ca placa să o blocheze, deoarece placa nu este flexibilă.

Apoi sunt găurite și alte găuri în placa de plastic pentru a fixa motoarele. Motoarele sunt fixate cu două legături de cablu încrucișate. S-a adăugat niște lipici pe părțile laterale pentru a asigura fixarea.

Motoarele trebuie să fie așezate astfel încât roțile să nu se interfereze reciproc. Deci, sunt separate în partea stângă și dreapta a mâinii: două într-o parte, cu roțile care se rotesc în direcții opuse și una în cealaltă parte.

Pasul 8: Cod pe Arduino

Cod pe Arduino
Cod pe Arduino

Codul a fost dezvoltat într-un mod simplu: pentru a acționa sau nu motoarele. Servo-urile sunt acționate numai dacă citirea depășește o anumită valoare (a fost remediată prin încercări și erori, deoarece sensibilitatea fiecărui senzor nu este exact aceeași). Există două posibilități de îndoire, modest pentru o forță redusă și complet pentru o forță puternică. Odată ce degetul este îndoit, nu este nevoie de forța utilizatorului pentru a menține degetul în poziția reală. Motivul acestei implementări este că altfel s-a menționat că degetele trebuie să aplice continuu o forță asupra senzorilor și mănușa nu oferă niciun avantaj. Pentru a elibera îndoirea degetului, trebuie aplicată o nouă forță pe senzorul de presiune, acționând o comandă de oprire.

Putem împărți codul în trei părți:

Inițierea senzorilor:

În primul rând am inițializat trei variabile întregi: reading1, reading2, reading3 pentru fiecare senzor. Senzorii au fost introduși în intrările analogice A0, A2, A4. Fiecare variabilă pentru citire este setată astfel:

  • reading1 unde este scrisă valoarea citită în intrarea A0,
  • reading2 unde este scrisă valoarea citită în intrarea A2,
  • reading3 unde este scrisă valoarea citită în intrarea A4

Două praguri sunt fixate cu degetul corespunzător celor două poziții de acționare ale servomotoarelor. Aceste praguri sunt diferite pentru fiecare deget, deoarece forța aplicată nu este aceeași pentru fiecare deget și sensibilitatea celor trei senzori nu este exact aceeași.

Inițierea motoarelor:

Trei variabile char (save1, save2, save3), una pentru fiecare motor sunt inițializate la 0. Apoi în setare am specificat pinii unde conectăm motoarele respectiv: pinul 9, pinul 6 și pinul 3 pentru servo1, servo2, servo3; toate inițializate la valoarea 0.

Apoi servomotoarele sunt acționate prin comanda servo.write () care poate fixa unghiul primit ca intrare pe servo. Tot prin încercări și erori s-au găsit cele două unghiuri bune, necesare pentru a îndoi degetul în două poziții corespunzătoare unei aderențe mici și unei aderențe mari.

Deoarece un motor trebuie să se întoarcă în direcția opusă datorită fixării sale, punctul său de pornire nu este zero, ci unghiul maxim și scade atunci când se aplică o forță pentru a putea roti în direcția opusă.

Legătură între senzori și motoare:

Alegerea save1, save2, save3 și reading1, reading2, reading3 depinde de lipire. Dar pentru fiecare deget, senzorul și motorul trebuie să aibă același număr.

Apoi, în buclă, dacă s-au folosit condiții pentru a testa dacă degetul este deja într-o poziție de îndoire sau nu și dacă presiunea este aplicată sau nu pe senzori. Când senzorii returnează o valoare, trebuie aplicată o forță, dar sunt posibile două cazuri diferite:

  • Dacă degetul nu este încă îndoit, comparând această valoare returnată de senzori cu pragurile, unghiul corespunzător este aplicat servo-ului.
  • Dacă degetul este deja îndoit, înseamnă că utilizatorul dorește să elibereze îndoirea și apoi unghiul de pornire este aplicat la servomotoare.

Acest lucru se face pentru fiecare motor.

Apoi am adăugat o întârziere de 1000 ms pentru a evita testarea prea des a valorilor senzorilor. Dacă se aplică o valoare prea mică a întârzierii, riscă să redeschidă direct mâna după închiderea acesteia în cazul în care forța este aplicată într-un timp mai lung decât timpul de întârziere.

Tot procesul pentru un senzor este prezentat în diagrama de flux de mai sus.

ÎNTREGUL COD

#include Servo servo1; Servo servo2; Servo servo3; int reading1; int reading2; citirea int3; char save1 = 0; // servo începe la starea 0, starea de dormit char save2 = 0; char save3 = 0; configurare nulă (nulă) {Serial.begin (9600); servo2.attach (9); // servo la pinul digital 9 servo2.write (160); // punctul inițial pentru servo servo1.attach (6); // servo la pinul digital 6 servo1.write (0); // punctul inițial pentru servo servo3.attach (3); // servo la pinul digital 3 servo3.write (0); // punctul inițial pentru servo

}

bucla void (nul) {citirea1 = analogRead (A0); // atașat la analog 0 lectura2 = analogRead (A2); // atașat la citirea analogică 23 = analogRead (A4); // atașat la analogul 4

// if (reading2> = 0) {Serial.print ("Valoare senzor ="); // Exemplu de comandă utilizată pentru calibrarea pragurilor primului senzor

// Serial.println (reading2); } // else {Serial.print ("Valoare senzor ="); Serial.println (0); }

if (citirea1> 100 și salvarea1 == 0) {// dacă senzorul are o valoare ridicată și nu se află în stare de repaus salvare1 = 2; } // treceți la starea 2 altceva dacă (citind1> 30 și salvați1 == 0) {// dacă senzorul obține o valoare medie și nu se află în starea de repaus salvați 1 = 1; } // am ajuns la starea 1 altul dacă (citind1> 0) {// dacă valoarea este diferită de zero și niciuna dintre condițiile anterioare nu este corectă save1 = 0;} // mergeți la starea de repaus

if (save1 == 0) {servo1.write (160); } // lansează else if (save1 == 1) {servo1.write (120); } // unghiul mediu de tragere else {servo1.write (90); } // unghiul maxim de tragere

if (citire2> 10 și salvare2 == 0) {// la fel ca servo 1 salvare2 = 2; } else if (citire2> 5 și salvare2 == 0) {salvare2 = 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 (citire3> 30 și salvare3 == 0) {// la fel ca servo 1 salvare3 = 2; } else if (citire3> 10 și salvare3 == 0) {salvare3 = 1; } else if (reading3> 0) {save3 = 0;}

if (save3 == 0) {servo3.write (0); } else if (save3 == 1) {servo3.write (40); } else {servo3.write (70); } întârziere (1000); } // asteapta o secunda

Pasul 9: Fixează Arduino, bateriile și Veroboard pe braț

Fixează Arduino, bateriile și Veroboard pe braț
Fixează Arduino, bateriile și Veroboard pe braț
Fixează Arduino, bateriile și Veroboard pe braț
Fixează Arduino, bateriile și Veroboard pe braț

O altă placă a fost tipărită în PLA pentru a putea fixa suporturile bateriilor și arduino.

Placa are dimensiunile: 100x145x5mm.

Sunt prezente patru găuri pentru înșurubarea arduino și două pentru înșurubarea suportului bateriei de 9 V. O gaură a fost făcută în suportul bateriei de 6V și în placă pentru a utiliza o legătură de cablu pentru a le fixa împreună. S-a adăugat ceva adeziv pentru a asigura fixarea acestui suport. Comutatorul este fixat cu două mici legături de cablu.

Există, de asemenea, patru găuri utilizate pentru fixarea plăcii pe blugi folosind legături de cablu.

Veroboard-ul este pus pe arduino ca un scut.

Pasul 10: Conectați dispozitivele electronice

Conectați electronica
Conectați electronica

Circuitul este lipit pe veroboard așa cum este raportat în schema de mai sus.

Arduino are o baterie de 9V ca sursă de alimentare și un comutator este conectat între acestea pentru a putea opri Arduino. Este necesară o baterie de 6V pentru servomotorul care are nevoie de mult curent, iar al treilea pin al servo-ului este conectat la pinii 3, 6 și 9 pentru a le controla cu PWM.

Fiecare senzor este conectat pe o parte de 5V al Arduino și pe de altă parte printr-un rezistor de 330 ohm conectat la sol și pinii A0, A2 și A4 pentru a măsura tensiunea.

Pasul 11: Adăugați firele de nailon

Adăugați firele de nailon
Adăugați firele de nailon

Sârmele din nailon sunt făcute să treacă prin ambele găuri de pe extremitate și inele așa cum se vede în imagine, apoi cele două jumătăți ale firului vor intra ambele în interiorul ghidajului din polietilenă și vor rămâne împreună până la sfârșitul ghidajului, către motor. Lungimea firelor este determinată în acest moment, acestea trebuie să fie suficient de lungi pentru a înconjura o dată roata servo cu degetele drepte.

Acestea sunt fixate pe roți cu un nod care trece prin două găuri mici prezente pe fișierele.stl și cu adeziv fierbinte pentru stabilizare suplimentară.

Pasul 12: Bucurați-vă

Funcționează așa cum era de așteptat.

La primul impuls îndoi degetul, iar la al doilea îl eliberează. Nu este nevoie de forță atunci când degetele sunt îndoite.

Cu toate acestea, rămân trei probleme:

- Trebuie să fim atenți pentru a face un impuls mai scurt de 1 secundă pentru a acționa servomotoarele, altfel firele se eliberează imediat după tragere, așa cum se explică în pasul 8 despre codul Arduino.

- Piesele din plastic alunecă puțin, așa că am adăugat un pic de adeziv fierbinte la extremitate pentru a adăuga frecare.

- Dacă există o sarcină grea pe deget, senzorul va avea tot timpul o valoare mare și astfel servo se va roti continuu.

Recomandat: