Sadržaj:

RoboGlove: 12 koraka (sa slikama)
RoboGlove: 12 koraka (sa slikama)

Video: RoboGlove: 12 koraka (sa slikama)

Video: RoboGlove: 12 koraka (sa slikama)
Video: Крутой Сериал! За Первого Встречного 12 серия! 2024, Juli
Anonim
RoboGlove
RoboGlove

Mi smo grupa studenata ULB -a, Université Libre de Bruxelles. Naš projekt se sastoji od razvoja robotske rukavice koja može stvoriti snagu hvatanja koja pomaže ljudima da hvataju stvari.

RUKAVICA

Rukavica ima žičanu vezu koja povezuje prste s nekim servo motorima: žica je pričvršćena na kraj prsta i na servo, pa kada se servo okrene, žica se povuče i prst savije. Na ovaj način, kontroliranjem hvata korisnika pomoću nekih senzora pritiska na krajevima prstiju, možemo upravljati motorima na kontroliran način i pomoći pri hvatanju savijanjem prsta proporcionalno rotaciji motora i pa do smotanja žica. Na ovaj način bismo trebali moći omogućiti ili slabim ljudima da hvataju predmete ili čak pomoći ljudima u fiziološkim uvjetima da hvataju predmete i da ih drže bez ikakvog napora.

DIZAJN

Model je razvijen kako bi se kretanje ruke učinilo što slobodnijim. U stvari, 3D smo odštampali samo strogo potrebne dijelove koji su nam bili potrebni za povezivanje žica, motora i prstiju.

Na svakom prstu imamo gornju kupolu odštampanu u PLA: ovo je terminalni dio gdje se žice moraju spojiti i mora pružiti zaštitu osjetniku tlaka koji je pričvršćen unutra. Senzor pritiska je zalijepljen vrućim ljepilom između PLA ekstremiteta i rukavice.

Zatim imamo dva 3D štampana prstena, po prstu, koji predstavljaju vodič za žice. Palac je jedini prst koji ima samo jedan odštampani prsten. Postoji jedna žica po prstu, presavijena na pola na krajevima prstiju. Dvije polovice prolaze kroz dvije vodilice dijela kupole i u oba prstena: stavljaju se ravno u rupe koje smo napravili s vanjske strane ovih prstenova. Zatim se spajaju u kotač izravno povezan s motorom. Točak je realiziran kako bi se mogao omotati oko žica: budući da naš motor ima nepotpunu rotaciju (nižu od 180 °), točak smo realizirali kako bismo povukli žicu za razmak od 6 centimetara, što je udaljenost potrebno potpuno zatvoriti ruku.

Odštampali smo i dvije ploče za pričvršćivanje servo motora i arduina na ruku. Bilo bi bolje da ga izrežete u drvo ili čvrstu plastiku laserskim rezačem.

Korak 1: Lista za kupovinu

Lista za kupovinu
Lista za kupovinu
Lista za kupovinu
Lista za kupovinu
Lista za kupovinu
Lista za kupovinu

Rukavice i žice:

1 postojeća rukavica (mora se šivati)

Stare traperice ili druga kruta tkanina

Najlonske žice

Polietilenske cijevi niske gustoće (promjer: 4 mm, debljina: 1 mm)

Elektronika:

Arduino Uno

1 Baterija 9V + 9V Držač baterije

1 elektronički prekidač

1 veroboard

3 servo motora (1 po prstu)

3 elise (isporučuju se sa servo motorima)

4 baterije AA + 4 AA držač baterija

3 senzora pritiska (1 po prstu)

3 otpornika 330 ohma (1 po prstu)

6 električnih žica (2 po senzoru)

Vijci, matice i pričvršćivači:

4 M3 duga 10 mm (za fiksiranje Arduina)

2 M2,5 duga 12 mm (za pričvršćivanje držača baterije od 9 V)

6 odgovarajućih matica

6 M2 dužine 10 mm (2 po servo za pričvršćivanje točkova na servomotore)

12 malih kabelskih vezica (za pričvršćivanje ploča i prekidača)

7 velikih kabelskih vezica (2 po motoru i 1 za držač 4 AA baterije)

Korišteni alati:

3D štampač (Ultimaker 2)

Materijal za šivenje

Pištolj s vrućim ljepilom

Opcija: laserski rezač

Korak 2: Pripremite nosivu strukturu

Pripremite nosivu strukturu
Pripremite nosivu strukturu

Nosiva struktura napravljena je s nešto odjeće: u našem slučaju koristili smo normalnu rukavicu za električara i trapericu za strukturu oko zgloba. Sašiveni su zajedno.

Cilj je imati fleksibilnu nosivu strukturu.

Struktura mora biti jača od obične vunene rukavice jer se mora sašiti.

Potrebna nam je nosiva struktura oko ručnog zgloba za držanje dobavljača napajanja i pokretača, a potrebno nam je i da bude stabilna, pa smo odlučili učiniti zatvaranje podesivim nanošenjem čičak traka (autoljepljivih traka) na zglob traperica.

Unutra su ušiveni neki drveni štapići kako bi traperice bile kruće.

Korak 3: Pripremite funkcionalne dijelove

Pripremite funkcionalne dijelove
Pripremite funkcionalne dijelove

Kruti dijelovi realizirani su 3D ispisom u PLA iz.stl datoteka u opisu:

Prsten za prste x5 (sa različitim skalama: 1x skala 100%, 2x skala 110%, 2x skala 120%);

Ekstremitet prstiju x3 (sa različitim ljestvicama: 1x skala 100%, 1x skala 110%, 1x skala 120%);

Točak za motor x3

Za dijelove prstiju potrebne su različite ljestvice zbog različite veličine svakog prsta i svake falange.

Korak 4: Pričvrstite senzore na ekstremitete

Pričvrstite senzore na ekstremitete
Pričvrstite senzore na ekstremitete

Senzori tlaka prvo su lemljeni na kabelske žice.

Zatim se lijepe pomoću pištolja za ljepilo unutar ekstremiteta prstiju: mala količina ljepila stavlja se unutar ekstremiteta, sa strane s dvije rupe, zatim se senzor odmah nanosi aktivnim (okruglim) dijelom na ljepilo (neka piezoelektrična strana bude sa unutrašnje strane konstrukcije, a plastični dio direktno na ljepilo). Žice kabela moraju prolaziti od vrha prsta do stražnje strane kako bi električno ožičenje prolazilo sa stražnje strane ruke.

Korak 5: Pričvrstite 3D štampane dijelove na rukavicu

Pričvrstite 3D ispisane dijelove na rukavicu
Pričvrstite 3D ispisane dijelove na rukavicu

Svi kruti dijelovi (ekstremiteti, prstenovi) moraju biti prišiveni za rukavicu kako bi se fiksirali.

Da biste pravilno postavili prstenje, prvo nosite rukavicu i pokušajte staviti prstenje, jedan po falangi, bez da se dodiruju prilikom zatvaranja šake. Otprilike, prstenovi na indeksu bit će fiksirani 5 mm iznad baze prsta i 17 do 20 mm iznad prvog. Što se tiče srednjeg prsta, prvi prsten bit će približno 8 do 10 mm iznad baze prsta, a drugi oko 20 mm iznad prvog. Što se tiče palca, potrebna preciznost je vrlo niska, jer ne riskira ometanje ostalih prstenova, pa pokušajte nanijeti je na istrošenu rukavicu, povucite liniju na rukavici na mjestu na kojem želite prsten tako da ga možete sašiti.

Što se tiče šivanja, nisu potrebne posebne tehnike ili sposobnosti. Sa iglom, niti za šivanje kruže oko prstena, prolazeći kroz površinu rukavice. Korak od 3-4 mm između dvije rupe u rukavici već čini dovoljno čvrstu fiksaciju, nema potrebe za vrlo gustim šivanjem.

Ista se tehnika primjenjuje za fiksiranje ekstremiteta: vrh ekstremiteta je rupasti kako bi igla mogla lako proći, pa će samo rukavice u obliku križa na vrhu prsta morati biti prišivene za rukavicu.

Zatim se moraju pričvrstiti i polietilenske vodilice prema tri kriterija:

distalni završetak (okrenut prema prstu) mora biti okrenut u smjeru prsta, kako bi se izbjeglo veliko trenje s najlonskom žicom koja će ući u njega;

distalni završetak mora biti dovoljno udaljen da ne ometa zatvaranje šake (oko 3 cm niže od osnove prsta je dovoljno dobro, 4 do 5 cm za palac);

cijevi moraju prolaziti jedna preko druge što je manje moguće, kako bi se smanjio najveći dio cijele rukavice i pokretljivost svake cijevi

Fiksiraju se šivanjem na rukavicu i zglob, istom tehnikom kao gore.

Kako bi se izbjegao rizik klizanja kroz šivanje, dodano je nekoliko ljepila između cijevi i rukavica.

Korak 6: Pripremite kotače za servo pogone

Pripremite kotače za servomotore
Pripremite kotače za servomotore

Za ovaj projekt koristili smo posebno dizajnirane kotače, koje smo sami nacrtali i 3D ispisali (.stl datoteka u opisu).

Nakon što se kotači odštampaju, moramo ih pričvrstiti na propelere servo pogona vijcima (vijci M2, 10 mm). Budući da su rupe propelera manje od 2 mm promjera vijčavanjem M2, nisu potrebne matice.

Tri propelera se mogu primijeniti na svaki servo.

Korak 7: Pričvrstite motore na ruku

Pričvrstite motore na ruku
Pričvrstite motore na ruku

Ovaj korak se sastoji u pričvršćivanju motora na ruku; da bismo to učinili morali smo odštampati pomoćnu PLA ploču da bismo dobili podršku.

Zapravo, motori se nisu mogli pričvrstiti direktno na ruku, jer su kotači, potrebni za povlačenje žica, mogli biti blokirani tokom kretanja zbog rukavice. Tako smo 3D odštampali PLA ploču dimenzija 120x150x5 mm.

Zatim smo pričvrstili ploču na rukavicu nekim kabelskim vezicama: napravili smo neke rupe u rukavici jednostavno škarama, zatim smo bušilicom napravili rupe u plastičnoj ploči i sve spojili. Četiri rupe u ploči potrebne su u sredini, po obodu, za prolaz kabelskih vezica. Izrađuju se bušilicom. Oni su u središnjem dijelu, a ne sa strane ploče da bi mogli zatvoriti traperice oko ruke, a da ih ploča ne blokira jer ploča nije fleksibilna.

Zatim se u plastičnoj ploči izbuše i druge rupe za pričvršćivanje motora. Motori su fiksirani s dvije ukrštene kabelske vezice. Sa njihovih strana dodano je malo ljepila kako bi se osiguralo učvršćivanje.

Motori moraju biti postavljeni tako da točkovi ne ometaju jedni druge. Dakle, razdvojeni su na lijevoj i desnoj strani ruke: dva u jednoj strani, s kotačima koji se okreću u suprotnim smjerovima i jedan u drugoj strani.

Korak 8: Kod na Arduinu

Kod na Arduinu
Kod na Arduinu

Kôd je razvijen na jednostavan način: aktivirati ili ne pokretati motore. Servo upravljači se aktiviraju samo ako je očitanje iznad određene vrijednosti (popravljeno je pokušajima i greškama jer osjetljivost svakog senzora nije potpuno ista). Postoje dvije mogućnosti savijanja, nisko za malu silu i potpuno za jaku silu. Nakon savijanja prsta nije potrebna nikakva sila korisnika kako bi se prst zadržao u stvarnom položaju. Razlog ove implementacije je taj što je inače spomenuto da prsti moraju kontinuirano primjenjivati silu na senzore, a rukavica ne daje nikakvu prednost. Da biste oslobodili savijanje prsta, na senzor pritiska morate primijeniti novu silu koja djeluje kao naredba stop.

Kôd možemo podijeliti na tri dijela:

Inicijalni senzori:

Prije svega, inicijalizirali smo tri cjelobrojne varijable: očitanje1, čitanje2, očitanje3 za svaki senzor. Senzori su postavljeni na analogne ulaze A0, A2, A4. Svaka varijabla za očitavanje je postavljena kao:

  • čitanje1 gdje je zapisana vrijednost pročitana na ulazu A0,
  • čitanje2 gdje je zapisana vrijednost pročitana na ulazu A2,
  • čitanje3 gdje je zapisana vrijednost pročitana na ulazu A4

Dva praga su fiksirana prstom koji odgovaraju dva položaja aktiviranja servomotora. Ovi pragovi su različiti za svaki prst jer primijenjena sila nije ista za svaki prst i osjetljivost tri senzora nije potpuno ista.

Pokretanje motora:

Tri varijable char (save1, save2, save3), po jedna za svaki motor, inicijalizirane su na 0. Zatim smo u postavci odredili pinove na koje priključujemo motore: pin 9, pin 6 i pin 3 za servo1, servo2, servo3; svi su inicijalizirani na 0 vrijednosti.

Zatim se servo pogoni aktiviraju naredbom servo.write () koja može popraviti kut primljen kao ulaz na servo. Pokušajima i greškama također su pronađena dva dobra kuta, potrebna za savijanje prsta u dva položaja koji odgovaraju malom zahvatu i velikom zahvatu.

Budući da se jedan motor mora okrenuti u suprotnom smjeru zbog svoje fiksacije, njegova početna točka nije nula, već maksimalni kut i smanjuje se kada se primijeni sila kako bi se mogao okrenuti u suprotnom smjeru.

Veza između senzora i motora:

Izbor načina spremanja1, spremanja2, spremanja3 i očitanja1, očitanja2, očitanja3 ovisi o lemljenju. Ali za svaki prst senzor i motor moraju imati isti broj.

Zatim u petlji, ako su korišteni uvjeti za provjeru je li prst već u položaju savijanja ili nije, i vrši li se pritisak na senzore ili ne. Kada senzori vrate vrijednost, potrebno je primijeniti silu, ali su moguća dva različita slučaja:

  • Ako prst još nije savijen, uspoređujući ovu vrijednost koju senzori vraćaju s pragovima, odgovarajući kut se primjenjuje na servo.
  • Ako je prst već savijen, to znači da korisnik želi otpustiti savijanje, a zatim se početni kut primjenjuje na servo pogone.

To se radi za svaki motor.

Zatim smo dodali kašnjenje od 1000 ms kako bismo izbjegli prečesto testiranje vrijednosti senzora. Ako se primijeni premala vrijednost odgode, postoji rizik da se ponovno otvori ruka nakon zatvaranja u slučaju da se sila primijeni duže od vremena odgode.

Sav proces za jedan senzor prikazan je na dijagramu toka ovdje gore.

CIJELI KOD

#include Servo servo1; Servo servo2; Servo servo3; int čitanje1; int čitanje2; int čitanje3; char save1 = 0; // servo počinje sa stanjem 0, stanje mirovanja char save2 = 0; char save3 = 0; void setup (void) {Serial.begin (9600); servo2.attach (9); // servo na digitalnom pinu 9 servo2.write (160); // početna točka za servo servo1.attach (6); // servo na digitalnom pinu 6 servo1.write (0); // početna točka za servo servo3.attach (3); // servo na digitalnom pinu 3 servo3.write (0); // početna točka za servo

}

void loop (void) {čitanje1 = analogRead (A0); // priključeno na analogno 0 čitanje2 = analogRead (A2); // priključeno na analog 2 čitanje3 = analogRead (A4); // priključeno na analogni 4

// if (čitanje2> = 0) {Serial.print ("Vrijednost senzora ="); // Primjer naredbe koja se koristi za kalibraciju pragova prvog senzora

// Serial.println (čitanje2); } // else {Serial.print ("Vrijednost senzora ="); Serial.println (0); }

if (čitanje1> 100 i spremanje1 == 0) {// ako senzor dobije visoku vrijednost i nije u stanju spavanja save1 = 2; } // idite na stanje 2 else if (čitanje1> 30 i spremanje1 == 0) {// ako senzor dobije srednju vrijednost i nije u stanju spavanja save1 = 1; } // došlo je do stanja 1 else if (čitanje1> 0) {// ako vrijednost nije nula i nijedan od prethodnih uvjeta nije ispravan save1 = 0;} // idite u stanje mirovanja

if (save1 == 0) {servo1.write (160); } // oslobodi else if (save1 == 1) {servo1.write (120); } // srednji kut povlačenja else {servo1.write (90); } // maksimalni ugao povlačenja

if (čitanje2> 10 i spremanje2 == 0) {// isto što i servo 1 spremanje2 = 2; } else if (čitanje2> 5 i spremanje2 == 0) {spremanje2 = 1; } else if (čitanje2> 0) {save2 = 0;}

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

if (čitanje3> 30 i spremanje3 == 0) {// isto što i servo 1 spremanje3 = 2; } else if (čitanje3> 10 i spremanje3 == 0) {spremanje3 = 1; } else if (čitanje3> 0) {save3 = 0;}

if (save3 == 0) {servo3.write (0); } else if (save3 == 1) {servo3.write (40); } else {servo3.write (70); } kašnjenje (1000); } // čekaj malo

Korak 9: Pričvrstite Arduino, baterije i Veroboard na ruku

Pričvrstite Arduino, baterije i Veroboard na ruku
Pričvrstite Arduino, baterije i Veroboard na ruku
Pričvrstite Arduino, baterije i Veroboard na ruku
Pričvrstite Arduino, baterije i Veroboard na ruku

Još jedna ploča je odštampana u PLA da bi se mogli popraviti držači baterija i arduino.

Ploča ima dimenzije: 100x145x5mm.

Četiri rupe su prisutne za pričvršćivanje arduina, a dvije za pričvršćivanje držača baterije 9V. U držaču za bateriju od 6V i na ploči napravljena je rupa za pričvršćivanje kabelske vezice. Dodano je malo ljepila kako bi se osiguralo pričvršćivanje ovog držača. Prekidač je fiksiran s dvije male kabelske vezice.

Postoje i četiri rupe koje se koriste za pričvršćivanje ploče na traperice pomoću kabelskih vezica.

Veroboard je postavljen na arduino poput štita.

Korak 10: Priključite elektroniku

Priključite elektroniku
Priključite elektroniku

Krug je lemljen na veroboard -u kako je navedeno u gornjoj shemi.

Arduino ima 9V bateriju kao izvor napajanja, a između njih je spojen prekidač kako bi se moglo isključiti Arduino. Akumulator od 6V potreban je za servo motor koji treba puno struje, a treći pin servo pogona spojen je na pinovi 3, 6 i 9 za njihovo upravljanje PWM -om.

Svaki senzor spojen je sa strane na 5V Arduina, a s druge strane otpornikom od 330 ohma spojenim na tlo i pinovima A0, A2 i A4 za mjerenje napetosti.

Korak 11: Dodajte najlonske žice

Dodajte najlonske žice
Dodajte najlonske žice

Najlonske žice su napravljene tako da prolaze kroz obje rupe na ekstremitetu i prstenove kako se vidi na slici, tada će dvije polovice žice ući unutar polietilenske vodilice i ostati zajedno do kraja vodilice, do motora. Duljina žica je određena u ovom trenutku, one moraju biti dovoljno dugačke da jednom zaokruže kotač servo pogona ravnim prstima.

Pričvršćeni su na kotače čvorom koji prolazi kroz dvije male rupe prisutne na.stl datotekama i vrućim ljepilom za dodatnu stabilizaciju.

Korak 12: Uživajte

Radi prema očekivanjima.

Pri prvom impulsu savija prst, a pri drugom ga oslobađa. Nije potrebna sila pri savijanju prstiju.

Ipak, ostaju tri problema:

- Moramo paziti da impuls bude kraći od 1 sekunde za aktiviranje servomotora, u protivnom se žice odmah otpuštaju nakon povlačenja, kako je objašnjeno u koraku 8 o Arduino kodu.

- Plastični dijelovi pomalo klize pa smo na kraj dodali malo vrućeg ljepila kako bismo dodali trenje.

- Ako je na prstu veliko opterećenje, senzor će cijelo vrijeme imati veliku vrijednost, pa će se servo stalno okretati.

Preporučuje se: