You are on page 1of 28

UNIVERSIDAD POLITÉCNICA DE AGUASCALIENTES Robótica II Agosto-Diciembre 2011 CONTROL DEL ROBOT MTR09A

Alumnos: UP080536 Angeles Martínez Marco Giovanni UP080171 López Rubio David Franco UP080132 Noriega Márquez Jesús Alfonso

Maestro: Luis Ernesto Anaya Tiscareño

Fecha:03/11/2011

INTRODUCCION
En el presente reporte se presentara el robot manipulador angular y cada uno de los pasos realizados para el diseño mecánico de este y el control de cada uno de los motores para obtener un movimiento adecuado y en proporción a los torques de los motores. Primeramente observaremos el desarrollo del robot en uno de los software que proporciono mucha ayuda en el transcurso de este diseño, el cual fue Solidworks, en donde se diseñaron las piezas que conformarían posteriormente el ensamblaje del robot manipulador. Posterior a esto se abordara todo lo relacionado con el diseño del robot en un software que al igual que Solidworks fue de gran ayuda y el cual es Matlab™. En Matlab™ se diseño el robot haciendo uso de 2 conceptos nuevos Simmechanics y VRML, en Simmechanics por medio de bloques se realizo la estructura del robot y se monto las piezas diseñadas posteriormente en Solidworks y por ultimo en VRML es una realidad virtual en donde se aprecia mejor el resultado del diseño del robot manipulador.

OBJETIVO
Diseñar y controlar un robot manipulador por medio de Matlab ™ y haciendo uso de las herramientas de Simmechanics y VRML.

DESARROLLO
Lo primero que se realizo fue el diseño de cada una de las piezas del robot manipulador el cual por razones de facilidad se decidió que fuera un robot angular y el cual se muestra a continuación:

Ilustración 1 Diseño del robot manipulador en Solidworks

89 gramos Longitud 191.33mm] Ilustración 4 Base del robot Tabla 1 Parámetros de la Base . la masa de estos y los centros de gravedad además de los parámetros Denavith-Hartenberg.Ilustración 2 Diseño robot manipulador vista frontal Ilustración 3 Diseño robot manipulador vista superior A continuación se mostraran las dimensiones de los eslabones. BASE Masa 284.38 mm Centro de gravedad [0 0 40.

1mm 0 0] Ilustración 7 Eslabón 3 del robot Tabla 4 Parámetros del Eslabón 3 .39mm 0 0] Ilustración 6 Eslabón 2 del robot Tabla 3 Parámetros del eslabón 2 ESLABON 3 Masa 141.ESLABON 1 Masa 284.89 gramos Longitud 155 mm Centro de gravedad [0 0 71.38mm] Ilustración 5 Eslabón 1 del robot Tabla 2 Parámetros del Eslabón 1 ESLABON 2 Masa 138.64 gramos Longitud 160 mm Centro de gravedad [76.12 gramos Longitud 120 mm Centro de gravedad [31.

Este bloque contiene las características del eslabón 1. . ɵ q1+90 q2 q3 D L1 0 0 A 0 L2 L3 90 0 0 Una vez que se obtuvo el diseño físico del robot manipulador en Solidworks se dio paso a la estructura del robot pero esta vez en Matlab™ y usando Simmechanics. El bloque que se muestra pertenece a la base del robot manipulador. El segundo elemento que se coloco fue ground el cual conecta el bloque anterior con el primer body Este bloque actuó como soldadura entre la base y el bloque de ground.Parámetros Denavith-Hartenberg. El bloque de revoluta sirve para colocar una unión giratoria entre la base del robot y el primer eslabón del mismo. Bloque Descripción El bloque de machine environment es esencial en todo diseño de simmechanics ya que aquí se especifica la gravedad que interactúa con el sistema. A continuación se muestran los pasos realizados para la estructura del robot dentro de Simmechanics.

Este bloque es otra revoluta la cual une el eslabón 1 y el eslabón 2. . A la izquierda contamos con un bloque de join sensor el cual mide la velocidad angular de la unión en donde se colocaron las 3 revolutas. así como también el torque que se genera y por último se colocaron 6 salidas las cuales muestran las 2 características mencionadas. El penúltimo bloque pertenece a otra revoluta y la cual une al eslabón 2 y al eslabón 3. Se colocaron 3 conexiones que son las entradas de los motores dentro de las revolutas. Este bloque de body pertenece a el eslabón 2 del robot y contiene sus características. A continuación se presenta la estructura del robot dentro de simmechanics y los pasos realizados para modificar los parámetros de cada uno del bloque vistos anteriormente. El último bloque pertenece al eslabón 3 en donde al igual que los anteriores contiene cada una de las características de este.

Ilustración 9 Parámetros machine environment . El primer bloque que se coloco fue machine environment el cual contiene el valor de la gravedad. En la figura de abajo se muestra el valor de la gravedad a la cual está sometido el robot y en que eje que en esta caso fue el eje z.Ilustración 8 Estructura del robot manipulador.

En la orientación de la base se dejo en vectores de 0 la parte orientation vector y se coloco Euler X-Y-Z. La matriz de inercia quedo unitaria y en Kg/m2.Dentro de la parte de CG se coloco el vector del centro de gravedad de la base. Ilustración 10 Parámetros bloque ground Para los bloques de body correspondientes a la base. al eslabón 1. Para los bloques de body los cuales representan al eslabón 1. al eslabón 2 y al eslabón 3 se realizaron las siguientes modificaciones en sus parámetros. el CG fue respecto a world y el CS2 con respecto a CS1 para que quedara ubicado el sistema de coordenadas igual que el ground. Dentro del el origen de cada uno de los parámetros mencionados se le asigno a el CS1 la opción de adjoinning el cual se referencia al anterior. el CS1 se dejo en 0 ya que necesita esta referenciado a la base y en el CS2 se coloco el vector que define la longitud de la base. el eslabon2 y el eslabón 3 se siguieron los mismos pasos solo que en el parámetro de masa quedo con una variable así como también la matriz de inercia las cuales fueron . Ilustración 11 Parámetros Posición de la Base Ilustración 12 Parámetros orientación de la Base En las figura de los parámetros de posición de la base se modificaron la masa la cual quedo en 1.Dentro del bloque de ground la única modificación dentro de sus parámetros fue la selección del siguiente recuadro.

14164..25*y*z*m.25*x*z*m 0. 0..[cg{i} mas(i)]).07138]. %Centros de Gravedad de los eslabones cg{1}=[0 0 0.[x y z m]. l2=120. %Valores de las longitudes de los eslabones del robot manipulador l0=120.m el cual se muestra a continuación.28489..end . %Calculo de las matrices de inercia for i=1:1:3 I{i}=subs(Inercia.cg{3}=[0. Los eslabones 2 y 3 tuvieron las mismas modificaciones con respecto a a la figura del lado izquierdo alterando el valor de las masas por variables m2 y m3 respectivamente y así mismo los valores de las matrices de inercia I{2} y I{3} de la misma manera respectivamente cada una de estas.25*x*z*m.0761 0 0]. Del lado derecho hubo una modificación dentro de CS2 ya que la posición final de este elemento cambiara la orientación del siguiente eslabón colocándolo en un Angulo de 90° con respecto al eslabón 1.calculadas con un programa en . Ahora bien estas variables se obtuvieron como se menciono anteriormente de un archivo .25*z*y*m 1/3*z^2*m].m3=.cg{2}=[0. Ilustración 13 Parámetros posición del Eslabón 1 Ilustración 14 Parámetros de orientación del eslabón 1 Como podemos observar en la figura del lado izquierdo el valor de la masa quedo representado por una variable la cual es m1 asi como la matriz de inercia quedo con una variable I{1} la cual es una representación de una matriz de matrices. l1=155..25*x*y*m 1/3*y^2*m 0.25*x*y*m 0.m. %Valores de las masas de los eslabones del robot manipulador m1=.. mas=[m1 m2 m3]'.. %Parámetros del robot manipulador clc clear syms x y z m %Matriz de Inercia Inercia= [1/3*x^2*m 0.13812. l3=160. 0.m2=.03139 0 0]. A continuación observaremos los parámetros de los eslabone.

l3. después de haber echo esto se introdujo la matriz de inercia de la cual haríamos uso mas adelante.cg{2} y cg{3}. se procedió a calcular las matrices de inercia para los 3 eslabones obteniendo así I{1}.m3. Pero para poder introducir estos valores dentro de las variables en los bloques de body se introdujo un subsystem: Ilustración 15 Subsistema de parámetros Dando click derecho sobre este y seleccionando el apartado de propiedades del bloque se modifico lo siguiente: Ilustración 16 Propiedades del bloque En la sección de callbacks y en el apartado de openfcn*. m2 y m3. .l1. Dentro del espacio en blanco se coloco el nombre del programa en .cg{1}. Posterior a esto se declararon las variables simbólicas.cg{3}.I{1}.l0.l2 y l3.m para que asi cada vez que se le diera doble clcik al bloque por default los bloques de body dentro de la estructura del robot obtuvieran los valores de las variables ya mencionadas anteriormente y las cuales son m1. Una vez que se tenia la matriz se introdujo los valores de las masas y longitudes los cuales se habían introducido dentro de los bloques de body y los cuales fueron mencionados como lo son m1.En la parte superior se introdujo un clc y un clear para borrar toda variable dentro del comman window y el workspace respectivamente dentro del Matlab™. además las longitudes l0.I{2} e I{3}.l2. Ya con los parámetros en un ciclo for desde 1 hasta 3 ya que el robot cuenta con 3 eslabones. así también los centros de masa cg{1}.m2.I{2} e I{3}.l1. Aun para hacer más presentable el subsistema se le añadió una imagen y a continuación se muestra el resultado.cg{2}.

Ilustración 17 Edit mask Dentro de edit mask se introdujo el siguiente código. image(imread('nvv. Ilustración 19 Subsistema del robot Del lado derecho del bloque se encuentran las entradas las cuales están conectadas a las revolutas y del lado izquierdo están las 6 salidas 3 de estas son las velocidades angulares y las otras 3 son los torques. Ilustración 18 Imagen para el subsistema Ya teniendo la estructura del robot se dio paso a sintetizar todos los elementos dentro de un subsistema como se muestra a continuación.jpg')) Y dando click en apply se plasmo la imagen sobre el bloque de subsistema. .

Ya con la estructura del robot los archivos de Solidworks fueron exportados a Matlab™ para obtener la visualización del robot así que dentro de los bloques de body se cambio lo siguiente.STL y dentro del apartado de visualización en la parte de geometría del cuerpo se cambio de usar por default el cuerpo geométrico por archivo grafico externo y se dio click en el recuadro de tres puntos anexo a esto se busco el archivo que correspondía a la base y se dio en aplicar. Ilustración 21 Modelo del robot vista vertical Ilustración 22 Modelo del robot vista superior . Ilustración 20 Visualización del robot Los archivos de Solidworks fueron guardados en . Los mismos pasos se realizaron para los 3 eslabones y el resultado se muestra a continuación.

.Ilustración 23 Modelo del robot desde otro angulo Como se aprecia son 4 las piezas que conforman el robot. Ilustración 24 PID Una vez que se tuvo el PID se convirtió en un subsistema para acoplarlo con el siguiente diagrama de bloques y así obtener el motor. Una vez que se contaba con la estructura del robot lo que se necesito fue el control de los motores para obtener un movimiento adecuado en cada una de las uniones. así que lo que se hizo fue realizar un control PID el cual quedo de la siguiente manera.

. Ilustración 26 Motores del robot Dentro del PID se introdujeron variables kp.m para que por default al dar doble click en el subsistema de parámetros las variables adquirieran los valores del programa.ki y kd las cuales fueron añadidas al programa para. Ilustración 27 Signal builder Este bloque permite crear una señal a nuestro gusto. Dando doble click cobre el bloque se despliega la siguiente pantalla en donde se creó la siguiente señal.Pero aun con los motores el robot se comportaba inestable esto se debía a que el PID no se encontraba ajustado así que se introdujo una señal con un bloque llamado signal builder.Ilustración 25 Diagrama de bloques del motor De la misma forma se creó un subsistema del diagrama de bloques que conformaban el motor y se conecto a las entradas del robot.

Ilustración 28 Señal Una vez que la señal fue creada se conecto de la siguiente manera con los motores. Ilustración 29 Conexión de la señal a los motores Como se puede apreciar la señal llega a los 3 motores por medio de un punto de suma y restando se encuentra un bloque From los cuales hacen referencia a las salidas de la velocidad angular de cada una de las rotaciones esto se conoce como retroalimentación y que viene de la salida. Posterior a esto se introdujo otro bloque en el cual se guardara una variable llamada referencia y que tendría 2 listados de valores uno de tiempo y el otro de valores en esos tiempos. .

Ilustración 32 Signal constraint En este bloque se modificaría lo siguiente: . Después de esto se introdujo un bloque llamado signal constraint el cual obtendría los valores de las variables del PID.Ilustración 30 Workspace Dentro de los parámetros del bloque se modifico lo siguiente: Ilustración 31 Parámetros modificado en workspace En el apartado de nombre de la variable se sustituyo por la variable mencionada anteriormente referencia.

signals. Después de esto se dio start para que el sistema comenzara a calcular los valores y para poder observar cómo se iba ajustando las señal de salida se realizo la siguiente conexión.Ilustración 33 Tuneo de parámetros Dando doble click sobre el bloque se abre una ventana que se refiere a los parámetros del bloque y en el apartado de optimización damos click desplegando un listado en donde se selecciono tuneo de parámetros abriendo otra ventana en donde se dio click en add para introducir las variables a tunear.values. Ilustración 34 Desired response Se introdujo como se aprecia en la imagen referencia. Después de esto se selecciono el apartado de goals y dentro del listado se selecciono desired reponse y se desplego la siguiente pantalla.time y referencia. .

ki=0.03. Los primeros 3 valores corresponden al motor1 y así sucesivamente hasta llegar al tercer motor. La señal de salida quedo de la siguiente forma. Tras varios tuneos el signasl constraint arrojo los siguientes valores. ki1=0. kd2=1.36. kd1=1. kp2=0. kd=0.Ilustración 35 Conexión para observar repuesta de la velocidad angular En la figura superior se muestra 4 from el que hace mención a referencia es la señal de entrada q se creó en el signals builder y los 3 bloques restantes son las salidas del robot las cuales cada una de estas va a un mux y posterior a este a un scope.3.01.52.3037. kp1=0. Ilustración 36 Resultado después de tunear .40. %Valores de las ganancia de los controles de los motores kp=1. ki2=0.45.

Lo torques requeridos para decidir que motor usar fueron los siguientes.5N. En la parte superior se muestra la grafica del motor1 en la grafica de en medio corresponde al motor2 y la última grafica corresponde al motor3.5N.Como se puede apreciar en la grafica en donde se muestra cada una de las salidas del robot correspondiente a las entradas de los 3 motores.3N aproximadamente y el motor 3 0. el motor 2 debía soportar un torque de 1. Ilustración 37 Graficas de torque Como se puede apreciar la grafica mas estable fue la del motor1 con un torque de 0. Una vez que se obtuvo el control del motor el esquema quedo de la siguiente manera: Ilustración 38 Diagrama de control del robot . la salida es muy parecida a la entrada la cual es de color morado y la salida es color amarillo.

Después dando doble click sobre el bloque se desplego el siguiente recuadro: . Primero se introdujo un bloque de VR sink.Después de tener el control y el robot terminado se dio paso a hacer uso de una herramienta de Matlab™ llamada VRML la cual permite observar a un mejor el diseño del robot. Ilustración 39 Ubicación del bloque VR sink Ilustración 40 Bloque VR sink Una vez que se coloco el bloque volvimos a guardar el archivo del robot pero esta vez en .WRL.

Ilustración 41 Despliegue del bloque VR sink Seleccionando el recuadro de nuevo se despliega el siguiente cuadro. Posterior a esto . Una ves ubicadas estas piezas se dio paso a ubicar los otros elementos. Ilustración 42 Robot en VRML Del lado izquierdo aparecen cada uno de los elementos que conforman al robot. eslabón 2 y eslabón 3. Lo primero que se hizo fue ubicar los 3 motores y la base ya que el software se maneja por jerarquías así que cuando el motor1 comenzara su movimiento debería de mover las piezas el eslabón 1.

Ilustración 46 Origen motor 1 .se comenzó por introducir al motor1 dentro de la base en la sección que dice children ya que el motor 1 es un hijo de la base. las piezas que conformaban el eslabón 2 se introdujeron en la misma jerarquía que el motor 3 dentro de children del motor2 y por último las piezas que conformaban al eslabón 3 se introdujeron dentro d children del motor 3 y se obtuvo la siguiente jerarquía: Ilustración 43 Hijos de la base Ilustración 44 Hijos del motor1 e hijos del motor 2 Ilustración 45 Hijos del motor 3 En cada motor se cambio el origen para que el motor girara de acuerdo a lo establecido. Todas las piezas que conformaban el eslabón1 se introdujeron en la misma jerarquía que el motor 2 dentro de children del motor1. también el motor 2 se introdujo en children pero este del motor1 y por último el motor 3 se introdujo en children del motor2.

Ilustración 47 Origen motor 2 Ilustración 48 Origen motor 3 Y el resultado tras hacer este bloque fue el siguiente: Ilustración 49 Robot VRML Por último se conecto de la siguiente manera para introducir la señal de salida del robot correspondiente a los motores. .

Una vez hecho esto se obtuvo el diseño completo de un robot manipulador en Matlab™ .Ilustración 50 Diagrama de bloques de VRML Dentro del subsistema en donde se muestra la imagen del robot se realizo el siguiente diagrama de bloques. Ilustración 51 Subsistema de VRML En la figura de arriba se aprecian 3 entradas las cuales son las salidas del robot y que llegan a una ganancia la cual es un multiplicación para convertir a radianes el resultado y en la parte superior se aprecia una constante la cual indica el eje de giro del robot y por ultimo ambas se conectan a un mux y van a una salida la cual fue conecta al bloque VR sink.

RESULTADOS Ilustración 52 Estructura del robot Ilustración 53 modelo del robot .

Ilustración 54 Control del robot Ilustración 55 Robot en VRML .

Ilustración 56 Resultado final Ilustración 57 Robot manipulador .

mathworks. además la herramienta de Matlab™ VRML ayudo a que el robot pudiese apreciarse como si este fuese real. .CONCLUCIONES El diseño y control del robot se realizaron correctamente obteniendo un robot con motores de poco torque. Animate and visualize Simulink models in three dimensions. BIBLIOGRAFIA Referencias • Sección de ayuda Matlab™ • Simulink 3D Animation.com/ • “Herramienta de Matlab” Capítulo IV Simulación de un robot UDLAP y del controlador difuso. Por último el robot manipulador se adapta a cualquier señal de entrada que se le dé ya que con el ajuste del control por medio del PID la señal de entrada que coloquemos no altera el movimiento del robot. PDF de la Página http://www.