Está en la página 1de 11

INSTITUTO TECNOLÓGICO DE TEHUACÁN

DEPARTAMENTO DE METAL-MECANICA
CARRERA: ING. MECATRONICA
ASIGNATURA: DINAMICA DE SISTEMAS

MANO ROBOTICA

Estudiante:

- CASTAÑEDA HUERTA URIEL


- PACHECO SALAS ZURI SADAI
- ROJAS IZQUIERDO GUSY

Profesor: LUIS ANTONIO LEAL LÓPEZ

Tehuacán, Pue., a 29 Mayo de 2014


Modelo dinámico

La forma general de la ecuación dinámica de un robot se expresa de la siguiente manera:

Г =A ( q ) q.. + ( q , q. ) q.. +Q ( q ) + F v q. + Fs sing¿ )

Donde Г son los pares o torques aplicados a cada uno de los motores, A es la matriz de inercia del
robot, C la matriz de Coriolis y fuerzas centrífugas, Q el vector de gravedad, Fvla matriz de
frotamientos viscosos y Fsla matriz de frotamientos secos. Las posiciones, velocidades y
aceleraciones articulares están dadas por q, q′, q ′′ respectivamente. El
modelodinámico directo permite realizar la simulación del comportamiento de la mano robot,
mientras que el modelo dinámico inverso permitirá la implementación de un controlador basado en
el modelo. Un paso previo al cálculo de estos modelos consiste en hallar los parámetros dinámicos
de base del robot [53], esto es, el juego mínimo de parámetros que involucra el modelo con el fin
de reducir los cálculos. Como los parámetros dinámicos de un robot son once, seis elementos del
tensor de inercia (XXj, XYj, XZj, YYj, YZj, ZZj), tres del primer momento de inercia (MXj, MYj, MZj),
uno de la masa (Mj) y uno de la inercia del accionador (Iaj), cada dedo dispondría de 33
parámetros diferentes. Pero aplicando las técnicas de agrupamiento de parámetros y ciertas
consideraciones especiales (suponer la matriz del tensor de inercia diagonal y los cuerpos de la
mano con una forma simétrica), éstos se reducen notablemente.

Con el fin de simplificar el modelo, no se consideran los frotamientos ni la matriz de fuerzas de


Coriolis y centrífugas que se mostraron en la ecuación. Es decir, el modelo reducido solo tendría en
cuenta la matriz de inercia A y el vector de gravedad Q, los dos dependientes de las posiciones
articulares. Realizando los cálculos completos para la obtención del modelo dinámico inverso
(velocidad de rotación, velocidad de translación, energía cinética, vector de gravedad), se obtiene
este modelo para cada dedo en las ecuaciones siguientes:

Г1 A 11 A 12 A 13 q ¨ 1 Q1

( )( )( ) ( )
Г 2 = A21 A 22 A 23 q ¨ 2 + Q2
Г3 A31 A 32 A 33 q ¨ 3 Q3

Г4 A 41 A 42 A 43 q ¨ 4 Q 4

( )(
Г 5 = A 51
Г6 A 61 )( ) ( )
A52 A 53 q ¨ 5 + Q5
A62 A 63 q ¨ 6 Q6

Г7 A 71 A 72 A73 q ¨ 7 Q7

( )( )( ) ( )
Г 8 = A 81 A 82 A83 q ¨ 8 + Q8
Г9 A 91 A 92 A 93 q ¨ 9 Q9
Dedo índice:

Matriz de inercia:

A44 = XXR5 + 2MY5D5S5 + XXR6 + 2MY6D5C5S6 + 2MY6D6S6 + 2MY6D5S5C6

A55 = XXR5 + XXR6 + 2MY6D6S6 + IA5

A66 = XXR6 + IA6

A45 = XXR5 + MY5D5S5 + XXR6 + MY6D5C5S6 + 2MY6D6S6 + MY6D5S5C6

A46 = XXR6 + MY6D5C5S6 + MY6D6S6 + MY6D5S5C6

A56 = XXR6 + MY6D6S6

Vector de gravedad:

Q4 = -G3MY4C4 – G3MY5C45 – G3MY6C6C45 + G3MY6S6S45

Q5 = -G3MY5C45 – G3MY6C6C45 + G3MY6S6S45

Q6 = G3MY6S45S6 – G3MY6C45C6

Dedo pulgar:

Matriz de inercia:

A77 = ZZR8S82 + 2MY8D8S8 + 2 MY9D8S89 + 2MY9D9C8S89

A88 = XXR8 + XXR9+ 2MY9D9S9

A99 = XXR9

A78 = 0

A79 = 0

A89 = XXR9 + MY9D9S9

−√ 2 2 2 2
Q 7= G 3 MY 7C 7+ √ G3 MY 8 S 7 S 8+ √ G 3 MY 9 S 7 S 8 C 9+ √ G3MY9S7C8S9
2 2 2 2

2 2 2 2
Q8= √ G 3 MY 8 S 8− √ G 3 MY 8 C 7 C 8+ √ G 3 MY 9 S 7 S 8 C 9− √ G3MY9C7C8C9+
2 2 2 2
√ 2 G3 MY 9 C 8 S+ √ 2 G3 MY 9C 7 S 8 S 9
2 2

2 2 2 2
Q9= √ G 3 MY 9C 9 S 9+ √ G 3 MY 9 C 7 S 8 S 9+ √ G 3 MY 9 S 8C 9− √ G3MY9C7C8C9
2 2 2 2
Por su parte el modelo dinámico directo el cual permitirá la simulación de la prótesis
de
mano en el computador, se expresa por medio de la siguiente ecuación, aplicable a
cada
uno de los dedos de la mano:

q ¨ = A−1 ¿
Aplicaciones

Dentro del campo, el área de actividad de la mecatrónica, la automatización es su corazón,


proporcionando al hombre sistemas que mejoren la productividad, pero sobretodo la prioridad es
reducir riesgos. Mas sin en cambio, no solo en el ámbito industrial hay cabida, sino también en el
entorno común, ¿de qué manera? Mejorando la calidad de vida de las personas en la sociedad
(prótesis).

Los de Ing. Mecatrónica del Instituto Tecnológico de Tehuacán, pensamos en un proyecto que
pudiera acoplarse al entorno, dando lugar a la mano robótica; semejante a la mano humana, como
idea de manipulación de mecanismos, aparatos, o sustancias químicas muy peligrosas que se
hacen teniendo contacto físico; mas aun la particularidad de nuestro proyecto es manipular el brazo
robótico inalámbricamente, vía bluetooth, mediante otro guante, parecido a los que comúnmente
son utilizados en época de frio, pero diferenciado en que posee sensores en los dedos para que al
mover los suyos el usuario, lo hagan también los del brazo.

Las aplicaciones pueden ser muy variadas, así como lo son las de nuestras manos, no solo las
usamos para una actividad en particular, sino que de acuerdo a las necesidades del entorno o de la
situación, nos acoplamos, y usamos nuestras manos.

MATERIALES

o Arduino mega o Herramientas para la toma de PCB

o Xbee / Shield personalizado

o 5 sensores Flex o Resistencias de 10k

o Guante o Cuerda

o alambre estañado o 5 servos

o Xbee s1

o Exacto o cuchillo
GUANTE DE CONTROL

1. Encienda ambos Arduinos para asegurarse de que funcionan correctamente.

2. Montar los escudos de Xbee.s1

3. Conecte los escudos Xbee para Arduino mediante la colocación en la parte superior de la placa
Arduino.

4. Conecte el Xbee de los escudos y los conecta a través de USB.

5. Tome el chip de la Arduino ATMEGA así que hay una relación directa entre la computadora y la
radio Xbee.

6. Configure en XCTU (configuración predeterminada funcionará).

7. Desde aquí construir mi propio PCB.

8. Cosí los sensores de flexión en el guante por hacer un agujero en la parte superior y en
funcionamiento la cadena por encima y debajo del sensor por lo que todavía se puede mover
libremente.

LA MANO

1. Se investigaron las manos y se encontró un diagrama donde son las uniones.

2. Se maquino la mano en un torno con material nylamid

3. Pusimos todos los dedos juntos sin el dedo pulgar.

4. Se pusieron cuatro dedos juntos y se reforzaron

5. añadimos los 5 servos a la mano con legos y cinta

6. Construimos el circuito, la entrega de potencia de los servos y con los cables de control a la
entrada digital en el arduino

7. Encontramos aparejos de pesca desde la punta del dedo a través del tubo y lo sujetó en el
servo.
Figura 8. Guante de control. Figura 9. Mano robótica

Figura 10. Guante de control.

Figura 11. Mano robótica.


Código

En este punto se explican de manera sobresaliente las partes del código usado para dar
movimiento a la mano.

En esta parte lo que se hace es incluir la librería de los servomotores para poder usarlos
ya que sin ella el Arduino no reconocería el mismo. También declaramos las variables a
utilizar como son int finguer 1 qe serán controladas por los sensores flexo y a su vez
declaramos el número de variables en servo motores a utilizar como son servo my servo1.

#include <Servo.h>

int Finger1 = 10;

int Finger2 = 9;

int Finger3 = 2;

int Finger4 = 3;

int Finger5 = 4;

Servo myservo1; // create servo object to control a servo

Servo myservo2;

Servo myservo3;

Servo myservo4;
Servo myservo5;

void setup()

Serial.begin(9600);

En este paso designamos en número de pin a utilizar en la placa de Arduino para


establecer la comunicación del servo y el sensor flexo y esto o hacemos con el comando
attach, y designamos el primer dedo al pin 10: myservo.attach(10).

myservo1.attach(10); // attaches the servo on pin 10 to the servo object

myservo2.attach(9);

myservo3.attach(4);

myservo4.attach(5);

myservo5.attach(6);

void loop()

En esta sección utilizamos en comando byte que es un variable que almacena 1 numero
de 8 bits, que va de 0 a 225 y en este caso almacenaremos el radio de giro del servo qe
va de 0 a 180 el cual será dado de acuerdo a lo que mande el sensor flexo.

byte servoValue1;

byte servoValue2;

byte servoValue3;

byte servoValue4;

byte servoValue5;
int FingerV1 = analogRead(Finger1);

int FingerV2 = analogRead(Finger2);

int FingerV3 = analogRead(Finger3);

int FingerV4 = analogRead(Finger4);

int FingerV5 = analogRead(Finger5);

En esta sección del código comparamos el voltaje del sensor flexo para asignar el
movimiento del servo, por ejemplo si el sensor fingerv1 < 200 el radio de giro del servo
será de 180, pero si el valor del sensor flexo es de >460 el valor del servo será de 0
grados regresando a su posición original, y así sucesivamente con todos los servomotores
y sensores flexo.

if (FingerV1 < 200)

FingerV1 = 180;

else

if (FingerV1 > 460)

FingerV1 = 0;

if (FingerV2 < 100)

FingerV2 = 180;

else

if (FingerV2 > 460)

FingerV2 = 0;

if (FingerV3 < 200)

FingerV3 = 180;
else

if (FingerV3 > 460)

FingerV3 = 0;

if (FingerV4 < 200)

FingerV4 = 180;

else

if (FingerV4 > 460)

FingerV4 = 0;

if (FingerV5 < 200)

FingerV5 = 180;

else

if (FingerV5 > 460)

FingerV5 = 0;

En este punto se almacena la información y se establece la comparación del servomotor


con el valor de finger uno y asi mandar la orden y realizar el movimiento del servo
utilizando los datos del sensor y el comando write que escrible el valor obtenido y dando
la orden de movimiento al servo

byte servoVal1 = FingerV1;

byte servoVal2 = FingerV2;

byte servoVal3 = FingerV3;

byte servoVal4 = FingerV4;

byte servoVal5 = FingerV5;

myservo1.write(servoVal1);

myservo2.write(servoVal2);

myservo3.write(servoVal3);
myservo4.write(servoVal4);

myservo5.write(servoVal5);

El comando delay es el tiempo que prendera o apagara el servo al esperar recibir una
orden, en este caso es un delay de 100 antes de la siguiente checada de la resistencia
cada 100milis leerá el valor de la resistencia y mandara la señal a los servos

delay(100);

También podría gustarte