Tabla de contenido:

RoboGlove: 12 pasos (con imágenes)
RoboGlove: 12 pasos (con imágenes)

Video: RoboGlove: 12 pasos (con imágenes)

Video: RoboGlove: 12 pasos (con imágenes)
Video: You Can’t Escape Freddy Krueger. #freddykrueger #cosplay #nightmare 2024, Noviembre
Anonim
RoboGlove
RoboGlove

Somos un grupo de estudiantes de la ULB, Université Libre de Bruxelles. Nuestro proyecto consiste en el desarrollo de un guante robot capaz de crear una fuerza de agarre que ayude a las personas a agarrar cosas.

EL GUANTE

El guante tiene una conexión de cable que une los dedos a algunos servomotores: se une un cable a la extremidad del dedo y al servo, de modo que cuando el servo gira, se tira del cable y se flexiona el dedo. De esta forma, al controlar el agarre que realiza el usuario a través de unos sensores de presión en la extremidad de los dedos, podemos accionar los motores de forma controlada y ayudar al agarre doblando el dedo proporcionalmente a la rotación de los motores y así que para enrollar los cables. De esta manera, deberíamos poder permitir que las personas débiles agarren objetos o ayudar incluso a personas en condiciones fisiológicas a agarrar objetos y mantenerlos sin ningún esfuerzo.

EL DISEÑO

El modelo ha sido desarrollado para que el movimiento de la mano sea lo más libre posible. De hecho, imprimimos en 3D solo las partes estrictamente necesarias que necesitábamos para conectar cables, motores y dedos.

Tenemos una cúpula superior impresa en PLA en cada dedo: esta es la parte terminal donde se deben conectar los cables y debe otorgar protección al sensor de presión que se fija en el interior. El sensor de presión está pegado, con pegamento caliente, entre la extremidad PLA y el guante.

Luego tenemos dos anillos impresos en 3D, por dedo, que constituyen una guía para los cables. El pulgar es el único dedo que tiene un solo anillo impreso. Hay un alambre por dedo, doblado por la mitad en la extremidad de los dedos. Las dos mitades van pasando por las dos guías de la parte de la cúpula y en ambos anillos: se colocan directamente en los agujeros que hicimos en el exterior de estos anillos. Luego se juntan en una rueda conectada directamente al motor. La rueda se ha realizado para poder enrollar los cables: dado que nuestro motor tiene una rotación incompleta (inferior a 180 °) realizamos la rueda para tirar del cable por un espacio de 6 centímetros que es la distancia necesario para cerrar completamente la mano.

También hemos impreso dos placas para fijar los servomotores y el arduino al brazo. Debería ser mejor cortarlo en madera o plástico rígido con un cortador láser.

Paso 1: lista de compras

Lista de la compra
Lista de la compra
Lista de la compra
Lista de la compra
Lista de la compra
Lista de la compra

Guante y alambres:

1 guante existente (debe ser cosible)

Jeans viejos u otra tela rígida

Alambres de nylon

Tubería de polietileno de baja densidad (Diámetro: 4 mm Espesor: 1 mm)

Electrónica:

Arduino Uno

1 batería 9V + soporte de batería 9V

1 interruptor electrónico

1 veroboard

3 servomotores (1 por dedo)

3 hélices (provistas con los servos)

Soporte para 4 pilas AA + 4 pilas AA

3 sensores de presión (1 por dedo)

3 resistencias 330 ohmios (1 por dedo)

6 cables eléctricos (2 por sensor)

Tornillos, tuercas y fijaciones:

4 M3 de 10 mm de largo (para arreglar el Arduino)

2 M2.5 de 12 mm de largo (para fijar el soporte de la batería de 9V)

6 nueces correspondientes

6 M2 de 10 mm de largo (2 por servo para fijar las ruedas a los servos)

12 bridas pequeñas (para fijar las placas y el interruptor)

7 bridas grandes (2 por motor y 1 para el soporte de 4 pilas AA)

Herramientas usadas:

Impresora 3D (Ultimaker 2)

Material para coser

Pistola de pegamento caliente

Opcional: cortador láser

Paso 2: preparar la estructura vestible

Preparar estructura vestible
Preparar estructura vestible

La estructura usable se ha realizado con algo de ropa: en nuestro caso usamos un guante normal de electricista y una tela de jeans para la estructura alrededor de la muñeca. Fueron cosidos juntos.

El objetivo es tener una estructura portátil flexible.

La estructura debe ser más resistente que la de un guante de lana normal, ya que debe coserse.

Necesitamos una estructura portátil alrededor de la muñeca para sujetar los proveedores de energía y los actuadores, y necesitamos que sea estable, por lo que optamos por hacer que el cierre sea ajustable aplicando bandas de velcro (bandas autoadhesivas) en la muñeca de los jeans.

Se cosieron algunos palos de madera en el interior para hacer los jeans más rígidos.

Paso 3: preparar las piezas funcionales

Prepare las partes funcionales
Prepare las partes funcionales

Las piezas rígidas se realizan mediante impresión 3D en PLA a partir de los archivos.stl en la descripción:

Anillo de dedo x5 (con diferentes escalas: escala 1x 100%, escala 2x 110%, escala 2x 120%);

Extremidad del dedo x3 (con diferentes escalas: escala 1x 100%, escala 1x 110%, escala 1x 120%);

Rueda para motor x3

Para las partes de los dedos, se necesitan diferentes escalas debido al tamaño diferente de cada dedo y de cada falange.

Paso 4: fije los sensores a las extremidades

Fije los sensores a las extremidades
Fije los sensores a las extremidades

Los sensores de presión se sueldan primero a los cables.

Luego se pegan con el uso de una pistola de pegamento dentro de las extremidades de los dedos: se coloca una pequeña cantidad de pegamento dentro de la extremidad, en el lado con los dos orificios, luego el sensor se aplica inmediatamente con la parte activa (redonda) en el pegamento (haga que el piezoeléctrico mire hacia el interior de la estructura y la parte de plástico directamente sobre el pegamento). Los alambres del cable tienen que pasar por la parte superior del dedo hasta la parte posterior, para que el cableado eléctrico corra por el dorso de la mano.

Paso 5: Fije las piezas impresas en 3D al guante

Fije las piezas impresas en 3D al guante
Fije las piezas impresas en 3D al guante

Todas las partes rígidas (extremidades, anillos) deben coserse al guante para poder fijarlas.

Para colocar los anillos correctamente, primero use el guante e intente ponerse los anillos, uno por falange, sin que se toquen durante el cierre de la mano. Aproximadamente, los anillos del índice se fijarán 5 mm por encima de la base del dedo y de 17 a 20 mm por encima del primero. En cuanto al dedo medio, el primer anillo estará aproximadamente de 8 a 10 mm por encima de la base del dedo y el segundo alrededor de 20 mm por encima del primero. En lo que concierne al pulgar, la precisión necesaria es muy baja, ya que no corre el riesgo de interferir con los otros anillos, así que trata de aplicarlo en el guante gastado, dibuja una línea en el guante donde prefieres tener el anillo para luego coserlo.

En cuanto a la costura, no se requiere ninguna técnica o habilidad en particular. Con una aguja, el hilo de coser da vueltas alrededor de los anillos, pasando por la superficie del guante. Un paso de 3-4 mm entre dos agujeros en el guante ya hace una fijación lo suficientemente fuerte, no hay necesidad de hacer una costura muy densa.

Se aplica la misma técnica para fijar las extremidades: la parte superior de la extremidad está perforada para que la aguja pase fácilmente, por lo que solo las formas en forma de cruz en la parte superior del dedo deberán coserse al guante.

Luego, las guías de polietileno también deben fijarse, siguiendo tres criterios:

el extremo distal (de cara al dedo) tiene que mirar en la dirección del dedo, para evitar altas fricciones con el hilo de nailon que entrará en él;

el extremo distal debe estar lo suficientemente lejos como para no interferir con el cierre de la mano (alrededor de 3 cm por debajo de la base del dedo es suficiente, de 4 a 5 cm para el pulgar);

los tubos deben cruzarse entre sí lo menos posible, para reducir el volumen de todo el guante y la movilidad de cada tubo

Se fijan cosiéndolas al guante y a la muñeca, con la misma técnica que el anterior.

Para evitar cualquier riesgo de deslizamiento a través de la costura, se agregó un poco de pegamento entre los tubos y los guantes.

Paso 6: prepare las ruedas para los servos

Prepare las ruedas para los servos
Prepare las ruedas para los servos

Usamos ruedas diseñadas específicamente, dibujadas e impresas en 3D por nosotros mismos para este proyecto (archivo.stl en la descripción).

Una vez impresas las ruedas, tenemos que fijarlas a las hélices de los servos atornillando (M2, tornillos de 10mm). Dado que los orificios de las hélices son más pequeños que 2 mm de diámetro al atornillar el M2, no se necesitan tuercas.

Las 3 hélices se pueden aplicar en cada servo.

Paso 7: fije los motores al brazo

Fijar los motores al brazo
Fijar los motores al brazo

Este paso consiste en la fijación de los motores al brazo; para ello tuvimos que imprimir una placa de PLA auxiliar para conseguir un soporte.

En realidad, los motores no se podían fijar directamente al brazo ya que las ruedas, necesarias para tirar de los cables, podían bloquearse durante el movimiento debido al guante. Así que imprimimos en 3D una placa de PLA de dimensión 120x150x5 mm.

Luego fijamos la placa a nuestro guante con unas bridas: hicimos algunos agujeros en el guante simplemente usando unas tijeras, luego hicimos agujeros en la placa de plástico con un taladro y juntamos todo. Se necesitan cuatro agujeros en la placa en el centro, entre su perímetro, para pasar las bridas. Están hechos con un taladro. Estos están en la parte central y no en los laterales de la placa para poder cerrar el pantalón alrededor del brazo sin que la placa lo bloquee ya que la placa no es flexible.

Luego, también se perforan otros agujeros en la placa de plástico para fijar los motores. Los motores se fijan con dos bridas cruzadas. Se agregó un poco de pegamento en sus lados para asegurar la fijación.

Los motores deben colocarse de tal manera que las ruedas no interfieran entre sí. Entonces hay separados en el lado izquierdo y derecho de la mano: dos en un lado, con las ruedas girando en direcciones opuestas y una en el otro lado.

Paso 8: Código en Arduino

Código en el Arduino
Código en el Arduino

El código se ha desarrollado de forma sencilla: para accionar o no los motores, los servos se accionan solo si la lectura supera un determinado valor (se corrigió mediante ensayos y errores porque la sensibilidad de cada sensor no es exactamente la misma). Hay dos posibilidades de flexión, leve para una fuerza baja y completamente para una fuerza fuerte. Una vez que el dedo está doblado, no se necesita la fuerza del usuario para mantener el dedo en la posición real. El motivo de esta implementación es que, de lo contrario, se ha mencionado que los dedos deben aplicar continuamente una fuerza sobre los sensores y el guante no ofrece ninguna ventaja. Para liberar la flexión del dedo, es necesario aplicar una nueva fuerza sobre el sensor de presión, actuando como comando de parada.

Podemos dividir el código en tres partes:

Inicialización de sensores:

En primer lugar, inicializamos tres variables enteras: lectura1, lectura2, lectura3 para cada sensor. Los sensores se colocaron en las entradas analógicas A0, A2, A4, cada variable para la lectura se configura como:

  • lectura1 donde se escribe el valor leído en la entrada A0,
  • lectura2 donde se escribe el valor leído en la entrada A2,
  • lectura3 donde se escribe el valor leído en la entrada A4

Se fijan dos umbrales con el dedo correspondientes a las dos posiciones de actuación de los servos. Estos umbrales son diferentes para cada dedo ya que la fuerza aplicada no es la misma para cada dedo y la sensibilidad de los tres sensores no es exactamente la misma.

Inicio de motores:

Tres variables char (save1, save2, save3), una para cada motor se inicializan en 0. Luego en la configuración especificamos los pines donde conectamos los motores respectivamente: pin 9, pin 6 y pin 3 para servo1, servo2, servo3; todos inicializados en el valor 0.

Luego, los servos se activan a través del comando servo.write () que puede fijar el ángulo recibido como entrada en el servo. También por ensayos y errores se encontraron los dos buenos ángulos, necesarios para doblar el dedo en dos posiciones correspondientes a un agarre pequeño y un agarre grande.

Dado que un motor necesita girar en la dirección opuesta debido a su fijación, su punto de partida no es cero sino el ángulo máximo y disminuye cuando se aplica una fuerza para poder girar en la dirección opuesta.

Enlace entre sensores y motores:

La elección de save1, save2, save3 y reading1, reading2, reading3 depende de la soldadura. Pero para cada dedo, el sensor y el motor relacionado deben tener el mismo número.

Luego en el bucle, si se usaron las condiciones para probar si el dedo ya está en una posición doblada o no y si la presión se aplica o no en los sensores. Cuando los sensores devuelven un valor, es necesario aplicar una fuerza, pero son posibles dos casos diferentes:

  • Si el dedo aún no está doblado, comparando este valor devuelto por los sensores con los umbrales, se aplica el ángulo correspondiente al servo.
  • Si el dedo ya está doblado, significa que el usuario quiere soltar el doblado y luego se aplica el ángulo de inicio a los servos.

Esto se hace para cada motor.

Luego agregamos un retraso de 1000 ms para evitar probar con demasiada frecuencia los valores de los sensores. Si se aplica un valor de retraso demasiado pequeño, se corre el riesgo de volver a abrir directamente la mano después de cerrarla en caso de que la fuerza se aplique durante un tiempo superior al tiempo de retraso.

Todo el proceso para un sensor se presenta en el diagrama de flujo aquí arriba.

TODO EL CÓDIGO

#include Servo servo1; Servo servo2; Servo servo3; int reading1; int reading2; int reading3; char save1 = 0; // el servo comienza en el estado 0, estado de reposo char save2 = 0; char save3 = 0; configuración vacía (void) {Serial.begin (9600); servo2.attach (9); // servo en el pin digital 9 servo2.write (160); // punto inicial para servo servo1.attach (6); // servo en el pin digital 6 servo1.write (0); // punto inicial para servo servo3.attach (3); // servo en el pin digital 3 servo3.write (0); // punto inicial para servo

}

bucle vacío (vacío) {lectura1 = analogRead (A0); // adjunto a lectura analógica 02 = analogRead (A2); // adjunto a lectura analógica 23 = analogRead (A4); // adjunto al analógico 4

// if (lectura2> = 0) {Serial.print ("Valor del sensor ="); // Ejemplo de comando utilizado para la calibración de los umbrales del primer sensor

// Serial.println (lectura2); } // else {Serial.print ("Valor del sensor ="); Serial.println (0); }

if (reading1> 100 y save1 == 0) {// si el sensor obtiene un valor alto y no está en estado de reposo save1 = 2; } // ir al estado 2 else if (lectura1> 30 y guardar1 == 0) {// si el sensor obtiene un valor medio y no está en estado de reposo save1 = 1; } // llegué al estado 1 else if (lectura1> 0) {// si el valor es distinto de cero y ninguna de las condiciones anteriores es correcta save1 = 0;} // pasa al estado de reposo

if (guardar1 == 0) {servo1.write (160); } // suelta else if (save1 == 1) {servo1.write (120); } // ángulo medio de tracción else {servo1.write (90); } // ángulo máximo de tracción

if (read2> 10 y save2 == 0) {// igual que servo 1 save2 = 2; } else if (lectura2> 5 y guardar2 == 0) {guardar2 = 1; } más si (lectura2> 0) {guardar2 = 0;}

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

if (reading3> 30 y save3 == 0) {// igual que servo 1 save3 = 2; } else if (reading3> 10 y save3 == 0) {save3 = 1; } más si (lectura3> 0) {guardar3 = 0;}

if (save3 == 0) {servo3.write (0); } else if (guardar3 == 1) {servo3.write (40); } else {servo3.write (70); } retraso (1000); } // espera un segundo

Paso 9: fije el Arduino, las baterías y el Veroboard al brazo

Fije el Arduino, las baterías y el Veroboard al brazo
Fije el Arduino, las baterías y el Veroboard al brazo
Fije el Arduino, las baterías y el Veroboard al brazo
Fije el Arduino, las baterías y el Veroboard al brazo

Se imprimió otra placa en PLA para poder fijar los portapilas y el arduino.

La placa tiene las dimensiones: 100x145x5mm.

Hay cuatro orificios para atornillar el arduino y dos para atornillar el soporte de la batería de 9V. Se hizo un orificio en el soporte de la batería de 6V y en la placa para usar una brida para fijarlos juntos. Se añadió un poco de pegamento para asegurar la fijación de este soporte. El interruptor se fija con dos pequeñas bridas.

También hay cuatro orificios que se usan para fijar la placa en los jeans con bridas.

El veroboard se coloca en el arduino como un escudo.

Paso 10: conecte la electrónica

Conecte la electrónica
Conecte la electrónica

El circuito está soldado en el veroboard como se indica en el esquema anterior.

El Arduino tiene una batería de 9V como suministro y se conecta un interruptor entre estos para poder apagar el Arduino. Se necesita una batería de 6V para el servomotor que necesita mucha corriente y el tercer pin de los servos está conectado en el pines 3, 6 y 9 para controlarlos con PWM.

Cada sensor está conectado en un lado por los 5V del Arduino y en el otro lado por una resistencia de 330 ohmios conectada a tierra y los pines A0, A2 y A4 para medir la tensión.

Paso 11: agregue los cables de nailon

Agregue los alambres de nailon
Agregue los alambres de nailon

Los alambres de nailon están hechos para pasar a través de ambos orificios en la extremidad y los anillos como se ve en la imagen, luego las dos mitades del alambre entrarán dentro de la guía de polietileno y permanecerán juntas hasta el final de la guía, al motor. La longitud de los cables se determina en este punto, deben ser lo suficientemente largos para girar una vez que la rueda del servo con los dedos rectos.

Se fijan a las ruedas con un nudo que pasa por dos pequeños orificios presentes en las limas.stl y con cola caliente para una estabilización adicional.

Paso 12: ¡Disfruta

Funciona como se esperaba.

Al primer impulso dobla el dedo y al segundo lo suelta, no se necesita fuerza cuando los dedos están doblados.

Sin embargo, quedan tres problemas por resolver:

- Tenemos que tener cuidado de hacer un impulso de menos de 1 segundo para accionar los servos, de lo contrario los cables se sueltan inmediatamente después del tirón como se explica en el paso 8 sobre el código Arduino.

- Las piezas de plástico resbalan un poco, por lo que hemos añadido un poco de pegamento caliente en la extremidad para añadir fricción.

- Si hay una carga pesada en el dedo, el sensor tendrá todo el tiempo un valor grande y, por lo tanto, el servo girará continuamente.

Recomendado: