Sommario:

RoboGlove: 12 passaggi (con immagini)
RoboGlove: 12 passaggi (con immagini)

Video: RoboGlove: 12 passaggi (con immagini)

Video: RoboGlove: 12 passaggi (con immagini)
Video: 3.1a Why NASA Floundered for 50 Years 2024, Dicembre
Anonim
RoboGlove
RoboGlove

Siamo un gruppo di studenti dell'ULB, Université Libre de Bruxelles. Il nostro progetto consiste nello sviluppo di un guanto robot in grado di creare una forza di presa che aiuta le persone ad afferrare le cose.

IL GUANTO

Il guanto ha una connessione a filo che collega le dita ad alcuni servomotori: un filo è attaccato all'estremità del dito e al servo, quindi quando il servo gira, il filo viene tirato e il dito si flette. In questo modo, controllando la presa effettuata dall'utente tramite dei sensori di pressione all'estremità delle dita, siamo in grado di azionare i motori in modo controllato e aiutare la presa piegando il dito proporzionalmente alla rotazione dei motori e quindi all'arrotolamento dei fili. In questo modo dovremmo essere in grado sia di permettere a persone deboli di afferrare oggetti sia di aiutare anche persone in condizioni fisiologiche ad afferrare oggetti ea trattenerli senza alcuno sforzo.

IL DESIGN

Il modello è stato sviluppato per rendere il movimento della mano il più libero possibile. Infatti, abbiamo stampato in 3D solo le parti strettamente necessarie di cui avevamo bisogno per collegare cavi, motori e dita.

Abbiamo una cupola superiore stampata in PLA su ogni dito: questa è la parte terminale dove devono essere collegati i fili e deve garantire protezione al sensore di pressione che è fissato all'interno. Il sensore di pressione è incollato, con colla a caldo, tra l'estremità in PLA e il guanto.

Poi abbiamo due anelli stampati in 3D, per dito, che costituiscono una guida per i fili. Il pollice è l'unico dito che ha un solo anello stampato. C'è un filo per dito, piegato a metà all'estremità delle dita. Le due metà passano attraverso le due guide della parte a cupola e in entrambi gli anelli: vengono messe dritte nei fori che abbiamo fatto all'esterno di questi anelli. Quindi vengono assemblati in una ruota direttamente collegata al motore. La ruota è stata realizzata per poter avvolgere i fili: poiché il nostro motore ha una rotazione non completa (inferiore a 180°) abbiamo realizzato la ruota per tirare il filo per uno spazio di 6 centimetri che è la distanza necessario per chiudere completamente la mano.

Abbiamo anche stampato due targhette per fissare i servomotori e l'arduino al braccio. Dovrebbe essere meglio tagliarlo in legno o plastica rigida con un laser cutter.

Passaggio 1: lista della spesa

Lista della spesa
Lista della spesa
Lista della spesa
Lista della spesa
Lista della spesa
Lista della spesa

Guanto e fili:

1 guanto esistente (deve essere cucibile)

Vecchi jeans o un altro panno rigido

Fili di nylon

Tubo in polietilene a bassa densità (diametro: 4 mm spessore: 1 mm)

Elettronica:

Arduino Uno

1 Batteria 9V + Portabatteria 9V

1 interruttore elettronico

1 veroboard

3 servomotori (1 per dito)

3 eliche (fornite con i servi)

Portabatterie 4 batterie AA + 4 batterie AA

3 sensori di pressione (1 per dito)

3 resistori da 330 ohm (1 per dito)

6 fili elettrici (2 per sensore)

Viti, dadi e fissaggi:

4 M3 lunghi 10mm (per riparare l'Arduino)

2 M2.5 lunghi 12mm (per fissare il portabatteria da 9V)

6 noci corrispondenti

6 M2 lunghi 10mm (2 per servo per fissare le ruote ai servi)

12 fascette piccole (per fissare le placche e l'interruttore)

7 fascette grandi (2 per motore e 1 per porta 4 batterie AA)

Strumenti utilizzati:

Stampante 3D (Ultimaker 2)

Materiale per cucire

Pistola per colla a caldo

Opzionale: taglio laser

Passaggio 2: preparare la struttura indossabile

Preparare la struttura indossabile
Preparare la struttura indossabile

La struttura indossabile è stata realizzata con alcuni indumenti: nel nostro caso abbiamo utilizzato un normale guanto da elettricista e un panno jeans per la struttura intorno al polso. Sono stati cuciti insieme.

L'obiettivo è avere una struttura indossabile flessibile.

La struttura deve essere più resistente di un normale guanto di lana poiché deve essere cucita.

Abbiamo bisogno di una struttura indossabile intorno al polso per contenere gli alimentatori e gli attuatori, e abbiamo bisogno che sia stabile, quindi abbiamo scelto di rendere la chiusura regolabile applicando bande in velcro (bande autoadesive) al polso dei jeans.

All'interno sono stati cuciti dei bastoncini di legno per rendere i jeans più rigidi.

Passaggio 3: preparare le parti funzionali

Preparare le parti funzionali
Preparare le parti funzionali

Le parti rigide sono realizzate tramite stampa 3D in PLA dai file.stl in descrizione:

Anello da dito x5 (con diverse scale: 1x scala 100%, 2x scala 110%, 2x scala 120%)

Estremità del dito x3 (con diverse scale: 1x scala 100%, 1x scala 110%, 1x scala 120%)

Ruota per motore x3

Per le parti delle dita sono necessarie squame diverse a causa delle diverse dimensioni di ogni dito e di ogni falange.

Passaggio 4: fissare i sensori alle estremità

Fissare i sensori alle estremità
Fissare i sensori alle estremità

I sensori di pressione vengono prima saldati ai fili del cavo.

Si incollano poi con l'uso di una pistola per colla all'interno delle estremità delle dita: si pone una piccola quantità di colla all'interno dell'estremità, dalla parte con i due fori, quindi si applica subito il sensore con la parte attiva (tonda) sulla colla (avere il piezoelettrico rivolto verso l'interno della struttura e la parte in plastica direttamente sulla colla). I fili del cavo devono passare dalla parte superiore del dito fino alla sua schiena, in modo che i cavi elettrici scorrano sul dorso della mano.

Passaggio 5: fissare le parti stampate in 3D al guanto

Fissa le parti stampate in 3D al guanto
Fissa le parti stampate in 3D al guanto

Tutte le parti rigide (estremità, anelli) devono essere cucite al guanto per essere fissate.

Per posizionare correttamente gli anelli, indossa prima il guanto e prova a mettere gli anelli, uno per falange, senza farli toccare durante la chiusura della mano. Approssimativamente, gli anelli sull'indice saranno fissati a 5 mm sopra la base del dito e da 17 a 20 mm sopra il primo. Per quanto riguarda il dito medio, il primo anello sarà a circa 8-10 mm sopra la base del dito e il secondo a circa 20 mm sopra il primo. Per quanto riguarda il pollice, la precisione necessaria è molto bassa, poiché non rischia di interferire con gli altri anelli, quindi prova ad applicarlo sul guanto indossato, traccia una linea sul guanto dove preferisci avere il anello in modo da poterlo poi cucire.

Per quanto riguarda il cucito non è richiesta alcuna tecnica o abilità particolare. Con un ago, il filo per cucire gira in tondo attorno agli anelli, passando attraverso la superficie del guanto. Un passo di 3-4 mm tra due fori nel guanto fa già una fissazione abbastanza forte, non c'è bisogno di fare una cucitura molto densa.

La stessa tecnica viene applicata per fissare le estremità: la parte superiore dell'estremità è forata per far passare facilmente l'ago, quindi al guanto dovranno essere cucite solo le forme a croce sulla parte superiore del dito.

Quindi vanno fissate anche le guide in polietilene, seguendo tre criteri:

l'estremità distale (rivolta al dito) deve essere rivolta nella direzione del dito, per evitare forti attriti con il filo di nylon che andrà al suo interno;

l'estremità distale deve essere sufficientemente lontana da non interferire con la chiusura della mano (va bene circa 3 cm più in basso della base del dito, 4-5 cm per il pollice);

i tubi devono passare il meno possibile l'uno sull'altro, per ridurre l'ingombro dell'intero guanto e la mobilità di ciascun tubo

Si fissano cucendoli al guanto e al polso, con la stessa tecnica di cui sopra.

Per evitare qualsiasi rischio di scivolamento durante la cucitura, è stata aggiunta della colla tra i tubi ei guanti.

Passaggio 6: preparare le ruote per i servi

Prepara le ruote per i servi
Prepara le ruote per i servi

Abbiamo utilizzato ruote appositamente progettate, disegnate e stampate in 3D da noi stessi per questo progetto (file.stl nella descrizione).

Una volta stampate le ruote, dobbiamo fissarle alle eliche dei servi avvitando (viti M2, 10mm). Poiché i fori delle eliche sono più piccoli di 2 mm di diametro avvitando l'M2, non sono necessari dadi.

Le 3 eliche possono essere applicate su ogni servo.

Passaggio 7: fissare i motori al braccio

Fissare i motori al braccio
Fissare i motori al braccio

Questa fase consiste nel fissaggio dei motori al braccio; per farlo abbiamo dovuto stampare una placca ausiliaria in PLA per ottenere un supporto.

In realtà i motori non potevano essere fissati direttamente al braccio poiché le ruote, necessarie per tirare i fili, potevano essere bloccate durante il movimento a causa del guanto. Quindi abbiamo stampato in 3D una targa PLA di dimensioni 120x150x5 mm.

Poi abbiamo fissato la placca al nostro guanto con delle fascette: abbiamo fatto dei fori nel guanto semplicemente usando delle forbici, poi abbiamo fatto dei buchi nella placca di plastica con un trapano e abbiamo rimontato il tutto. Sono necessari quattro fori nella placca al centro, tra il suo perimetro, per far passare le fascette. Sono realizzati con un trapano. Questi sono nella parte centrale e non ai lati della placca per poter chiudere i jeans attorno al braccio senza che la placca lo blocchi poiché la placca non è flessibile.

Quindi vengono praticati anche altri fori nella placca di plastica per fissare i motori. I motori sono fissati con due fascette incrociate. È stata aggiunta della colla sui lati per garantire il fissaggio.

I motori devono essere messi in modo tale che le ruote non si interferiscano tra loro. Quindi ci sono separati nel lato sinistro e destro della mano: due in un lato, con le ruote che girano in direzioni opposte e uno nell'altro lato.

Passaggio 8: codice su Arduino

Codice su Arduino
Codice su Arduino

Il codice è stato sviluppato in modo semplice: attivare o meno i motori. I servocomandi vengono azionati solo se la lettura supera un certo valore (è stato risolto per tentativi ed errori perché la sensibilità di ogni sensore non è esattamente la stessa). Ci sono due possibilità di piegatura, bassa per una forza bassa e completamente per una forza forte. Una volta che il dito è piegato, non è necessaria la forza dell'utente per mantenere il dito nella posizione effettiva. Il motivo di questa implementazione è che altrimenti è stato detto che le dita devono applicare continuamente una forza sui sensori e il guanto non dà alcun vantaggio. Per rilasciare la flessione del dito, è necessario applicare una nuova forza sul sensore di pressione, agendo su un comando di arresto.

Possiamo dividere il codice in tre parti:

Inizializza sensori:

Innanzitutto abbiamo inizializzato tre variabili intere: reading1, reading2, reading3 per ogni sensore. I sensori sono stati inseriti negli ingressi analogici A0, A2, A4. Ogni variabile per la lettura è impostata come:

  • reading1 dove è scritto il valore letto nell'ingresso A0,
  • reading2 dove viene scritto il valore letto nell'ingresso A2,
  • reading3 dove è scritto il valore letto nell'ingresso A4

Due soglie sono fissate da finger corrispondenti alle due posizioni di attuazione dei servi. Queste soglie sono diverse per ogni dito poiché la forza applicata non è la stessa per ogni dito e la sensibilità dei tre sensori non è esattamente la stessa.

Avviamento motori:

Tre variabili char (save1, save2, save3), una per ogni motore sono inizializzate a 0. Poi nel setup abbiamo specificato i pin dove collegheremo rispettivamente i motori: pin 9, pin 6 e pin 3 per servo1, servo2, servo3; tutto inizializzato al valore 0.

Successivamente i servo vengono azionati tramite il comando servo.write() che è in grado di fissare l'angolo ricevuto in input sul servo. Sempre per tentativi ed errori sono stati trovati i due buoni angoli, necessari per piegare il dito in due posizioni corrispondenti ad una presa piccola e ad una presa grande.

Poiché un motore deve girare nella direzione opposta a causa della sua fissazione, il suo punto di partenza non è zero ma l'angolo massimo e diminuisce quando viene applicata una forza per poter girare nella direzione opposta.

Collegamento tra sensori e motori:

La scelta di save1, save2, save3 e reading1, reading2, reading3 dipende dalla saldatura. Ma per ogni dito, il sensore e il relativo motore devono avere lo stesso numero.

Poi nel loop, se sono state utilizzate le condizioni per verificare se il dito è già in una posizione di piegatura o meno e se la pressione viene applicata o meno sui sensori. Quando i sensori restituiscono un valore, è necessario applicare una forza ma sono possibili due casi diversi:

  • Se il dito non è ancora piegato, confrontando questo valore restituito dai sensori con le soglie, viene applicato al servo l'angolo corrispondente.
  • Se il dito è già piegato, significa che l'utente vuole rilasciare la piegatura e quindi l'angolo di partenza viene applicato ai servi.

Questo viene fatto per ogni motore.

Poi abbiamo aggiunto un ritardo di 1000 ms per evitare di testare troppo spesso i valori dei sensori. Se si applica un valore di ritardo troppo piccolo, si rischia di riaprire direttamente la lancetta dopo averla chiusa nel caso in cui la forza venga applicata per un tempo maggiore del tempo di ritardo.

Tutto il processo per un sensore è presentato nel diagramma di flusso qui sopra.

L'INTERO CODICE

#include Servo servo1; Servo servo2; Servo servo3; int lettura1; int lettura2; lettura int3; carattere salva1 = 0; // il servo parte dallo stato 0, stato di sospensione char save2 = 0; carattere salva3 = 0; void setup(void) { Serial.begin(9600); servo2.attach(9); //servo al pin digitale 9 servo2.write(160); //punto iniziale per servo servo1.attach(6); //servo al pin digitale 6 servo1.write(0); //punto iniziale per servo servo3.attach(3); //servo al pin digitale 3 servo3.write(0); //punto iniziale per servo

}

void loop(void) { reading1 = analogRead(A0); //collegato all'analogico 0 reading2 = analogRead(A2); //collegato a analog 2 reading3 = analogRead(A4); //collegato all'analogico 4

// if (lettura2 >= 0) { Serial.print("Valore sensore = "); // Esempio di comando utilizzato per la calibrazione delle soglie del primo sensore

// Serial.println(lettura2); } // else { Serial.print("Valore sensore = "); Serial.println(0); }

if (reading1 > 100 e save1 == 0){ // se il sensore assume un valore alto e non è in stato di sospensione save1 = 2; } // vai allo stato 2 else if (reading1 > 30 e save1 == 0){ // se il sensore ottiene un valore medio e non è in stato di sospensione save1 = 1; } // passa allo stato 1 else if (lettura1 > 0){ // se il valore è diverso da zero e nessuna delle condizioni precedenti è corretta save1 = 0;} // passa allo stato di sospensione

if (salva1 == 0) { servo1.write(160); } // rilascia else if(save1 == 1){ servo1.write(120); } // angolo medio di trazione else{ servo1.write(90); } // angolo massimo di trazione

if (lettura2 > 10 e save2 == 0){ // uguale al servo 1 save2 = 2; } else if (lettura2 > 5 e save2 == 0){ save2 = 1; } else if (lettura2 > 0){ save2 = 0;}

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

if (lettura3 > 30 e save3 == 0){ // uguale al servo 1 save3 = 2; } else if (lettura3 > 10 e save3 == 0){ save3 = 1; } else if (lettura3 > 0){ save3 = 0;}

if (salva3 == 0) { servo3.write(0); } else if(save3 == 1){ servo3.write(40); } else{ servo3.write(70); } ritardo(1000); } // aspetta un secondo

Passaggio 9: fissare Arduino, batterie e Veroboard al braccio

Fissa l'Arduino, le Batterie e la Veroboard al Braccio
Fissa l'Arduino, le Batterie e la Veroboard al Braccio
Fissa l'Arduino, le Batterie e la Veroboard al Braccio
Fissa l'Arduino, le Batterie e la Veroboard al Braccio

Un'altra targa è stata stampata in PLA per poter fissare i porta batterie e l'arduino.

La piastra ha le dimensioni: 100x145x5mm.

Sono presenti quattro fori per avvitare l'arduino e due per avvitare il portabatteria da 9V. È stato fatto un foro nel portabatteria da 6V e nella piastra per utilizzare una fascetta per fissarli insieme. È stata aggiunta della colla per garantire il fissaggio di questo supporto. L'interruttore è fissato con due piccole fascette.

Sono inoltre presenti quattro fori utilizzati per fissare la placca sui jeans tramite fascette.

Il veroboard è messo sull'arduino come uno scudo.

Passaggio 10: collegare l'elettronica

Collega l'elettronica
Collega l'elettronica

Il circuito è saldato sulla veroboard come riportato nello schema sopra.

L'Arduino ha come alimentazione una batteria da 9V e tra questi è collegato un interruttore per poter spegnere l'Arduino. Per il servomotore che necessita di molta corrente è necessaria una batteria da 6V e il terzo pin dei servi è collegato al pin 3, 6 e 9 per controllarli con PWM.

Ogni sensore è collegato da un lato dai 5V dell'Arduino e dall'altro da una resistenza da 330 ohm collegata a massa e dai pin A0, A2 e A4 per misurare la tensione.

Passaggio 11: aggiungere i fili di nylon

Aggiungi i fili di nylon
Aggiungi i fili di nylon

I fili di nylon vengono fatti passare attraverso entrambi i fori sull'estremità e gli anelli come si vede in foto, quindi le due metà del filo andranno entrambe all'interno della guida in polietilene e rimarranno unite fino alla fine della guida, al motore. La lunghezza dei fili è determinata a questo punto, devono essere abbastanza lunghi da poter girare una volta la ruota del servo con le dita dritte.

Si fissano alle ruote con un nodo passante attraverso due piccoli fori presenti sulle lime.stl e con colla a caldo per ulteriore stabilizzazione.

Passaggio 12: divertiti

Funziona come previsto.

Al primo impulso flette il dito e al secondo lo rilascia. Non serve forza quando si piegano le dita.

Tuttavia restano tre problemi:

- Bisogna fare attenzione a dare un impulso inferiore a 1 secondo per azionare i servi altrimenti i fili vengono rilasciati immediatamente dopo il tiro come spiegato nel passaggio 8 sul codice Arduino.

- Le parti in plastica scivolano un po', quindi abbiamo aggiunto della colla a caldo all'estremità per aumentare l'attrito.

- Se c'è un carico pesante sul dito il sensore avrà sempre un valore grande e quindi il servo ruoterà continuamente.

Consigliato: