16
UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015 INGENIERÍA ELECTRÓNICA “DISEÑO E IMPLENTACION DE UN BRAZO ROBOTICO DE 3 GRADOS DE LIBERTAD PARA DESPLAZAMIENTO EN LOS 3 PLANOS” Cajamarca Jorge [email protected] Portilla Alexis [email protected] Valladares Pedro [email protected] Velasco Salazar Andrés Fernando [email protected] Vergara Zurita Darwin Alexander [email protected] RESUMEN: En presente documento se detalla la implementación y diseñode un brazo robótico con 3GDL, el cual permitirá el desplazamiento en los 3 planos x, y, z, mediante una interfaz creada por un arduino y la PC lo cual permitirá controlar al brazo para que se desplace a un punto configurado por el usuario desde la PC una vez dadas las coordenadas en x, y, z. PALABRAS CLAVE: Encoder, Servomotor, brazo robótico 1 INTRODUCCIÓN Los robots a nivel tecnológico son los más utilizados en la industria debido a sus funcionalidades y practicidad en los procesos de manufactura, gracias al nivel de trabajo y tiempo de producción que alcanzan se ha incrementado la implementación a nivel mundial permitiendo al ser humano preocuparse de labores con más raciocinio como gestión de la producción o proyección de ventas, debido a estas razones se tienen una amplia gama de categorías y funcionalidades a nivel mundial. El robot que se caracterizará en el presente informe es un manipulador, con 3 grados de libertad el cual se mueve a través de un eje de guiado lineal con desplazamiento en los 3 planos para 1

Informe Brazo Robotico

Embed Size (px)

DESCRIPTION

brazo robot

Citation preview

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

INGENIERÍA ELECTRÓNICA

“DISEÑO E IMPLENTACION DE UN BRAZO ROBOTICO DE 3 GRADOS DE LIBERTAD PARA DESPLAZAMIENTO EN LOS 3 PLANOS”

Cajamarca [email protected]

Portilla [email protected]

Valladares [email protected]

Velasco Salazar Andrés [email protected]

Vergara Zurita Darwin [email protected]

RESUMEN: En presente documento se detalla la implementación y diseñode un brazo robótico con 3GDL, el cual permitirá el desplazamiento en los 3 planos x, y, z, mediante una interfaz creada por un arduino y la PC lo cual permitirá controlar al brazo para que se desplace a un punto configurado por el usuario desde la PC una vez dadas las coordenadas en x, y, z.

PALABRAS CLAVE: Encoder, Servomotor, brazo robótico

1 INTRODUCCIÓN

Los robots a nivel tecnológico son los más utilizados en la industria debido a sus funcionalidades y practicidad en los procesos de manufactura, gracias al nivel de trabajo y tiempo de producción que alcanzan se ha incrementado la implementación a nivel mundial permitiendo al ser humano preocuparse de labores con más raciocinio como gestión de la producción o proyección de ventas, debido a estas razones se tienen una amplia gama de categorías y funcionalidades a nivel mundial.

El robot que se caracterizará en el presente informe es un manipulador, con 3 grados de libertad el cual se mueve a través de un eje de guiado lineal con desplazamiento en los 3 planos para controlar diversas tareas. A este componente se lo puede usar para diferentes tareas como trabajos de soldadura, ensamblaje de piezas, etc. En este informe al ser el primer contacto con el hardware se detallara los componentes y herramientas necesarias para el uso correcto del robot fijo.

2 OJETIVOS

OBJETIVO GENERAL

Diseñar e implementar un robot fijo con 3 grados de libertad, mediante la utilización de 3 motores para el control del desplazamiento mediante un arduino el cual genera una interfaz con la PC, para colocar la posición desde la PC y el robot se desplace a dicho punto específico moviendo sus junturas.

OBJETIVOS ESPECIFICOS

1

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

Utilizar un arduino para el control del motor y la interfaz desde el arduino hacia la PC mediante comandos de programación para que el brazo llegue al punto específico.

Diseñar los 3 eslabones de acuerdo a las medidas y acoplar los motores para su desplazamiento.

Simular en matlab el diseño creado del robot fijo, para realizar su respectivo análisis del comportamiento y verificación de resultados.

3 MARCO TEÓRICO

3.1 ROBOT MANIPULADOR

Entre los robots considerados de más utilidad en la actualidad se encuentran los robots industriales o manipuladores. Existen ciertas dificultades a la hora de establecer una definición formal de lo que es un robot industrial. La primera de ellas surge de la diferencia conceptual entre el mercado japonés y el euro-americano de lo que es un robot y lo que es un manipulador. Así, mientras que para los japoneses un robot industrial es cualquier dispositivo mecánico dotado de articulaciones móviles destinado a la manipulación, el mercado occidental es más restrictivo, exigiendo una mayor complejidad, sobre todo en lo relativo al control.

Figura 1. Robot manipuladorManipulador: mecanismo formado generalmente por elementos en serie, articulados entre sí, destinado al agarre y desplazamiento de objetos. Es multifuncional y puede ser gobernado directamente por un operador humano o mediante dispositivo lógico.

Robot: manipulador automático servo-controlado, reprogramable, polivalente, capaz de posicionar y orientar piezas, útiles o dispositivos especiales, siguiendo trayectoria variables reprogramables, para la ejecución de tareas variadas. Normalmente tiene la forma de uno o varios brazos terminados en una muñeca. Su unidad de control incluye un dispositivo de memoria y ocasionalmente de percepción del entorno. Normalmente su uso es el de realizar una tarea de manera cíclica, pudiéndose adaptar a otra sin cambios permanentes en su material.

3.2 Estructura de los robots industriales

Un manipulador robótico consta de una secuencia de elementos estructurales rígidos, denominados enlaces o eslabones, conectados entre sí mediante juntas oarticulaciones, que permiten el movimiento relativo de cada dos eslabones consecutivos.

2

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

Figura 2. Elementos estructurales de un robot industrial

Una articulación puede ser:Lineal (deslizante, traslacional o prismática), si un eslabón desliza sobre un eje solidario al eslabón anterior.Rotacional, en caso de que un eslabón gire en torno a un eje solidario al eslabón anterior.

 

Figura 3.Distintos tipos de articulaciones de un robot: a) lineal, b) rotacionales

El conjunto de eslabones y articulaciones se denomina cadena cinemática. Se dice que una cadena cinemática es abierta si cada eslabón se conecta mediante articulaciones exclusivamente al anterior y al siguiente, exceptuando el primero, que se suele fijar a un soporte, y el último, cuyo extremo final queda libre. A éste se puede conectar un elemento terminal o actuador final: una herramienta especial que permite al robot de uso general realizar una aplicación particular, que debe diseñarse específicamente para dicha aplicación: una herramienta de sujeción, de soldadura, de pintura, etc. El punto más significativo del elemento terminal se denomina punto terminal (PT). En el caso de una pinza, el punto terminal vendría a ser el centro de sujeción de la misma.A los manipuladores robóticos se les suele denominar también brazos de robot por la analogía que se puede establecer, en muchos casos, con las extremidades superiores del cuerpo humano.

3

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

Figura 4. Semejanza de un brazo manipulador con la anatomía humanaSe denomina grado de libertad (g.d.l.) a cada una de las coordenadas independientes que son necesarias para describir el estado del sistema mecánico del robot (posición y orientación en el espacio de sus elementos). Normalmente, en cadenas cinemáticas abiertas, cada par eslabón-articulación tiene un solo grado de libertad, ya sea de rotación o de traslación. Pero una articulación podría tener dos o más g.d.l. que operan sobre ejes que se cortan entre sí.

3.3 PARAMETRIZACIÓN DENAVIT-HARTENBERG PARA ROBOTS

El estudio de los parámetros Denavit-Hartenberg (DH) forma parte de todo curso básico sobre robótica, ya que son un estándar a la hora de describir la geometría de un brazo o manipulador robótico. Se usan para resolver de forma trivial el problema de la cinemática directa, y como punto inicial para plantear el más complejo de cinemática inversa.

FIGURA 5. Numero de junturas y eslabones del robot

Como es normal que cueste algo de trabajo visualizar en 3D todos los ejes, direcciones, y distancias implicadas en el proceso, he liberado el código fuente de la aplicación gráfica que se muestra en el vídeo. Se puede emplear como guía/calculadora para comprobar si se han realizado bien problemas de este tipo, así como herramienta docente en clase.

Los pasos del algoritmo genérico para la obtención de los parámetros DH se detallan a continuación:

1. Numerar los eslabones: se llamará “0” a la “tierra”, o base fija donde se ancla el robot. “1” el primer eslabón móvil, etc.

2. Numerar las articulaciones: La “1” será el primer grado de libertad, y “n” el último.3. Localizar el eje de cada articulación: Para pares de revolución, será el eje de giro. Para

prismáticos será el eje a lo largo del cuál se mueve el eslabón.4. Ejes Z: Empezamos a colocar los sistemas XYZ. Situamos los   en los ejes de las

articulaciones i, con i=1,…,n. Es decir,   va sobre el eje de la 1ª articulación,   va sobre el eje del 2º grado de libertad, etc.

5. Sistema de coordenadas 0: Se sitúa el punto origen en cualquier punto a lo largo de  . La orientación de   e   puede ser arbitraria, siempre que se respete evidentemente que XYZ sea un sistema dextrógiro.

6. Resto de sistemas: Para el resto de sistemas i=1,…,N-1, colocar el punto origen en la intersección de   con la normal común a   y  . En caso de cortarse los dos ejes Z, colocarlo en ese punto de corte. En caso de ser paralelos, colocarlo en algún punto de la articulación i+1.

4

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

7. Ejes X: Cada   va en la dirección de la normal común a   y  , en la dirección de   hacia  .

8. Ejes Y: Una vez situados los ejes Z y X, los Y tienen su direcciones determianadas por la restricción de formar un XYZ dextrógiro.

9. Sistema del extremo del robot: El n-ésimo sistema XYZ se coloca en el extremo del robot (herramienta), con su eje Z paralelo a   y X e Y en cualquier dirección válida.

10. Ángulos teta: Cada   es el ángulo desde   hasta   girando alrededor de  .11. Distancias d: Cada    es la distancia desde el sistema XYZ i-1 hasta la intersección de las

normales común de    hacia  , a lo largo de   .12. Distancias a: Cada    es la longitud de dicha normal común.13. Ángulos alfa: Ángulo que hay que rotar   para llegar a  , rotando alrededor de  .14. Matrices individuales: Cada eslabón define una matriz de transformación:

15. Transformación total: La matriz de transformación total que relaciona la base del robot con su herramienta es la encadenación (multiplicación) de todas esas matrices:

Dicha matriz T permite resolver completamente el problema de cinemática directo en robots manipuladores, ya que dando valores concretos a cada uno de los grados de libertad del robot, obtenemos la posición y orientación 3D de la herramienta en el extremo del brazo.

4 MATERIALES

PC Arduino 1 1 motor con caja de reducción y Encoder 2 servomotores Acrílico Tubo PVC

5 DESARROLLO

5.1 Desarrollo del prototipo de brazo robótico

El brazo está constituido por 3 eslabones los cuales se desarrollaron con materiales fáciles de adquirir, como es el acrílico y tubo PVC, a continuación en la figura 6 se muestra un prototipo del brazo a construir, con los materiales ya mencionados, las dimensiones de los eslabones son las siguientes:

Eslabón 1: 30cm Eslabón 2: 20cm Eslabón 3: 15cm

5

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

El controlador encargado de realizar el control de los movimientos del brazo se lo realizara mediante la placa ARDUINO 1 y la interfaz se la desarrollara con la ventana de comunicación serial del propio software de programación de arduino.

FIGURA 6. Prototipo del brazo robótico, con su número de eslabones

En la figura 7 se muestra el material utilizado para la construcción del brazo, los eslabones 2 y 3 se utilizo acrílico para su fabricación

FIGURA 7. Acrílico utilizado para los eslabones

El eslabón 1 y la base del brazo se utilizo tubo PVC y madera para su construcción en la figura 8 se muestra el ensamblaje de la base del brazo

FIGURA 8. Base y eslabón 1 del brazo robot

A continuación se muestra en la figura 9 el prototipo finalizado del brazo y listo para realizar el desarrollo del control del mismo

6

0

1

2

3

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

FIGURA 10. Prototipo finalizado

5.2 DESARROLLO DEL CIRCUITO DE CONTROL DEL BRAZO Y CONTROL DE MOVIMIENTO

Como ya se menciono el circuito de control se utilizo la placa de desarrollo ARDUINO 1, el cual consta de un microprocesador ATMEGA 328P, este chip de la familia AVR es el cerebro del robot, donde mediante un algoritmo de programación, se introduce las ecuaciones para cada motor y se encarga de realizar el control para el movimiento de cada eslabón.

FIGURA 11. Arduino 1

Los motores utilizados para la acción de movimiento de cada eslabón son 3, dos servomotores y un motor DC con caja de reducción, los servomotores son los encargados de mover los eslabones 2 y 3 de 0 a 90 grados, el motor DC ubicado en la base mueve el eslavo 1 los 360 grados. En la figura 12 se muestra el motor de la base del brazo.

7

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

FIGURA 12. Motor utilizado en la base

FIGURA 13. Servos utilizados para el control de movimiento del brazo.

5.3 SOFTWARE Y DERARROLLO MATEMATICO PARA EL MOVIMEINTO DEL BRAZO

Se utilizo cinemática inversa, mediante los parámetros de DENAVIT-HARTEMBERG, para encontrar las ecuaciones que describen el ángulo que debe moverse cada eslabón para que el punto final alcance la posición deseada. En la tabla numero 1 se muestra los parámetros que describen la cinemática inversa del brazo robot.

θ d a α1 Θ1 30 0 90º2 Θ2 0 20 03 Θ3 0 15 0

TABLA 1. Parámetros DH del brazo robot.Descrita la tabla de parámetros se puede obtener las ecuaciones para θ de cada eslabón, a continuación se mostrara las ecuaciones que se introducirán al microcontrolador para el control de movimiento de cada eslabón

Ecuación 1, para θ1:

θ 1=tan−1 YX

Ecuación 2, para θ2:

θ 2=sin−1(Z−3015 )

Ecuación 3, para θ3:

θ 3=tan−1 −XY

−¿ tan−1(YX )−sin−1( Z−30

15 )¿Donde X, Y, Z, es el punto en eje de coordenadas deseado a donde debe llegar el brazo

8

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

Obtenidas las ecuaciones se procede a realizar el algoritmo de programación, para el control del movimiento del brazo, la cual se mostrara en ANEXOS.

6 RESULTADOS

Se utiliza la ventana de comunicación serial del ID de ARDUINO para ingresar el punto deseado a llegar del brazo.

FIGURA 14. Interfaz utilizada para el control de movimiento del brazo.

Como se muestra en la figura 14, se ingresaron las coordenadas para que el brazo llegue a ese punto, las cuales son: X=10Y=20Z=45Los valores de los ángulos los cuales debe moverse cada eslabón son los siguientes: θ1 = 63.43ºθ2 = 90ºθ3 = 180ºDado estos puntos se observa en la figura 15 que el brazo ha llegado a la posición deseada, comprobando que funciona correctamente el control del brazo

FIGURA 15. Posición alcanzada por el brazo robot

9

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

Se realizo la comprobación de los resultados obtenidos por medio del software de MATLAB, donde se ingresaron las mismas coordenadas y se observo que el brazo modelado en Matlab alcanza la misma posición.

FIGURA 16. Brazo simulado por medio de software Matlab

7 CONCLUSIONES

La cinemática directa y el algoritmo DENAVIT  HARTENBERG resultan una pieza importante para el Modelamiento de un robot, pues este algoritmo alberga todas las condiciones para la generación del robot en el espacio, además de entregar información de posición y orientación respecto a un sistema de referencia

Es importante conocer los comandos que posee el COSIROP para realizar la programación de una manera más factible, ya que de esta manera se puede minimizar las líneas de código y realizar grandes movimientos del brazo.

Es necesario determinar la velocidad adecuada en el controlador para que el brazo realice el dibujo ya que de esta manera se puede evitar colisiones con partes externas al brazo, otra manera de controlar la velocidad del brazo es en la programación con el comando SPD el cual nos permite controlar la velocidad a la siguiente línea de código.

Es importante encontrar un valor en la posición de Z para que al momento de realizar el dibujo no exista mucha fricción tanto con el esfero y la hoja de papel, para que al dibujar el brazo no tenga mucha complicación y no pueda romper la hoja o en el peor de los casos el esfero.

8 REFERENCIAS

[1] A. Martínez, “Software para el modelamiento, simulación y programación de aplicaciones robotizadas”, Marzo-2009 [En Línea], Disponible en: http://repositorio.ute.edu.ec/bitstream/123456789/15101/1/52100_1.pdf

10

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

[2] W. López, “Programming Software for Mitsubishi Industrial Robots”, Enero-2005 [En Línea], Disponible en: http://industrial.utp.edu.co/laboratorios/manufactura-_exible/componentes-de-la-celda/robot-mitsubishi-rv-2aj.pdf

[3] A. Valencia, “Introducción a la programación Melfa Basic IV”, Mayo – 2007, [En línea] Disponible en: http://isa.umh.es/asignaturas/rvc/programacion_MELFA_IV.pdf

ANEXOS

Programación realizada en ARDUINO

#include <Servo.h>Servo servo1;Servo servo2;// base del robot int long encoder0PinA = 3; //pin 3 aurduino uno int long encoder0PinB = 4; //pin 4 aurduino uno int motor1 = 10; int motor11 = 11; int pedro=0; int long encoder0Pos = 0; int encoder0PinALast = LOW; int nn = LOW; float grados=0;// fin de la base del robotdouble rad;int resp;int x=0;int y=0;int z=0;int n=0;int m=0;double x1,y1,z1;double teta11,teta22,teta33;int x2;double teta1,teta2,teta3;void setup() { Serial.begin(115200); // base del robot pinMode (encoder0PinA,INPUT); pinMode (encoder0PinB,INPUT); //motor pinMode(motor1, OUTPUT); pinMode(motor11, OUTPUT); // fin de la base del robot Serial.println("UNIVERSIDAD POLITECNICA SALESIANA"); Serial.println("BRAZO ROBÓTICO"); Serial.println("D-H MODIFICADO"); servo1.attach(5); servo1.write(90); servo2.attach(6); servo2.write(90); }

void loop()

{ while(m==0) { servo1.write(90); servo2.write(90); Serial.println("Ingrese las coordenadas X,Y,Z"); m=1; } if (Serial.available() > 2) {

x= Serial.parseInt();x1=1.0*x;Serial.print("X= ");Serial.println(x1);n++;while(n==1){if (Serial.available() > 2) {y= Serial.parseInt(); y1=1.0*y;Serial.print("Y= ");Serial.println(y1);n++; while(n==2) {if (Serial.available() > 2 ) {z= Serial.parseInt();z1=1.0*z; Serial.print("Z= ");Serial.println(z1);n++;while(n==3){ teta1=atan(y1/x1); teta2=asin((z1-30)/15); teta3=(atan(-(x1/y1)))-(atan(y1/x1))-(asin((z1-30)/15)); teta11=(teta1*180)/3.1416; teta22=abs((teta2*180)/3.1416); teta33=abs((teta3*180)/3.1416); Serial.print("Angulo 1= "); Serial.println(teta11); Serial.print("Angulo 2= "); Serial.println(teta22); Serial.print("Angulo 3= "); Serial.println(teta33);

11

UNIVERSIDAD POLITÉCNICA SALESIANA ELECTIVA II 03/08/2015

n++; while(n==4) { servo1.write(teta22); servo2.write(teta33); pedro=teta11; Serial.println("DESEA IMGRESAR OTROS VALORES"); Serial.println("Ingrese 1 para SI y 2 para NO"); n++;while(n==5){ nn = digitalRead(encoder0PinA); if ((encoder0PinALast == LOW) && (nn == HIGH)) { if (digitalRead(encoder0PinB) == LOW) { encoder0Pos--; grados = ((encoder0Pos*360/570)); if (encoder0Pos == -570){(encoder0Pos = 0);} } else { encoder0Pos++; grados = ((encoder0Pos*360/575)); if (encoder0Pos == 575){(encoder0Pos = 0);} } grados; Serial.print ("GRADOS = "); Serial.println (grados); if(grados == pedro){ encoder0Pos=0; digitalWrite(motor1, LOW); digitalWrite(motor11, LOW); Serial.print ("GRADOS = "); Serial.println (grados); } } encoder0PinALast = nn; //angulo positivo if(pedro >0 && pedro <= 360){

digitalWrite(motor1, HIGH); digitalWrite(motor11, LOW); Serial.println("positivo"); } //angulo negativo if(pedro <0 && pedro >= -360){ digitalWrite(motor1, LOW); digitalWrite(motor11, HIGH); Serial.println("negativo"); } if (Serial.available() > 0 ) { resp=Serial.parseInt(); if(resp == 1) { n=0; m=0; Serial.println(n); } if(resp == 2) { Serial.println("GRACIAS"); n=6; while(n==6) { } } } } }}}} }}delay(50);} }

12