Está en la página 1de 28

UNIVERSIDAD POLITCNICA DE AGUASCALIENTES Robtica II Agosto-Diciembre 2011 CONTROL DEL ROBOT MTR09A

Alumnos: UP080536 Angeles Martnez Marco Giovanni UP080171 Lpez Rubio David Franco UP080132 Noriega Mrquez Jess Alfonso

Maestro: Luis Ernesto Anaya Tiscareo

Fecha:03/11/2011

INTRODUCCION
En el presente reporte se presentara el robot manipulador angular y cada uno de los pasos realizados para el diseo mecnico de este y el control de cada uno de los motores para obtener un movimiento adecuado y en proporcin 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 diseo, el cual fue Solidworks, en donde se disearon las piezas que conformaran posteriormente el ensamblaje del robot manipulador. Posterior a esto se abordara todo lo relacionado con el diseo del robot en un software que al igual que Solidworks fue de gran ayuda y el cual es Matlab. En Matlab se diseo 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 diseadas posteriormente en Solidworks y por ultimo en VRML es una realidad virtual en donde se aprecia mejor el resultado del diseo del robot manipulador.

OBJETIVO
Disear 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 diseo 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 continuacin:

Ilustracin 1 Diseo del robot manipulador en Solidworks

Ilustracin 2 Diseo robot manipulador vista frontal

Ilustracin 3 Diseo robot manipulador vista superior

A continuacin se mostraran las dimensiones de los eslabones, la masa de estos y los centros de gravedad adems de los parmetros Denavith-Hartenberg.

BASE Masa 284.89 gramos Longitud 191.38 mm Centro de gravedad [0 0 40.33mm]

Ilustracin 4 Base del robot

Tabla 1 Parmetros de la Base

ESLABON 1 Masa 284.89 gramos Longitud 155 mm Centro de gravedad [0 0 71.38mm]

Ilustracin 5 Eslabn 1 del robot

Tabla 2 Parmetros del Eslabn 1

ESLABON 2 Masa 138.12 gramos Longitud 120 mm Centro de gravedad [31.39mm 0 0]

Ilustracin 6 Eslabn 2 del robot

Tabla 3 Parmetros del eslabn 2

ESLABON 3 Masa 141.64 gramos Longitud 160 mm Centro de gravedad [76.1mm 0 0]

Ilustracin 7 Eslabn 3 del robot

Tabla 4 Parmetros del Eslabn 3

Parmetros Denavith-Hartenberg.
q1+90 q2 q3 D L1 0 0 A 0 L2 L3 90 0 0

Una vez que se obtuvo el diseo fsico del robot manipulador en Solidworks se dio paso a la estructura del robot pero esta vez en Matlab y usando Simmechanics. A continuacin se muestran los pasos realizados para la estructura del robot dentro de Simmechanics.

Bloque

Descripcin El bloque de machine environment es esencial en todo diseo de simmechanics ya que aqu se especifica la gravedad que interacta con el sistema. 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.

El bloque que se muestra pertenece a la base del robot manipulador.

El bloque de revoluta sirve para colocar una unin giratoria entre la base del robot y el primer eslabn del mismo. Este bloque contiene las caractersticas del eslabn 1.

Este bloque es otra revoluta la cual une el eslabn 1 y el eslabn 2.

Este bloque de body pertenece a el eslabn 2 del robot y contiene sus caractersticas.

El penltimo bloque pertenece a otra revoluta y la cual une al eslabn 2 y al eslabn 3.

El ltimo bloque pertenece al eslabn 3 en donde al igual que los anteriores contiene cada una de las caractersticas de este. Se colocaron 3 conexiones que son las entradas de los motores dentro de las revolutas.

A la izquierda contamos con un bloque de join sensor el cual mide la velocidad angular de la unin en donde se colocaron las 3 revolutas, as como tambin el torque que se genera y por ltimo se colocaron 6 salidas las cuales muestran las 2 caractersticas mencionadas.

A continuacin se presenta la estructura del robot dentro de simmechanics y los pasos realizados para modificar los parmetros de cada uno del bloque vistos anteriormente.

Ilustracin 8 Estructura del robot manipulador.

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.

Ilustracin 9 Parmetros machine environment

Dentro del bloque de ground la nica modificacin dentro de sus parmetros fue la seleccin del siguiente recuadro.

Ilustracin 10 Parmetros bloque ground

Para los bloques de body correspondientes a la base, al eslabn 1, al eslabn 2 y al eslabn 3 se realizaron las siguientes modificaciones en sus parmetros.

Ilustracin 11 Parmetros Posicin de la Base

Ilustracin 12 Parmetros orientacin de la Base

En las figura de los parmetros de posicin de la base se modificaron la masa la cual quedo en 1. 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, 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. Dentro del el origen de cada uno de los parmetros mencionados se le asigno a el CS1 la opcin de adjoinning el cual se referencia al anterior, 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. En la orientacin de la base se dejo en vectores de 0 la parte orientation vector y se coloco Euler X-Y-Z. Para los bloques de body los cuales representan al eslabn 1, el eslabon2 y el eslabn 3 se siguieron los mismos pasos solo que en el parmetro de masa quedo con una variable as como tambin la matriz de inercia las cuales fueron

calculadas con un programa en .m. A continuacin observaremos los parmetros de los eslabone.

Ilustracin 13 Parmetros posicin del Eslabn 1

Ilustracin 14 Parmetros de orientacin del eslabn 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 representacin de una matriz de matrices. Del lado derecho hubo una modificacin dentro de CS2 ya que la posicin final de este elemento cambiara la orientacin del siguiente eslabn colocndolo en un Angulo de 90 con respecto al eslabn 1. 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. Ahora bien estas variables se obtuvieron como se menciono anteriormente de un archivo .m el cual se muestra a continuacin.
%Parmetros del robot manipulador clc clear syms x y z m %Matriz de Inercia Inercia= [1/3*x^2*m 0.25*x*y*m 0.25*x*z*m;... 0.25*x*y*m 1/3*y^2*m 0.25*y*z*m;... 0.25*x*z*m 0.25*z*y*m 1/3*z^2*m]; %Valores de las masas de los eslabones del robot manipulador m1=.28489;m2=.13812;m3=.14164; mas=[m1 m2 m3]'; %Valores de las longitudes de los eslabones del robot manipulador l0=120; l1=155; l2=120; l3=160; %Centros de Gravedad de los eslabones cg{1}=[0 0 0.07138];cg{2}=[0.03139 0 0];cg{3}=[0.0761 0 0]; %Calculo de las matrices de inercia for i=1:1:3 I{i}=subs(Inercia,[x y z m],[cg{i} mas(i)]);end

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. Posterior a esto se declararon las variables simblicas, despus de haber echo esto se introdujo la matriz de inercia de la cual haramos uso mas adelante. Una vez que se tenia la matriz se introdujo los valores de las masas y longitudes los cuales se haban introducido dentro de los bloques de body y los cuales fueron mencionados como lo son m1, m2 y m3, adems las longitudes l0,l1,l2 y l3, as tambin los centros de masa cg{1},cg{2} y cg{3}. Ya con los parmetros en un ciclo for desde 1 hasta 3 ya que el robot cuenta con 3 eslabones, se procedi a calcular las matrices de inercia para los 3 eslabones obteniendo as I{1},I{2} e I{3}. Pero para poder introducir estos valores dentro de las variables en los bloques de body se introdujo un subsystem:

Ilustracin 15 Subsistema de parmetros

Dando click derecho sobre este y seleccionando el apartado de propiedades del bloque se modifico lo siguiente:

Ilustracin 16 Propiedades del bloque

En la seccin de callbacks y en el apartado de openfcn*. Dentro del espacio en blanco se coloco el nombre del programa en .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,m2,m3,l0,l1,l2,l3,cg{1},cg{2},cg{3},I{1},I{2} e I{3}. Aun para hacer ms presentable el subsistema se le aadi una imagen y a continuacin se muestra el resultado.

Ilustracin 17 Edit mask

Dentro de edit mask se introdujo el siguiente cdigo.


image(imread('nvv.jpg'))

Y dando click en apply se plasmo la imagen sobre el bloque de subsistema.

Ilustracin 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 continuacin.

Ilustracin 19 Subsistema del robot

Del lado derecho del bloque se encuentran las entradas las cuales estn conectadas a las revolutas y del lado izquierdo estn las 6 salidas 3 de estas son las velocidades angulares y las otras 3 son los torques.

Ya con la estructura del robot los archivos de Solidworks fueron exportados a Matlab para obtener la visualizacin del robot as que dentro de los bloques de body se cambio lo siguiente.

Ilustracin 20 Visualizacin del robot

Los archivos de Solidworks fueron guardados en .STL y dentro del apartado de visualizacin en la parte de geometra del cuerpo se cambio de usar por default el cuerpo geomtrico por archivo grafico externo y se dio click en el recuadro de tres puntos anexo a esto se busco el archivo que corresponda a la base y se dio en aplicar. Los mismos pasos se realizaron para los 3 eslabones y el resultado se muestra a continuacin.

Ilustracin 21 Modelo del robot vista vertical

Ilustracin 22 Modelo del robot vista superior

Ilustracin 23 Modelo del robot desde otro angulo

Como se aprecia son 4 las piezas que conforman el robot. 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.

Ilustracin 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.

Ilustracin 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.

Ilustracin 26 Motores del robot

Dentro del PID se introdujeron variables kp,ki y kd las cuales fueron aadidas al programa para.m para que por default al dar doble click en el subsistema de parmetros las variables adquirieran los valores del programa.Pero aun con los motores el robot se comportaba inestable esto se deba a que el PID no se encontraba ajustado as que se introdujo una seal con un bloque llamado signal builder.

Ilustracin 27 Signal builder

Este bloque permite crear una seal a nuestro gusto. Dando doble click cobre el bloque se despliega la siguiente pantalla en donde se cre la siguiente seal.

Ilustracin 28 Seal

Una vez que la seal fue creada se conecto de la siguiente manera con los motores.

Ilustracin 29 Conexin de la seal a los motores

Como se puede apreciar la seal 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 retroalimentacin y que viene de la salida. Posterior a esto se introdujo otro bloque en el cual se guardara una variable llamada referencia y que tendra 2 listados de valores uno de tiempo y el otro de valores en esos tiempos.

Ilustracin 30 Workspace

Dentro de los parmetros del bloque se modifico lo siguiente:

Ilustracin 31 Parmetros modificado en workspace

En el apartado de nombre de la variable se sustituyo por la variable mencionada anteriormente referencia. Despus de esto se introdujo un bloque llamado signal constraint el cual obtendra los valores de las variables del PID.

Ilustracin 32 Signal constraint

En este bloque se modificara lo siguiente:

Ilustracin 33 Tuneo de parmetros

Dando doble click sobre el bloque se abre una ventana que se refiere a los parmetros del bloque y en el apartado de optimizacin damos click desplegando un listado en donde se selecciono tuneo de parmetros abriendo otra ventana en donde se dio click en add para introducir las variables a tunear. Despus de esto se selecciono el apartado de goals y dentro del listado se selecciono desired reponse y se desplego la siguiente pantalla.

Ilustracin 34 Desired response

Se introdujo como se aprecia en la imagen referencia.time y referencia.signals.values. Despus de esto se dio start para que el sistema comenzara a calcular los valores y para poder observar cmo se iba ajustando las seal de salida se realizo la siguiente conexin.

Ilustracin 35 Conexin para observar repuesta de la velocidad angular

En la figura superior se muestra 4 from el que hace mencin a referencia es la seal 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. Tras varios tuneos el signasl constraint arrojo los siguientes valores.
%Valores de las ganancia de los controles de los motores kp=1; kd=0.40; ki=0.3037; kp1=0.3; kd1=1.36; ki1=0.01; kp2=0.52; kd2=1.03; ki2=0.45;

Los primeros 3 valores corresponden al motor1 y as sucesivamente hasta llegar al tercer motor. La seal de salida quedo de la siguiente forma.

Ilustracin 36 Resultado despus de tunear

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, la salida es muy parecida a la entrada la cual es de color morado y la salida es color amarillo. 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. Lo torques requeridos para decidir que motor usar fueron los siguientes.

Ilustracin 37 Graficas de torque

Como se puede apreciar la grafica mas estable fue la del motor1 con un torque de 0.5N, el motor 2 deba soportar un torque de 1.3N aproximadamente y el motor 3 0.5N. Una vez que se obtuvo el control del motor el esquema quedo de la siguiente manera:

Ilustracin 38 Diagrama de control del robot

Despus 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 diseo del robot. Primero se introdujo un bloque de VR sink.

Ilustracin 39 Ubicacin del bloque VR sink

Ilustracin 40 Bloque VR sink

Una vez que se coloco el bloque volvimos a guardar el archivo del robot pero esta vez en .WRL. Despus dando doble click sobre el bloque se desplego el siguiente recuadro:

Ilustracin 41 Despliegue del bloque VR sink

Seleccionando el recuadro de nuevo se despliega el siguiente cuadro.

Ilustracin 42 Robot en VRML

Del lado izquierdo aparecen cada uno de los elementos que conforman al robot. Lo primero que se hizo fue ubicar los 3 motores y la base ya que el software se maneja por jerarquas as que cuando el motor1 comenzara su movimiento debera de mover las piezas el eslabn 1, eslabn 2 y eslabn 3. Una ves ubicadas estas piezas se dio paso a ubicar los otros elementos. Posterior a esto

se comenz por introducir al motor1 dentro de la base en la seccin que dice children ya que el motor 1 es un hijo de la base, tambin el motor 2 se introdujo en children pero este del motor1 y por ltimo el motor 3 se introdujo en children del motor2. Todas las piezas que conformaban el eslabn1 se introdujeron en la misma jerarqua que el motor 2 dentro de children del motor1, las piezas que conformaban el eslabn 2 se introdujeron en la misma jerarqua que el motor 3 dentro de children del motor2 y por ltimo las piezas que conformaban al eslabn 3 se introdujeron dentro d children del motor 3 y se obtuvo la siguiente jerarqua:

Ilustracin 43 Hijos de la base

Ilustracin 44 Hijos del motor1 e hijos del motor 2 Ilustracin 45 Hijos del motor 3

En cada motor se cambio el origen para que el motor girara de acuerdo a lo establecido.

Ilustracin 46 Origen motor 1

Ilustracin 47 Origen motor 2

Ilustracin 48 Origen motor 3

Y el resultado tras hacer este bloque fue el siguiente:

Ilustracin 49 Robot VRML

Por ltimo se conecto de la siguiente manera para introducir la seal de salida del robot correspondiente a los motores.

Ilustracin 50 Diagrama de bloques de VRML

Dentro del subsistema en donde se muestra la imagen del robot se realizo el siguiente diagrama de bloques.

Ilustracin 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 multiplicacin 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. Una vez hecho esto se obtuvo el diseo completo de un robot manipulador en Matlab

RESULTADOS

Ilustracin 52 Estructura del robot

Ilustracin 53 modelo del robot

Ilustracin 54 Control del robot

Ilustracin 55 Robot en VRML

Ilustracin 56 Resultado final

Ilustracin 57 Robot manipulador

CONCLUCIONES
El diseo y control del robot se realizaron correctamente obteniendo un robot con motores de poco torque, adems la herramienta de Matlab VRML ayudo a que el robot pudiese apreciarse como si este fuese real. Por ltimo el robot manipulador se adapta a cualquier seal de entrada que se le d ya que con el ajuste del control por medio del PID la seal de entrada que coloquemos no altera el movimiento del robot.

BIBLIOGRAFIA
Referencias

Seccin de ayuda Matlab

Simulink 3D Animation. Animate and visualize Simulink models in three dimensions. PDF de la Pgina http://www.mathworks.com/ Herramienta de Matlab Captulo IV Simulacin de un robot UDLAP y del controlador difuso.