Spisu treści:

RoboGlove: 12 kroków (ze zdjęciami)
RoboGlove: 12 kroków (ze zdjęciami)

Wideo: RoboGlove: 12 kroków (ze zdjęciami)

Wideo: RoboGlove: 12 kroków (ze zdjęciami)
Wideo: Doda łamie zasady własnego show? | Doda. 12 kroków do miłości #7 2024, Lipiec
Anonim
RoboGlove
RoboGlove

Jesteśmy grupą studentów ULB, Université Libre de Bruxelles. Nasz projekt polega na opracowaniu rękawicy robota zdolnej do wytworzenia siły chwytu pomagającej ludziom chwytać rzeczy.

RĘKAWICA

Rękawica ma połączenie przewodowe, które łączy palce z niektórymi serwomotorami: drut jest przymocowany do końca palca i do serwa, więc gdy serwo obraca się, drut jest ciągnięty, a palec jest zginany. W ten sposób, kontrolując chwyt wykonywany przez użytkownika za pomocą czujników nacisku na końcach palców, jesteśmy w stanie sterować silnikami w kontrolowany sposób i wspomóc chwytanie poprzez zginanie palca proporcjonalnie do obrotów silników i więc do zwijania drutów. W ten sposób powinniśmy być w stanie albo pozwolić słabym ludziom chwytać przedmioty, albo pomagać nawet osobom w warunkach fizjologicznych w chwytaniu przedmiotów i utrzymywaniu ich bez żadnego wysiłku.

PROJEKTOWANIE

Model został opracowany tak, aby ruch dłoni był jak najbardziej swobodny. W rzeczywistości drukowaliśmy w 3D tylko niezbędne części, których potrzebowaliśmy do podłączenia przewodów, silników i palców.

Na każdym palcu mamy górną kopułę wydrukowaną z PLA: jest to część zaciskowa, do której należy podłączyć przewody i która musi chronić czujnik ciśnienia, który jest zamocowany wewnątrz. Czujnik nacisku jest przyklejony gorącym klejem pomiędzy końcem PLA a rękawicą.

Następnie mamy dwa drukowane w 3D pierścienie na każdy palec, które stanowią prowadnicę dla przewodów. Kciuk jest jedynym palcem, który ma tylko jeden nadrukowany pierścień. Na każdy palec przypada jeden drut, złożony na pół na końcach palców. Dwie połówki przechodzą przez dwie prowadnice części kopułowej i w obu pierścieniach: są wkładane prosto w otwory, które wykonaliśmy na zewnątrz tych pierścieni. Następnie są składane w koło bezpośrednio połączone z silnikiem. Koło zostało zrealizowane, aby móc owijać się wokół przewodów: ponieważ nasz silnik nie obraca się całkowicie (mniej niż 180 °), zrealizowaliśmy koło, aby ciągnąć przewód na odległość 6 centymetrów, która jest odległością potrzebne do całkowitego zamknięcia dłoni.

Zadrukowaliśmy również dwie płytki do mocowania serwomotorów i arduino do ramienia. Lepiej wyciąć go w drewnie lub sztywnym plastiku za pomocą wycinarki laserowej.

Krok 1: Lista zakupów

Lista zakupów
Lista zakupów
Lista zakupów
Lista zakupów
Lista zakupów
Lista zakupów

Rękawica i druty:

1 istniejąca rękawica (musi być do szycia)

Stare dżinsy lub inna sztywna tkanina

Druty nylonowe

Rurka z polietylenu o niskiej gęstości (średnica: 4 mm, grubość: 1 mm)

Elektronika:

Arduino Uno

1 bateria 9V + 9V uchwyt baterii

1 przełącznik elektroniczny

1 veroboard

3 serwomotory (1 na palec)

3 śmigła (dostarczane z serwomechanizmami)

Uchwyt na 4 baterie AA + 4 baterie AA

3 czujniki ciśnienia (1 na palec)

3 rezystory 330 omów (1 na palec)

6 przewodów elektrycznych (2 na czujniki)

Śruby, nakrętki i mocowania:

4 M3 10mm długości (do mocowania Arduino)

2 M2,5 o długości 12mm (do mocowania uchwytu baterii 9V)

6 odpowiednich orzechów

6 M2 10mm długości (2 na serwo do mocowania kół do serwa)

12 małych opasek kablowych (do mocowania płytek i przełącznika)

7 dużych opasek kablowych (2 na silniki i 1 na 4 baterie AA)

Używane narzędzia:

Drukarka 3D (Ultimaker 2)

Materiał do szycia

Pistolet do klejenia na gorąco

Opcjonalnie: wycinarka laserowa

Krok 2: Przygotuj konstrukcję do noszenia

Przygotuj strukturę do noszenia
Przygotuj strukturę do noszenia

Konstrukcja do noszenia została wykonana z niektórych ubrań: w naszym przypadku użyliśmy zwykłej rękawicy dla elektryka i dżinsowej tkaniny do konstrukcji wokół nadgarstka. Zostały zszyte.

Celem jest posiadanie elastycznej struktury do noszenia.

Struktura musi być mocniejsza niż zwykła wełniana rękawica, ponieważ musi być uszyta.

Potrzebujemy konstrukcji, którą można nosić wokół nadgarstka, aby utrzymać zasilacze i siłowniki, i potrzebujemy, aby była stabilna, dlatego zdecydowaliśmy się na regulację zamykania poprzez nałożenie na nadgarstek dżinsów taśm z rzepami (opaski samoprzylepne).

Do środka wszyto kilka drewnianych patyczków, aby dżinsy były sztywniejsze.

Krok 3: Przygotuj części funkcjonalne

Przygotuj części funkcjonalne
Przygotuj części funkcjonalne

Części sztywne realizowane są poprzez druk 3D w PLA z plików.stl w opisie:

Finger Ring x5 (z różnymi skalami: 1x skala 100%, 2x skala 110%, 2x skala 120%);

Kończyna palca x3 (z różnymi skalami: 1x skala 100%, 1x skala 110%, 1x skala 120%);

Koło do silnika x3

W przypadku części palców potrzebne są różne łuski ze względu na różną wielkość każdego palca i każdej falangi.

Krok 4: Przymocuj czujniki do kończyn

Przymocuj czujniki do kończyn
Przymocuj czujniki do kończyn

Czujniki ciśnienia są najpierw lutowane do przewodów kablowych.

Następnie przykleja się je za pomocą pistoletu do kleju wewnątrz kończyn palców: niewielką ilość kleju umieszcza się wewnątrz kończyny, po stronie z dwoma otworami, po czym czujnik jest natychmiast nakładany aktywną (okrągłą) częścią na kleju (umieść piezoelektryczną stronę wewnętrzną konstrukcji, a plastikową część bezpośrednio na kleju). Przewody kabla muszą przebiegać przez czubek palca w dół do jego grzbietu, aby okablowanie elektryczne przebiegało z tyłu dłoni.

Krok 5: Przymocuj drukowane części 3D do rękawicy

Przymocuj drukowane części 3D do rękawicy
Przymocuj drukowane części 3D do rękawicy

Wszystkie sztywne części (końcówki, pierścienie) muszą być przyszyte do rękawicy w celu ich zamocowania.

Aby prawidłowo założyć pierścienie, najpierw załóż rękawicę i spróbuj założyć pierścienie, po jednym na falangę, bez dotykania ich podczas zamykania dłoni. W przybliżeniu pierścienie na wskaźniku zostaną zamocowane 5 mm nad podstawą palca i 17 do 20 mm nad pierwszym. Jeśli chodzi o palec środkowy, pierwszy pierścień będzie znajdował się około 8 do 10 mm nad podstawą palca, a drugi około 20 mm nad pierwszym. Jeśli chodzi o kciuk, wymagana precyzja jest bardzo niska, ponieważ nie ma ryzyka kolidowania z innymi pierścieniami, więc spróbuj nałożyć ją na zużytą rękawiczkę, narysuj na rękawicy linię w miejscu, w którym wolisz mieć pierścionek, abyś mógł go następnie uszyć.

Jeśli chodzi o szycie, nie jest wymagana żadna konkretna technika ani umiejętność. Za pomocą igły nić do szycia zatacza kręgi wokół pierścieni, przechodząc przez powierzchnię rękawicy. Krok 3-4mm między dwoma otworami w rękawicy już zapewnia wystarczająco mocne utrwalenie, nie ma potrzeby wykonywania bardzo gęstego szycia.

Ta sama technika jest stosowana do mocowania kończyn: górna część kończyny jest dziurkowana, aby igła mogła łatwo przejść, więc do rękawicy będą musiały zostać przyszyte tylko kształty przypominające krzyżyk na wierzchołku palca.

Następnie należy również zamocować prowadnice z polietylenu, zgodnie z trzema kryteriami:

koniec dystalny (zwrócony do palca) musi być zwrócony w kierunku palca, aby uniknąć silnego tarcia o drut nylonowy, który wejdzie do środka;

koniec dystalny musi być na tyle daleko, aby nie przeszkadzał w zamknięciu dłoni (wystarczy ok. 3 cm niżej niż podstawa palca, 4 do 5 cm dla kciuka);

rurki muszą przechodzić przez siebie jak najmniej, aby zmniejszyć objętość całej rękawicy i mobilność każdej rurki

Mocuje się je przez przyszycie do rękawicy i nadgarstka tą samą techniką jak powyżej.

Aby uniknąć ryzyka ześlizgnięcia się podczas szycia, pomiędzy rurki a rękawice dodano trochę kleju.

Krok 6: Przygotuj koła do serw

Przygotuj koła do serw
Przygotuj koła do serw

Do tego projektu użyliśmy specjalnie zaprojektowanych kół, narysowanych i wydrukowanych w 3D (plik.stl w opisie).

Po wydrukowaniu kół musimy je przykręcić do śmigieł serw przykręcając (śruby M2, 10mm). Ponieważ otwory śmigieł są mniejsze niż 2 mm średnicy po wkręceniu M2, nie są potrzebne żadne nakrętki.

Na każdym serwo można zastosować 3 śmigła.

Krok 7: Przymocuj silniki do ramienia

Przymocuj silniki do ramienia
Przymocuj silniki do ramienia

Ten krok polega na przymocowaniu silników do ramienia; w tym celu musieliśmy wydrukować pomocniczą tabliczkę PLA, aby uzyskać wsparcie.

Właściwie silniki nie mogły być przymocowane bezpośrednio do ramienia, ponieważ kółka potrzebne do przeciągania przewodów mogły zostać zablokowane podczas ruchu z powodu rękawicy. Wydrukowaliśmy więc w 3D tabliczkę PLA o wymiarach 120x150x5 mm.

Następnie przymocowaliśmy płytkę do naszej rękawicy za pomocą opasek zaciskowych: zrobiliśmy kilka otworów w rękawicy po prostu nożyczkami, następnie zrobiliśmy otwory w plastikowej płytce za pomocą wiertarki i wszystko poskładaliśmy. Aby przeprowadzić opaski kablowe, potrzebne są cztery otwory w blaszce pośrodku, na jej obwodzie. Wykonane są za pomocą wiertła. Znajdują się one w środkowej części, a nie po bokach płyty, aby umożliwić zamknięcie dżinsów wokół ramienia bez blokowania go przez płytkę, ponieważ płytka nie jest elastyczna.

Następnie w plastikowej płytce wiercone są również inne otwory do mocowania silników. Silniki mocowane są dwoma skrzyżowanymi opaskami kablowymi. Po ich bokach dodano trochę kleju, aby zapewnić mocowanie.

Silniki należy ustawić tak, aby koła nie kolidowały ze sobą. Są więc rozdzielone po lewej i prawej stronie dłoni: dwa z boku, z kołami obracającymi się w przeciwnych kierunkach i jedno w drugą stronę.

Krok 8: Kod na Arduino

Kod na Arduino
Kod na Arduino

Kod został opracowany w prosty sposób: uruchamiać silniki lub nie. Serwa są uruchamiane tylko wtedy, gdy odczyt przekracza określoną wartość (poprawiono to metodą prób i błędów, ponieważ czułość każdego czujnika nie jest dokładnie taka sama). Istnieją dwie możliwości gięcia, niskie dla małej siły i całkowicie dla dużej siły. Po zgięciu palca nie jest potrzebna żadna siła użytkownika, aby utrzymać palec w rzeczywistej pozycji. Powodem tej implementacji jest to, że w przeciwnym razie wspomniano, że palce muszą stale wywierać siłę na czujniki, a rękawica nie daje żadnej przewagi. Aby zwolnić zgięcie palca, na czujnik nacisku należy przyłożyć nową siłę, działając w oparciu o polecenie zatrzymania.

Kod możemy podzielić na trzy części:

Czujniki inicjujące:

Przede wszystkim zainicjalizowaliśmy trzy zmienne całkowite: czytanie1, czytanie2, czytanie3 dla każdego czujnika. Czujniki zostały umieszczone na wejściach analogowych A0, A2, A4. Każda zmienna do odczytu ustawiana jest jak:

  • odczyt1 gdzie zapisywana jest wartość odczytana na wejściu A0,
  • read2 gdzie zapisywana jest wartość odczytana na wejściu A2,
  • odczyt3 gdzie zapisana jest wartość odczytana na wejściu A4

Palcem ustala się dwa progi odpowiadające dwóm pozycjom uruchamiania serw. Te progi są różne dla każdego palca, ponieważ przyłożona siła nie jest taka sama dla każdego palca, a czułość trzech czujników nie jest dokładnie taka sama.

Uruchamianie silników:

Trzy zmienne char (save1, save2, save3), po jednej dla każdego silnika, są inicjowane na 0. Następnie w konfiguracji określiliśmy piny, do których podłączamy odpowiednio silniki: pin 9, pin 6 i pin 3 dla serwo1, serwo2, serwo3; wszystkie inicjalizowane wartością 0.

Następnie serwa są uruchamiane za pomocą polecenia servo.write(), które jest w stanie ustalić kąt otrzymany jako wejście na serwo. Również próbami i błędami znaleziono dwa dobre kąty, potrzebne do zgięcia palca w dwóch pozycjach odpowiadających małemu uchwytowi i dużemu uchwytowi.

Ponieważ jeden silnik musi obracać się w przeciwnym kierunku ze względu na jego zamocowanie, jego punkt początkowy nie jest zerem, ale maksymalnym kątem i zmniejsza się, gdy przyłożona jest siła, aby móc obracać się w przeciwnym kierunku.

Połączenie między czujnikami a silnikami:

Wybór zapisz1, zapisz2, zapisz3 i odczytaj1, odczytaj2, odczytaj3 zależy od lutowania. Ale dla każdego palca czujnik i powiązany silnik muszą mieć ten sam numer.

Następnie w pętli, jeśli zastosowano warunki do sprawdzenia, czy palec jest już w pozycji zgiętej, czy nie i czy nacisk jest wywierany na czujniki, czy nie. Gdy czujniki zwracają wartość, należy przyłożyć siłę, ale możliwe są dwa różne przypadki:

  • Jeśli palec nie jest jeszcze zgięty, porównując tę wartość zwracaną przez czujniki z progami, do serwa przykładany jest odpowiedni kąt.
  • Jeżeli palec jest już zgięty, oznacza to, że użytkownik chce zwolnić zgięcie, a następnie do serwomechanizmów przykładany jest kąt początkowy.

Odbywa się to dla każdego silnika.

Następnie dodaliśmy opóźnienie 1000 ms, aby uniknąć zbyt częstego testowania wartości czujników. Jeśli zostanie zastosowana zbyt mała wartość opóźnienia, istnieje ryzyko bezpośredniego ponownego otwarcia dłoni po jej zamknięciu w przypadku przyłożenia siły w czasie dłuższym niż czas opóźnienia.

Cały proces dla jednego czujnika przedstawiono na powyższym schemacie blokowym.

CAŁY KOD

#include Servo servo1; Serwo serwo2; serwo serwo3; czytanie wewnętrzne1; czytanie wewnętrzne2; czytanie wewnętrzne3; zapisz znak1 = 0; // serwo startuje w stanie 0, stan uśpienia char save2 = 0; zapisz znak3 = 0; void setup(void) { Serial.begin(9600); servo2.attach(9); //serwo na cyfrowym pinie 9 servo2.write(160); //punkt początkowy serwa servo1.attach(6); //serwo na pin cyfrowy 6 servo1.write(0); //punkt początkowy serwa servo3.attach(3); //serwo na cyfrowym pin 3 servo3.write(0); //początkowy punkt dla serwo

}

void loop(void) { czytanie1 = analogRead(A0); //dołączony do odczytu analogowego 02 = analogRead(A2); //dołączony do odczytu analogowego 23 = analogRead(A4); //dołączony do analogu 4

// if (reading2 >= 0) { Serial.print("Wartość czujnika = "); // Przykład polecenia użytego do kalibracji progów pierwszego czujnika

// Serial.println(odczyt2); } // else { Serial.print("Wartość czujnika = "); Serial.println(0); }

if (odczyt1 > 100 i save1 == 0){ // jeśli czujnik otrzymuje wysoką wartość i nie jest w stanie uśpienia save1 = 2; } // przejdź do stanu 2 w przeciwnym razie if (odczyt1 > 30 i save1 == 0){ // jeśli czujnik otrzymuje średnią wartość i nie jest w stanie uśpienia save1 = 1; } // przejście do stanu 1 else if (reading1 > 0){ // jeśli value jest niezerowa i żaden z poprzednich warunków nie jest poprawny save1 = 0;} // przejście do stanu uśpienia

if (save1 == 0) { servo1.write(160); } // zwolnienie else if(save1 == 1){ servo1.write(120); } // średni kąt ciągnięcia else{ servo1.write(90); } // maksymalny kąt ciągnięcia

if (reading2 > 10 i save2 == 0){ // to samo co serwo 1 save2 = 2; } else if (odczyt2 > 5 i zapisz2 == 0){ zapisz2 = 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 and save3 == 0){ // to samo co serwo 1 save3 = 2; } else if (odczyt3 > 10 i zapisz3 == 0){ zapisz3 = 1; } else if (reading3 > 0){ save3 = 0;}

if (save3 == 0) { servo3.write(0); } else if(save3 == 1){ servo3.write(40); } else{ servo3.write(70); } opóźnienie(1000); } // Poczekaj sekundę

Krok 9: Przymocuj Arduino, baterie i Veroboard do ramienia

Przymocuj Arduino, baterie i Veroboard do ramienia
Przymocuj Arduino, baterie i Veroboard do ramienia
Przymocuj Arduino, baterie i Veroboard do ramienia
Przymocuj Arduino, baterie i Veroboard do ramienia

Kolejna płytka została wydrukowana w PLA, aby można było naprawić uchwyty baterii i arduino.

Tabliczka ma wymiary: 100x145x5mm.

Istnieją cztery otwory do przykręcenia arduino i dwa do przykręcenia uchwytu baterii 9V. W uchwycie baterii 6V oraz w płycie wykonano otwór do mocowania ich ze sobą za pomocą opaski zaciskowej. Dodano trochę kleju, aby zapewnić mocowanie tego uchwytu. Przełącznik jest mocowany za pomocą dwóch małych opasek kablowych.

Istnieją również cztery otwory służące do mocowania płyty na dżinsach za pomocą opasek zaciskowych.

Veroboard nakłada się na arduino jak tarczę.

Krok 10: Podłącz elektronikę

Podłącz elektronikę
Podłącz elektronikę

Obwód jest lutowany na veroboard zgodnie z powyższym schematem.

Arduino ma baterię 9 V jako zasilanie, a między nimi jest podłączony przełącznik, aby móc wyłączyć Arduino. Do silnika serwo, który wymaga dużej ilości prądu, potrzebna jest bateria 6 V, a trzeci pin serw jest podłączony do piny 3, 6 i 9 do sterowania nimi za pomocą PWM.

Każdy czujnik jest połączony z jednej strony napięciem 5V Arduino, a z drugiej strony rezystorem 330 omów podłączonym do masy i pinami A0, A2 i A4 do pomiaru napięcia.

Krok 11: Dodaj przewody nylonowe

Dodaj przewody nylonowe
Dodaj przewody nylonowe

Linki nylonowe przechodzą przez oba otwory na końcu i pierścienie, jak pokazano na rysunku, a następnie dwie połówki drutu wejdą do prowadnicy polietylenowej i pozostaną razem aż do końca prowadnicy, do silnika. Długość drutów jest określana w tym momencie, muszą być wystarczająco długie, aby raz koło serwomechanizmu okrążyć prostymi palcami.

Mocuje się je na kołach za pomocą węzła przechodzącego przez dwa małe otwory obecne na pilnikach.stl oraz za pomocą gorącego kleju dla dodatkowej stabilizacji.

Krok 12: Ciesz się

Działa zgodnie z oczekiwaniami.

Przy pierwszym impulsie zgina palec, a przy drugim go puszcza. Przy zginaniu palców nie jest potrzebna siła.

Pozostają jednak trzy problemy:

- Musimy uważać, aby impuls był krótszy niż 1 sekunda, aby uruchomić serwa, w przeciwnym razie przewody zostaną natychmiast zwolnione po pociągnięciu, jak wyjaśniono w kroku 8 dotyczącym kodu Arduino.

- Plastikowe części trochę się ślizgają, więc dodaliśmy trochę gorącego kleju na końcu, aby zwiększyć tarcie.

- Jeśli palec jest mocno obciążony, czujnik będzie miał cały czas dużą wartość i serwo będzie się ciągle obracać.

Zalecana: