Enfoque práctico de la teoría de robots : Con aplicaciones en Matlab [Primera publicación. ed.] 9786123180102, 612318010X

1,128 240 8MB

Spanish; Castilian Pages [216] Year 2015

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Enfoque práctico de la teoría de robots : Con aplicaciones en Matlab [Primera publicación. ed.]
 9786123180102, 612318010X

Table of contents :
Hoja de créditos
Dedication
Contenido
Prólogo
Introducción
Capítulo 1. Introducción a la teoría de robots
Capítulo 2. Arquitectura del robot
2.1 Algunas definiciones importantes
2.2 Tipos de manipuladores por su movimiento
Capítulo 3. Planificación de trayectorias
3.1 Trayectoria óptima de tiempo mínimo de tres etapas
3.2 Trayectoria óptima de tiempo mínimo de dos etapas
3.3 Trayectoria lineal en el espacio cartesiano (con evolución temporal definida)
Capítulo 4. Cinemática de los robots
4.1 Coordenadas generalizadas de los robots
4.2 Representaciones en el espacio de la posición de los objetos
4.3 Transformación de coordenadas
4.4 Transformación homogénea de coordenadas
4.5 Problema cinemático directo
4.6 El método de Denavit-Hartenberg (D-H)
4.7 Cinemática de manipuladores de eslabones rígidos
4.8 Espacio articular versus espacio cartesiano
4.9 Problemas de cinemática y la cinemática inversa
4.10 Transformaciones diferenciales homogéneas
4.11 Transformación jacobiana
4.12 Matriz de transformación jacobiana
4.13 Rotaciones diferenciales
4.14 Cálculo de velocidades articulares desde las velocidades lineales
4.15 Singularidades
Capítulo 5. Dinámica de los robots
5.1 Modelo de la dinámica del robot en el espacio articular
5.2 Método directo para el cálculo del modelo dinámico de un manipulador
5.3 Propiedades de la dinámica del robot en el espacio articular
5.4 Representación en espacio-estado
Capítulo 6. Controladores para manipuladores de robot
6.1 Control PD de torque computado
6.2 Control PID de torque computado
6.3 Control PD con compensación de gravedad
6.4 Control articular clásico
6.5 Control de error filtrado basado en aproximación
6.6 Control adaptivo
6.7 Control robusto
6.8 Control neural-adaptivo y difuso-robusto
Capítulo 7. Modelamiento y control de trayectorias completo en Matlab
7.1 Determinación del modelo cinemático
7.2 Determinación del modelo dinámico
7.3 Parámetros del robot y trayectorias óptimas
7.4 Simulación y control PD de torque computado
7.5 Excepciones del modelo
Apéndice. Introducción al Matlab
Bibliografía
Recientes publicaciones de Editorial UPC

Citation preview

******ebook converter DEMO Watermarks*******

© Universidad Peruana de Ciencias Aplicadas (UPC) Primera publicación: abril de 2015 Edición:

Diana Félix

Corrección de estilo:

Jorge Coaguila

Diseño de cubierta:

Christian Castañeda

Diagramación:

Diana Patrón Miñán

Editor del proyecto editorial Universidad Peruana de Ciencias Aplicadas S. A. C. Av. Alonso de Molina 1611, Lima 33 (Perú) Teléf: 313-3333 www.upc.edu.pe Primera edición: abril de 2015 Versión ebook 2015 Digitalizado y Distribuido por YoPublico S.A.C. www.yopublico.net Telf: 51-1-221 9998 Dirección: Av. 2 de Mayo 534 Of. 304, Miraflores Lima-Perú

Universidad Peruana de Ciencias Aplicadas (UPC) Centro de Información Arnáez Braschi, Enrique. Enfoque práctico de la teoría de robots. Con aplicaciones en Matlab Lima: Universidad Peruana de Ciencias Aplicadas (UPC), 2015 ISBN de la versión impresa: 978-612-318-010-2 ISBN PDF: 978-612-318-017-1 ISBN EPUB: 978-612-318-025-6 ISBN MOBI: 978-612-318-025-6 Introducción, Introducción a la teoría de robots, Arquitectura del robot, Planificación de Trayectorias, Cinemática de los robots, Dinámica de los robots, Controladores para manipuladores de robot, Modelamiento y control de trayectorias completo en Matlab. 629.892 ARNA

Todos los derechos reservados. Esta publicación no puede ser reproducida, ni en todo ni en parte, ni registrada en o transmitida por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sea mecánico, fotoquímico, electrónico, magnético, electroóptico, por fotocopia o cualquier otro, sin el permiso previo, por escrito, de la editorial. El contenido de este libro es responsabilidad del autor y no refleja necesariamente la opinión de los editores.

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

Quiero agradecerle a Mariella, mi esposa, y a Daniella y Andrea, mis hijas por su amor, alegría y felicidad. Son lo más grande que tengo en la vida. Del mismo modo le quiero agredecer a toda mi familia por su permanente estímulo, respaldo y apoyo para continuar con los estudios e investigaciones emprendidas, a mis amigos de la Marina, de la universidad y a mis colegas del tiro deportivo por su aliento permanente. A Dios le doy las gracias por su amor y por haberme hecho nacer en mi Perú, hermoso y pujante, con gente extraordinaria y una cultura milenaria.

******ebook converter DEMO Watermarks*******

Contenido

Prólogo Introducción Capítulo 1. Introducción a la teoría de robots Capítulo 2. Arquitectura del robot 2.1 Algunas definiciones importantes 2.2 Tipos de manipuladores por su movimiento Capítulo 3. Planificación de trayectorias 3.1 Trayectoria óptima de tiempo mínimo de tres etapas 3.2 Trayectoria óptima de tiempo mínimo de dos etapas 3.3 Trayectoria lineal en el espacio cartesiano (con evolución temporal definida) Capítulo 4. Cinemática de los robots 4.1 Coordenadas generalizadas de los robots 4.2 Representaciones en el espacio de la posición de los objetos 4.3 Transformación de coordenadas 4.4 Transformación homogénea de coordenadas 4.5 Problema cinemático directo 4.6 El método de Denavit-Hartenberg (D-H) 4.7 Cinemática de manipuladores de eslabones rígidos 4.8 Espacio articular versus espacio cartesiano 4.9 Problemas de cinemática y la cinemática inversa 4.10 Transformaciones diferenciales homogéneas 4.11 Transformación jacobiana 4.12 Matriz de transformación jacobiana 4.13 Rotaciones diferenciales ******ebook converter DEMO Watermarks*******

4.14 Cálculo de velocidades articulares desde las velocidades lineales 4.15 Singularidades Capítulo 5. Dinámica de los robots 5.1 Modelo de la dinámica del robot en el espacio articular 5.2 Método directo para el cálculo del modelo dinámico de un manipulador 5.3 Propiedades de la dinámica del robot en el espacio articular 5.4 Representación en espacio-estado Capítulo 6. Controladores para manipuladores de robot 6.1 Control PD de torque computado 6.2 Control PID de torque computado 6.3 Control PD con compensación de gravedad 6.4 Control articular clásico 6.5 Control de error filtrado basado en aproximación 6.6 Control adaptivo 6.7 Control robusto 6.8 Control neural-adaptivo y difuso-robusto Capítulo 7. Modelamiento y control de trayectorias completo en Matlab 7.1 Determinación del modelo cinemático 7.2 Determinación del modelo dinámico 7.3 Parámetros del robot y trayectorias óptimas 7.4 Simulación y control PD de torque computado 7.5 Excepciones del modelo Apéndice. Introducción al Matlab Bibliografía

******ebook converter DEMO Watermarks*******

Prólogo

Siento una gran admiración, aprecio y orgullo por el Capitán de Navío Enrique Arnáez Braschi a quien tengo la satisfacción de conocer desde su nacimiento y por lo tanto haber sido testigo de su formación, de su crecimiento, de sus aspiraciones de juventud y luego de sus logros. Tanto en el ámbito de su desarrollo como persona, como de esposo y padre en una linda familia, como Oficial profesional de la Marina de Guerra del Perú, como catedrático de diferentes programas de pregrado y posgrado de reconocidas universidades del país y como deportista calificado, siendo seleccionado nacional en la disciplina de tiro con pistola y en la cual ha conseguido para su institución y nuestro país numerosas medallas y trofeos. Por lo tanto, el perfil del autor de esta obra, Enfoque práctico de la teoría de robots, es el de una persona íntegra, estudiosa, disciplinada y responsable. Que se entrega con preparación, apasionamiento y amor a las diferentes actividades, tareas y retos que asume, buscando siempre que mejorar los resultados ya obtenidos, exigiéndose cada vez más para ello y luego, sin ningún egoísmo y mucha humildad, enseñar y transmitir todo lo que va aprendiendo. Este libro está dirigido a estudiantes de maestría en el área de control, automatización y robótica de las carreras de Ingeniería Electrónica, Ingeniería Eléctrica, Ingeniería Mecatrónica, Ingeniería Mecánica y afines, como resultado de estudios, experiencia profesional, docencia y trabajos de investigación realizados durante algo más de 14 años y con la finalidad de darle una orientación realmente práctica a los temas teóricos, normalmente considerados como difíciles, del control moderno y de la robótica. El enfoque del libro intenta ser una guía para enfrentar problemas de diseño de sistemas de control para manipuladores que, normalmente, es muy buscado por los estudiantes pero que no es muy fácil encontrarlo de manera tan explícita. Considero, por lo tanto, que el autor cumple con su objetivo y aplicando de manera adecuada, sus cualidades pedagógicas y experiencia docente, expone al lector los fundamentos del diseño que se persigue, utilizando problemas muy ilustrativos, con soluciones claras y empleando matemáticas lo menos complejas posibles, aunque sin perder el nivel y el rigor pertinente. El autor consolida, en consecuencia, los resultados de mucha investigación y de mucho ingenio en una obra acerca de la robótica, a la fecha única en su género escrita por un autor nacional, y que enriquece a la cátedra universitaria, con aportes propios a los modelos y técnicas de diseño de controladores para manipuladores aquí tratados. ******ebook converter DEMO Watermarks*******

Estoy seguro que esta obra de Enrique Arnáez Braschi, al igual que su antecesora orientada a cursos de pregrado, Enfoque práctico del control moderno con aplicaciones en matlab, será un valioso aporte a la formación de los alumnos de maestría y que aspiran a impulsar un desarrollo tecnológico propio para nuestro país. Ing. Jorge Tejada Polo Director de la Escuela Profesional de Ingeniería Electrónica Universidad de San Martín de Porres

******ebook converter DEMO Watermarks*******

Introducción

Cuando estudiaba cursos previos a estudiar robótica, al igual que el resto de alumnos, siempre me quejaba sobre por qué tenía que llevar asignaturas que supuestamente «nunca iba a aplicar» durante mi carrera. Posteriormente, al llevar los cursos referentes a Ingeniería de Control, entendí la importancia de todos los cursos de los que renegaba y valoré a esta rama de la ingeniería por su utilidad para la sociedad. Al profundizar algunos temas, llegué a seguir teoría de robot como un curso sumamente complejo porque no se tenían las facilidades informáticas que hoy tenemos. Por ejemplo, tardé más de un día realizando ecuaciones diferenciales para determinar un modelo dinámico de un manipulador de tres grados de libertad, con la alta probabilidad de errar en un signo o algún cálculo obvio. Ahora, junto a mis alumnos con los métodos que se plantean en este texto, elaboramos modelos dinámicos de manipuladores de más grados de libertad en pocos minutos. Este libro ha sido preparado pensando en condensar temas sumamente abstractos de manera sencilla que permitan apoyar el dictado de la teoría de manipuladores robóticos. Específicamente, me refiero a los temas de modelamiento y control de movimiento de robots, ya que, cuando me tocó aprender y luego dictar estos cursos, el lenguaje que empleaban las publicaciones y la forma de escribir las matemáticas eran complicadas. Asimismo, no se tenían aplicaciones en Matlab de los ejemplos que planteaban, siendo una gran interrogante la forma en la que los autores programaban y llegaban a los resultados. En esta publicación se resume, en una forma práctica, estudios, trabajos e investigaciones de más de 14 años tratando de plasmar el enfoque práctico de la parte teórica del control moderno y de la robótica. La teoría de control moderno emplea durante diferentes etapas para el diseño de los controladores un amplio número de ciencias y herramientas, como álgebra lineal, teoría de vectores y matrices, cálculo diferencial y programación. Para esta última herramienta, empleamos el Matlab. Por ello, si el lector no está familiarizado con estos temas, es conveniente que primero desarrolle ciertas habilidades antes de comenzar con estos conocimientos, pues solo se hará mención a los procedimientos necesarios sin profundizar en ellos. Adicionalmente, todo ingeniero que vaya a analizar el comportamiento de un sistema controlado, o para controlarlo, deberá investigar la teoría que sostiene dicho comportamiento. En este caso, para la teoría de robots, usamos conceptos de electricidad, electrónica, mecánica y dinámica de sólidos o fluidos, economía, ******ebook converter DEMO Watermarks*******

química, o cualquiera que fuera el campo o los campos de trabajo del sistema en cuestión. Complementariamente, el control moderno utiliza análisis numérico, teoría de optimización, lógica difusa, redes neuronales y otras nuevas teorías que puedan mejorar el desempeño de los sistemas que manejemos. Para finalizar el enfoque en este tema de teoría de robots de manera simple pero con conceptos avanzados, presentamos dos ejemplos en que se aprecia el empleo de todos los conocimientos presentados descritos anteriormente. Así, en el primer capítulo presentamos una breve introducción al tema, el cual es desagregado en sus cuatro fases en cada uno de los siguientes cuatro capítulos, arquitectura, trayectorias, cinemática y dinámica de robots. Todo concluye en el sexto capítulo, en que presentamos los controladores que conducen las tareas que los manipuladores realizará como son los controladores de torque computado, y que complementariamente se ven enriquecidos con ejemplos de controladores más sofisticados de modo ilustrativo. Finalmente, en el sétimo capítulo, integramos todos los temas de manera práctica con una simulación en Matlab del diseño y control de un manipulador sencillo, acompañada de un ejemplo completo. Adicionalmente, se presenta un apéndice donde planteamos una introducción al Matlab. La finalidad de este apéndice no es enseñar a usar este programa sino explicar algunas de sus funciones y aplicaciones para ayudar a su empleo. Los temas teóricos están presentados con ejemplos en su aplicación para una fácil y rápida comprensión, y casi en su totalidad son desarrollados adicionalmente en Matlab, siempre y cuando sea aplicable. Por último, expresamos que el resultado de la investigación que está comprendido en el contenido de este texto innova cuatro aspectos de los estudios en robótica: 1. Presenta un método sencillo para establecer la ubicación de los centros de masa de los eslabones del manipulador definiendo cómo alterar el concepto inicial del algoritmo de Denavit-Hartenberg. 2. Plantea la determinación del modelo dinámico de un manipulador a partir de los centros de masa de los eslabones íntegramente en Matlab. 3. Presenta simulaciones integrales en Matlab, en que se definen las trayectorias, se aplica el modelo dinámico y se emplean las diferentes técnicas de control de robots expuestas. 4. Define un tipo de controlador neural-adaptivo difuso-robusto que no necesita del modelo dinámico para controlar un manipulador, pues lo identifica y aprende durante los primeros instantes de trabajo. Enrique Arnáez Braschi

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

Capítulo 1. Introducción a la teoría de robots

«Robot», es una palabra que como tal fue empleada por primera vez por el escritor checo Karel Ĉapek en su obra Opitek en 1917, la cual etimológicamente proviene de la palabra ‘robota’, que significa ‘servidumbre’, ‘esclavitud’ o ‘trabajo obligado’. La robótica es una nueva disciplina que se encarga del estudio y del diseño de los robots y del movimiento de objetos en el espacio. Las causas que impulsan a la robótica están dadas por procesos industriales peligrosos como altas temperaturas o ambientes contaminados, por el alto costo de la fuerza de trabajo, y por la efectividad económica al optimizar la relación costo-beneficio. Debemos comenzar por enfrentar algunas ideas populares. Primera: un robot no es un androide necesariamente, como los conocidos Terminator, C-3P0 o todos los que tienen dos brazos, dos piernas y forma ‘humanoide’ en general. En ese contexto las siguientes preguntas son válidas: ¿Sería útil darle forma humana a un robot? ¿Por qué a una invención debemos asignarle nuestras limitaciones físicas? Como postulado, asumiremos que, desde el punto de vista de la ingeniería, nunca le debemos dar las limitaciones humanas a los robots. Segunda: los robots se caracterizan por tener un órgano terminal con forma de mano, es decir, cuentan con por lo menos una garra, característica que los define como manipuladores. Y tercera: toda la teoría de manipuladores estudia la cinemática y la dinámica de robots estáticos, pero es fácilmente aplicable a robots móviles cuando estos son dotados de ruedas o de piernas y un sistema de navegación adecuado. Entonces, las principales características que deben darse en un robot son: 1. Es un manipulador reprogramable multifuncional: ya que debe manipular o mover objetos, debe ser reprogramable para realizar diversos movimientos y debe ser multifuncional para ejecutar varias aplicaciones. 2. Ejecuta acciones en forma automática: está compuesto de una estructura mecánica y de un sistema de control programable. Adicionalmente, la demanda de exploración ha llevado a desarrollar sistemas autónomos que trabaje con gran precisión como son los vehículos aéreos no tripulados, más conocidos como UAV, de sus iniciales anglosajonas Unmanned Aerial Vehicle, así como sus versiones terrestres, marinas y submarinas. Inclusive, invita a pensar en el desarrollo de armas inteligentes con comportamientos «de robots» como son los misiles de última generación. En este caso, los sistemas de puntería harían las veces de órganos terminales que buscan alcanzar el objetivo que ******ebook converter DEMO Watermarks*******

es el blanco militar. Con esta apreciación, y coincidente con el profesor Peter Corke, la definición de un robot debe darse a un sistema autónomo capaz de realizar diversas tareas y que cumpla un objetivo. Los manipuladores de robóticos tienen complejas dinámicas no lineales que hacen muy pesado el diseño de sus controladores. Afortunadamente, la dinámica del robot está dentro de la clase de la dinámica de los sistemas de Lagrange, los cuales tienen propiedades físicas modelables y, por ende, es más aplicable su control. Para abarcar los temas en los que se centra la robótica, debemos saber que estos son: a. b. c. d.

La arquitectura de los manipuladores. La definición de las trayectorias. La cinemática de los robots. La dinámica de los robots.

No es rígido el orden de los temas tocados líneas arriba, pues por cada proyecto de diseño tendremos muchas limitaciones las cuales dirigirán el punto de inicio y su respectiva secuencia dentro de los temas en cuestión. Por ejemplo, si se otorga un trabajo específico y ya se cuenta con un manipulador, podríamos comenzar con la definición de trayectorias o con la cinemática. Sin embargo, si no contamos con el manipulador, podemos partir de la arquitectura que optimice el empleo del ambiente de trabajo. Gráfico 1.1 Secuencia de operación de un robot

Una vez finalizado el diseño y considerando que la operación será la labor ******ebook converter DEMO Watermarks*******

permanente del manipulador, describiremos la secuencia técnica de operación: 1. Se definen como entradas el punto de inicio y final del recorrido del manipulador. 2. Se generan las trayectorias de cada articulación para realizar este recorrido en el menor tiempo posible. Es decir, empleando las velocidades y aceleraciones máximas de diseño de los actuadores. 3. Se muestrea la posición y se determina el error que procurará eliminarse. 4. Se genera el torque que demandan los actuadores para eliminar el error de posición, empleando el modelo dinámico del manipulador. 5. Se vuelve a muestrear la posición y se actualiza el torque hasta eliminar el error.

******ebook converter DEMO Watermarks*******

Capítulo 2. Arquitectura del robot

El concepto de arquitectura de un robot se refiere primordialmente al software y hardware que definen el ámbito de control de una máquina de este tipo. Una tarjeta controladora que ejecuta algún software para operar motores y la comunicación con el hardware es lo que la define realmente. Los sistemas robóticos son complejos y tienden a ser difíciles de desarrollar, esto es debido a la gran variedad de sensores que deben integrar, así como al hecho de delimitar su rango de acción; por ejemplo, el radio de giro de un brazo robot o la altura máxima a la que puede levantar algún objeto que esté manipulando. La nueva tendencia para el desarrollo de arquitectura robótica se ha enfocado en lo que podemos nombrar sistemas reactivos o bien basados en el entorno. Es decir, los robots tendrán la capacidad de reaccionar sin necesidad de la intervención humana ante ciertas situaciones de eventual peligro para la máquina.

2.1 Algunas definiciones importantes Gráfico 2.1 Manipulador genérico

a. Grado de libertad: se le conoce con las siglas DOF del inglés Degree of Freedom, y se define como un movimiento elemental independiente del resto. ******ebook converter DEMO Watermarks*******

Usualmente cada grado de libertad necesita de un actuador. b. Eslabón o link: es la parte sólida, normalmente rígida que compone al robot. En la figura superior serían el brazo y el antebrazo. c. Articulación: también conocida como joint o juntura, es la unión móvil entre los eslabones. d. Mano o garra: es el actuador del manipulador capaz de sujetar un objeto.

2.2 Tipos de manipuladores por su movimiento La geometría del robot manipulador tiene cinco clases básicas, las cuales van de la mano con los espacios de trabajo en los cuales se desenvuelven. Sus configuraciones se pueden apreciar en las siguientes figuras: Gráfico 2.2 Tipos de arquitectura

******ebook converter DEMO Watermarks*******

Tipo de robot

Ventajas

Desventajas

Alta resolución y gran exactitud. Cartesiano Independencia de la carga de la Movimientos lineales sobre los ejes x, gravedad. y y z. Movimiento articular sencillo.

Estructuralmente grande, usualmente con rieles o vías. Espacio de trabajo restringido. Ocupa gran espacio.

Cilíndrico Movimientos lineales sobre los ejes x e y, y un movimiento angular alrededor del eje z.

Menor resolución y exactitud. Volumen de trabajo restringido.

No depende de la carga de la gravedad. Su mecánica es más sencilla que la del cartesiano.

******ebook converter DEMO Watermarks*******

Poco peso. Esférico o polar Construcción simple. Movimientos angulares a modo de Movimientos pequeños en las elevación y deflexión y un movimiento articulaciones para el adecuado telescópico del brazo. de los extremos. Multieslabones articulados Movimientos angulares en cada una de las articulaciones.

Alcanzan cualquier punto en su ‘volumen’ de trabajo. DOF redundantes. Compatible con otros robots en un volumen de trabajo común.

Inercia variable en las últimas articulaciones. El error de trabajo es proporcional al radio de trabajo. Baja resolución y exactitud. Momentos de inercia realmente considerables en las articulaciones. Control muy complejo.

Tipos de robots por su arquitectura Poliarticulados Robots de muy diversa forma, básicamente sedentarios. Generalmente son robots de uso industrial. Se configuran en coordenadas cartesianas, llamados manipuladores. Móviles Robots con gran capacidad de desplazamiento. Para moverse, son teledirigidos o bien se guían por la información recibida de su entorno a través de sus sensores. Androides Son robots que intentan reproducir total o parcialmente la forma y el comportamiento cinemático del ser humano. Zoomórficos Clase de robots caracterizada principalmente por sus sistemas de locomoción que imitan a los diversos seres vivos. Los androides también podrían considerarse robots zoomórficos. Híbridos Estos robots corresponden a aquellos de difícil clasificación cuya estructura resulta de una combinación de las expuestas anteriormente.

******ebook converter DEMO Watermarks*******

Capítulo 3. Planificación de trayectorias

Para que un robot pueda realizar cualquier tarea en la que no sea necesario interactuar directamente con el entorno, se requiere de un movimiento de él mismo. Este resulta condicionado por la precisión necesaria, las restricciones espaciales, etcétera. Todas las condiciones para el movimiento se establecen según la tarea a realizar y son considerados al momento de determinar la trayectoria a seguir en el espacio. Obviamente, son posibles varias formas de establecer, tanto las trayectorias del robot como los modos de control, según sea la tarea impuesta. Para controlar trayectorias, es necesario establecer sus características. En este caso, para que el rendimiento de un manipulador industrial sea óptimo, se recomienda cumplir con el trabajo en el menor tiempo posible para pasar de un punto a otro, para ello los datos de entrada a nuestro problema serían las posiciones iniciales y finales, sus respectivas orientaciones y las aceleraciones y velocidades máximas de los actuadores. Con estos datos ya podemos generar directamente las trayectorias sobre el espacio articular. Para controlar las diversas trayectorias articulares del robot, es necesario establecer las características de movimientos partiendo de las ecuaciones dinámicas comunes. La complejidad real debe radicar en la obtención del modelo dinámico del robot, lo cual será tratado en un capítulo posterior. Cuando se trabaja con trayectorias complicadas, estas se parten y se componen luego por etapas que deben ser unidas en el tiempo, siendo muy cuidadoso en hacer coincidir los puntos de enlace para no generar errores de referencias o de saltos de tiempo. Para efectos prácticos, realizaremos los cálculos fuera de línea, almacenaremos en memoria un conjunto de valores discretos y luego los controladores los leerán como referencias deseadas. Cabe resaltar que esto es posible, siempre y cuando el robot no interactúe con el medio, es decir, cuando se encuentre con libertad total de movimiento. Una consideración importante es que las referencias se deben dar en tiempo real, teniendo en cuenta que cuando las posiciones y velocidades sean definidas en el espacio Cartesiano, se deberá resolver el problema cinemático inverso para obtener las correspondientes en el espacio articular. Dado que trabajaremos trayectorias óptimas, debemos realizar un paso previo en donde se deben definir todas las características resaltantes de las trayectorias, como son los tiempos intermedios y el tiempo final, así como los recorridos para cada uno de esos tiempos. Con estos datos definiremos si la trayectoria será de tres o de dos etapas. En otras palabras, si el recorrido es tan largo que permitirá alcanzar ******ebook converter DEMO Watermarks*******

una etapa en la que el actuador trabaje a velocidad máxima (constante), o si es una trayectoria corta que no lo va a permitir.

3.1 Trayectoria óptima de tiempo mínimo de tres etapas Esta trayectoria se genera cuando se desea recorrer una distancia grande en un tiempo mínimo teniendo una velocidad máxima. Para ello, se consideran tres etapas: la primera de aceleración máxima, la segunda de velocidad constante y la tercera de desaceleración máxima. El resultado de una trayectoria de estas características se puede ver en el Gráfico 3.1, donde las aceleraciones y velocidades máximas son empleadas. Gráfico 3.1 Trayectoria para velocidad constante

a. Primera etapa o etapa de aceleración máxima (0 ≤ t ≤ tb) Se trata de una etapa cuadrática definida por las siguientes ecuaciones: a = amax vd(t) = v0 + at ******ebook converter DEMO Watermarks*******

vd(t) = r0 + v0t + 0.5at2 Por supuesto, que para la etapa de programación deberemos reemplazar a la constante de tiempo por la diferencial de tiempo. Al finalizar esta etapa, v es la velocidad alcanzada en el instante tb con aceleración a máxima, y debe ser igual a la velocidad máxima de diseño del actuador. b. Segunda etapa o etapa de velocidad constante (tb ≤ t ≤ (tf − tb)) a=0 vd(t) = vmax rd(t) = r0 + vmaxt Nuevamente aclaramos que para la etapa de programación deberemos reemplazar a la constante de tiempo por la diferencial de tiempo. c. Tercera etapa o etapa de desaceleración máxima ((tf − tb) ≤ t ≤ tf ) a = −amax vd(t) = v0 + at rd(t) = r0 + v0t + 0.5at2 En esta etapa, la única diferencia con la primera se da en el cambio de signo de la aceleración. Ejemplo E.3.1: Desarrollar una aplicación en Matlab1 que solucione de manera genérica el caso de una trayectoria de tres etapas para cubrirla en un tiempo mínimo, donde las entradas sean la aceleración máxima, la velocidad máxima y la distancia a ser recorrida. Solución: Para este caso se ha resuelto una aplicación genérica en Matlab: Para este caso se ha resuelto una aplicación genérica en Matlab: clear all; close all % Valores Iniciales para el Cálculo amax = input('Introduzca la Aceleración Máxima (°/s^2) = '); vmax = input('Introduzca la Velocidad Máxima (°/s) = '); rmax = input('Introduzca la Recorrido Total (°) = '); ******ebook converter DEMO Watermarks*******

% Cálculo de los tiempos y recorridos dt = 0.01; t0 = 0; t1 = vmax/amax; r1 = 0.5*amax*t1^2; r2 = rmax-2*r1; t2 = t1+r2/vmax; r2 = r1+r2; tf = t1+t2; r3 = r2+vmax*(tf-t2)+0.5*(-amax)*(tf-t2)^2; t = [ t0 t1 t2 tf ] r = [ r1 r2 r3 ] % Definiendo y renombrando las Condiciones Iniciales r0 = 0; v0 = 0; a0 = amax; r = r0; v = v0; a = a0; % Reproducción de la trayectoria k = 1; for t = t0:dt:t1 a = amax; v = v + a*dt; r = r + v*dt+0.5*a*dt^2; A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; k = k + 1; end for t = (t1+dt):dt:t2 a = 0; v = vmax; r = r + v*dt; A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; k = k + 1; end for t = (t2+dt):dt:tf a = -amax; v = v + a*dt; r = r + v*dt+0.5*a*dt^2; A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; k = k + 1; end plot(T,R,'b-',T,V,'g-',T,A,'m-') ******ebook converter DEMO Watermarks*******

grid on; zoom on Ejemplo E.3.2: Con el programa elaborado en la respuesta del ejemplo E.3.1, calcular la trayectoria de un manipulador si consideramos como valor inicial 0° y como valor final 70°, es decir, un recorrido total de 70° para un motor cuya aceleración máxima es de 12°/s2 y una velocidad máxima de 15°/s. Solución: Aplicando los datos en el programa, tendremos la siguiente trayectoria de referencia. Digitamos: Introduzca la aceleración máxima (°/s^2) = 12 Introduzca la velocidad máxima (°/s) = 15 Introduzca la recorrido total (°) = 70 Como respuesta, el Matlab entrega los vectores de intervalos de tiempo y distancia, y la figura de la trayectoria:

******ebook converter DEMO Watermarks*******

3.2 Trayectoria óptima de tiempo mínimo de dos etapas Es una variante del método anterior denominada también bang-bang, tal como se ve en la figura. En este caso se aplica la aceleración máxima y luego la desaceleración máxima, alcanzando la posición final en un tiempo mínimo. a. Primera etapa o etapa de aceleración máxima (0 ≤ t ≤ tc) Empleamos las mismas expresiones que para la trayectoria de tres etapas. Se trata de una etapa cuadrática definida por las siguientes ecuaciones: a = amax vd(t) = v0 + at rd(t) = r0 + v0t + 0.5at2 ******ebook converter DEMO Watermarks*******

Al finalizar esta etapa, el tiempo debe ser igual al tc que corresponde a la mitad del tiempo del recorrido total y que debe ser calculado previamente. b. Segunda etapa o etapa de desaceleración máxima (tc ≤ t ≤ f ) a = −amax vd(t) = v0 + at rd(t) = r0 + v0t + 0.5at2 En esta etapa, la única diferencia con la primera se da en el cambio de signo de la aceleración. Gráfico 3.2 Trayectoria del tipo Bang-Bang

Para desarrollar de manera automática un programa de definición de trayectorias que seleccione si corresponde una trayectoria de tres o de dos etapa, según las referencias dadas de punto inicial y punto final, se debe considerar una condicionante en el cálculo inicial que estará dada por los tiempos de inicio y final ******ebook converter DEMO Watermarks*******

de la segunda etapa de la trayectoria óptima de tiempo mínimo de tres etapas. La condición es que si el tiempo final de esta segunda etapa es menor que el de inicio de la misma, la trayectoria a seleccionarse es la de dos etapas. En caso contrario es la de tres etapas.

3.3 Trayectoria lineal en el espacio cartesiano (con evolución temporal definida) Si tenemos los puntos de inicio y final en el espacio cartesiano x0 y xf es muy probable que solicitemos una trayectoria recta en el mismo espacio que conecte ambas posiciones. Al respecto, definimos un perfil de movimiento deseado en coordenadas de la trayectoria l(t) como se observa en el gráfico 3.3, empleando alguno de los métodos usado anteriormente. Con l(t) puede obtenerse ahora, mediante relaciones geométricas en el espacio cartesiano el vector x(t).

Gráfico 3.3 Trayectoria lineal en el espacio cartesiano

Finalmente, aplicando la cinemática inversa se pasa del espacio cartesiano al ******ebook converter DEMO Watermarks*******

espacio articular generando así las consignas de posición articular requeridas qid (t). Debe observarse que este procedimiento es general y puede aplicarse para trayectorias arbitrarias en el espacio cartesiano. Gráfico 3.4 Perfil de movimiento en coordenadas de la trayectoria

******ebook converter DEMO Watermarks*******

Capítulo 4. Cinemática de los robots

La cinemática de los robots se encarga de determinar las coordenadas en el espacio, tanto en posición como en orientación de los objetos, de la carga y de los mismos eslabones del robot. En este último caso, debe articular cada movimiento de cada articulación para que el movimiento del órgano terminal sea el deseado.

4.1 Coordenadas generalizadas de los robots Las coordenadas generalizadas deben caracterizar y generalizar la configuración del robot de manera única y debe ser la mínima cantidad de coordenadas posible, sean angulares o cartesianas. Por ejemplo: Gráfico 4.1 Robot plotter

4.2 Representaciones en el espacio de la posición de los objetos Todo objeto en el espacio necesita de seis coordenadas para posicionarse adecuadamente: 1. Tres coordenadas de centro de masa, referencia u origen. Emplazado ******ebook converter DEMO Watermarks*******

adecuadamente. 2. Tres coordenadas auxiliares para definir la orientación del cuerpo.

4.3 Transformación de coordenadas Cuando los orígenes de las coordenadas coinciden, las coordenadas de cualquier punto en los dos sistemas están relacionadas por la siguiente expresión:

donde: en el sistema de coordenadas O, X, Y, Z. en el sistema O’, X’, Y’, Z’. A = Matriz de rotación del sistema de coordenadas O’, X’, Y’, Z’ con respecto al sistema de coordenadas O, X, Y, Z. El problema inverso al caso anterior está dado por:

La matriz de cosenos de orientación A determina la transformación directa desde un sistema de coordenadas a otro, mientras que la matriz de cosenos traspuesta AT se encargará de la conversión inversa. Si ampliamos las rotaciones de un solo ángulo a rotaciones en tres ángulos γ, α, β con respecto a los ejes x, y, z correspondientes, llegamos a los siguientes elementos: a. Rotación en

es decir: donde Aγ = A Para la transformación inversa, se aplica la traspuesta:

******ebook converter DEMO Watermarks*******

b. Rotación en OY de β grados:

c. Rotación en OX de α grados:

La rotación en el espacio puede ser dada mediante la rotación consecutiva en los tres ejes X, Y, Z. La matriz total de los cosenos de orientación es: Aγβα = AγAβAα Ahora veremos la posibilidad de tener dos sistemas cuyos puntos de origen no sean coincidentes. Gráfico 4.2 Coordenadas en el espacio

******ebook converter DEMO Watermarks*******

Para transformar las coordenadas O’, X’, Y’, Z’ de P a O’, X’, Y’, Z’, hay que desplazar el sistema sobre Xo hasta que los centros de coordenadas coincidan y allí los relacionaremos mediante la matriz de cosenos de orientación. O, en el caso inverso, relacionarlos mediante A y luego desplazarlos hasta Xo:

transformando de O’, X’, Y’, Z’ a O, X, Y, Z, despejamos:

dado que A−1 = AT, entonces A−1 A = 1, por lo tanto:

La matriz de cosenos de orientación A, tiene las siguientes funciones: 1. Define la orientación de un sistema de coordenadas con respecto al origen (O’X’Y’Z’ → OXYZ). 2. La transformación es aplicable en una sola ecuación:

******ebook converter DEMO Watermarks*******

3. Desarrolla la rotación de vectores en el espacio.

4.4 Transformación homogénea de coordenadas Si queremos homogenizar las transformaciones a una forma más sencilla, debemos llegar a:

Para ello:

Así, queda la siguiente ecuación de transformación:

Si analizamos dos transformaciones seguidas, tendremos: Gráfico 4.3 Transformaciones de coordenadas en el espacio

******ebook converter DEMO Watermarks*******

Para este caso, se debe utilizar dos veces la ecuación de transformación o de cosenos de rotación A:

Reemplazando la primera en la segunda:

De aquí podemos concluir que la cantidad de sumandos en la ecuación aumenta con el número de transformaciones. Por lo tanto, para n transformaciones en serie, existen n + 1 sumandos en la ecuación. Ahora, si reemplazamos las transformaciones dadas, por las homogéneas tendremos las siguientes expresiones:

Reemplazando el segundo en el primero,

A partir de este momento llamaremos a la matriz de transformación homogénea Ao, simplemente A. ******ebook converter DEMO Watermarks*******

Transformación directa: Transformación inversa: Donde:

4.5 Problema cinemático directo El problema cinemático directo permite el cálculo de las coordenadas cartesianas del órgano de manipulación del robot utilizando las coordenadas generalizadas. Gráfico 4.4 Robot plotter

El problema cinemático directo se encarga de la transformación del espacio articular al espacio cartesiano

, mientras que el problema cinemático

inverso calcula las posiciones articulares a partir del espacio cartesiano . En el siguiente diagrama describimos el modelo de un robot, donde se ven los tipos de coordenadas que se están empleando por etapas. Gráfico 4.5 Diagrama de la cinemática del robot

******ebook converter DEMO Watermarks*******

La función del control en el robot es la que se encarga de realizar los movimientos del manipulador para cubrir una trayectoria deseada. Las coordenadas reales del manipulador son angulares, dado que los actuadores generalmente están en las articulaciones. El modelo cinemático de un robot se encargará de las transformaciones homogéneas desde el manipulador hasta el origen a través de las transformaciones de las posiciones de los centros de masa y las respectivas orientaciones de cada uno de los eslabones.

4.6 El método de Denavit-Hartenberg (D-H) Este método permite determinar la relación cinemática entre dos cuerpos sólidos como los eslabones o links, utilizando la menor cantidad de parámetros. Gráfico 4.6 Parámetros de Denavit-Hartenberg

******ebook converter DEMO Watermarks*******

La figura anterior describe los parámetros a ser utilizados por el método de Denavit-Hartenberg. Este método nos permite, mediante el empleo de un algoritmo, elaborar una tabla o matriz de parámetros. Con estos parámetros armaremos directamente las matrices de transformación A de cada link. Algoritmo de D-H: 1. Se localizan los ejes z0, z1, z2, …, zn-1 coincidentes con los ejes de las articulaciones 1, 2, 3, …, n. 2. Se establece el sistema base o de origen oo. Este origen base se sitúa en cualquier punto del eje z0. Los ejes xo e yo han de ser tales que el sistema sea dextrogiro, es decir, que cumpla con la regla de la mano derecha. Desde i = 1, hasta i = n-1, se realizan los pasos 3, 4 y 5. 1. Localizar oi, donde la normal común a zi y zi-1 intersecta con zi. Si zi y zi-1 se intersectan, oi se localiza en la intersección, y si ambos son paralelos, oi se localizará en la articulación i + 1. 2. Se establece xi a lo largo de la normal común entre zi-1 y zi o, en la dirección ******ebook converter DEMO Watermarks*******

normal al plano zi-1 − zi, si los dos ejes se intersectan. 3. Se establece yi para que el sistema sea dextrogiro. 4. El sistema del órgano terminal tiene su origen on en el extremo final del último link o en el punto imaginario donde la garra deberá coger al objeto. zn se sitúa en la dirección de zn-1;xn tiene que ser normal a zn-1 y zn;yn tiene que ser tal que el sistema sea dextrogiro. 5. Se crea una tabla con los parámetros de Denavit-Hartenberg, donde: ai Distancia desde la intersección de xi con zi-1 hasta oi, medida a lo largo de xi. di Distancia desde oi-1 a la intersección de xi con zi-1, a lo largo de zi-1. αi Angulo entre zi-1 y zi, medido alrededor de xi. θi Angulo entre xi-1 y xi, medido alrededor de zi-1. Con esta tabla armaremos la matriz de transformación Ai:

Con esta matriz, se realizan las transformaciones de un sistema de referencia i-ésima, al sistema de referencia (i-1)-ésimo. Matemáticamente se justifica su comportamiento, sabiendo que los que hace es lo siguiente: a. b. c. d.

Gira respecto a zi-1 un ángulo θi. Traslada a lo largo del eje zi-1 una distancia di. Traslada a lo largo del eje xi una distancia ai. Gira con respecto al eje xi un ángulo αi.

Tal como habíamos descrito con anterioridad, la matriz de transformación Ai responde a la forma:

Por otro lado, si queremos transformar un punto final sobre el origen base, debemos multiplicar las matrices de transformación Ai. ******ebook converter DEMO Watermarks*******

Ejemplo E.4.1: Determinar los sistemas de referencia de coordenadas para cada articulación, determinar las constantes de D-H, y determinar las matrices de transformación del siguiente manipulador.

Solución: 1. Se localizan los ejes z0, z1, z2, …, zn-1 coincidentes con los ejes de las articulaciones 1, 2, 3, …, n-1.

******ebook converter DEMO Watermarks*******

2. Se establece el sistema base o de origen oo. Este origen base se sitúa en cualquier punto del eje z0. Los ejes xo e yo han de ser tales que el sistema sea dextrogiro, es decir, que cumpla con la regla de la mano derecha.

3. Localizar oi, donde la normal común a zi y zi-1 intersecta con zi. Si zi y zi-1 se intersectan, oi se localiza en la intersección, y si ambos son paralelos, oi se localizará en la articulación i + 1.

******ebook converter DEMO Watermarks*******

4. Se establece x a lo largo de la normal común entre zi-1 y zi o, en la dirección normal al plano zi-1 − zi, si los dos ejes se intersectan.

5. Se establece yi para que el sistema sea dextrogiro.

******ebook converter DEMO Watermarks*******

6. El sistema del órgano terminal tiene su origen on en el extremo final del último link o en el punto imaginario donde la garra deberá coger al objeto. zn se sitúa en la dirección de zn-1;xn tiene que ser normal a zn-1 y zn; yn tiene que ser tal que el sistema sea dextrogiro.

Finalmente, el sistema con todas sus coordenadas y longitudes quedaría:

******ebook converter DEMO Watermarks*******

Con los datos presentados en la figura anterior, crearemos una tabla con los parámetros de Denavit-Hartenberg, donde: ai di αi θi

Distancia desde la intersección de xi con zi-1 hasta oi, medida a lo largo de xi. Distancia desde oi-1 a la intersección de xi con zi-1, a lo largo de zi-1. Ángulo entre zi-1 y zi, medido alrededor de xi. Ángulo entre xi-1 y xi, medido alrededor de zi-1. Por lo tanto:

Con esta tabla definimos las matrices de transformación Ai:

******ebook converter DEMO Watermarks*******

Donde reemplazaremos: cos(qi) = ci ; sin(qi) = si, y cos(3π / 2) 0 ; sin(3π / 2) = −1 ; cos(π / 2) = 0 ; sin(π / 2) = 1 Por lo tanto:

Multiplicando las dos primeras matrices tenemos:

Y, por último, multiplicando todas las matrices, determinamos la matriz completa de transformación:

******ebook converter DEMO Watermarks*******

Ejemplo E.4.2: Dado que las multiplicaciones matriciales generan fácilmente errores por la cantidad de operaciones que involucra, sobre todo cuando los manipuladores presentan múltiples sistemas de referencia, resolver estas multiplicaciones utilizando el Toolbox de matemáticas simbólicas del Matlab, de tal manera que ingresemos las tres matrices A y nos entregue la matriz de transformación del manipulador. Solución: Digitamos en un archivo-M: % Cálculo de la Matriz de Transformación clear all; close all; clc syms c1 c2 c3 s1 s2 s3 l1 l2 d A1 = [ c1 0 s1 0; s1 0 -c1 0; 0 1 0 l1; 0 0 0 1 ]; A2 = [ c2 0 s2 0; s2 0 -c2 0; 0 1 0 0; 0 0 0 1 ]; A3 = [ c3 -s3 0 0; s3 c3 0 0; 0 0 1 l2; 0 0 0 1 ]; A4 = [ 1 0 0 0; 0 1 0 0; 0 0 1 d; 0 0 0 1 ]; A12 = A1*A2; A23 = A2*A3; T = A1*A2*A3*A4 A lo que el Matlab responde:

Visto de manera formal, representamos lo que deseábamos conseguir:

******ebook converter DEMO Watermarks*******

4.7 Cinemática de manipuladores de eslabones rígidos La cinemática de los manipuladores de robot concierne solamente al posicionamiento relativo del mismo y no a los efectos de su movimiento. Las principales ideas comprenden los cambios de coordenadas de posición e incluyen las transformaciones de los eslabones o links de las matrices A, de la matriz del brazo T, coordenadas de espacio articular versus coordenadas de espacio cartesiano, y la cinemática versus la cinemática inversa. Los manipuladores rígidos de robot de eslabones seriales y de base fija pueden ser considerados como una secuencia de articulaciones y eslabones. Cada articulación i tiene una variable qi, el cual es un ángulo y normalmente se presenta como un vector. Un robot con n articulaciones tiene n grados de libertad. Debido a ello, para recorrer un espacio de 3-D es necesario tener una función en con sus respectivas orientaciones, es decir, se requerirá de un brazo con seis grados de libertad. Para propósitos de análisis, se considera que los orígenes de cada eslabón contienen un eje relativo de coordenadas. Para lo anterior, la base principal de las coordenadas generales se deberá considerar en la base del eslabón fijo. La ubicación de los ejes de referencia de coordenadas en cada eslabón a menudo es seleccionada según el criterio Denavit-Hartenberg. La relación entre los eslabones: Ai(qi) = Ripi está dada por la matriz A del eslabón i donde Ri(qi) es una matriz de rotación de 3x3 donde y el vector de transformación . Ri especifica la rotación del eje de coordenadas en el eslabón i con respecto al eje de coordenadas del eslabón i-1; pi especifica la traslación del eje coordenado del eslabón i con respecto al eje de coordenadas i-1. Con lo presentado, se entiende que la matriz de transformación Ai especifica la orientación y la traslación del eslabón i con respecto al eslabón i-1. La matriz Ai(qi) es una función de los ángulos de las articulaciones así que como qi cambia con el movimiento del robot, Ai variará con respecto al mismo movimiento. La matriz Ai también depende de las dimensiones de los eslabones, los cuales son fijos para cada modelo de robot. ******ebook converter DEMO Watermarks*******

La posición final del brazo está dada basándose en el eje de coordenadas por la matriz T del brazo robot, definida como una concatenación de matrices A:

Esta matriz de transformación homogénea es una función del vector de ángulo de articulaciones q. Allí se tiene que la matriz de rotación acumulativa está dada por R(q) y la de traslación acumulativa por p(q). Por ello se deduce que: R(q) = R1(q1)R2(q2)…Rn(qn)

4.8 Espacio articular versus espacio cartesiano Un manipulador de n eslabones tiene n grados de libertad, y la posición del punto final del brazo está completamente ubicada una vez que se han prescrito las variables articuladas qi. Esta posición puede ser descrita como coordenadas articulares o como coordenadas cartesianas. La posición final en coordenadas articulares está simplemente dada por un vector q, mientras que la posición cartesiana está dada por el vector [x y z] a través del vector p(q) y su matriz de transformación T(q). Desgraciadamente, la orientación en coordenadas cartesianas, dada por la matriz T(q). es ineficiente en los nueve elementos de R(q).

4.9 Problemas de cinemática y la cinemática inversa El problema de la cinemática del robot es determinar la posición cartesiana del punto final del brazo una vez que las variables articulares están dadas. Esto se resuelve hallando la matriz T(q) para cada valor de q, mientras que el problema de la cinemática inversa es determinar los ángulos articulares q, para el punto final del brazo prescritos en coordenadas cartesianas. Esto corresponde a resolver: T(q) = A1(q1)A2(q2)…An(qn) para un . Dando una orientación deseada R y una traslación p con respecto al punto final del brazo. Esto no es sencillo de solucionar, y puede haber más de una solución. Existen varias técnicas eficientes para desarrollar dicha transformación. Uno debe evitar usar las funciones arcoseno y arcocoseno, y se tratará de utilizar, en lo posible, funciones bien condicionadas numéricamente como el arcotangente. ******ebook converter DEMO Watermarks*******

4.10 Transformaciones diferenciales homogéneas Para que un robot realice una trayectoria predefinida, este debe tener la información referente a la velocidad y aceleración del órgano de manipulación y de las diferentes coordenadas generalizadas de las diferentes articulaciones. Para este cálculo, se realizan las transformaciones diferenciales homogéneas. En algunos sistemas cinemáticos complejos existen puntos en los cuales no es posible realizar movimientos es todas las direcciones. Estos son definidos como singularidades y los veremos más adelante.

4.11 Transformación jacobiana Las transformaciones cinemáticas realizan la conversión de las posiciones entre varios ejes de coordenadas. El jacobiano permite la transformación de cantidades dinámicas incluyendo velocidades, aceleraciones y fuerza. Para entender mejor, veamos el siguiente caso de un manipulador de dos grados de libertad: Gráfico 4.7 Robot plotter

El modelo cinemática es: x(θ1,θ2) = l1 cosθ1 + l2 cos(θ1 + θ2) y(θ1,θ2) = l1 sinθ1 + l2 sin(θ1 + θ2) ******ebook converter DEMO Watermarks*******

Si diferenciamos parcialmente el sistema, tenemos:

Si representamos las diferenciales vectorialmente, tenemos:

donde:

También podemos expresar: dx = Jdθ Donde J es la matriz de transformación jacobiana del sistema, y representa un sistema de ecuaciones algebraicas no lineales.

Ejemplo E.4.3: Determinar el jacobiano del siguiente sistema de coordenadas: x(θ1,θ2) = l1 cosθ1 + l2 cos(θ1 + θ2) y(θ1,θ2) = l1 sinθ1 + l2 sin(θ1 + θ2) ******ebook converter DEMO Watermarks*******

Solución: Debemos reemplazar las respectivas derivadas parciales en la expresión de la matriz Jacobiana.

El resultado es:

En esta última expresión se aprecia claramente que la matriz contiene elementos correspondientes a las derivadas parciales de las ecuaciones cinemáticas con respecto a las coordenadas generalizadas.

4.12 Matriz de transformación jacobiana Es una matriz en la cual sus elementos constituyen las derivadas parciales de las ecuaciones cinemáticas con respecto a las coordenadas generalizadas. La representación de la matriz jacobiana se puede dar tanto para sistemas de dos dimensiones como para sistemas de tres dimensiones: Forma general del jacobiano de dos dimensiones:

Forma general del jacobiano de tres dimensiones:

******ebook converter DEMO Watermarks*******

Del mismo modo, sabiendo que y es una función vectorial de x, podemos afirmar que si la función vectorial y = f(x) y sabemos que

, entonces existe

una o más soluciones. Por el contrario, si la función vectorial y = f(x), y sabemos que

,

entonces no existe solución. Por otro lado, retomando la expresión de transformación Jacobiana: dx = Jdθ Y si a ambos lados de la igualdad los dividimos entre la diferencial de tiempo dt, tenemos:

donde:

Por lo tanto: V = Jϖ, donde:

******ebook converter DEMO Watermarks*******

Podemos concluir que la matriz de transformación jacobiana es la matriz de transformación de las velocidades articulares (generalizadas) en velocidades de los órganos de manipulación. Luego de ver el comportamiento de la velocidad y su transformación jacobiana, obtenemos la aceleración aplicando una simple derivación:

El sentido físico de la transformación jacobiana se puede entender al analizar un manipulador de dos eslabones, donde las velocidades articulares están representadas por las expresiones siguientes:

Para las cuales el jacobiano J tendrá dos componentes J1 y J2. J = [J1 J2] Si lo reemplazamos en V = Jϖ, tenemos:

De esta última expresión vemos que cada vector columna J1 y J2 es aplicado a cada velocidad angular de cada articulación como si el resto permaneciera inmóvil. Por otro lado, al aplicar cada J a cada velocidad angular, no proporcionan la velocidad lineal del manipulador. Es importante aclarar que los valores de J1 y J2 dependen de la configuración de cada manipulador.

4.13 Rotaciones diferenciales ******ebook converter DEMO Watermarks*******

La variación entre los ejes x, y y z es una relación que se debe analizar, así como la velocidad lineal para el mismo punto: Gráfico 4.8 Representación de los movimientos rotacionales

La matriz de rotación con respecto al eje x es:

Si a esta expresión Aα, la rotamos con respecto a dΦx:

Dado que dΦx es una diferencial, podemos aproximar a cero a esta expresión (dΦx ≈ 0), con lo que el coseno sería aproximadamente 1 (cos(dΦx) ≈ 1) y el seno, se aproximaría al ángulo ( sin(dΦx) ≈ dΦx). ******ebook converter DEMO Watermarks*******

Aplicando este mismo criterio, podemos extender esta transformación a los ejes y y z:

Es importante resaltar que la multiplicación de las matrices rotacionales es conmutativa. Si multiplicamos las matrices rotacionales de los ejes x e y:

Por este motivo, es factible aplicar esta última expresión como la rotación simultánea de los ejes x e y. Como consecuencia de ello, podemos afirmar que la matriz de rotación completa está dada por:

Si el sistema contiene n grados de libertad, entonces la matriz de transformación jacobiana del manipulador contiene la diferencial tridimensional de desplazamiento (dx = [dx dy dz]T) y a la diferencial tridimensional rotacional (dΦ = [dΦx dΦy dΦz]T).

Si el sistema tiene 6 grados de libertad, entonces la matriz de transformación jacobiana será de 6 x 6, donde las tres primeras filas representan las velocidades lineales del órgano de manipulación y las tres filas restantes, a las velocidades ******ebook converter DEMO Watermarks*******

angulares del órgano de manipulación. Del mismo modo, cada columna representa la velocidad angular y lineal generada por cada articulación, la cual es la componente correspondiente a la del órgano de manipulación. De lo escrito anteriormente, podemos apreciar que si n es menor que seis, entonces J, no es cuadrada y el sistema no tendría libertad de posicionamiento completa del punto final del brazo en un espacio 3-D. Las singularidades de J, es decir, los lugares donde pierde su rango completo, definen los límites del espacio de trabajo del robot.

4.14 Cálculo de velocidades articulares desde las velocidades lineales Dadas las aclaraciones, utilizaremos al jacobiano como una matriz de transformación de velocidades, aceleraciones y fuerzas.

Si derivamos con respecto al tiempo:

Es exactamente igual en el caso de las fuerzas:

Donde t es un vector de torques (fuerzas rotacionales), es decir, uno por cada articulación, y F es un vector de fuerzas lineales en el espacio. Cuando el manipulador se mueve, la variable articular q se convierte en una función del tiempo. Un jacobiano estará compuesto o estructurado así:

Donde el valor n está dado por el grado de libertad del manipulador. Por lo tanto, si el manipulador tiene n eslabones, el jacobiano será una matriz de dimensiones 6xn. Es importante tener presente que si n es menor que 6, entonces la matriz jacobiana no es cuadrada y esto refleja que no hay libertad de posicionamiento completa para el manipulador en las tres dimensiones. En otras palabras, la falta de libertad genera zonas inaccesibles del área de operación del manipulador, llamadas ******ebook converter DEMO Watermarks*******

singularidades. Las singularidades de J(q), que ocurren al perder el rango, definen los límites del espacio de trabajo del robot. Las singularidades pueden ocurrir en el interior del espacio de trabajo para algunos brazos. Ejemplo E.4.4: Determinar el jacobiano correspondiente al manipulador de la figura y analizar su comportamiento.

Solución: Representamos la tabla de parámetros de Denavit-Hartenberg, asumiendo que los ejes z salen de la hoja:

******ebook converter DEMO Watermarks*******

Con la tabla de parámetros de D-H, diseñamos las matrices de transformación:

Asumimos cosθi = ci y sin θi = si :

******ebook converter DEMO Watermarks*******

Debemos determinar la matriz de transformación total desde x0 hasta x2: x0 = A1x1 x1 = A2x2 Por lo tanto: x0 = A1A2x2 Y las matrices de transformación T1 y T2 serán:

******ebook converter DEMO Watermarks*******

Recordando: cos(θ1+ θ2] = cosθ1cosθ2 − sin θ1 sinθ2 →c12 = c1c2 – s1s2 cos(θ1+ θ2] = cosθ1cosθ2 + sin θ1 sinθ2 →s12 = c1c2 + s2s1 Por lo tanto:

El jacobiano debe transformar a p2, de:

******ebook converter DEMO Watermarks*******

Por lo tanto, aplicamos la forma del jacobiano al punto p2:

El jacobiano también debe contener a las rotaciones, así que debemos determinar:

Donde z0 = [ 0 0 1]T y zn se toma de Rn de cada Tn. Los valores de ki, serán 1 si el movimiento en ese punto es articular, y 0 si el movimiento es prismático o telescópico.

Por lo tanto:

******ebook converter DEMO Watermarks*******

Y si vemos las equivalencias en las transformaciones de velocidades:

De donde podemos extraer las expresiones de las velocidades lineales y rotacionales en función de las velocidades articulares:

Si analizamos el desplazamiento cuando q2 = 0, es decir, el brazo completamente estirado sin importar el valor de q1, y cuando q2 = π, es decir, cuando el último eslabón ha rotado 180° y se encuentra exactamente sobre el primer eslabón, tal como ******ebook converter DEMO Watermarks*******

se ve en la figura:

Para los valores de Vx y Vy, la trayectoria ABOCD no es posible ya que en los puntos A, O y D las velocidades ϖ1 y ϖ2 tienden al infinito, dado que el seno de q2 es igual a 0. Para resolver este problema, el manipulador no debe realizar trayectorias que pasen por A, O o D. Estos puntos son las singularidades.

4.15 Singularidades Las singularidades son situaciones en las que el manipulador no puede alcanzar un punto de su espacio de trabajo. Los motivos que ocasionan las singularidades pueden ser principalmente por la pérdida de rango en la matriz J, y ellos son dos: a. Configuraciones con menos de 6 grados de libertad. b. Trayectorias en las que en algún o algunos puntos la matriz J pierde rango. Visto de otra manera, puntos en los que el rango de J es menor que 6. ******ebook converter DEMO Watermarks*******

Las singularidades pueden ser de dos tipos: 1. Singularidades de frontera: ocurren cuando el manipulador es extraído o contraído. Se pueden evitar al utilizar trayectorias que no pasen cerca de los límites de su espacio de trabajo. 2. Singularidades internas: ocurren en el interior del espacio de trabajo, normalmente cuando dos o más ejes de movimiento son alineados. Son un serio problema y se debe tener especial atención al planificar trayectorias. Las singularidades causan la incapacidad de alcanzar algunas posiciones, no solucionan el problema cinemático inverso o ejecutan infinitas soluciones (divisiones por cero) y en la vecindad de ellas, pequeñas velocidades lineales generan enormes velocidades angulares. Para evitar los problemas generados por las singularidades, es conveniente probar la trayectoria planificada verificando que en ninguno de sus puntos se pierda el rango de la matriz de transformación jacobiana. Si se detectara que existe algún punto que sea singularidad durante la trayectoria, se puede cambiar esta, de tal manera que lo evite. Otro punto importante a tener en cuenta son las ubicaciones de las discontinuidades y las limitaciones físicas de la estructura del manipulador. Cuando se está próximo a una discontinuidad, las velocidades angulares pueden ser muy grandes, para asegurar el buen comportamiento del manipulador, se puede dotar de un mando limitador de manera tal que la velocidad ejercida no sobrepase la velocidad límite nominal. Ejemplo E.4.5: Determinar los parámetros de D-H, el jacobiano y las singularidades de la muñeca de un manipulador, la cual se presenta en la siguiente figura.

******ebook converter DEMO Watermarks*******

Solución: Aplicamos las reglas de Denavit-Hartenberg, para extraer sus parámetros:

La tabla de parámetros de D-H es la siguiente:

Con estos parámetros, reemplazamos los valores en las matrices de transformación Ai:

Recordando que

= Matriz de rotacion de orden 3x3 y pi =

******ebook converter DEMO Watermarks*******

Vector de traslacion de orden 3x1. Adicionalmente, hay que tener presente lo siguiente:

donde a es el vector de aproximación, s es el vector de orientación y n es el vector normal (n = s x a).

Las matrices A son:

******ebook converter DEMO Watermarks*******

Donde las matrices de transformación homogénea son:

******ebook converter DEMO Watermarks*******

Con estos datos calculamos el jacobiano de una manera práctica: ******ebook converter DEMO Watermarks*******

donde Jp es el jacobiano de posición y Jo es el jacobiano de orientación.

donde oo está en tn.

Donde zn está en Rn dentro de Tn. Los valores de Ki, serán 1 si el movimiento en ese punto es articular, y 0 si el movimiento es prismático o telescópico. Entonces, tomamos el punto p6 de la matriz T6:

Con él calculamos la matriz Jp:

Del mismo modo, calculamos Jo sabiendo que los valores de k4, k5, yk 6son 1:

Donde los valores de zn los tomamos de cada R,n excepto el primero que siempre debe ser z3 = [ 0 0 1] T. Por ello, tomamos el z4 de la tercera columna del T4, y el z5 de la tercera columna del T5. ******ebook converter DEMO Watermarks*******

Por lo tanto, el jacobiano de la muñeca es:

Entonces:

Con esta expresión confirmamos:

Para determinar las singularidades de la muñeca debido a su estructura, debemos estudiar su arquitectura. En este caso, no las consideraremos sino solamente como limitaciones físicas por no contar con el robot. Ahora, determinaremos las singularidades por limitaciones de espacio de trabajo y su correspondiente disminución de rango en el jacobiano. Esto lo conseguiremos realizando una pequeña función en Matlab que evalúa el jacobiano, y un programa, dentro del cual le asigne todos los valores posibles de las articulaciones θ4 y θ5. Función del jacobiano

******ebook converter DEMO Watermarks*******

Programa de la evaluación del jacobiano: clear all;close all d6 = 1; cdor = 1; for t4 = 0:pi/180:2*pi for t5 = 0:pi/180:2*pi J = jac(t4,t5,d6); if rank(J) < 3; t4J(cdor,1) = t4; t5J(cdor,1) = t5; rk(cdor,1) = rank(J); cdor = cdor + 1; end end end La respuesta del Matlab nos indica que existirán singularidades cuando: θ5 = {0, π 2π} Con este dato, los diseñadores deberán evitar que se asignen esos valores a la trayectoria.

******ebook converter DEMO Watermarks*******

Capítulo 5. Dinámica de los robots

La dinámica del robot considera los efectos del movimiento debidos a las entradas de control y a las inercias, a las fuerzas de Coriolis, a la gravedad, a perturbaciones y a otros efectos. Esta revela la relación entre las entradas de control y la variable articular de movimiento q(t)., la cual es requerida para el diseño del sistema de servocontrol. Se vuelve a resaltar que, para completar la libertad total de movimiento en el espacio, se necesitan seis grados de libertad, es decir, tres de posicionamiento y tres de orientación. Nosotros utilizaremos solo robots rígidos, que no tienen flexibilidad en sus eslabones o en sus acoples.

5.1 Modelo de la dinámica del robot en el espacio articular Las dinámicas de los manipuladores robóticos con eslabones rígidos pueden escribirse como:

Donde M es la matriz de inercia, C es la matriz de fuerzas centrípetas y de Coriolis, F es el vector de τd τ y contiene los torques requeridos en cada articulación. A menudo la dinámica del robot es resumida en:

donde: no-lineales.

y el cual representa al vector de términos

La dinámica puede ser desarrollada para un manipulador específico utilizando la ecuación de movimiento de Lagrange:

con el lagrangiano definido en términos de la energía cinética (K) y de la energía potencial (P), como: ******ebook converter DEMO Watermarks*******

L=K–P Debemos recordar que las expresiones de la energía cinética son las siguientes:

donde m es la masa y v es la velocidad lineal.

donde I es la inercia, I = mr2 y es la velocidad angular. Con lo cual si reemplazamos, quedaría la siguiente expresión:

Del mismo modo, la energía potencial es: P = mgh donde m es la masa, g es la constante de la fuerza de la gravedad y h es la altura. Las unidades de las variables que trabajan en estas expresiones pueden ser:

donde θi está en radianes, di en metros, τi en Newtons-metros y Fi en Newtons. Ejemplo E.5.1: Determinar el modelo dinámico del siguiente manipulador articulartelescópico para el cual hemos definido una masa puntual en el extremo (por motivos didácticos):

******ebook converter DEMO Watermarks*******

Solución: El vector de coordenadas generalizadas q, es:

Al cual le corresponde un vector de torques igual a:

Para determinar el lagrangiano, debemos calcular las energías cinética y potencial. Comenzamos por la energía cinética sabiendo que presenta, sobre la masa, un componente de energía cinética lineal y otra rotacional:

La energía cinética total es:

Del mismo modo, la energía potencial es:

******ebook converter DEMO Watermarks*******

Por lo tanto, el lagrangiano es:

De esta expresión, ya podemos determinar la ecuación de movimiento de Lagrange:

Comenzamos por determinar las derivadas parciales:

Por lo tanto:

Esta expresión representa el movimiento del vector q(t) dadas las entradas τ(t) como señal de control. Si agrupamos los términos del resultado obtenido de la dinámica del manipulador, para identificar sus funciones, conseguimos la siguiente expresión:

******ebook converter DEMO Watermarks*******

Este vector lo expresaremos de la manera matricial , donde M[q] es es la la matriz de inercias, matriz de fuerzas centrípetas y de Coriolis, y G(q) es el vector de gravedad. Ejemplo E.5.2: Dado el siguiente manipulador articular plano de dos eslabones

Determinar el modelo dinámico del asumiendo que tiene masas puntuales en los extremos. Solución: Definimos al vector de coordenadas generalizadas y al vector de torques:

Calculamos la energía cinética y potencial para el primer eslabón:

Calculamos la energía cinética y potencial para el segundo eslabón. Pero a diferencia del procedimiento anterior, en este caso, la relación de las energías no es ******ebook converter DEMO Watermarks*******

directa al punto de movimiento y su coordenada asociada, sino que además a la anterior. Por ello, es más fácil determinar las energías con respecto a las transformaciones cartesianas hacia el punto en cuestión. Determinamos las componentes de la velocidad lineal e mediante las derivadas de x2 e y2:

La velocidad lineal en el punto 2 es:

Con este dato de la velocidad determinamos la energía cinética en 2:

Mientras que la energía potencial es:

La energía cinética total es:

La energía potencial total es: ******ebook converter DEMO Watermarks*******

Ahora, determinamos las componentes de la ecuación de movimiento de Lagrange a partir de las derivadas del lagrangiano siguientes:

Finalmente, obtenemos las siguientes ecuaciones:

Por último, el modelo dinámico del manipulador es:

******ebook converter DEMO Watermarks*******

Con la cual llegamos nuevamente a la forma general:

Veamos que M(q es una matriz simétrica.

5.2 Método directo para el cálculo del modelo dinámico de un manipulador Existe una forma más directa para determinar el modelo matemático de un manipulador: 1. Para determinar M, se halla la energía cinética K de cada masa con respecto a su centro de gravedad y se iguala a:

de ella se despeja 2. Para determinar la matriz C, utilizaremos los términos de Christoffel. Con ellos calculamos cada elemento de la matriz mediante derivadas parciales de los elementos de la matriz de inercias con respecto a las coordenadas generalizadas:

3. A través de la energía potencial P, es decir, del producto entre el peso por la altura, obtendremos el vector de gravedad G:

4. Los términos de fricción tienen una aproximación en: ******ebook converter DEMO Watermarks*******

Donde Fv es una matriz diagonal de coeficientes constantes que representan la fricción viscosa, y Fd(.) es un vector con entradas como Kd· signo (qi), donde signo (.) es la función de signo y Kd es el coeficiente de fricción dinámica. El objetivo del control del robot es generalmente seleccionar los toques de control τ(t) de tal manera que el robot siga la trayectoria de movimiento deseada o ejerza la fuerza deseada. El objetivo del control de posición puede describirse como el hecho de realizar el seguimiento de un vector de trayectoria deseada qd(t), determinada con anticipación. En este trabajo se discute el problema de control de movimiento en tiempo real (real time control) asumiendo qd(t) ha sido dada. La dinámica del robot es:

Ella satisface algunas propiedades físicas importantes como consecuencia del hecho de ser un sistema lagrangiano. Ejemplo E.5.3: Dado el manipulador del ejemplo E.5.1:

Cuyo vector de coordenadas generalizadas

Determinar el modelo dinámico según el método directo. Solución: Como primer paso determinaremos los valores correspondientes a las variables xi e yi, como funciones de las coordenadas generalizadas.

******ebook converter DEMO Watermarks*******

Luego, como segundo paso, determinamos las velocidades lineales cuadradas, mediante las componentes del movimiento, derivando los puntos del paso anterior, elevándolos al cuadrado y sumándolos.

Como paso tercero, determinamos la energía cinética:

Posteriormente, el paso cuarto nos indica que debemos cambiar la forma de la energía cinética de manera tal, que podamos despejar la matriz de inercias.

Entonces: ******ebook converter DEMO Watermarks*******

Paso quinto, calcular la matriz de fuerzas centrípetas y de Coriolis, mediante el término de Christoffel. Pero primero calculamos todas las derivadas parciales necesarias.

******ebook converter DEMO Watermarks*******

Por último, en el paso seis, determinamos la energía potencial y la derivamos parcialmente según la fórmula para obtener el vector de gravedad.

Si reemplazamos las matrices calculadas en la ecuación de la forma general, tenemos:

Si comparamos este resultado con el del ejemplo E.5.1 vemos que los dos son equivalentes.

Y si en el despejamos el vector de velocidades de las coordenadas generales y lo ******ebook converter DEMO Watermarks*******

ordenamos, tenemos:

Ejemplo E.5.4: Dado el manipulador del ejemplo E.5.2:

Cuyo vector de coordenadas generalizadas

Determinar el modelo dinámico según el método directo, sabiendo que: cosθi = ci sinθi = si Solución: Paso 1: Determinar los valores de xi e yi, como funciones de las coordenadas generalizadas:

******ebook converter DEMO Watermarks*******

Paso 2: Determinar las velocidades lineales cuadradas, mediante las componentes del movimiento, derivando los puntos del paso anterior, elevándolos al cuadrado y sumándolos: Para el punto 1:

Para el punto 2:

Paso 3: Determinar la energía cinética total de la calculada para cada centro de gravedad: ******ebook converter DEMO Watermarks*******

Paso 4: Cambiar la forma de la energía cinética de manera tal, que podamos despejar la matriz de inercias:

******ebook converter DEMO Watermarks*******

Paso 5: Calcular la matriz de fuerzas centrípetas y de Coriolis, mediante el término de Christoffel (previamente calcular todas las derivadas parciales necesarias):

Paso 6: Determinar la energía potencial y derivarla parcialmente según la fórmula para obtener el vector de gravedad. P = P1 + P2 ******ebook converter DEMO Watermarks*******

Para el punto 1:

Para el punto 2:

Si reemplazamos las matrices calculadas en la ecuación de la forma general, tenemos:

Si comparamos este resultado con el del ejemplo E.5.2, vemos que los dos son equivalentes.

******ebook converter DEMO Watermarks*******

Y si en él despejamos el vector de velocidades de las coordenadas generales y lo ordenamos, tenemos:

Ejemplo E.5.5: Se tiene un telescopio astronómico de grandes dimensiones, el cual es descrito en la siguiente figura:

Cuyo vector de coordenadas generalizadas q, es: ******ebook converter DEMO Watermarks*******

Determinar el modelo dinámico según el método directo, sabiendo que tiene la masa distribuida y debemos determinar los centros de masa. Solución: Debemos recordar que: cos θi = ci sin θi = si Paso 1: Determinar los valores de xi, yi y zi, como funciones de las coordenadas generalizadas del centro de masa: x = acosθ2 sinθ1 x = ac2s1 y = acosθ2 cosθ1 y = ac2c1 z = asinθ2 z = as2 Paso 2: Determinar las velocidades lineales cuadradas, mediante las componentes del movimiento, derivando los puntos del paso anterior, elevándolos al cuadrado y sumándolos:

******ebook converter DEMO Watermarks*******

Paso 3: Determinar la energía cinética total de la calculada para cada punto:

Paso 4: Cambiar la forma de la energía cinética de manera tal, que podamos despejar la matriz de inercias:

******ebook converter DEMO Watermarks*******

Paso 5: Calcular la matriz de fuerzas centrípetas y de Coriolis, mediante el término de Christoffel (previamente calcular todas las derivadas parciales necesarias):

******ebook converter DEMO Watermarks*******

Paso 6: Determinar la energía potencial y derivarla parcialmente según la fórmula para obtener el vector de gravedad. P = mgz P = mgas2

******ebook converter DEMO Watermarks*******

Si reemplazamos las matrices calculadas en la ecuación de la forma general, tenemos:

Este caso es aplicable a todos los sistemas de puntería, como los telescopios, antenas parabólicas, dispositivos láser y otros que tengan movimientos de deflexión y elevación solamente. Es importante tener en cuenta que todo este modelo se calcula a base del centro de masa de cada eslabón. Por lo tanto, para cuando se realice este cálculo para sistemas más complejos no se debe descuidar el correcto diseño cinemático.

5.3 Propiedades de la dinámica del robot en el espacio articular Estas propiedades simplifican el problema de control de robot, por ello procedemos a enumerarlas:

Propiedad 1 La matriz de inercias M es simétrica, definida positiva y limitada de manera que μ1I ≤ M(q) ≤ μ2I para todo q(t). Para articulaciones de revolución las ocurrencias únicas de la variable articular qi están dadas como seno (qi) y como coseno (qi).

Propiedad 2 ******ebook converter DEMO Watermarks*******

La matriz de fuerza centrípeta y de Coriolis C es cuadrada y está limitada por o equivalentemente a .

Propiedad 3 La matriz de fuerza centrípetas y de Coriolis C se puede seleccionar de tal manera que la matriz . Además, xTSx = 0 para todos los vectores x.

Propiedad 4 Los términos de fricción tienen una aproximación en , donde Fv es una matriz diagonal de coeficientes constantes que representan la fricción viscosa, y Fd(.) es un vector con entradas como Kd.signo (qi), donde signo (.) es la función de signo y Kd es el coeficiente de fricción dinámica. Estos términos de fricción están limitados de manera que:

donde fB y kB son constantes.

Propiedad 5 El vector de gravedad G(q) está limitado según ||G(q)||≤gB, donde gB, es constante.

Propiedad 6 Las perturbaciones τd están limitadas según, ||τd|| ≤ pB, donde gB es constante. Las propiedades de limitación son especialmente utilizadas para las aplicaciones del control robusto. La propiedad 3 es vital para las pruebas de control de Lyapunov, el cual garantiza el movimiento de seguimiento y a menudo da la estructura de los lazos de control. Esto permite que las técnicas de sistemas lineales sean usadas con las dinámicas variables en el tiempo de un robot. La selección de C en la ecuación del robot no es única. En las aplicaciones de control de robots es necesario escoger una adecuada matriz C de tal manera que cumpla con la propiedad 3. La forma de cálculo más utilizada es mediante los términos de Christoffel. Ejemplo E.5.6: Determinar el modelo matemático de la dinámica de un robot manipulador no plano de dos grados de libertad.

******ebook converter DEMO Watermarks*******

Solución: Utilizando las propiedades dinámicas del robot articular, obtenemos el modelo matemático mediante el cálculo de la posición y velocidad lineal con respecto a cada articulación:

Con la posición y velocidad angular o articular, convertimos estas últimas en posiciones y velocidades lineales:

Luego, con la velocidad lineal podemos obtener la energía cinética mediante:

De la expresión de la energía cinética despejemos la matriz de inercias M:

******ebook converter DEMO Watermarks*******

Posteriormente, a través de los términos de Christoffel, llegamos a la expresión de la matriz de fuerzas centrípetas y de Coriolis:

Por último, al determinar la energía potencial, podemos obtener el vector de gravedad:

Con estos datos ya podemos asumir el modelo matemático ideal, sin fricción ni perturbaciones:

5.4 Representación en espacio-estado La representación de las ecuaciones de estado de sistemas no lineales está dada por:

donde x(t) es el estado interno y u(t) es la señal de control. Es conveniente para muchas aplicaciones, incluir la derivación de la ley de control y la simulación del mismo sistema en computadora. Este punto lo desarrollaremos a fondo en forma práctica cuando realizamos el diseño y la simulación de los controladores. Una vez que el sistema se ha transformado a espacio-estado, puede fácilmente ser integrado para obtener el tiempo de ploteo de la simulación a través de un integrador como el Runge-Kutta (usaremos la función ODE23 del Matlab). Para este modelo y para facilitar la descripción, utilizaremos una perturbación τd igual a cero. Existen tres formas de modelar en espacio-estado el sistema no lineal del ******ebook converter DEMO Watermarks*******

manipulador del robot: 1. En la forma de posición/velocidad de espacio-estado:

donde u(t) = τ(t) 2. Ecuación lineal de espacio-estado de la forma:

donde u(t) = -M-1 N+M-1τ Esta forma es conocida como la forma canónica de Brunovsky. 3. La forma hamiltoniana, la cual deriva la ecuación de movimiento de Hamilton:

donde p es el momento generalizado, control es u(t) = τ - G(q).

es el producto de Kronecker y la señal de

******ebook converter DEMO Watermarks*******

Capítulo 6. Controladores para manipuladores de robot

El método de torque-computado (CT) provee una unificación de puntos de vista para muchos esquemas de control, dentro de los cuales se considera que uno de los más importantes es el control PD (proporcional-derivativo). Adicionalmente, se planteará el motivo por el que el control PID (proporcional-integral-derivativo) no trabaja apropiadamente y presentaremos la alternativa sencilla del control PD con compensación de gravedad. El control de torque-computado se encarga de determinar matemáticamente el torque que demanda cada articulación para alcanzar la trayectoria deseada, con la finalidad de que este torque sea la referencia para los actuadores que sean empleados en los robots. Sin embargo, en algunos casos, el control demanda desacoplar el sistema por singularidades matemáticas como las divisiones por el número 0 o el cruce de asíntotas. Para solucionar esas complicaciones, presentamos el control articular clásico que maneja las articulaciones de manera desacoplada. Complementariamente, a modo ilustrativo, planteamos una serie de controladores sofisticados a los que podemos recurrir en caso sea necesario. Es importante resaltar que se plantea el control filtrado basado en aproximaciones como un método genérico de buen resultado cuya aplicación se puede extender a cualquier tipo de sistema. A continuación se definirán controladores para manipuladores de robot, para lo cual a partir de este momento y como condición para todos los controladores, se asume una trayectoria deseada para el manipulador qd(t), como si esta hubiese sido determinada por un planificador de trayectorias. Para utilizar los diseños de control del feedback linearization, una de las técnicas de control no lineal más empleadas y que se basa en la cancelación de las no linealidades mediante su propia realimentación, se define el error de seguimiento o error de tracking, como: e(t) = qd(t) − q(t) donde se asumirá un nuevo vector de estado, que será el error:

******ebook converter DEMO Watermarks*******

El control de torque computado sugiere un procedimiento de diseño de dos pasos. a. Usar las técnicas de diseño de sistemas lineales para seleccionar una señal de control u(t) que estabilice el seguimiento del error del sistema.

b. Calcular el torque requerido por el brazo:

Esta es una ley de control no lineal que garantiza el seguimiento de una trayectoria deseada. Los estados de relé en el cómputo del torque τ hacen que la dinámica no lineal sea equivalente a las dinámicas lineales, esto es llamado feedback linearization.

6.1 Control PD de torque computado Seleccionando una realimentación proporcional y derivativa (PD) para determinar u(t), la señal de control, generamos el trabajo de un controlador de torque computado PD:

En la última expresión, se produce un error dinámico de seguimiento, el cual es estable si la matriz Kv cuenta con valores grandes y la matriz Kp es matemáticamente definida positiva. Lo común es seleccionar matrices diagonales, de tal manera que la estabilidad del sistema quede asegurada para todas las ganancias positivas. Gráfico 6.1 Diagrama de control PD de torque computado

******ebook converter DEMO Watermarks*******

El controlador PD de torque computado tiene una estructura multilazo, tal como se presenta en la figura. Es decir, un lazo interior no lineal para el feedback linearization y otro externo de ganancia unitaria para el seguimiento. Nótese que existen n lazos exteriores, uno por cada articulación. Ejemplo E.6.1: Simular el comportamiento del controlador PD de torque computado aplicado al manipulador descrito en el ejemplo E.5.6, asumiendo las características necesarias para las trayectorias y para el manipulador. Solución: Para la correcta simulación, es necesario asumir ciertas condiciones, como la trayectoria deseada, la cual será:

Y una serie de parámetros, como las masas de los eslabones igual a 1 kilogramo, las inercias de los mismos de 3.2284e-006, la aceleración de la gravedad de 9,8 m/seg2 y el centro de gravedad de cada link está a una distancia de 22,25 centímetros de los extremos. Ahora, pasando al diseñar del controlador, asumimos la ecuación de torque del PD para un control no lineal de tipo feedback linearization: ******ebook converter DEMO Watermarks*******

Particularmente, asumimos los valores de las ganancias como: Kv = 20 y de Kp = 100. Se elaboró el siguiente programa en Matlab para esta simulación: % robot_pdt clear all; close all % Condiciones Iniciales t0 = 0; dt = 0.001; % Muy pequeño para simular continuidad tf = 5; x = [ 0.1 0 0 0 ]'; k = 1; % Constantes de la Trayectoria period = 2*pi; amp1 = 1; amp2 = 1; fact = 2*pi/period; % Constantes del Sistema m1 = 1; m2 = 1; % masa (x10 kg) a1= 22.25/2; % longitud del brazo (m) a2= 22.25/2; %longitud del brazo (m) g = 9.8; % Aceleración de la gravedad (m/s^2) % Parámetros del Controlador kp = 100; kv = 20; for t=t0:dt:tf T(k,1) = t; X1(k,1) = x(1); X2(k,1) = x(2); X3(k,1) = x(3); X4(k,1) = x(4); %Trayectoria sinf = sin(fact*t); cosf = cos(fact*t); qd = [amp1*sinf amp2*cosf]'; qdp = fact*[amp1*cosf-amp2*sinf]'; qdpp = -fact^2*qd; ******ebook converter DEMO Watermarks*******

QD(k,1:2) = qd'; QDP(k,1:2) = qdp'; % Errores de Seguimiento e = qd - [x(1) x(2)]'; ep = qdp - [x(3) x(4)]'; E(k,1:2) = e'; EP(k,1:2) = ep'; % Cálculo de las Matrices del Manipulador % Matriz de Inercias M11 = m1*a1^2*(cos(x(2)))^2; M12 = 0; M22 = m1*a1^2; M = [M11 M12;M12 M22]; % Inversa de M(q) MI = inv(M); % Matriz de Fuerzas Centrípetas y de Coriolis N1 = -m1*a1^2*sin(2*x(2))*x(3)*x(4); N2 = -1/2*m1*a1^2*sin(2*x(2))*x(3)^2; N = [N1;N2]; % Vector de Gravedad G1= 0; G2= m1*g*a1*cos(x(2)); G= [G1;G2]; % Torque Computado (Señal de Control) s1 = qdpp(1)+kv*ep(1)+kp*e(1); s2 = qdpp(2)+kv*ep(2)+kp*e(2); s = [ s1 s2 ]; tau = M*s+N+G; % Ecuación de Estado xp = [ x(3) x(4) MI*(-N-G+tau) ]; % Integración x = x + xp*dt; ******ebook converter DEMO Watermarks*******

k = k + 1; end figure(1) plot(T,E(:,1),'b',T,E(:,2),'r') title('Error Angular PD de Torque Computado') xlabel('Tiempo (seg.)') ylabel('Amplitud del Error') grid on; zoom on figure(2) plot(T,X1,'r-',T,X2,'b-',T,QD(:,1),'r:',T,QD(:,2),'b:') legend('Theta 1','Theta 2','Theta Deseado 1' … ,'Theta Deseado 2') title('Brazo Robot-PD de Torque Computado') xlabel('Tiempo (seg.)') ylabel('Amplitud de Error') grid on; zoom on % Trajectoria (PD) en espacio cartesiano x_cart = a1*cos(X2).*sin(X1); y_cart = a1*cos(X2).*cos(X1); z_cart = a1*sin(X2); xd_cart = a1*cos(QD(:,2)).*sin(QD(:,1)); yd_cart = a1*cos(QD(:,2)).*cos(QD(:,1)); zd_cart = a1*sin(QD(:,2)); figure(3) plot3(x_cart,y_cart,z_cart,'r-',xd_cart,yd_cart,zd_cart,'g-'); title(' Trayectoria del Extremo con un Controlador PD') rotate3d on; grid on figure(4) subplot(311) plot(T,x_cart,'r-',T,xd_cart,'g-') ylabel('X') zoom on; grid on title('Movimiento en ejes cartesianos') subplot(312) plot(T,y_cart,'r-',T,yd_cart,'g-') ylabel('Y') zoom on; grid on ******ebook converter DEMO Watermarks*******

subplot(313) plot(T,z_cart,'r-',T,zd_cart,'g-') ylabel('Z') zoom on; grid on Los resultados se muestran en las siguientes figuras:

En esta figura vemos que los errores angulares con respecto a las referencias, prácticamente desaparecen en un tiempo menor a 1 segundo, lo que demuestra que el modelo y el controlador han sido calculados apropiadamente.

******ebook converter DEMO Watermarks*******

En esta nueva figura ploteamos la misma información, pero sobre las trayectorias reales, y se puede ver que las deseadas (líneas punteadas) son alcanzadas por las reales (líneas continuas).

******ebook converter DEMO Watermarks*******

En este caso, la figura presenta el recorrido en tres dimensiones de la trayectoria deseada (verde en la simulación) y de la real (roja en la simulación). Es sencillo apreciar que la trayectoria real cubre casi la totalidad de la deseada, a pesar de las características no lineales de ella.

******ebook converter DEMO Watermarks*******

Esta figura presenta las trayectorias reales y deseadas sobre cada uno de los ejes cartesianos.

6.2 Control PID de torque computado Es probable que exista error en estado estacionario del seguimiento y la teoría de control nos recomienda agregar un integrador al controlador por cada articulación en el lazo exterior del controlador PD de torque computado. Así, seleccionando u(t) como un control proporcional, integral y derivativo, producimos un controlador PID de torque computado.

Este controlador no cambia la dinámica del sistema y, sin embargo, adiciona estabilidad en el seguimiento o tracking, siempre y cuando Ki no tenga un valor muy grande. ******ebook converter DEMO Watermarks*******

Ejemplo E.6.2: Simular un controlador PID de torque computado sobre el modelo dinámico del ejemplo E.5.6. Solución: Utilizamos la ecuación de PID de torque computado donde la señal de control está dada por:

donde:

Asumimos los siguientes valores para las constantes del controlador Kv = 20, Kp = 100 y Ki = 10, y las consideraciones de parámetros así como los programas del ejemplo E.6.1. Para ello, variamos al archivo del de la solución del ejemplo E.6.1 agregando dos valores a las condiciones iniciales, la constante Ki, la nueva ecuación de la señal de control PID y la acción integral ε en las ecuaciones de estado.

x = [ 0.1 0 0 0 0 0 ]'; % Parámetros del Controlador kp = 100; kv = 20; ki = 10; % Torque Computado (Señal de Control) s1 = qdpp(1)+kv*ep(1)+kp*e(1)+ki*x(5); s2 = qdpp(2)+kv*ep(2)+kp*e(2)+ki*x(6); % Ecuaciones de Estado xp = [ x(3) x(4) MI*(-N-G+tau) e ]; Los resultados son los siguientes:

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

En todos los gráficos vemos que este controlador no es tan preciso como el PD de torque computado, ya que las trayectorias deseadas no son seguidas tan fielmente como en el primer caso.

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

Del mismo modo, podemos decir que mientras más pequeño sea el valor de Ki, es mejor el comportamiento de este controlador. En otras palabras, nuevamente llegamos a que el mejor comportamiento se dará en Ki = 0, y eso convierte al PID en PD. Adicionalmente a los controladores vistos en los puntos anteriores, existen otros muy usados que son el control de torque computado aproximado y control articular clásico. Un gran número de robots usa controladores basados en la noción del control de torque-computado aproximado. Una clase de controladores de torque computado aproximado está dada en la correcta selección de:

donde M y N estimadas son aproximaciones, estimados o expresiones simplificadas de M y N. Si M y N estimadas son seleccionadas no como la actual matriz de inercia o de términos no lineales, sino solo como valores simplificados o aproximaciones, no es posible garantizar una permanente estabilidad durante el tracking. En efecto, los ******ebook converter DEMO Watermarks*******

errores dinámicos e están manejados por modelos de error incompletos, los cuales pueden degradar o eventualmente desestabilizar el sistema de lazo cerrado. Sustituyendo el controlador en la dinámica produce los errores dinámicos: ë = u − Δu + d donde las matrices de inercia y de términos no lineales modelados aproximados o estimados generan las diferencias:

y la perturbación d es:

Consecuentemente, si el control de torque computado aproximado es usado, la dinámica del error de seguimiento e = qd - q está manejada por el modelo de términos aproximados, tanto como la aceleración articular deseada. Así que las expectativas de rendimiento del brazo robótico son incrementadas, así como el error de tracking también es incrementado.

6.3 Control PD con compensación de gravedad Uno de los principales ejemplos de la familia de controladores de torque-computado aproximado es el controlador PD con compensación de gravedad: τ = Kvė + Kpe + G(q) el cual selecciona a M sombrero es igual la identidad y solo incluye los términos nolineales de la gravedad, lo mismo que es muy fácil de implementar comparado con el diseño de un controlador de torque computado. Esto ha sido utilizado con buenos resultados en muchas aplicaciones. Ejemplo E.6.3: Simular un controlador PD de torque computado con compensación de gravedad sobre el modelo dinámico del ejemplo E.5.6. Solución: Recordando la ecuación correspondiente a la señal de control elaborada por un PD con compensación de gravedad, tenemos: τ = Kvė + Kpe + Ĝ ******ebook converter DEMO Watermarks*******

donde los valores de las constantes están dados por los de Kv = 600 y Kp = 10000 y, por ello, al reemplazar los valores de este controlador en el programa del controlador PD de torque computado, del ejemplo E.6.1 % Parámetros del Controlador kp = 10000; kv = 600; % Torque Computado (Señal de Control solamente con PD) s1 = kv*ep(1)+kp*e(1); s2 = kv*ep(2)+kp*e(2); s = [ s1 s2 ]; tau = s+G; La simulación nos entrega los resultados siguientes:

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

Como las figuras dejan ver, el controlador PD con compensación de gravedad trabaja de manera bastante aproximada, pero no exacta. Sin embargo, en operaciones reales, este controlador es bastante usado porque solamente requiere del modelo del vector de gravedad, el cual es fácil de calcular. Su uso se da en robots de pintura entre otros.

******ebook converter DEMO Watermarks*******

En esta figura de coordenadas cartesianas se aprecia mejor el error de precisión del controlador, pero no deja de ser fácil y sobre todo, útil.

6.4 Control articular clásico Este es otro de los controladores de torque computado aproximado es el controlador PID clásico de control articular, donde todas las no-linealidades del brazo de robot no son consideradas y solamente seleccionamos:

donde las matrices de ganancia son diagonales y considerando un control desacoplado, es decir, un control por cada articulación. Un controlador PD clásico de control articular puede parecer familiar, como el diagrama de la siguiente figura: Gráfico 6.2 Diagrama de control articular clásico ******ebook converter DEMO Watermarks*******

Pero hay que tener presente que ese es el controlador de solamente una articulación y debemos diseñar un controlador por cada articulación del sistema. O sea, si es un brazo de cinco articulaciones, se deberán tener cinco controladores. Esta es la gran desventaja del control desacoplado. En este diseño, los términos no lineales dejados de modelar son introducidos como una perturbación a cada sistema de cada controlador. Del mismo modo, se adicionan a esta perturbación los efectos producidos por las otras articulaciones. El controlador articular clásico simplificado es muy fácil de implementar debido a que no necesita cálculos elaborados para determinar los términos no lineales. Se ha encontrado su fácil implementación en algunas aplicaciones donde las ganancias del control PD sean muy grandes, y las no-linealidades dejadas de modelar sean atenuadas. Desgraciadamente, si las ganancias del controlador son muy grandes puede estimular modos oscilatorios o vibraciones de los eslabones y así degradar su rendimiento. A menudo en aplicaciones prácticas, comúnmente, se mejora el comportamiento incluyendo términos adicionales como la gravedad G(q),, la realimentación de la aceleración articular deseada y varios términos no lineales adicionales. De manera complementaria y basado en las nuevas herramientas, tanto de hardware como de software, con las que cuenta el control avanzado, presentaremos los controladores de manipuladores que otorgan una serie de ventajas complementarias a los mostrados anteriormente.

6.5 Control de error filtrado basado en aproximación El control de torque computado trabaja muy bien cuando se tiene un buen modelo o un modelo aproximado para el trabajo del sistema. En la práctica, los términos del robot, como la fricción, son desconocidos o ******ebook converter DEMO Watermarks*******

son variables en el tiempo, y las masas que son cargadas son también desconocidas. Debido a ello tenemos que fijar aproximaciones para los modelos y señales externas que refuercen la señal de control con intención de minimizar el error dinámico de seguimiento del robot. En esta clase de controladores basados en aproximaciones se encuentran los controladores adaptivos y los controladores robustos, los cuales usan técnicas modernas como las de aprendizaje y la capacidad del uso de experiencia. Estas técnicas avanzadas se extienden a los objetivos más complicados del control donde los métodos convencionales definidos en controladores de torque computado PD y aproximado se tornan inadecuados e ineficientes. Es bueno tener presente la estructura de la dinámica del robot:

Con ella, podemos definir una serie de elementos que utilizaremos para desarrollar los controladores de error filtrado basado en aproximaciones. Dada la trayectoria deseada qd(t), estableceremos el error de seguimiento e(t) y el error de seguimiento filtrado r(t), como:

donde Λ es una matriz matemáticamente definida positiva de parámetros de diseño. Normalmente se usa una matriz diagonal con valores positivos grandes. Debido a ello, el sistema r(t) = e(t) + Λe(t) es un sistema estable, así que e(t) está limitado para garantizar el comportamiento del controlador y, por ende, r(t) está limitado. Eso lo mostraremos como:

donde || e || < || r || , σmin (Λ) es el mínimo valor singular de Λ. Como ya se asumió, la trayectoria ha sido supuestamente diseñada con anticipación y debe satisfacer las siguientes limitaciones:

******ebook converter DEMO Watermarks*******

donde qB es un límite escalar conocido. Luego, diferenciando el error de seguimiento filtrado r(t) y aplicándolo a la ecuación dinámica del robot, podemos apreciar esta última en términos de r(t) como:

donde la función no-lineal del robot está definida como:

El vector x contiene todas las señales funciones del tiempo necesarias para calcular F(.) y puede ser definido como:

Es importante resaltar que todo el potencial desconocido de los parámetros del robot está contenido en f(x), excepto Cr, el cual es cancelado con las pruebas de estabilización de Lyapunov. El resultado general del controlador basado en aproximaciones se encuentra en la correcta estructuración de:

donde f es un estimado de f(x), Kvr es un lazo exterior de control definido como Kvr + Kvė + KvΛe, y v(t) es una señal auxiliar que facultará la robustez frente a las perturbaciones y a los errores de modelamiento. Gráfico 6.3 Diagrama de control de error filtrado basado en aproximación

******ebook converter DEMO Watermarks*******

Es importante resaltar que esta expresión puede ser empleada como base genérica para diseñar el control adaptivo o el control robusto. En las técnicas de control adaptivo el mayor esfuerzo se realiza en seleccionar y mantener actualizada la función estimada f(x); en el control robusto el mayor esfuerzo radica en encontrar la mejor señal de control auxiliar v(t).

6.6 Control adaptivo El controlador adaptivo es uno de los más exitosos, pues consigue modelar incertidumbres en sistemas lineales y no-lineales mientras realiza una actualización de parámetros de los modelos on-line. El controlador adaptivo para robot convencional asume que la función nolineal del robot es lineal en sus parámetros (LIP] desconocidos (masa, coeficientes de fricción, etc.], así que podemos escribir:

donde W(x) es una matriz de funciones conocidas del robot y φ es un vector de parámetros desconocidos. La matriz de regresión W debe ser computada para cada brazo de robot específico y amerita estudios que solamente son tratados referencialmente en este punto. Un modelo usado de control adaptivo muy usado es el siguiente:

donde Γ es la matriz de parámetros de sintonización, generalmente seleccionada como una matriz diagonal con elementos positivos. El controlador adaptivo confecciona y estima un mediante sintonización dinámica on-line. El estimado de la función no-lineal está dado por:

Este controlador tiene los mismos lazos de control descritos en el controlador PD de torque computado pero su aporte es el de estimar la mejor función requerida para el feedback linearization del brazo de robot. Ejemplo E.6.4: Simular un controlador adaptivo sobre el modelo dinámico del ejemplo E.5.6, el cual estime las masas del sistema. Solución: El problema principal del diseño del controlador adaptivo es el cálculo ******ebook converter DEMO Watermarks*******

de la matriz de regresión que estructurará la estimación de parámetros.

Para el caso de nuestra simulación se calculó como:

donde,

Se simuló utilizando Λ = 10, Γ = 10 y Kv = 200, para el caso de:

Y como señal de control a:

Es importante mencionar que, debido a lo complejo del manejo de la matriz de regresión, se debió cambiar el tiempo final a 15 segundos y la diferencial de tiempo a 0.000001 segundos, lo cual hace bastante lento el proceso. Una alternativa mejor podría ser considerar cambiar el método de integración por el de Runge-Kutta. Asimismo, se consideraron las variables 5 y 6 de las masas en el vector x. Este controlador se aplicó modificando al programa del control PD del ejemplo E.6.1: % Condiciones Iniciales tf = 15; dt = 0.000001; % Muy pequeño para simular continuidad x = [ 0.1 0 0 0 0 0 ]'; % Parámetros del Controlador Kv = 200*eye(2); lam = 10*eye(2); gam = 10*eye(2); ******ebook converter DEMO Watermarks*******

% Errores de Seguimiento e = qd - [x(1) x(2)]'; ep = qdp - [x(3) x(4)]'; r = ep + lam*e; % Calculo de la Matriz de Regresión y de la Señal de Control f = qdpp + lam*ep; fa = qdp + lam*e; W(1,1) = a1^2*(cos(x(2)))^2*f(1)-0.5*a1^2*sin(2*x(2))*x(4)*fa(1) -0.5*a1^2*sin(2*x(2))*x(3)*fa(2); W(1,2) = 0; W(2,1) = 0; W(2,2) = a1^2*f(2)+0.5*a1^2*sin(2*x(2))*x(3)*fa(1)+a1*g*cos(x(2)); tau = Kv*r + W*[x(5) x(6)]'; % Actualización de Parámetros phip = gam*W'*r; xp5 = phip(1); xp6 = phip(2); % Ecuación de Estado xp = [ x(3) x(4) MI*(-N-G+tau) xp5 xp6 ]; Los resultados fueron:

******ebook converter DEMO Watermarks*******

...

En esta figura vemos la variación del error angular. No llega a ser cero, pues el controlador no tiene un dato exacto de masas y está adaptándose a ellas. La matriz de regresión genera una estimación de parámetros, para este caso las masas, con los que comienza a resolver el problema de control. Estos parámetros aproximados completan el modelo estimado del sistema, y junto con la función de control de error filtrado basado en aproximaciones, minimizan el error de seguimiento a la trayectoria deseada para el manipulador. Esta función es útil para casos de manipuladores de masas variables como es el caso de cargas pesadas en la garra y otros problemas semejantes.

******ebook converter DEMO Watermarks*******

En esta figura vemos claramente que sí existe el seguimiento, pero el cálculo de la matriz de regresión requiere una teoría bastante compleja, lo cual dificulta el diseño de este tipo de controladores. figure(3) plot(T,X5,'r-',T,X6,'b-') legend('Masa 1','Masa 2') title('Control Adaptivo: Estimación de Masa') xlabel('Segundos'); ylabel('Masas') grid on; zoom on

******ebook converter DEMO Watermarks*******

En esta figura vemos la estimación de las masas y sus valores, los cuales tienden a 1 kilogramo, según lo considerado en el planteamiento del problema.

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

En estas últimas figuras se presentan las características del movimiento en 3-D y en su descomposición en los tres ejes cartesianos.

6.7 Control robusto El control robusto cubre las expectativas de los diseñadores, pues se encarga de seleccionar el término robusto v(t). Una ventaja de los controladores robustos estándar es que ellos no tienen modelos dinámicos, por eso son fáciles de implementar. Por otro lado, el controlador adaptivo se encarga de aprender on-line la dinámica del sistema minimizando el esfuerzo de control. Además, es necesario calcular la matriz de regresión W(x), mientras que para el control robusto es necesario calcular la función limitadora F(x). En algunas técnicas avanzadas, que no son tratadas en este texto, se combinan los principios adaptivos y robustos para obtener las ventajas de cada uno de ellos. Estos son llamados controladores adaptivo-robustos o robusto-adaptivos. a. Controlador robusto de saturación: un controlador robusto de saturación está dado por: ******ebook converter DEMO Watermarks*******

donde f es un estimado de f que no es actualizado on-line, se podría usar un controlador PD con compensación de gravedad robusto usando, para ello, f = G(q) e ignorando los otros términos no lineales. Al calcular el término robusto de control v(t), se debe considerar un ε como un parámetro pequeño de diseño, y F(x) como una función escalar conocida que limita las incertidumbres.

Así que

La intención es que F(x) sea una función simplificada que puede ser usada para calcular las propiedades de los límites de los robots, esto siempre que el valor exacto de la complicada función no lineal f(x) sea desconocido. b. Controlador robusto de estructura variable: otro controlador robusto es el controlador robusto de estructura variable:

donde sgn(.) es la función de signo, η es un parámetro de diseño pequeño y F(x) es una función conocida calculada usando las propiedades dinámicas del robot para limitar las incertidumbres de la función f estimado. Este controlador toma ventajas de las propiedades de los controladores de estructura variable o de superficie deslizante (sliding mode) para proveer la robustez. Ejemplo E.6.5: Simular un controlador robusto sobre el modelo dinámico del ejemplo E.5.6. Solución: Para el cálculo de la señal de control robusta se utilizó la ecuación:

******ebook converter DEMO Watermarks*******

donde se consideró:

donde: ε s = 0.1 Λ=5 siendo F(x) una función limitadora según las propiedades del manipulador. Posteriormente, se aplicó la siguiente modificación al programa del controlador del ejemplo E.6.1: % Cálculo de la Función Limitadora mu2 = (m1+m2)*a1^2+2*m2*a2^2+3*m2*a1*a2; vB = m1*a1*a2; fsig = qdp + lam*e; fsigp = qdpp + lam*ep; F = mu2*norm(fsigp)+vB*norm([ x(3) x(4)]')*norm(fsig); % Torques Computado (Señal de Control) G= [0; m1*g*a1*cos(x(2))]; div = max([norm(r) eps ]'); v = -r*F/div; tau = Kv*r+G-v; Con el cual se obtuvieron excelentes resultados:

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

En estas figuras vemos que el comportamiento del controlador robusto es muy preciso, pero su cálculo requiere de la aplicación de teorías avanzadas aunque, más sencillas que las del controlador adaptivo, mostrado en el ejemplo E.5.4

******ebook converter DEMO Watermarks*******

Por último, en esta figura presentamos el comportamiento del manipulador con un controlador robusto descompuesto en los tres ejes cartesianos.

6.8 Control neural-adaptivo y difuso-robusto Para el diseño del controlador neural-adaptivo y difuso-robusto, debemos cumplir con varias condiciones buscando la estabilidad del sistema en todo momento. El objetivo es que luego de este análisis se evite, en la medida de la posible, el uso del difícil modelo dinámico del robot y la construcción de la señal externa robusta que utiliza términos muy complicados para su cálculo. La proposición es la de utilizar un controlador neural-adaptivo que utilice un algoritmo de aprendizaje on-line en tiempo continuo y un controlador difuso-robusto que proporcione una señal externa de refuerzo. Con los dos controladores, el neural y el difuso, se cumplirán los objetivos de dejar de procurar un modelo dinámico del robot y del cálculo pesado de la señal de refuerzo o robusta. La red neuronal del controlador será un perceptrón de múltiple capa con funciones de activación sigmoides para la capa oculta y lineales para la capa de ******ebook converter DEMO Watermarks*******

salida.

Además, se deberá preparar un algoritmo de aprendizaje que no permita inestabilidades en el inicio ni durante el proceso. Podemos comenzar dando la estructura de la señal de control, donde se asumirá como vector de torques para tener un control acoplado.

donde: τ = vector de torque = señal de control. f(x) = función de aproximación del modelo del sistema. Kvr = señal de control PD inicial. Dado que se está procurando una señal de control con componentes neuralesadaptivos, emplazaremos a nuestro controlador en la ubicación de la aproximación del modelo del sistema. τ = Wt σ(VTx) + Kvr + V(t) donde: WTσ(VTx) = red neuronal de aproximación. Kv = matriz de ganancias. r(t) = ė(t) − Λe(t) e(t) = qd(t) − q(t) Λ = matriz definida positiva de parámetros. Del mismo modo, debemos diseñar una señal robusta entregada por un controlador difuso. Para ello, prepararemos una señal v(t) robusta adecuada y con el comportamiento de ella se elaborará un algoritmo difuso que cumpla con las condiciones de la señal v(t) y que minimice el error de la señal de control, la cual quedará formada así: τ = WT σ(VTx) + Kvr + vF(t) donde: vF(t) ≡ v (t) = señal difuso-robusta. ******ebook converter DEMO Watermarks*******

Gráfico 6.4 Diagrama de control neural-adaptivo y difuso-robusto

Como se planteó la necesidad de un algoritmo de aprendizaje para la red neuronal del controlador neural-adaptivo, escogeremos uno que tenga sea capaz de sintonizarse en tiempo continuo.

donde: W y V = matrices de pesos. F y G = matrices constantes definidas positivas. κ = escalar pequeño. r = error de seguimiento. Del mismo modo, debemos demostrar las características de la señal difusa robusta o de refuerzo:

donde: = variable en función de los pesos de la red neuronal. r = error de seguimiento. ******ebook converter DEMO Watermarks*******

Kz = constante. ZB = constante. Las funciones de membresía para las entradas r y

del sistema serán:

Gráfico 6.5 Funciones de membresía de entrada del control difuso-robusto

En las figuras apreciamos que el universo de discursión está dado por para r y [ 0, ∞ > para las normas de Frobenius de Z. Ahora asumiremos una serie de valores para las entradas y analizaremos las salidas de la ecuación sobre un cuadro, considerando solamente los valores positivos de r, pues generan curvas simétricas.

******ebook converter DEMO Watermarks*******

Con esta tabla, asumimos que los conjuntos difusos de la salida tienen los intervalos de entrada iguales a [ 0 ], a < 0, 100 ], a < 100, 1000 ] y a < 1000, ∞ > y además si los ampliamos por simetría, podemos construir la siguiente FAM para el sistema difuso.

Establecida la FAM a través de un criterio experimental, podemos armar la función de membresía de la salida para el universo de discursión correspondiente a [ 0, ∞ >. Gráfico 6.6 Función de membresía de salida del control difuso-robusto

Por último, el método de defuzzificación a ser utilizado será el del máximo promedio eficaz o COA, cuya función es: ******ebook converter DEMO Watermarks*******

Ejemplo E.6.6: Simular un controlador neural-adaptivo y difuso-robusto sobre el modelo dinámico del ejemplo E.5.6. Solución: Para el diseño de este controlador, se utilizó la señal de control correspondiente, es decir:

donde: a. La red neural-adaptiva del controlador que aproximará la función del modelo del manipulador de robot es:

b. La señal de control difuso-robusta será elaborada por un controlador de la forma de: VF(t) Se utilizaron las siguientes condiciones iniciales para los valores constantes Kv = 1500, F = 2000, G = 2000, Λ = 10, ZB = 100, Kz = 1 y Ks = 0.1. Por otro lado, para la estructura de la red se consideraron diez unidades de la capa oculta (sin bias), función de activación de la capa oculta sigmoide, función activación de la capa de salida lineal, funciones de membresía fijas y preestablecidas, método de defuzzificación de promedio de máximos eficaz o COA y algoritmo de aprendizaje de backpropagation de sintonización aplicado en tiempo continuo:

En este caso, por el uso de un controlador difuso y de las aplicaciones de redes neuronales, se tuvo que preparar tres programas para la simulación: ******ebook converter DEMO Watermarks*******

a. Programa principal de la simulación: clear all; close all % Condiciones Iniciales t0 = 0; dt = 0.001; % Muy pequeño para simular continuidad tf = 5; x = [ 0.1 0 0 0 randn(1,60)]'; % Se agregan los valores de los pesos de la red. k = 1; % Constantes de la Trayectoria period = 2*pi; amp1 = 1; amp2 = 1; fact = 2*pi/period; % Constantes del Sistema m1 = 1; m2 = 1; % masa (x10 kg) a1= 22.25/2; % longitud del brazo (m) a2= 22.25/2; %longitud del brazo (m) g = 9.81; % Aceleración de la gravedad (m/s^2) % Parámetros del Controlador Kv = 1000*eye(2); F = 2000*eye(10); GG = 2000*eye(4); lam = 10*eye(2); zb = 100; kz = 1; ks = 1; for t=t0:dt:tf T(k,1) = t; X1(k,1) = x(1); X2(k,1) = x(2); X3(k,1) = x(3); X4(k,1) = x(4); %Trayectoria sinf = sin(fact*t); cosf = cos(fact*t); qd = [amp1*sinf amp2*cosf]'; qdp = fact*[amp1*cosf -amp2*sinf]'; qdpp = -fact^2*qd; QD(k,1:2) = qd'; ******ebook converter DEMO Watermarks*******

QDP(k,1:2) = qdp'; % Errores de Seguimiento xi = [ x(1) x(2) x(3) x(4) ]'; e = qd - [x(1) x(2)]'; ep = qdp - [x(3) x(4)]'; r = ep + lam*e; E(k,1:2) = e'; EP(k,1:2) = ep'; % Cálculo de los Pesos de la Red Neuronal % Peso W for row = 1:2 for col = 1:10 W(col,row) = x(4+col+((row-1)*10),1); end end % Peso V for row = 1:10 for col = 1:4 V(col,row) = x(24+col+((row-1)*4),1); end end % Cálculo de la Señal Robusta sw = size(W); sv = size(V); Z = [ W zeros(sw(1,1),sv(1,2)); zeros(sv(1,1),sw(1,2)) V ]; ZF = sum(sum(Z.*Z)); % Sistema Difuso (Fuzzy Logic) vt(1,1) = fuzrob(r(1),ZF); vt(2,1) = fuzrob(r(2),ZF); % Red Neuronal nn = W'*logistic(V'*xi); % Torque Computado (Señal de Control) tau = nn+Kv*r-vt; % No es necesario el modelo matemático % Actualización de Parámetros de los Pesos de la Red Neuronal % W Punto Wp = F*logistic(V'*xi)*r'-F*diag(logistic(V'*xi))* … ******ebook converter DEMO Watermarks*******

(eye(size(max(V'*xi)))-diag(logistic(V'*xi)))*V'*xi*r' … -ks*F*norm(r)*W; % V Punto Vp = GG*xi*((diag(logistic(V'*xi))*(eye(max(size(V'*xi))) … -diag(logistic(V'*xi))))'*W*r)'-ks*GG*norm(r)*V; % Cálculo de las Matrices del Manipulador % Matriz de Inercias M11 = m1*a1^2*(cos(x(2)))^2; M12 = 0; M22 = m1*a1^2; M = [M11 M12;M12 M22]; % Inversa de M(q) MI = inv(M); % Matriz de Fuerzas Centrípetas y de Coriolis N1 = -m1*a1^2*sin(2*x(2))*x(3)*x(4); N2 = -1/2*m1*a1^2*sin(2*x(2))*x(3)^2; N = [N1;N2]; % Vector de Gravedad G1 = 0; G2 = m1*g*a1*cos(x(2)); G = [G1;G2]; % Ecuación de Estado y orden de pesos para la integración xp(1,1) = x(3); xp(2,1) = x(4); xp(3:4,1) = MI*(-N-G+tau); for i = 1:2 xp((5+(i-1)*10):(14+(i-1)*10),1) = Wp(1:10,i); end for i = 1:10 xp((21+i*4):(24+i*4),1) = Vp(1:4,i); end % Integración x = x + xp*dt; k = k + 1; end figure(1) ******ebook converter DEMO Watermarks*******

plot(T,E(:,1),'b',T,E(:,2),'r') title('Error Angular Control Neural y Difuso') xlabel('Tiempo (seg.)'); ylabel('Amplitud del Error') grid on; zoom on figure(2) plot(T,X1,'r-',T,X2,'b-',T,QD(:,1),'r:',T,QD(:,2),'b:') legend('Theta 1','Theta 2','Theta Deseado 1' … ,'Theta Deseado 2') title('Brazo Robot-Control Neural y Difuso') xlabel('Tiempo (seg.)'); ylabel('Amplitud de Error') grid on; zoom on % Trajectoria en espacio cartesiano x_cart = a1*cos(X2).*sin(X1); y_cart = a1*cos(X2).*cos(X1); z_cart = a1*sin(X2); xd_cart = a1*cos(QD(:,2)).*sin(QD(:,1)); yd_cart = a1*cos(QD(:,2)).*cos(QD(:,1)); zd_cart = a1*sin(QD(:,2)); figure(3) plot3(x_cart,y_cart,z_cart,'r-',xd_cart,yd_cart,zd_cart,'g-'); title(' Trayectoria del Extremo con un Controlador Neural y Difuso') rotate3d on; grid on figure(4) subplot(311) plot(T,x_cart,'r-',T,xd_cart,'g-') ylabel('X'); zoom on; grid on title('Movimiento en ejes cartesianos') subplot(312) plot(T,y_cart,'r-',T,yd_cart,'g-') ylabel('Y'); zoom on; grid on subplot(313) plot(T,z_cart,'r-',T,zd_cart,'g-') ylabel('Z'); zoom on; grid on

******ebook converter DEMO Watermarks*******

b. Programa de la función del controlador difuso: function RF = fuzrob(r,ZF); % RF = fuzrob(r,ZF) % En el archivo FUZROB r es el erro filtrado, % r = derivada del error + lambda*error % y ZF es la Norma Frobenius de Z % ZF = sum(z(i,j)^2), donde z son los elementos % de la matriz Z. % Z=[W0 % 0 V ], donde W y V son los pesos adaptivos de la red neuronal % % RF es la señal Robusta Difusa del manipulador. % Funciones de Membresía de las entradas r y ZF BNR = max(min(tan(-1/8)*(r+2),1),0); SNR = max(min(min(tan(1/8)*(r+10),tan(-1/(2-0.005))*(r+0.005)),1),0); ZER = max(min(min(tan(1/2)*(r+2),tan(-1/2)*(r-2)),1),0); SPR = max(min(min(tan(1/(2-0.005))*(r-0.005),tan(-1/8)*(r-10)),1),0); BPR = max(min(tan(1/8)*(r-2),1),0); ZEZ = max(min(tan(-1/150)*(ZF-200),1),0); SPZ = max(min(min(tan(1/150)*(ZF-50),tan(-1/800)*(ZF-1000)),1),0); LPZ = max(min(tan(1/800)*(ZF-200),1),0); % Reglas Difusas R1 = min(BNR,ZEZ);% R1 = if r is BNR and ZF is ZEZ then RF is BPRF. R2 = min(BNR,SPZ);% R2 = if r is BNR and ZF is SPZ then RF is XBPRF. R3 = min(BNR,LPZ);% R3 = if r is BNR and ZF is LPZ then RF is XBPRF. R4 = min(SNR,ZEZ);% R4 = if r is SNR and ZF is ZEZ then RF is SPRF. R5 = min(SNR,SPZ); % R5 = if r is SNR and ZF is SPZ then RF is BPRF. R6 = min(SNR,LPZ); % R6 = if r is SNR and ZF is LPZ then RF is BPRF. R7 = min(ZER,ZEZ); % R7 = if r is ZER and ZF is ZEZ then RF is ZRF. R8 = min(ZER,SPZ); % R8 = if r is ZER and ZF is SPZ then RF is ZRF. R9 = min(ZER,LPZ); % R9 = if r is ZER and ZF is LPZ then RF is ZRF. R10 = min(SPR,ZEZ); % R10 = if r is SPR and ZF is ZEZ then RF is SNRF. R11 = min(SPR,SPZ); % R11 = if r is SPR and ZF is SPZ then RF is BNRF. R12 = min(SPR,LPZ); % R12 = if r is SPR and ZF is LPZ then RF is BNRF. R13 = min(BPR,ZEZ); % R13 = if r is BPR and ZF is ZEZ then RF is BNRF. R14 = min(BPR,SPZ); % R14 = if r is BPR and ZF is SPZ then RF is ******ebook converter DEMO Watermarks*******

XBNRF. R15 = min(BPR,LPZ); % R15 = if r is BPR and ZF is LPZ then RF is XBNRF. XBPRF = max(R2,R3); BPRF = max(max(R1,R5),R6); SPRF = R4; ZRF = max(max(R7,R8),R9); SNRF = R10; BNRF = max(max(R11,R12),R13); XBNRF = max(R14,R15); % Salida Difusa (COA) salidanum = XBPRF*1000000+BPRF*200000+SPRF*20000+… ZRF*0.5+SNRF*(-20000)+BNRF*(-200000)+XBNRF*(-1000000); salidaden = XBPRF+BPRF+SPRF+ZRF+SNRF+BNRF+XBNRF; RF = salidanum/salidaden; c. Programa de la función sigmoide: function [y] = logistic(x); y=1./(1+exp(-x)); Los resultados de la simulación que considera al controlador neural-adaptivo y difuso-robusto son muy buenos. Podemos ver la figura del error angular:

******ebook converter DEMO Watermarks*******

Es importante resaltar que el controlador no consideró en ningún momento el cálculo del modelo dinámico del manipulador, y el que estamos usando es por la simulación para representar el sistema y poder cerrar el lazo de control.

******ebook converter DEMO Watermarks*******

******ebook converter DEMO Watermarks*******

Del mismo modo, estas figuras confirman el correcto uso del controlador propuesto en el planteamiento del ejemplo.

******ebook converter DEMO Watermarks*******

En esta última figura, se representa el comportamiento del sistema con el controlador neural-adaptivo y difuso-robusto en sus componentes cartesianas. Como conclusión final, podemos afirmar que cuando el manipulador tiene más de dos grados de libertad o más de dos eslabones, la cantidad de operaciones íntegrodiferenciales que se tienen que desarrollar para calcular el modelo dinámico son muchas y normalmente hacen que el ingeniero más cuidadoso pueda incurrir en errores muy sencillos. Esto se debe a simples probabilidades de error. Como alternativa, planteamos el uso de este último controlador, el cual deberá considerar cinco unidades ocultas por cada coordenada generalizada del manipulador, así como un controlador difuso por cada una de ellas. Su potencial, mediante la inteligencia artificial es increíble y evita que calculemos el modelo dinámico del robot.

******ebook converter DEMO Watermarks*******

Capítulo 7. Modelamiento y control de trayectorias completo en Matlab

Aquí desarrollaremos el trabajo completo de diseño y simulación de un manipulador. Es decir, pasará, por todas las etapas de diseño como la definición de trayectorias, modelamiento cinemático, modelamiento dinámico, control del manipulador y su respectiva simulación. Cada paso guiará al lector en el desarrollo de los programas en Matlab que facilitarán los cálculos matemáticos expuestos en los capítulos precedentes, para lo cual emplearemos inicialmente el Toolbox de Symbolic Math. Comenzaremos efectuando el modelamiento cinemático y dinámico de un robot plotter como el del ejemplo E.5.4, cuyas consideraciones son las de poseer masa puntual en el extremo de los eslabones. El robot se puede apreciar en la siguiente figura: Gráfico 7.1 Robot plotter

7.1 Determinación del modelo cinemático ******ebook converter DEMO Watermarks*******

Del ejemplo E.5.4, tomamos la tabla de parámetros de Denavit-Hartenberg:

De la tabla extraemos los parámetros que serán las entradas a una función llamada matra.m, que elaborará las matrices de transformación de coordenadas (Ai). y con ellas calcularemos las matrices de transformación de coordenadas generalizadas (Ti). Sabiendo que Ai responde a la siguiente forma: La función matra.m es la siguiente: function[A] = matra(a,d,a1,th); % Matriz de Transformacion

Cargamos el Matlab con los datos de los parámetros de la tabla y aplicamos los cálculos para las matrices de transformación de coordenadas: % Cinemática Robot Plotter clear all; clc; close all syms a1 a2 q1 q2 pi % a d al th

% a d al th A1 = matra(DH(1,1),DH(1,2),DH(1,3),DH(1,4)) A2 = matra(DH(2,1),DH(2,2),DH(2,3),DH(2,4)) T1 = A1 T2 = T1*A2 ******ebook converter DEMO Watermarks*******

Para este cálculo, Matlab responde:

Visto de manera matricial, en que reemplazaremos cos(qi) = ci; sin(qi) = si, tenemos las siguientes respuestas:

******ebook converter DEMO Watermarks*******

7.2 Determinación del modelo dinámico Como se vio en el punto de cinemática, de las matrices de transformación de coordenadas generalizadas (Ti), extraeremos los valores de los puntos de los centros de masa xi, yi y zi. Cabe resaltar que cuando los sistemas sean de masa distribuida y no de masa puntual en el extremo, deberemos manipular los valores de los parámetros de la tabla de Denavit-Hartenberg para alcanzar las coordenadas esperadas. Comenzaremos determinando la velocidad instantánea cuadrática del centro de masa 1. Para ello, extraemos las coordenadas del centro de masa 1: % Calculando el Modelo Dinámico. % Robot Plotter clear all syms a1 a2 q1 q2 q1p q2p pi

% masa 1 % a d al th A1 = matra(DH(1,1),DH(1,2),DH(1,3),DH(1,4)); A2 = matra(DH(2,1),DH(2,2),DH(2,3),DH(2,4)); T1 = A1; ******ebook converter DEMO Watermarks*******

x1 = T1(1,4) y1 = T1(2,4) z1 = T1(3,4) La respuesta correspondiente al centro de masa 1, es:

>>

x1 = a1*cos(q1) y1 = a1*sin(q1) z1 = 0

Ahora derivamos estas respuestas (con respecto al tiempo), las elevamos al cuadrado y las sumamos para obtener la resultante de la velocidad instantánea cuadrática del centro de masa 1: % Derivamos con respecto al tiempo x1p = diff(x1,'q1')*q1p+diff(x1,'q2')*q2p; y1p = diff(y1,'q1')*q1p+diff(y1,'q2')*q2p; z1p = diff(z1,'q1')*q1p+diff(z1,'q2')*q2p; % Elevamos al cuadrado x1p2 = x1p^2; y1p2 = y1p^2; z1p2 = z1p^2; % Vel. cuadrado v^2 = xp^2 + yp^2 + zp^2 v12 = simple(x1p2 + y1p2 + z1p2); La respuesta es:

>> v12 = a1^2*q1p^2

Hacemos lo mismo para determinar la velocidad instantánea cuadrática de la segunda masa: % masa 2 T2 = A1*A2; ******ebook converter DEMO Watermarks*******

x2 = T2(1,4); y2 = T2(2,4); z2 = T2(3,4); % Derivamos con respecto al tiempo x2p = diff(x2,'q1')*q1p+diff(x2,'q2')*q2p; y2p = diff(y2,'q1')*q1p+diff(y2,'q2')*q2p; z2p = diff(z2,'q1')*q1p+diff(z2,'q2')*q2p; % Elevamos al cuadradox2p2 = x2p^2; y2p2 = y2p^2; z2p2 = z2p^2; % Vel. cuadrado v^2 = xp^2 + yp^2 + zp^2 v22 = simple(x2p2 + y2p2 + z2p2); La respuesta es: >> v22 = a1^2*q1p^2 + 2*cos(q2)*a1*a2*q1p^2 + 2*cos(q2)*a1*a2*q1p*q2p + a2^2*q1p^2 + 2*a2^2*q1p*q2p + a2^2*q2p^2

Ahora, calculamos la matriz de inercias (M(q)), despejándola, mediante el uso de derivadas parciales, de la energía cinética total (K), siendo está la resultante de la sumatoria de las energías cinéticas correspondientes a cada masa. syms m1 m2 % Masas % Energía Cinética del Sistema % K = K1 + K2 ---> Ki = 1/2*mi*vi^2 K1 = 1/2*m1*v12; K2 = 1/2*m2*v22; K = K1 + K2; % Matriz de Inercias m11 = simple(diff(diff(K,'q1p'),'q1p')); m12 = simple(diff(diff(K,'q2p'),'q1p')); m21 = m12;m22 = simple(diff(diff(K,'q2p'),'q2p')); M =[ m11 m12 m21 m22 ]; La respuesta es: >> ******ebook converter DEMO Watermarks*******

M = [ a1^2*m1 + a1^2*m2 + a2^2*m2 + 2*a1*a2*m2*cos(q2), a2*m2* (a2 + a1*cos(q2))] [ a2*m2* (a2 + a1*cos(q2)),

a2^2*m2]

A continuación, determinamos la matriz de fuerzas centrípetas y de Coriolis a través de los elementos de la matriz de inercias y de los términos de Christoffel: % Matriz de Fuerzas Centrípetas y de Coriolis % Empleamos los términos de Christoffel % c11 c11 = 1/2*(diff(m11,'q1')+diff(m11,'q1')-diff(m11,'q1'))*q1p; c11 = c11 + 1/2*(diff(m11,'q2')+diff(m12,'q1')-diff(m21,'q1'))*q2p; c11 = simple(c11); % c12 c12 = 1/2*(diff(m12,'q1')+diff(m11,'q2')-diff(m12,'q1'))*q1p; c12 = c12 + 1/2*(diff(m12,'q2')+diff(m12,'q2')-diff(m22,'q1'))*q2p; c12 = simple(c12); % c21 c21 = 1/2*(diff(m21,'q1')+diff(m21,'q1')-diff(m11,'q2'))*q1p; c21 = c21 + 1/2*(diff(m21,'q2')+diff(m22,'q1')-diff(m21,'q2'))*q2p; c21 = simple(c21); ******ebook converter DEMO Watermarks*******

% c22 c22 = 1/2*(diff(m22,'q1')+diff(m21,'q2')-diff(m12,'q2'))*q1p; c22 = c22 + 1/2*(diff(m22,'q2')+diff(m22,'q2')-diff(m22,'q2'))*q2p; c22 = simple(c22); C = [ c11 c12 c21 c22 ]; La respuesta es: >> C= [ a1*a2*m2*q2p*sin(q2), a1*a2*m2*sin(q2)* (q1p + q2p)] [ a1*a2*m2*q1p*sin(q2),

0]

Por último, calculamos el vector gravedad (G), de las derivadas parciales de la energía potencial total (P) con respecto a cada variable articular. La energía potencial es la sumatoria de las energías potenciales de cada masa. % Cálculo de la Energía Potencial % P = P1 + P2 ---> Pi = mi*g*zi syms g P1 = m1*g*y1; P2 = m2*g*y2; P = P1 + P2; % Determinación del Vector de Gravedad g1 = simple(diff(P,'q1')); g2 = simple(diff(P,'q2')); ******ebook converter DEMO Watermarks*******

G = [ g1 g2 ]'; La respuesta es:

>> G= [ conj(m1*g*a1*cos(q1)+m2*g*a2*cos(q1+q2)+g*m2*a1*cos(q [ conj(m2*g*a2*cos(q1+q2)) ] La expresión que determina que son términos conjugados puede ser ignorada porque estos términos no contienen ni contendrán expresiones imaginarias. También pueden retirarse cambiando la última línea por la siguiente: G = conj([ g1 g2 ]');

Hasta este punto, ya tenemos calculadas las matrices del modelo dinámico.

7.3 Parámetros del robot y trayectorias óptimas Es necesario saber cuáles son las aceleraciones y velocidades máximas de los motores para diseñar las trayectorias óptimas. Para efectos de nuestro problema del robot plotter, asumiremos que la velocidad máxima es 30o/seg. y que la aceleración máxima es 15o/seg2. Del mismo modo, asumiremos unos puntos de coordenadas de inicio y otros finales, siendo estos los que figuran en la siguiente tabla: Punto\Articulación

Theta 1

Theta 2

Inicio

55o

83o

Final

0o

0o

Debemos tener en cuenta que los valores angulares de los puntos de referencia, así como las aceleraciones y velocidades, deben ser convertidos a ******ebook converter DEMO Watermarks*******

radianes. Para definir las trayectorias óptimas, empleamos las fórmulas y programas que se desarrollaron al principio de este capítulo. Consideraremos un programa genérico que elabora las trayectorias de tres o dos etapas, según las dimensiones del recorrido, y que establezca los puntos, a modo de vectores, de la aceleración, de la velocidad y de la posición. Este programa llamado trayp.m es el que se puede ver en la función siguiente: function [Tf,Rf,Vf,Af] = trayp(amax,vmax,pi,pf,dt) rmax = abs(pf-pi); % Cálculo de los tiempos t0 = 0; t1 = vmax/amax; r1 = 0.5*amax*t1^2; r2 = rmax-2*r1; t2 = t1+r2/vmax; r2 = r1+r2; tf = t1+t2; r3 = r2+vmax*(tf-t2)+0.5*(-amax)*(tf-t2)^2; t = [ t0 t1 t2 tf ]; r = [ r1 r2 r3 ];

% Definiendo y renombrando las Condiciones Iniciales r0 = 0; v0 = 0; a0 = amax; r = r0; v = v0; a = a0; % Reproducción de la trayectoria k = 1; if t1 vmax; v = vmax; end k = k + 1; end for t = (t1+dt):dt:t2 A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; a = 0; v = vmax; r = r + v*dt; k = k + 1; end ******ebook converter DEMO Watermarks*******

for t = (t2+dt):dt:tf A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; a = -amax; v = v + a*dt; r = r + v*dt+0.5*a*dt^2; k = k + 1; end else %Trayectoria de 2 etapas t1 = sqrt(rmax/amax); tf = 2*t1; for t = t0:dt:t1 A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; a = amax; v = v + a*dt; r = r + v*dt+0.5*a*dt^2; k = k + 1; end for t = (t1+dt):dt:tf A(k,1) = a; V(k,1) = v; R(k,1) = r; T(k,1) = t; a = -amax; v = v + a*dt; r = r + v*dt+0.5*a*dt^2; k = k + 1; end end if pf> x1 =0 y1 =0 z1 = l1/2 Ahora derivamos estas respuestas (con respecto al tiempo), las elevamos al cuadrado y las sumamos para obtener la resultante de la velocidad instantánea cuadrática del centro de masa 1: ******ebook converter DEMO Watermarks*******

% Derivamos con respecto al tiempo x1p = diff(x1,'q1')*q1p+diff(x1,'q2')*q2p+diff(x1,'q3')*q3p; y1p = diff(y1,'q1')*q1p+diff(y1,'q2')*q2p+diff(y1,'q3')*q3p; z1p = diff(z1,'q1')*q1p+diff(z1,'q2')*q2p+diff(z1,'q3')*q3p; % Elevamos al cuadrado x1p2 = x1p^2; y1p2 = y1p^2; z1p2 = z1p^2; % Vel. cuadrado v^2 = xp^2 + yp^2 + zp^2 v12 = simple(x1p2 + y1p2 + z1p2) La respuesta es: >> v12 =0

Hacemos lo mismo para determinar la velocidad instantánea cuadrática de la segunda masa. Sin embargo, debemos recuperar la matriz de transformación de coordenadas A1, incorporar A2 y modificar A3 para determinar el centro de masa 2: % masa 2 A1 = matra(DH(1,1),DH(1,2),DH(1,3),DH(1,4)); A2 = matra(DH(2,1),DH(2,2),DH(2,3),DH(2,4)); A3m = matra(DH(3,1),DH(3,2)/2,DH(3,3),DH(3,4)); T2 = A1*A2*A3m; x2 = T2(1,4); y2 = T2(2,4); z2 = T2(3,4); % Derivamos con respecto al tiempo x2p = diff(x2,'q1')*q1p+diff(x2,'q2')*q2p+diff(x2,'q3')*q3p; y2p = diff(y2,'q1')*q1p+diff(y2,'q2')*q2p+diff(y2,'q3')*q3p; z2p = diff(z2,'q1')*q1p+diff(z2,'q2')*q2p+diff(z2,'q3')*q3p; % Elevamos al cuadrado x2p2 = x2p^2; y2p2 = y2p^2; z2p2 = z2p^2; % Vel. cuadrado v^2 = xp^2 + yp^2 + zp^2 v22 = simple(x2p2 + y2p2 + z2p2); ******ebook converter DEMO Watermarks*******

La respuesta es: >> v22 = (q3^2*q2p^2)/4 + q3p^2/4 + (l2^2*q2p^2)/4 + (l2*q3*q2p^2)/2 + (l2^2*q1p^2*sin(q2)^2)/4 + (q3^2*q1p^2*sin(q2)^2)/4 + (l2*q3*q1p^2*sin(q2)^2)/2

o, simplemente

Ahora, calculamos la matriz de inercias (M(q)), despejándola, mediante el uso de derivadas parciales, de la energía cinética total (K), siendo está la resultante de la sumatoria de las energías cinéticas correspondientes a cada masa. syms m1 m2 % Masas % Energía Cinética del Sistema % K = K1 + K2 ---> Ki = 1/2*mi*vi^2 K1 = 1/2*m1*v12; K2 = 1/2*m2*v22; K = K1+K2; % Matriz de Inercias m11 = simple(diff(diff(K,'q1p'),'q1p')); m12 = simple(diff(diff(K,'q1p'),'q2p')); m13 = simple(diff(diff(K,'q1p'),'q3p')); m21 = m12; m22 = simple(diff(diff(K,'q2p'),'q2p')); m23 = simple(diff(diff(K,'q2p'),'q3p')); m31 = m13; m32 = m23; m33 = simple(diff(diff(K,'q3p'),'q3p')); M =[ m11 m12 m13 m21 m22 m23 m31 m32 m33 ] La respuesta es: ******ebook converter DEMO Watermarks*******

A continuación, determinamos la matriz de fuerzas centrípetas y de Coriolis a través de los elementos de la matriz de inercias y de los términos de Christoffel: % Matriz de Fuerzas Centrípetas y de Coriolis % Empleamos los términos de Christoffel % c11 c11 = 1/2*(diff(m11,'q1')+diff(m11,'q1')-diff(m11,'q1'))*q1p; c11 = c11 + 1/2*(diff(m11,'q2')+diff(m12,'q1')-diff(m12,'q1'))*q2p; c11 = c11 + 1/2*(diff(m11,'q3')+diff(m13,'q1')-diff(m13,'q1'))*q3p; c11 = simple(c11); % c12 c12 = 1/2*(diff(m12,'q1')+diff(m11,'q2')-diff(m12,'q1'))*q1p; c12 = c12 + 1/2*(diff(m12,'q2')+diff(m12,'q2')-diff(m22,'q1'))*q2p; c12 = c12 + 1/2*(diff(m12,'q3')+diff(m13,'q2')-diff(m23,'q1'))*q3p; c12 = simple(c12); % c13 c13 = 1/2*(diff(m13,'q1')+diff(m11,'q3')-diff(m13,'q1'))*q1p; c13 = c13 + 1/2*(diff(m13,'q2')+diff(m12,'q3')-diff(m23,'q1'))*q2p; c13 = c13 + 1/2*(diff(m13,'q3')+diff(m13,'q3')-diff(m33,'q1'))*q3p; c13 = simple(c13); % c21 ******ebook converter DEMO Watermarks*******

c21 = 1/2*(diff(m21,'q1')+diff(m21,'q1')-diff(m11,'q2'))*q1p; c21 = c21 + 1/2*(diff(m21,'q2')+diff(m22,'q1')-diff(m12,'q2'))*q2p; c21 = c21 + 1/2*(diff(m21,'q3')+diff(m23,'q1')-diff(m13,'q2'))*q3p; c21 = simple(c21); % c22 c22 = 1/2*(diff(m22,'q1')+diff(m21,'q2')-diff(m12,'q2'))*q1p; c22 = c22 + 1/2*(diff(m22,'q2')+diff(m22,'q2')-diff(m22,'q2'))*q2p; c22 = c22 + 1/2*(diff(m22,'q3')+diff(m23,'q2')-diff(m23,'q2'))*q3p; c22 = simple(c22); % c23 c23 = 1/2*(diff(m23,'q1')+diff(m21,'q3')-diff(m13,'q2'))*q1p; c23 = c23 + 1/2*(diff(m23,'q2')+diff(m22,'q3')-diff(m23,'q2'))*q2p; c23 = c23 + 1/2*(diff(m23,'q3')+diff(m23,'q3')-diff(m33,'q2'))*q3p; c23 = simple(c23); % c31 c31 = 1/2*(diff(m31,'q1')+diff(m31,'q1')-diff(m11,'q3'))*q1p; c31 = c31 + 1/2*(diff(m31,'q2')+diff(m32,'q1')-diff(m12,'q3'))*q2p; c31 = c31 + 1/2*(diff(m31,'q3')+diff(m33,'q1')-diff(m13,'q3'))*q3p; c31 = simple(c31); % c32 c32 = 1/2*(diff(m32,'q1')+diff(m31,'q2')-diff(m12,'q3'))*q1p; c32 = c32 + 1/2*(diff(m32,'q2')+diff(m32,'q2')-diff(m22,'q3'))*q2p; c32 = c32 + 1/2*(diff(m32,'q3')+diff(m33,'q2')-diff(m23,'q3'))*q3p; c32 = simple(c32); % c33 c33 = 1/2*(diff(m33,'q1')+diff(m31,'q3')-diff(m13,'q3'))*q1p; c33 = c33 + 1/2*(diff(m33,'q2')+diff(m32,'q3')-diff(m23,'q3'))*q2p; c33 = c33 + 1/2*(diff(m33,'q3')+diff(m33,'q3')-diff(m33,'q3'))*q3p; c33 = simple(c33); C = [ c11 c12 c13 c21 c22 c23 c31 c32 c33 ] La respuesta es: >> C = ******ebook converter DEMO Watermarks*******

[ (m2*q2p*sin(2*q2)*(l2+q3)^2)/8+(m2*q3p*sin(q2)^2* (2*l2+2*q3))/8, (m2*q1p*sin(2*q2)*(l2+q3)^2)/8, (m2*q1p*sin(q2)^2*(l2+q3))/4 ] [ -(m2*q1p*sin(2*q2)*(l2+q3)^2)/8, (m2*q3p*(l2+q3))/4, (m2*q2p*(l2+q3))/4] [ -(m2*q1p*sin(q2)^2*(l2+q3))/4, -(m2*q2p*(l2+q3))/4, 0]

Por último, calculamos el vector gravedad (G), de las derivadas parciales de la energía potencial total (P) con respecto a cada una de las variables articulares. La energía potencial es la sumatoria de las energías potenciales de cada masa. % Cálculo de la Energía Potencial % P = P1 + P2 ---> Pi = mi*g*zi syms g P1 = m1*g*z1; P2 = m2*g*z2; P = P1 + P2; % Determinación del Vector de Gravedad g1 = simple(diff(P,'q1')); g2 = simple(diff(P,'q2')); g3 = simple(diff(P,'q3')); G = conj([ g1 g2 g3 ]') La respuesta es:

******ebook converter DEMO Watermarks*******

Hasta este punto, ya tenemos calculadas las matrices del modelo dinámico.

Parámetros del robot y trayectorias óptimas Es necesario saber cuáles son las aceleraciones y velocidades máximas de los motores para diseñar las trayectorias óptimas. Para efectos de nuestro problema, han sido dadas durante el planteamiento:

Masa

Peso

Posición

1

20

Distribuida

2

10

Distribuida

Eslabón

Dimesiones

1

4m

2

2 m + q3

Debemos tener en cuenta que los valores angulares de los puntos de referencia, así como las aceleraciones y velocidades, deben ser convertidos a radianes. Para definir las trayectorias óptimas, empleamos las fórmulas y programas ******ebook converter DEMO Watermarks*******

que se desarrollaron al principio de este capítulo. Consideraremos el programa genérico que elabora las trayectorias de tres o dos etapas, según las dimensiones del recorrido, y que establezca los puntos, a modo de vectores, de la aceleración, de la velocidad y de la posición. Este programa llamado trayp.m se empleó en el punto 7.3 de este mismo capítulo. A continuación, debemos preparar otra función que junte las tres trayectorias óptimas, la que corresponde a cada articulación, y que dimensione los vectores resultantes. Dicho en otras palabras, esta función trayrobot2.m se encargará de hacer que los tres motores tengan información todo el tiempo que dure el movimiento. La función trayrobot2.m es la siguiente: function [R,V,A] = trayrobot2(amax,vmax,pi,pf,dt) [T1,R1,V1,A1] = trayp(amax(1),vmax(1),pi(1),pf(1),dt); [T2,R2,V2,A2] = trayp(amax(2),vmax(2),pi(2),pf(2),dt); [T3,R3,V3,A3] = trayp(amax(3),vmax(3),pi(3),pf(3),dt); k = max([length(T1) length(T2) length(T3)]); R = ones(k,3); R(:,1) = R1(length(R1),1); R(:,2) = R2(length(R2),1); R(:,3) = R3(length(R3),1); R(1:length(R1),1)=R1; R(1:length(R2),2)=R2; R(1:length(R3),3)=R3; V = zeros(k,3); V(1:length(V1),1)=V1; V(1:length(V2),2)=V2; V(1:length(V3),3)=V3; A = zeros(k,3); A(1:length(A1),1)=A1; A(1:length(A2),2)=A2; A(1:length(A3),3)=A3; T = zeros(k,1); T(1:length(T1),1)=T1; T(1:length(T2),1)=T2; T(1:length(T3),1)=T3; ******ebook converter DEMO Watermarks*******

Simulación y control PD de torque computado Comenzamos nuestro programa de simulación con las consideraciones de parámetros de los motores y de los puntos de referencia, el de inicio y el final: % Robot Plotter con PDT clear all; close all; clc % Condiciones Iniciales ff = pi/180; % Factor de Conv. Sex a Rad amax(1) = 10*ff; % rad/s^2 vmax(1) = 25*ff; % rad/s amax(2) = 10*ff; % rad/s^2 vmax(2) = 18*ff; % rad/s amax(3) = 1.00; % mts/s^2 vmax(3) = 0.25; % mts/s amax = amax'; vmax = vmax'; % Constantes de la Trayectoria p0 = [ 80*ff -5*ff 0.5 ]'; pf = [ 5*ff 20*ff 1.5 ]'; Luego cargamos los parámetros de tiempo para la simulación y las trayectorias, dándoles las dimensiones adecuadas para la simulación misma: t0 = 0; dt = 0.005; % Pequeño para simular continuidad x = [ p0' pf' ]'; k = 1; [R1,V1,A1] = trayrobot2(amax,vmax,p0,pf,dt); QD = [R1]; QDP = [V1]; QDPP = [A1]; T = 0:(max(size(QD))-1); T = T'*dt; qd = QD(:,1:3)'; qdp = QDP(:,1:3)'; ******ebook converter DEMO Watermarks*******

qdpp = QDPP(:,1:3)'; A continuación, introducimos los parámetros del sistema, las constantes del controlador, abrimos el lazo de la simulación y definimos las variables de estado y valores de los errores: m1 = 20; m2 = 10; l1 =4; l2 = 2; % masas y longitudes g = 9.81; % Gravedad (m/s^2) % Parámetros del Controlador Kp = 1000*eye(3); Kv = 100*eye(3); x = [ x(1:3); x(4:6) ]; for t=0:dt:(max(T)) X1(k,1) = x(1); X2(k,1) = x(2); X3(k,1) = x(3); X4(k,1) = x(4); X5(k,1) = x(5); X6(k,1) = x(6); q1 = x(1); q2 = x(2); q3 = x(3); q1p = x(4); q2p = x(5); q3p = x(6); % Errores de Seguimiento e = qd(:,k) - x(1:3); ep = qdp(:,k) - x(4:6); E(k,1:3) = e'; EP(k,1:3) = ep'; Copiamos las matrices del modelo dinámico que hemos calculado previamente en el programa anterior con un pequeño cambio de variable para reducir las dimensiones del modelo: aa = l2 + q3; % Variable Intermedia para reducir las dimesiones % Cálculo de las Matrices del Manipulador % Matriz de Inercias

% Inversa de M(q) MI = inv(M); % Matriz de Fuerzas Centrípetas y de Coriolis

******ebook converter DEMO Watermarks*******

N = C*[ q1p q2p q3p ]'; % Vector de Gravedad G=[ 0 g*m2*sin(q2)*aa/2 -g*m2*cos(q2)/2 ]; Ahora, introducimos la Ley de Control y con ella calculamos el torque requerido para seguir la trayectoria: % Torque Computado (Señal de Control) S = qdpp(:,k) + Kv*ep + Kp*e; tau = M*S+N+G; Por último, colocamos las ecuaciones de estado del sistema y cerramos el lazo de la simulación: % Ecuación de Estado xp = [ x(4:6) MI*(-N-G+tau) ]; % Integración x = x + xp*dt; k = k + 1; end Solamente, debemos recoger las variables indicadas y las ploteamos. Primero el error: %Graficando figure(1) plot(T,E(:,1),'r',T,E(:,2),'b',T,E(:,3),'m') title('Error Articular PD de Torque Computado') xlabel('Tiempo (seg.)') ylabel('Amplitud del Error') ******ebook converter DEMO Watermarks*******

grid on; zoom on

Luego la posición y la velocidad: figure(2) plot(T,X1,'r-',T,X2,'b-',T,X3,'m-',T,QD(:,1),'r:',T,QD(:,2),'b:',T,QD(:,3),'m:') title('Brazo Robot-PD de Torque Computado') xlabel('Tiempo (seg.)'); ylabel('Amplitud de Angulo') grid on; zoom on

******ebook converter DEMO Watermarks*******

figure(3) plot(T,X4,'r-',T,X5,'b-',T,X6,'m',T,QDP(:,1),'r:',T,QDP(:,2),'b:',T,QDP(:,3),'m:') title('Brazo Robot-PD de Torque Computado') xlabel('Tiempo (seg.)') ylabel('Amplitud de Velocidad Angular') grid on; zoom on

******ebook converter DEMO Watermarks*******

Para cualquier caso, también se pueden determinar las aceleraciones o los valores que sean requeridos en el diseño.

7.5 Excepciones del modelo Las excepciones a la aplicación del modelo se deben a las singularidades matemáticas que puedan aparecer en el modelo dinámico o en algunos puntos de las trayectorias. Existen robots en los que la mayor cantidad de grados de libertad aplicados, sobre una misma masa, ocasiona que el modelo tenga filas y/o columnas completas de ceros, por lo que el rango del sistema se pierde y la inversa de la matriz de inercias M no existe por ser M una matriz singular. En esos casos, ese grado de libertad se debe identificar y se retira del modelo dinámico reduciendo sus dimensiones. Ese grado de libertad retirado pasa a controlarse con cualquier tipo de controlador desacoplado. Otro caso ocurre cuando las trayectorias pasan por asíntotas resultantes de las operaciones trigonométricas contenidas en el modelo dinámico. Usualmente son coordenadas exactas como 0o, 90o, 180o, 270o y 360o. También pueden ocurrir en ******ebook converter DEMO Watermarks*******

combinaciones angulares que den como resultado alguno de estos valores. Sin embargo, afectan de manera muy radical cuando son el punto de inicio o final de una trayectoria, es decir, nunca los consideren como condiciones iniciales o finales. Al referirnos a las finales, no es por ese caso, sino por el siguiente, ya que el punto final de una trayectoria será el inicial de la siguiente.

******ebook converter DEMO Watermarks*******

Apéndice. Introducción al Matlab

Matlab (Matricial Laboratory o Laboratorio Matricial) es al mismo tiempo un entorno y un lenguaje de programación. Uno de sus puntos fuertes es el hecho de que el lenguaje de Matlab3 le permite construir sus propias herramientas reutilizables (Archivos-M o M-Files). La agrupación de estás herramientas en un directorio da origen al nombre de toolbox (caja de herramientas). Así como cada uno puede generar sus M-Files y agruparlos en toolboxes particulares, existen toolboxes comerciales debido al esfuerzo de investigadores líderes a escala mundial en campos como control, procesamiento de señales, matemáticas y estadística, entre otras. Los toolboxes comercializados son los siguientes: 1. Control System Toolbox. 2. Frecuency-Domain System Identification Toolbox. 3. Fuzzy Logic Toolbox. 4. Higher-Order Spectral Analysis Toolbox. 5. Image Procesing Toolbox. 6. Model Predictive Toolbox. 7. Mu-Analysis and Synthesis Toolbox. 8. NAG Foundation Toolbox. 9. Neural Network Toolbox. 10.Nonlinear Control Design Toolbox. 11.Optimization Toolbox. 12.Quantitative Feedback Theory Toolbox. 13.Robust Control Toolbox. 14.Signal Processing Toolbox. 15.Simulink. 16.Simulink Real-Time Workshop. 17.Spline Toolbox. 18.Statistics Toolbox. 19.Symbolic Math Toolbox. 20.System Identification Toolbox. Para correr el Matlab, simplemente se debe hacer doble clic con el botón derecho del mouse sobre el ícono del programa Matlab. Si el ícono no está disponible, se puede ejecutar el archivo MATLAB.EXE que se encuentra en el ******ebook converter DEMO Watermarks*******

subdirectorio BIN del directorio Matlab. Una vez cargado el programa aparece la ventana de comandos (Command Window), donde ya se puede empezar a realizar los cálculos necesarios. En el entorno de la ventana de comandos se escriben las instrucciones a ser ejecutadas. Actualmente, en la Versión 6, se abren más ventanas como la ventana del Lauch Pad, la cual permita ver un árbol de ayuda y demos del producto, la ventana del Current Directory (Directorio Actual), donde se ven los archivos del directorio en el que se encuentra ubicado el programa, el que a su vez puede variarse en esa misma aplicación, la ventana de Command History (Historial de Comandos), donde se presenta todos los comandos utilizados anteriormente y otros que iremos comentando oportunamente.

Operadores de matemáticas Son ejecutados exactamente igual que en cualquier calculadora, es decir, si quiero sumar dos números: 2 + 3 ENTER y en la pantalla aparecerá la respuesta 5. El mismo procedimiento se realiza para la resta (-), división (/), multiplicación (*), raíz cuadrada (sqrt), potencia (^), logaritmo natural (log), logaritmo en base 10 (log10), etc.

Operadores relacionales Los operadores relacionales entregan como respuesta un ‘1’ cuando la operación es ‘Verdadera’ y un ‘0’ cuando la operación es ‘Falsa’. Son frecuentemente utilizados como condicionantes en estructuras de programación, es decir, se encargan de efectuar desvíos de la secuencia normal de trabajo de un programa. Los operadores son: < Menor que Mayor que >= Mayor o igual que == Igual que ~= Diferente que

Operadores lógicos Los operadores lógicos se encargar de validar las operaciones lógicas conocidas ******ebook converter DEMO Watermarks*******

como las conjunciones, disyunciones, negaciones y la diferencia simétrica, más conocida como el O Exclusivo. Estos operadores son: ~A A&B A|B xor(A,B)

Negación lógica (NOT) o complemento de A. Conjunción lógica (AND) o intersección de A y B. Disyunción lógica (OR) o unión de A y B. Or Exclusivo (XOR) o diferencia simétrica de A y B.

Variables Las variables son usadas como memorias de números, vectores, matrices, números complejos y de las mismas variables, y de todas las combinaciones de los mencionados. a = 1 ; (el punto y coma se usa para que el resultado no aparezca en pantalla) a = 1 + 2i ; a = [ 2 3 4 ] ; (forma de un vector)

c = 24 * 15 – 46 + sqrt( a ) – log10 ( pi ) / exp( 5 ) ; a = a + 1 – a ^2 + c ; Cabe resaltar que estos cálculos se pueden aplicar entre los elementos matriciales siempre y cuando se coloque un punto (.) antes del operador. Polinomios Los polinomios son reconocidos en el Matlab como vectores fila y podemos ejecutar operaciones con ellos. Por ejemplo: A = [ 1 1 ]; es la representación de x + 1 Es importante mencionar que podemos considerar a los vectores como matrices unidimensionales. Así, un vector fila es una matriz de orden 1xN y un vector columna es una matriz de orden Nx1.

Condicional ******ebook converter DEMO Watermarks*******

IF Ejecuta órdenes al cumplirse una/s condicion/es. La forma general de un IF es: IF condición, órdenes, END Las órdenes son ejecutadas si la parte real de la variable condicionada tiene todos sus elementos diferentes de cero, es decir, si la condición es verdadera. Las condiciones normalmente están sujetas a los siguientes operadores condicionales lógicos: ==, , =, o ~=. Por ejemplo: IF I == J A(I,J) = 2; ELSEIF ABS(I-J) == 1 A(I,J) = -1; ELSE A(I,J) = 0; END

Lazos de programación FOR Repite las órdenes un número específico de veces. La forma general del FOR es: FOR variable = expr, orden, ..., orden END Las columnas de la expresión son ejecutadas o grabadas una por vez en la variable y luego son ejecutadas todas las órdenes antes del END. Las expresiones normalmente son de la forma X:Y, en algunos casos sus columnas son escalares. Algunos ejemplos: (asumiendo que N ya tiene un valor asignado). FOR I = 1:N, FOR J = 1:N, A(I,J) = 1/(I+J-1); END END FOR S = 1.0: -0.1: 0.0, END se escala S con incrementos de -0.1 en -0.1 FOR E = EYE(N), ... END se escala E a las unidades de N - vectores. ******ebook converter DEMO Watermarks*******

WHILE Repite las órdenes un número indefinido de veces. La forma general del WHILE es: WHILE condición, orden, ..., orden, END Las órdenes son ejecutadas mientras la condición tiene elementos diferentes de cero, es decir, si la condición es verdadera. Las condiciones normalmente están sujetas a los siguientes operadores condicionales lógicos: ==, , =, o ~=. Por ejemplo (asumiendo que A ya ha sido definido): E = 0*A; F = E + EYE(E); N = 1; WHILE NORM(E+F-E,1) > 0, E = E + F; F = A*F/N; N = N + 1; END

Constantes del sistema NaN Del inglés Not-a-Number, no es un número. NaN es la representación aritmética de la IEEE para algo que no es un número. Un NaN se obtiene como el resultado de una indefinición matemática de operaciones cono 0.0/0.0 y inf-inf. INF Infinito. INF aparece como representación aritmética de la IEEE para el infinito positivo. Infinito también es el resultado de operaciones como las divisiones por cero y por el desbordamiento de las capacidades del programa. Por ejemplo, 1.0/0.0, o exp(1000). PI La constante trigonométrica π. Es decir, 3.1415926… EPS Punto flotante de precisión relativa. EPS indica la separación mínima entre dos puntos contiguos para efectos de cálculo del programa, es decir, es el menor intervalo. Es utilizado por defecto por muchos comandos. Su valor está alrededor de 2.2204e-016.

Algunos comandos útiles ******ebook converter DEMO Watermarks*******

CONV Encuentra las raíces o polos de un polinomio (resuelve el polinomio). ROOTS(C) computa las raíces del polinomio cuyos coeficientes son los elementos del vector C. Si C tiene N + 1 componentes, el polinomio es C(1)*X^N + ... + C(N)*X + C(N+1). Convolución y/o multiplicación polinómica. C = CONV(A, B) convoluciona los vectores A y B. La longitud del vector resultante es la ‘longitud de A + longitud de B – 1’. Si A y B son vectores que representan coeficientes polinómicos, podemos concluir que la convolución es equivalente a la multiplicación polinómica. EIG Valores propios, autovalores o eigenvalues de una matriz. E = EIG(X) entrega un vector E que contiene los valores propios de una matriz cuadrada X. SUM Sumatoria de elementos. Para vectores, SUM(X) es la sumatoria de los elementos del vector X. Para matrices, SUM(X) es un vector fila cuyos elementos contienen la sumatoria de sus respectivas columnas. Ejemplo: Si X = [0 1 2 3 4 5] entonces A=sum(X) es [3 5 7] y sum(A) es 15. MEAN Valor medio o promedio. Para vectores, MEAN(X) es el promedio de los elementos del vector X. Para matrices, MEAN(X) es un vector fila que contiene los valores medios de sus respectivas columnas. Ejemplo: Si X = [0 1 2 3 4 5], entonces mean(X) is [1.5 2.5 3.5] MAX o MIN Componentes máximos y mínimos. Para vectores, MAX(X) o MIN(X) son los máximos o los mínimos del vector X. Para matrices, MAX(X) o MIN(X) entrega un vector fila con los máximos o mínimos correspondientes a sus respectivas columnas. ******ebook converter DEMO Watermarks*******

ROOTS Encuentra las raíces o polos de un polinomio (resuelve el polinomio). ROOTS(C) computa las raíces del polinomio cuyos coeficientes son los elementos del vector C. Si C tiene N + 1 componentes, el polinomio es C(1)*X^N + ... + C(N)*X + C(N+1). POLY Polinomio característico. Si A es una matriz N por N, POLY(A) es un vector fila con N + 1 elementos, los cuales son los coeficientes del polinomio característico, DET(lambda*EYE(A) A). Si V es un vector, POLY(V) es un vector cuyos elementos son los coeficientes del polinomio cuyas raíces son los elementos de V. Para vectores, ROOTS y POLY son funciones inversas una de la otra. INV Matriz inversa. INV(X) es la inversa de la matriz cuadrada X. Un mensaje de alerta warning aparece si X no es cuadrada o si es próxima a una matriz singular. SIZE Dimensiones de una matriz o vector. D = SIZE(X), para una matriz X de MxN elementos, entrega un vector de dos elementos D = [M, N] el cual contiene el número de filas y columnas en la matriz, es decir, el orden de la matriz. LENGTH Longitud de un vector. LENGTH(X) entrega la longitud de un vector X. Esta función es equivalente a MAX(SIZE(X)). Para una matriz entrega el valor del mayor de los órdenes. HELP NOMBRE_DEL_COMANDO Ayuda específica. Si digitamos el comando HELP y a continuación el nombre de alguna función o comando, aparecerá la descripción del mismo.

Figuras y gráficos PLOT Plotea vectores o matrices. PLOT(X,Y) plotea al vector X versus el vector Y. Si X o Y es una matriz, entonces el vector es ploteado versus las filas o columnas de la matriz, en diferentes líneas. ******ebook converter DEMO Watermarks*******

PLOT(Y) plotea las columnas de Y versus sus índices. Si Y es complejo, PLOT(Y) equivalente a PLOT(real(Y),imag(Y)). En todos los otros usos de PLOT, la parte imaginaria es ignorada. Pueden ser obtenidos varios tipos de líneas, símbolos de ploteo y colores con PLOT(X,Y,S), donde S es una cadena de 1, 2 o 3 caracteres construida por los siguientes elementos: y

amarillo

m

morado

c

celeste

r

red

g

green

b

blue

w

white

k

black

.

punto

o

círculo

x

equis

+

aspa

-

sólida

*

asterisco

:

punteada

-.

punto - línea

--

líneas consecutivas

Por ejemplo, PLOT(X,Y,'c+') plotea un aspa celeste por cada dato. PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combina los ploteos definidos por los tríos (X,Y,S), donde las X's y las Y's son vectores o matrices y las S's son cadenas. Por ejemplo, PLOT(X,Y,'y-',X,Y,'go') plotea los pares de datos, con una línea amarilla sólida interpolando círculos verdes en los datos. PLOT3 ******ebook converter DEMO Watermarks*******

Plotea líneas y puntos en un espacio de 3-D. PLOT3() es análogo, en tres dimensiones del PLOT(). M-Files Los M–Files o Archivos–M son los archivos de base del Matlab. En ellos están contenidas las funciones y los comandos que podemos ejecutar. Una de las grandes bondades de este programa es que cada uno puede ir generando M–Files, según sean sus necesidades y de forma muy sencilla. En ellos se pueden guardar rutinas repetitivas con formas de funciones o generar grandes macros que evitan estar ‘retipeando’ todo un tedioso procedimiento.

TOOLBOXES Symbolic Math Toolbox (toolbox de matemáticas simbólicas) Es utilizado para realizar operaciones algebraicas con variables alfanuméricas. Como punto de partida, debemos definir las variables simbólicas o literales:

x e y son variable literales. Con ellas se estructurarán ecuaciones y/o matrices para operar matemáticamente. Las ecuaciones pueden ser asignadas a variables alfanuméricas sin mayor complicación, tal como lo hicimos con las variables numéricas. a = 2 *x^2 – 3 *y Esto quiere decir que a la variable a se le ha asignado la ecuación 2x2 3y y que cada vez que sea utilizada se reemplazará por su contenido. Para aclarar lo que comentamos en el párrafo anterior, podemos ejecutar el siguiente ejemplo en el Matlab: Teclado:

a = 2*x^2-3*y

Matlab:

a= 2*x^2-3*y

Teclado: b = a*a ******ebook converter DEMO Watermarks*******

Matlab:

b= ( 2 *x^2 – 3 *y) ^2

Hasta aquí todo va bien, pero es obvio que no queremos dejar indicada la operación indicada al cuadrado, sino que deseamos que la opere. Para ello, debemos expandir la ecuación digitando: Teclado:

c = expand(b)

Matlab:

c= 4 * x ^ 4 – 12 * x ^ 2 * y + 9 * y ^ 2

Existen otras funciones que sirven para factorizar, simplificar, expandir o reducir alguna expresión. Algunas de estas funciones son: expand( )

Se utiliza para expandir un expresión simbólica.

factor( )

Utilizada para factorizar una expresión dada.

simplify( )

Esta se utiliza para reemplazar la expresión por equivalencias más pequeñas.

simple( )

Esta es la más potente. Utiliza todas las anteriores y otras más para llegar a la representación más pequeña de una expresión.

Ejemplo 1: Teclado:

syms x y a=x^2+2*x+1

Matlab:

a=

x^2 + 2 *x+ 1 Teclado:

factor(a)

Matlab:

ans =

( x+ 1 ) ^2 Ejemplo 2: Teclado:

x = sym( ‘ x ’ ) simplify( sin( x ) ^ 2 + cos( x ) ^ 2 )

******ebook converter DEMO Watermarks*******

Matlab:

ans =

1 syms alpha beta c

Teclado:

simplify( exp ( c * log ( sqrt( alpha + beta ) ) ) ) Matlab:

ans =

( alpha + beta ) ^ ( 1 / 2 * c) Ejemplo 3: Teclado:

syms x y a = (x ^ 2 + 2 * x * y + y ^ 2) ^ 2 + 3 * x * y

Matlab:

a=

(x ^ 2 + 2 * x * y + y ^ 2) ^ 2 + 3 * x * y Teclado:

simple(a)

Matlab:

simplify: x^4 + 4 * x^3 * y + 6 * x^2 * y ^2 + 4 * x * y^3 + y^4 + 3 * x * y radsimp: x^4 + 4 * x^3 * y + 6 * x^2 * y^2 + 4 * x * y^3 + y^4 + 3 * x * y combine(trig): x^4 + 4 * x^3 * y + 6 * x^2 * y^2 + 4 * x * y^3 + y^4 + 3 * x * y factor: x^4 + 4 * x^3 * y + 6 * x^2 * y^2 + 4 * x * y^3 + y^4 + 3 * x * y expand: x^4 + 4 * x^3 * y + 6 * x^2 * y^2 + 4 * x * y^3 + y^4 + 3 * x * y combine: ( x^2+2*x*y+y^2) ^2+3*x*y convert(exp): ( x^2+2*x*y+y^2) ^2+3*x*y convert(sincos): ( x^2+2*x*y+y^2) ^2+3*x*y convert(tan): ( x^2+2*x*y+y^2) ^2+3*x*y

******ebook converter DEMO Watermarks*******

collect(x): x^4 + 4 * x^3 * y + 6 * x^2 * y^2 + ( 4 * y^3 + 3 * y ) * x + y^4 ans = ( x^2+2*x*y+y^2) ^2+3*x*y

Integrales Para realizar integrales, se debe utilizar la función int( ), la cual puede tomar varias entradas. int(s) es la integral indefinida de la ecuación ‘s’ con respecto a la variable literal definida por defecto por el Matlab. Si ‘s’ es una constante, la integral se muestra con respecto a 'x'. int(s,v) es la integral indefinida de ‘s’ con respecto a la variable ‘v’. ‘v’ debe ser una variable literal definida mediante sym o syms. int(s,a,b) es una integral definida de ‘s’ con respecto a la variable simbólica por defecto desde ‘a’ hasta ‘b’. ‘a’ y ‘b’ son escalares o variables literals. int(s,v,a,b) es la integral definida de ‘s’ con respecto a la variable ‘v’ desde ‘a’ hasta ‘b’. Ejemplos: Teclado:

syms x x1 alpha u t; A = [ cos( x * t ), sin( x * t ); - sin( x * t ), cos( x * t ) ]; int( 1 / ( 1 + x ^ 2 ) )

Matlab:

atan( x )

Teclado:

int( sin( alpha * u ) , alpha )

Matlab:

- cos( alpha * u ) / u

Teclado:

int( besselj( 1 , x ) , x )

Matlab:

- besselj( 0 , x )

Teclado:

int( x1 * log( 1 + x1 ) , 0 , 1 )

Matlab :

1/4

Teclado:

int( 4 * x * t , x , 2 , sin( t ) )

Matlab :

2 * sin( t ) ^ 2 * t – 8 * t

Teclado:

int( [ exp( t ) , exp( alpha * t ) ] )

******ebook converter DEMO Watermarks*******

Matlab :

[ exp( t ) , 1 / alpha * exp( alpha * t ) ]

Teclado:

int( A , t )

Matlab:

[ sin( x * t ) / x , - cos( x * t ) / x ] [ cos( x * t ) / x , sin( x * t ) / x ]

Derivadas diff( ) es la función que resuelve una derivada o derivada parcial. diff(x) entrega la derivada de una ecuación o matriz con respecto a una variable definida mediante sym o syms o a una variable por defecto del Matlab. diff(S,v) resuelve la derivada parcial de una ecuación o matriz definida como ‘S’ , con respecto a una variable simbólica definida como ‘v’. Ejemplo: Teclado:

syms x y A=2*x+3*x^2+x*y*3

Matlab:

A=

2 *x+ 3 *x^2 + 3 *x*y Teclado:

diff( A )

Matlab:

ans =

2+6*x+3*y Teclado:

diff( A , x )

Matlab:

ans =

2+6*x+3*y Teclado :

B=2*y

Matlab :

B=

2*y Teclado:

diff( B )

Matlab:

ans =

******ebook converter DEMO Watermarks*******

2 Teclado:

diff( A , y )

Matlab:

ans =

3*x

Resolución de ecuaciones Las matemáticas simbólicas del Matlab pueden servir para resolver ecuaciones mediante la función solve( ). solve( f ) resuelve una ecuación simbólica ‘f ’ despejando su variable simbólica. Esta función asume la ecuación f=0. [v1, v2, … ] = solve(f1, f2 …) resuelve el sistema de ecuaciones representado por las funciones ..., entregando los valores de las variables ‘[v] = solve( f , v ) despeja una variable de una ecuación entregando su solución o su representación con respecto a las demás variables de la misma ecuación. Ejemplo: Teclado:

syms x y eq1 = ‘x – 3 = 4’; eq2 = ' x ^ 2 – x – 6 = 0 '; eq3 = ' x ^ 2 + 2 * x + 4 = 0 '; eq4 = ' 3 * x + 2 * y – z = 10 '; eq5 = ' – x + 3 * y + 2 * z = 5 '; eq6 = ' x – y – z = – 1 '; solve( eq1 )

Matlab:

ans =

7 Teclado:

solve( eq2 )

Matlab: ans =

[ -2 ] ******ebook converter DEMO Watermarks*******

[3] Teclado:

solve( eq3 )

Matlab:

ans =

[ - 1 + i *3 ^( 1 / 2 ) ] [ - 1 – i *3 ^( 1 / 2 ) ] Teclado:

[ x , y , z ] = solve( eq4, eq5, eq6 )

Matlab:

x=

-2 y=

5 z=

-6 Teclado:

[ x ] = solve( eq6, ‘x’ )

Matlab:

x=

y+z- 1

Transformaciones Algunas de las aplicaciones que no son muy utilizadas pero que nos permiten ahorrar bastante tiempo en cálculos tediosos son las relacionadas con las transformaciones. Ellas están desarrolladas en el Matlab bajo las siguientes funciones: Transformaciones directas

Transformaciones inversas

Nombre de transformación

laplace( )

ilaplace( )

Transformada de Fourier

fourier( )

ifourier( )

Transformada de Laplace

ztrans( )

iztrans( )

Transformada Z

Las funciones a ser transformadas deberán ser colocadas entre los paréntesis. Está de más recalcar que las variables deberán estar previamente definidas ******ebook converter DEMO Watermarks*******

simbólicamente.

Toolboxes de control y señales Estas son herramientas del Matlab que cuentan con una serie de funciones que facilitarán el procesamiento de las señales y de los sistemas control. Explicar al detalle cada función de los toolboxes en cuestión llevaría mucho tiempo y es probable que se vuelva muy tedioso y complicado, así que es recomendable plantear una serie de casos diferentes para que en ellos se pueda entender y conocer el uso de las funciones más útiles. Para comenzar, debemos diferenciar dos señales, las analógicas de las digitales: 1.

Señal analógica:

x(t) = Acos(ωt + φ)

2.

Señal digital:

x(k) = Acos(ωT + φ) ω = 2πf T = Periodo de muestreo. k = Número de muestra. φ = Fase.

Si asignamos valores así: A = e-t ω = 2π

T = 0.01, podemos apreciar que las señales análoga y digital generadas serían:

******ebook converter DEMO Watermarks*******

Para plotear la figura anterior, usamos un archivo-M, al que llamamos frec1.m y que contiene las siguientes líneas: clear all close all clc w = 2*pi; phi = 3*pi/2; k = 1; for t = 0:0.01:3 A = 1*exp(-t); tt(k,1) = t; f(k,1) = A*cos(w*t+phi); k = k + 1; end k = 1; for t = 0:0.1:3 A = 1*exp(-t); tt1(k,1) = t; ******ebook converter DEMO Watermarks*******

f1(k,1) = A*cos(w*t+phi); k = k + 1; end figure(1) subplot(211) plot(tt,f) xlabel('t,s') ylabel('f(t)') title('Señal Analogica') grid on subplot(212) plot(tt1,f1,'o') xlabel('kT,s') ylabel('f(kT)') title('Señal Digital') grid on El cálculo anterior fue diseñado solamente para generar una función senoidal y tomar unas muestras de ella. Ahora, sí generaremos una señal con características específicas. Por ejemplo, generaremos una señal seno de frecuencia 20 Hz con una frecuencia de muestreo igual a 128 Hz y tomaremos 64 muestras. Esta señal la conseguimos con el siguiente archivo-M llamado frec2.m: clear all close all clc f = 20; w = 2*pi*f; fm = 128; T = 1/fm; N = 64; k = 0:N-1; x = sin(w*k*T); figure(1) plot(k*T,x) xlabel('kT (seg)') ylabel('x(kT)') title('Señal Seno de 20 Hz') grid on ******ebook converter DEMO Watermarks*******

Para complementar el análisis, debemos desarrollarlo en el dominio de las frecuencias, es decir, debemos aplicarle la transformada rápida de Fourier, usando la función fft( ) frec2 close X = fft(x); magX = abs(X); figure(1) subplot(211) plot(k*T,x) xlabel('kT (seg)') ylabel('x(kT)') title('Señal Seno de 20 Hz') grid on subplot(212) stem(k(1:N/2),magX(1:N/2)) title('Magnitud de X(k)') xlabel('k') ******ebook converter DEMO Watermarks*******

ylabel('|X(k)|') gris

y si las frecuencias no se quieren presentar en función de k, sino de la frecuencia debemos hacer el siguiente archivo-M, llamado frec4.m: frec3 close hertz = k*(1/(N*T)); figure(1) subplot(211) plot(k*T,x) xlabel('kT (seg)') ylabel('x(kT)') title('Señal Seno de 20 Hz') grid on ******ebook converter DEMO Watermarks*******

subplot(212) stem(hertz(1:N/2),magX(1:N/2)) title('Magnitud de X(k)') xlabel('Hz') ylabel('|X(k)|') grid

Supongamos que la frecuencia del senoide hubiera sido 19 Hz, en lugar de 20 Hz. Dado el incremento en Hz entre valores de la muestra Xk es de 2 Hz, y como ahora la frecuencia es 19 Hz, se debería tener un k = 9.5, para conseguir la frecuencia en cuestión. Sin embargo, los valores de k son enteros, así que no existe el valor X9.5 y por eso aparecerán frecuencias grandes en 18 Hz y 20 Hz, tal como se comprueba con el siguiente programa llamado frec5.m: clear all close all clc f = 19; ******ebook converter DEMO Watermarks*******

w = 2*pi*f; fm = 128; T = 1/fm; N = 64; k = 0:N-1; x = sin(w*k*T); X = fft(x); magX = abs(X); hertz = k*(1/(N*T)); figure(1) subplot(211) plot(k*T,x) xlabel('kT (seg)') ylabel('x(kT)') title('Señal Seno de 19 Hz') grid on subplot(212) stem(hertz(1:N/2),magX(1:N/2)) title('Magnitud de X(k)') xlabel('Hz') ylabel('|X(k)|') grid

******ebook converter DEMO Watermarks*******

Funciones de transferencia de filtros analógicos: Debemos presentar en una figura, las magnitudes correspondientes a las frecuencias de los siguientes filtros:

******ebook converter DEMO Watermarks*******

Esto se consigue con frec6.m: close all clear all clc w1 = 0:0.05:5; num1 = [0.5279]; den1 = [1 1.0275 0.5279]; H1s = freqs(num1,den1,w1); w2 = 0:0.001:0.3; num2 = [1 0 0]; den2 = [1 0.1117 0.0062]; H2s = freqs(num2,den2,w2); w3 = 0:0.01:10; num3 = [1.05 0]; ******ebook converter DEMO Watermarks*******

den3 = [1 1.05 0.447]; H3s = freqs(num3,den3,w3); w4 = 0:0.005:5; num4 = [1 0 2.2359]; den4 = [1 2.3511 2.2359]; H4s = freqs(num4,den4,w4); figure(1) subplot(221) plot(w1,abs(H1s)) title('Filtro H1(s)') xlabel('w (rad/seg)') ylabel('Amplitud') grid subplot(222) plot(w2,abs(H2s)) title('Filtro H2(s)') xlabel('w (rad/seg)') ylabel('Amplitud') grid subplot(223) plot(w3,abs(H3s)) title('Filtro H3(s)') xlabel('w (rad/seg)') ylabel('Amplitud') grid subplot(224) plot(w4,abs(H4s)) title('Filtro H4(s)') xlabel('w (rad/seg)') ylabel('Amplitud') grid

******ebook converter DEMO Watermarks*******

Bibliografía

ARNÁEZ, Enrique, Enfoque práctico de control moderno con aplicaciones en Matlab, Lima: Fondo Editorial de la UPC, 2014. CARELLI, Ricardo, Dinámica y control de manipuladores robóticos, separatas del Curso de Robótica de la Maestría de Ingeniería de Control y Automatización de la Pontificia Universidad Católica del Perú, Lima: Pontificia Universidad Católica del Perú, 1999. CARNEGIE MELLON y THE UNIVERSITY OF MICHIGAN, Control Tutorials for MATLAB. Página web: www.engin.umich.edu/group/ctm. 1998. CORKE, Peter, Robotics, Vision and Control, Berlín: Springer-Verlag, 2011. ETTER, D., Solución de problemas de ingeniería con Matlab, segunda edición, México D. F.: Prentice Hall Inc., 1998. KHALIL, Hassan, Nonlinear Systems, segunda edición, Pearson Education, 1996. KUO, Benjamín, Sistemas de control automático, sétima edición, México D. F.: Prentice Hall Inc., 1997. LEWIS, F., ABDALLAH, C. y DAWSON, D., Control of Robot Manipulators, Prentice Hall Professional Technical Reference, 1993. OGATA, Katsuhiko, Problemas de ingeniería de control utilizando Matlab, México D. F.: Prentice Hall Inc., 1999. ROSS, Timothy, Fuzzy Logic with Engineering Applications, John Wiley & Sons, Inc., 1993. SCIAVICCO, L. y SICILIANO, B., Modeling and Control of Robot Manipulators, Nueva York: Springer-Verlag, LCC., 1996. SPONG, M. y VIDYASAGAR, M. Robot Dynamics and Control. John Wiley & Sons, Inc., 1989. THE MATHWORKS INC., Symbolic Math Toolbox: User’s Guide, Mathworks Inc., ******ebook converter DEMO Watermarks*******

2002.

******ebook converter DEMO Watermarks*******

Recientes publicaciones de Editorial UPC 2015 Carrera de Diseño y Gestión en Moda Técnicas de patronaje Tomo II - Hombre Herz Ghersi, Jeannette Apuntes de Contabilidad financiera. Segunda edición Aguirre, Mauricio; Maldonado, Claudia; Peña, Cinthia, y Rider, Carlos (comps). Cómo leer y escribir en la universidad. Prácticas letradas exitosas. Segunda edición Aguirre, Mauricio; Maldonado, Claudia; Peña, Cinthia, y Rider, Carlos (comps). Cómo leer y escribir en la universidad. Cuaderno de trabajo. Segunda edición 2014 Olins, Wally Brand New. La esencia de las futuras marcas Velásquez Aguilar, Luis Oscar Niños hospitalizados. Guía de intervención psicológica en pacientes infantiles Peña Larrea, Cinthia (Compiladora) Más allá de las palabras. Una propuesta de análisis crítico del discurso Soria Aguilar, Alfredo F. y Osterling Letts, Madeleine Contratos modernos. Elementos esenciales y reglas aplicables para acuerdos comerciales Rodríguez Félix, César y Mauricio Alza, Saby Nutrición oncológica. Guía de alimentación para vivir mejor Chu Rubio, Manuel y Agüero Olivos, Carlos Matemática para las decisiones financieras Romero Tapia, José Fernando Integrando mercados. MILA, motor de la Alianza del Futuro Arrascue Córdova, Lily Física mecánica. Nivelación para estudiantes universitarios ******ebook converter DEMO Watermarks*******

Arnáez Braschi, Enrique Enfoque práctico del control moderno. Con aplicaciones en Matlab Sardón Taboada, José Luis (editor) Revista de Economía y Derecho Verano de 2014, vol. 11, nro. 41 Valdivia Pareja, Álvaro Suicidología. Prevención, tratamiento psicológico e investigación de procesos suicidas Egoavil Vera, Juan Raúl Fundamentos de matemática. Introducción al nivel universitario Chu Rubio, Manuel Finanzas para no financieros. Cuarta edición Parodi Revoredo, Daniel Conflicto y reconciliación. El litigio del Perú contra Chile en la Corte de La Haya (2008-2014) Aguirre, Mauricio; Maldonado, Claudia; Peña, Cinthia, y Rider, Carlos (comps). Cómo leer y escribir en la universidad. Prácticas letradas exitosas Aguirre, Mauricio; Maldonado, Claudia; Peña, Cinthia, y Rider, Carlos (comps). Cómo leer y escribir en la universidad. Cuaderno de trabajo Encuentre más publicaciones de Editorial UPC, en versión impresa y digital, ingresando a: www.upc.edu.pe/editorialupc Visite la página de Facebook Editorial UPC: www.facebook.com/editorialupc

******ebook converter DEMO Watermarks*******

1 2 3

Los textos en cursiva se refieren a las líneas de programación en Matlab. El acento colocado sobre las letras que representan las matrices del modelo señala que son matrices aproximadas. Los textos en cursiva se refieren a las líneas de programación en Matlab.

******ebook converter DEMO Watermarks*******