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, Srpanj
Anonim
RoboGlove
RoboGlove

Mi smo grupa studenata ULB -a, Université Libre de Bruxelles. Naš projekt sastoji se od razvoja robotske rukavice sposobne 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 kad se servo okrene, žica se povuče i prst savije. Na taj način, kontroliranjem hvata korisnika pomoću nekih senzora tlaka na krajevima prstiju, možemo upravljati motorima na kontroliran način i pomoći pri hvatanju savijanjem prsta proporcionalno rotaciji motora i pa do smotavanja žica. Na taj bismo način trebali moći omogućiti ili slabim ljudima da hvataju predmete ili čak i ljudima u fiziološkim uvjetima pomoći da hvataju predmete i da ih drže bez ikakvog napora.

DIZAJN

Model je razvijen kako bi kretanje ruke bilo što slobodnije. Zapravo, 3D smo ispisali samo strogo potrebne dijelove koji su nam bili potrebni za povezivanje žica, motora i prstiju.

Na svakom prstu imamo gornju kupolu ispisanu 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 tlaka je zalijepljen, vrućim ljepilom, između PLA ekstremiteta i rukavice.

Zatim imamo dva 3D tiskana prstena, po prstu, koji predstavljaju vodič za žice. Palac je jedini prst koji ima samo jedan ispisani 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 spojen na motor. Kotač je realiziran kako bi se mogao omotati oko žica: budući da naš motor ima nepotpunu rotaciju (nižu od 180 °), shvatili smo kotač 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 krutu plastiku laserskim rezačem.

Korak 1: Popis za kupovinu

Popis za kupovinu
Popis za kupovinu
Popis za kupovinu
Popis za kupovinu
Popis za kupovinu
Popis za kupovinu

Rukavice i žice:

1 postojeća rukavica (mora se moći šivati)

Stare traperice ili drugu krutu tkaninu

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 propelera (isporučeni 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 duljine 10 mm (za popravak Arduina)

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

6 odgovarajućih matica

6 M2 duljine 10 mm (2 po servo za pričvršćivanje kotača na servomotore)

12 malih kabelskih vezica (za uč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 pisač (Ultimaker 2)

Materijal za šivanje

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. Šivali su se 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 zgloba za držanje opskrbljivača napajanjem i pokretača, a potrebno nam je 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 (s različitim mjerilima: 1x ljestvica 100%, 2x ljestvica 110%, 2x ljestvica 120%);

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

Kotač 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 s unutarnje strane strukture, a plastični dio izravno na ljepilo). Kabelske žice moraju prolaziti od vrha prsta do stražnje strane kako bi električno ožičenje prošlo sa stražnje strane ruke.

Korak 5: Pričvrstite 3D ispisane dijelove na rukavicu

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

Svi kruti dijelovi (ekstremiteti, prstenovi) moraju se prišiti na rukavicu kako bi se učvrstili.

Da biste pravilno postavili prstene, najprije nosite rukavicu i pokušajte staviti prstenje, jedan po falangi, bez da se dodiruju tijekom 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 je pokušajte nanijeti na istrošenu rukavicu, povucite crtu na rukavici na mjestu na kojem želite prsten kako biste ga zatim mogli sašiti.

Što se tiče šivanja, nisu potrebne posebne tehnike ili sposobnosti. Igla za šivanje ide u krug 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 se na rukavicu morati prišiti samo križni oblici na vrhu prsta.

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 baze prsta je dovoljno dobro, 4 do 5 cm za palac);

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

Popravljaju se šivanjem na rukavicu i zapešće, 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 servomotore

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

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

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

3 propelera mogu se 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 ispisati pomoćnu PLA ploču kako bismo dobili potporu.

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

Zatim smo pričvrstili ploču na rukavicu nekim kabelskim vezicama: jednostavno smo škarama napravili rupe u rukavici, zatim smo bušilicom napravili rupe u plastičnoj ploči i sve spojili. Četiri rupe u ploči potrebne su u sredini, među njezinim obodom, 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 prekrižene kabelske vezice. Sa njihovih strana dodano je malo ljepila kako bi se osiguralo učvršćivanje.

Motori moraju biti postavljeni tako da kotači 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 pogreš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 da bi prst ostao 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. Kako bi se oslobodilo savijanje prsta, na senzor tlaka mora se primijeniti nova sila, 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čitanje je postavljena kao:

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

Dva praga su fiksirana prstom koji odgovaraju dvama položajima aktiviranja servomotora. Ti su pragovi 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; sve inicijalizirano na 0 vrijednosti.

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

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

Veza između senzora i motora:

Izbor spremanja1, spremanja2, spremanja3 i očitanja1, očitanja2, očitanja3 ovisi o lemljenju. No, 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 primjenjuje li se pritisak na senzore ili ne. Kad 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 servomotore.

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 izravno ponovno otvori ruka nakon zatvaranja u slučaju da se sila primijeni dulje od vremena odgode.

Sav proces za jedan senzor prikazan je u 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.priključak (9); // servo na digitalnom pinu 9 servo2.write (160); // početna točka za servo servo1.priključak (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 (oč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 (očitanje1> 100 i spremanje1 == 0) {// ako senzor dobije visoku vrijednost i nije u stanju mirovanja save1 = 2; } // idite na stanje 2 else if (čitanje1> 30 i spremanje1 == 0) {// ako senzor dobije srednju vrijednost i nije u stanju mirovanja save1 = 1; } // došao u stanje 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 kut 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

Druga ploča je tiskana u PLA -i kako bi se mogli popraviti držači baterija i arduino.

Ploča ima dimenzije: 100x145x5mm.

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

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

Veroboard se stavlja na arduino poput štita.

Korak 10: Spojite elektroniku

Spojite elektroniku
Spojite 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 servosa spojen je na pinovi 3, 6 i 9 za njihovo upravljanje PWM -om.

Svaki je senzor spojen sa strane 5V Arduina, a s druge strane 330 ohmskim otpornikom 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 napravljene su 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č serva ravnim prstima.

Pričvršćeni su na kotače čvorom koji prolazi kroz dvije male rupice 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čeni: