Full text
Equation Chapter 1 Section 1 Trabajo Fin de Máster Máster en Ingeniería Electrónica, Robótica y Automática Control de un robot manipulador bioinspirado Autor: Inés María Lara Sicilia Tutor: José Ángel Acosta Rodríguez Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2020
iii Trabajo Fin de Máster Máster en Ingeniería Electrónica, Robótica y Automática Control de un robot manipulador bioinspirado Autor: Inés María Lara Sicilia Tutor: José Ángel Acosta Rodríguez Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2020
v Trabajo Fin de Máster: Control de un robot manipulador bioinspirado Autor: Inés María Lara Sicilia Tutor: José Ángel Acosta Rodríguez El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2020 El Secretario del Tribunal
vii Agradecimientos Quiero agradecer a José Ángel Acosta, mi tutor en este proyecto, su ayuda, su tiempo y su dedicación. Gracias por darme la oportunidad de participar en este proyecto, tan novedoso e interesante como complejo. Ha sido un reto para mí del que me llevo grandes lecciones aprendidas, tanto a nivel académico como a nivel personal. También quiero dar las gracias a Daniel Feliu-Talegón, por guiarme con sus consejos y su experiencia. No podría haber llegado hasta aquí sin mi familia, mi madre y mi padre. Ellos son los pilares fundamentales de mi vida. Me han enseñado a vivir la vida con ilusión y con confianza, sin olvidar la importancia del esfuerzo y la constancia. Gracias a ellos he podido llegar a ser la mujer que soy hoy. Y hago mención especial a mi pareja, Alberto, que ha sido mi mayor apoyo en estos tiempos tan duros que nos ha tocado vivir. Tengo mucho que agradecerle: su cariño, su comprensión y su enorme apoyo durante este proyecto y en todo lo que me propongo en la vida.
ix Resumen El contexto en el que se enmarca este proyecto consiste en la creación de un sistema robótico aéreo con una estructura inspirada en la morfología del cuerpo de los pájaros. Alejado de los actuales quad-rotors, se busca realizar un robot volador con alas, que puede aportar ventajas en cuanto al consumo de energía. Muchas especies de aves tienen la capacidad de planear durante el vuelo. Esto significa que el animal apenas tiene que realizar esfuerzo para desplazarse, sino que aprovecha la energía que le aporta el viento. Aplicado al sistema robótico, supone una gran ventaja ya que se reduce el consumo de energía durante el vuelo, por lo que se aumentaría notablemente el tiempo de operación en comparación con los clásicos quad-rotors. Para ir más allá, se pretende dotar a este sistema de la capacidad de realizar diversas tareas mediante la incorporación de manipuladores. De hecho, en la naturaleza, se puede observar cómo los pájaros utilizan su propio pico como manipulador, para acceder a la comida o mover objetos. El proyecto que se recoge en este documento, consiste en la implementación de técnicas de control que se aplican sobre el sistema robótico cuando este se encuentra parado y apoyado en una superficie, y procede a realizar tareas de manipulación con el pico. Se estudiará la capacidad del sistema de mantener el equilibrio del cuerpo del robot mientras el efector final –o pico – ejecuta una trayectoria. Para validar el control y observar el comportamiento del sistema como si se tratase de un pájaro, se ha diseñado un modelo de robot en un entorno de simulación conocido como Gazebo, que es operado a través de ROS.
xvii ÍNDICE DE FIGURAS Figura 1-1. Esquema comparativo de los eslabones que conforman el robot 1 Figura 2-1. Esquema comparativo de los eslabones que conforman el robot simplificado 3 Figura 2-2. Esquema de los sistemas de referencia del robot 4 Figura 3-1. Esquema de los puntos de equilibrio del robot 10 Figura 3-2. Diagrama de bloques del modelo ideal en Simulink 12 Figura 3-3. Diagrama de bloques del modelo linealizado en Simulink 12 Figura 3-4 Comparación modelos. Punto de equilibrio (0,0,0) con condiciones iniciales (0.001,0,0). En rosa, modelo ideal; en azul, modelo linealizado. 12 Figura 3-5. Comparación modelos. Punto de equilibrio (π,0,0) con condiciones iniciales (3.2416,0,0). En rosa, modelo ideal; en azul, modelo linealizado. 13 Figura 3-6. Comparación modelos en detalle. Punto de equilibrio (π,0,0) con condiciones iniciales (3.2416,0,0). En rosa, modelo ideal; en azul, modelo linealizado. 13 Figura 4-1. Captura de los eslabones del robot en Gazebo. 18 Figura 4-2. Captura del modelo de simulación en Gazebo 18 Figura 5-1. Diagrama de bloques del controlador LQR en Simulink. 22 Figura 5-2. Diagrama de bloques del bucle de control LQR en Simulink 22 Figura 5-3. Control LQR. Modelo Simulink. Punto de equilibrio (0,0,0), con desviación q2=0.1745rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 23 Figura 5-4. Control LQR. Modelo Simulink. Punto de equilibrio (0,0,0), con desviación q3=0.1745rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 23 Figura 5-5. Control LQR. Modelo Simulink. Punto de equilibrio (π,0,0), con desviación q2=0.1745rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 24 Figura 5-6. Control LQR. Modelo Simulink. Punto de equilibrio (π,0,0), con desviación q3=0.1745rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 24 Figura 5-7. Diagrama de bloques del control LQR en Simulink-Gazebo 25 Figura 5-8. Bloque de suscripción a ROS en Simulink 25 Figura 5-9. Bloques de publicación de Simulink a ROS 26 Figura 5-10. Diagrama de bloques de control LQR Gazebo-Simulink 26 Figura 5-11. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación q2=0.085rad. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación. 27 Figura 5-12. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación q2=0.174rad. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación. 28 Figura 5-13. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación q3=0.174rad. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación. 29 Figura 5-14. Diagrama de bloques del control LQR en ROS-Gazebo. 30
Figura 5-15. Control LQR. Modelo Gazebo – ROS. Resultados para rotación en q2=0.085rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 31 Figura 5-16. Control LQR. Modelo Gazebo - ROS. Resultados para rotación en q2=0.175rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 31 Figura 5-17. Control LQR. Modelo Gazebo - ROS. Resultados para rotación en q3=0.175rad. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. 32 Figura 6-1. Esquema del robot en Gazebo avanzando de una posición a otra. 33 Figura 6-2. Bucles de control 37 Figura 6-3. Diagrama de bloques del control con seguimiento de trayectorias en ROS-Gazebo. 38 Figura 6-4. Resultado simulación para q3*=0.35rad desde q3=0 39 Figura 6-5. Resultado simulación para q3*=1.22rad desde q3=0 39 Figura 6-6. Resultado simulación para q3*=1.74rad desde q3=0 40 Figura 6-7. Resultado simulación para q3*=0 desde q3=1.74rad 40 Figura 6-8. Resultado simulación para seguimiento de una trayectoria. Posición de las articulaciones 41 Figura 6-9. Resultado simulación para seguimiento de una trayectoria. Par de actuación 42 Figura 6-10. Captura del robot en Gazebo con la posición inicial para la simulación 42 Figura 6-11. Resultado simulación para seguimiento de una trayectoria con posición inicial distinta de cero. Posición de las articulaciones 43 Figura 6-12. Resultado simulación para seguimiento de una trayectoria con posición inicial distinta de cero. Par de actuación 43 Figura 7-1. Modelo de simulación en Gazebo. 45 Figura 7-2. Simulación del seguimiento (línea continua q3) de una trayectoria (línea discontinua con al referencia q3*). Se superponen imágenes de las posturas más significativas durante la trayectoria. 46
xix
Notación ∗ Valor de referencia Valor en el equilibrio ∇ Jacobiano del vector v GDL Grados de libertad
1 INTRODUCCIÓN En el contexto del proyecto GRIFFIN perteneciente a la Universidad de Sevilla, se desarrolla este Trabajo Fin de Máster cuyo objetivo es desarrollar un sistema robótico aéreo con una estructura inspirada en la morfología del cuerpo de los pájaros. Es decir, incorporará unas alas abatibles con las que será capaz de realizar vuelos y planear; y tendrá unas patas sobre las que apoyarse en diversas superficies. El trabajo que se presenta a continuación se ha centrado en el desarrollo de una estrategia de control sobre el modelo de las mencionadas patas para mantener el equilibrio del robot al finalizar la fase de vuelo, es decir, mientras está apoyado. Además, dado que se pretende dotar al robot de la capacidad de realizar tareas de manipulación, se considerará el pico del robot como el efector final con el que realizar dichas tareas. Por tanto, en este documento se detalla también la técnica de control que se ha aplicado para ejecutar trayectorias con el efector final mientras se mantiene el equilibrio mencionado. La particularidad del sistema inspirado en las patas de un pájaro que se va a desarrollar es que pertenecen a un sistema sub-actuado. Es decir, que el número de actuadores es inferior al número de grados de libertad. Esto sucede porque la primera articulación de apoyo, o garra, no incluye ningún actuador. Por tanto, se trata de una articulación pasiva cuyo comportamiento se verá directamente afectado por el movimiento del resto de articulaciones. El esquema del robot a desarrollar se muestra de forma comparativa en la Figura 1-1. Se pueden identificar dos subsistemas dentro del robot. El primer subsistema, que comienza en la garra del pájaro, es el formado por la primera y segunda articulación, encargadas de mantener en equilibrio el cuerpo del robot. El segundo subsistema está constituido por el resto de articulaciones activas que pueden ser comandadas para realizar trayectorias. En el ejemplo de la figura, se marca el pico del pájaro como el efector final o manipulador. No obstante, podrían añadirse más eslabones al robot para incluir, por ejemplo, brazos manipuladores auxiliares. Por ello, tanto el modelado como el control que se presentan en este proyecto podrán ser escalados para más grados de libertad. Figura 1-1. Esquema comparativo de los eslabones que conforman el robot
Introducción 2 Todas las articulaciones que conforman el robot son de rotación. Por tanto, se abarcará el problema de control del equilibrio del robot en dos dimensiones. Se considera que el sistema real estará formado por dos sistemas robóticos iguales, de forma que se garantiza la estabilidad en la tercera dimensión.
3 ANÁLISIS CINEMÁTICO Y DINÁMICO En este apartado se desarrolla el modelado del robot tanto desde el punto de vista cinemático como desde el punto de vista dinámico. Se considera la primera articulación como la equivalente a la garra del pájaro, mientras que el efector final del robot es el pico. El resto de articulaciones, definen el comportamiento del cuerpo del pájaro. Para facilitar el modelado del sistema, el cuerpo puede ser aproximado por un solo eslabón, del cual se tiene en cuenta su masa asociada. Por tanto, de ahora en adelante en este proyecto, se simplificará el robot a un sistema de 3GDL como el que se muestra en la Figura 2-1. Figura 2-1. Esquema comparativo de los eslabones que conforman el robot simplificado 2.1 Modelo Cinemático Tal y como se describe en Robótica: manipuladores y robots móviles [1], la cinemática consiste en el estudio del movimiento sin tener en cuenta las fuerzas que lo producen. Para ello, se debe resolver tanto el problema puramente geométrico del posicionamiento desde el punto de vista estático como las variaciones que provoca la velocidad en el valor de las posiciones y orientaciones de los eslabones del robot. Por su parte, resolver el problema geométrico consiste en encontrar las ecuaciones que describen la relación entre las variables asociadas a las articulaciones (en este caso, la posición) y un sistema de referencia solidario al robot que resulte de interés. Dado que el robot que ocupa este proyecto es un robot manipulador, el sistema de interés es el efector final del robot. Tal y como se puede ver en la Figura 2-1, este corresponde con el pico del pájaro. En este apartado se explica cómo, resolviendo los sistemas de referencia que definen el robot, se han obtenido las ecuaciones del modelo cinemático directo, con las que se puede conocer la posición y orientación del
Linealización del modelo 10 Si se introducen unos valores de par nulos como entrada al sistema, es decir: (,)=(0,0) en (14), se obtienen un total de 8 puntos de equilibrio. No obstante, algunos de los puntos obtenidos no son físicamente posibles, ya que implican que el robot colisione consigo mismo. Como resultado, los puntos de equilibrio válidos obtenidos son: ,,=(0,0,0) ,,=(,0,0) Las dos configuraciones de equilibrio obtenidas son con el robot completamente en vertical. una en el eje Y positivo (Figura 3-1 izquierda); y otra en el eje Y negativo (Figura 3-1 derecha) Figura 3-1. Esquema de los puntos de equilibrio del robot En los siguientes apartados se detalla cómo se ha linealizado el modelo a partir de estos puntos de equilibrio obtenidos. 3.2 Representación en variables de estado En este subapartado se extraerá el valor de las matrices que permiten definir el modelo dinámico del robot en espacio de estados. Responden a la siguiente fórmula: = + (15) Donde y son las matrices que definen el modelo, es el vector de entradas al sistema (en este caso, el par de las articulaciones), y es el vector de estados, que se definen como: =(,) =(,) Es decir: = ( , , ) = ( , , ) → = = ( , , ) (16)
11 11 Control de un robot manipulador bioinspirado El modelo espacio de estados (15) queda descrito entonces como: =0 1 + 0 El estado del robot está directamente relacionado con . Sustituyendo en la ecuación inicial del modelo dinámico del robot (9): = = ( − − + ) (17) Dado que las matrices del modelo dinámico no son lineales, no se puede obtener la expresión para las matrices y del modelo en espacio de estados del robot directamente desde . Es necesario aplicar una linealización en torno a un punto de equilibrio del robot. Entonces, la función a linealizar se describe como: ( , ) = ( − − + ) (18) Se denota un valor de equilibrio para el vector de estados del sistema, así como un valor de equilibrio para el vector de entradas como: = (,,,,,) =(,) Sustituyendo los valores para los dos puntos de equilibrio calculados: =(0,0,0,0,0,0) =(,0,0,0,0,0) =(0,0) Aplicando el método de linealización de derivadas parciales, se puede resolver el modelo con la siguiente ecuación matemática: ( , ) ≅ ( , ) + ( − ) + ( − ) + ( − ) (19) Haciendo uso de MATLAB se obtienen las ecuaciones para ambos puntos de equilibrio. No se incluyen en este documento ya que su expresión es demasiado extensa y no resulta clara ni legible. Para comprobar que los valores de linealización son correctos, en MATLAB, se hace una llamada a la función linmod(), a la que se le introduce el modelo ideal obtenido a partir de la ecuación de dinámica del robot. Se verifica que el resultado corresponde a los valores obtenidos analíticamente, por lo que se procede a realizar pruebas con las que observar el comportamiento del modelo en Simulink. 3.3 Implementación en Simulink En este subapartado se explican las simulaciones que se han ejecutado para observar el comportamiento de los modelos. Se ha hecho uso del software MATLAB Simulink. Para verificar que el modelo aproximado mediante linealización es válido, se hacen comparaciones con respecto al modelo ideal, obtenido directamente a partir de la ecuación de dinámica (9). Ambos modelos toman como entrada los valores del par aplicado a las articulaciones y se observan las posiciones y velocidades que estas adquieren. El modelo ideal, por su parte, se implementa en una función de MATLAB en la que se pueden describir las matrices del modelo, tal y como se puede ver en la Figura 3-2.
Linealización del modelo 12 Por otro lado, el modelo linealizado se construye a partir del bloque state-space disponible en la biblioteca de Simulink (ver Figura 3-3). Figura 3-2. Diagrama de bloques del modelo ideal en Simulink Figura 3-3. Diagrama de bloques del modelo linealizado en Simulink Se ejecutan varias simulaciones aplicando diferentes condiciones iniciales, para realizar comparaciones válidas en el comportamiento de ambos modelos. En primer lugar, se verifica que, si se especifica un punto de equilibrio como condición inicial, el sistema permanece en ese punto. Esta premisa se cumple tanto para el modelo ideal como para el modelo linealizado. En segundo lugar, se comprueba que, si se especifica una condición inicial distinta al punto de equilibrio, ante la inexistencia de un control, el robot caerá por el efecto de la gravedad, oscilando como un péndulo sobre la primera articulación, en torno al punto de equilibrio más bajo =(,0,0). En la Figura 3-4, se muestran los resultados comparativos de las posiciones de las articulaciones en ambos modelos, para una simulación con condiciones iniciales cercanas al primer punto de equilibrio: = (0.001,0,0). Figura 3-4. Comparación modelos. Punto de equilibrio (0,0,0) con condiciones iniciales (0.001,0,0). En rosa, modelo ideal; en azul, modelo linealizado.
13 13 Control de un robot manipulador bioinspirado En la Figura 3-5, se muestran los resultados comparativos de las posiciones de las articulaciones en ambos modelos, para una simulación con condiciones iniciales cercanas al segundo punto de equilibrio: = (3.2416,0,0). Figura 3-5. Comparación modelos. Punto de equilibrio (π,0,0) con condiciones iniciales (3.2416,0,0). En rosa, modelo ideal; en azul, modelo linealizado. En la gráfica de la Figura 3-5, se puede observar que los resultados son tan parecidos que las gráficas son coincidentes. No obstante, a medida que avanza el tiempo de simulación, se aprecia una pequeña desviación que se muestran en detalle en la Figura 3-6: Figura 3-6. Comparación modelos en detalle. Punto de equilibrio (π,0,0) con condiciones iniciales (3.2416,0,0). En rosa, modelo ideal; en azul, modelo linealizado. Como resultado, tanto el modelo ideal como el modelo linealizado se comportan como se había enunciado en las anteriores premisas. Por tanto, se considera que el modelo linealizado representa una aproximación válida del sistema sobre la que diseñar un controlador. No obstante, aunque en este punto se tiene un modelo válido sobre el que comprobar los efectos de control, este modelo no es visualmente atractivo, ya que hay que interpretar gráficos para conocer el estado del robot durante el proceso. En el siguiente apartado se explicará cómo se ha desarrollado un modelo del robot para un entorno de simulación virtual en el que se puede crear el robot en 3D con la forma semejante a un pájaro; y ejecutar las simulaciones para comprobar los resultados de forma visual.
15 MODELADO PARA SIMULACIÓN En este apartado se describe cómo se ha desarrollado un modelo de robot 3D, basado en el cuerpo de un pájaro, que se ha utilizado para ejecutar las simulaciones y comprobar los resultados de forma más visual que mediante la interpretación de gráficas. Para ello, se ha utilizado el entorno de simulación Gazebo y se ha llevado a cabo la comunicación con los actuadores virtuales del robot a través de ROS. 4.1 Introducción a ROS y Gazebo ROS1 (Robot Operating System) es un framework, es decir, se ejecuta a nivel de la capa de comunicación, creado para el desarrollo de aplicaciones y software general para robots. Provee de librerías, controladores de dispositivos, entornos de visualización, herramientas de abstracción y comunicación con hardware, administración de paquetes y más, que los desarrolladores pueden integrar y aplicar en robots. Tiene la capacidad de ejecutar software complejo, cuya ventaja principal, motivo por el que se ha elegido, es cómo se comunica, de forma que no es necesario tener conocimiento completo del funcionamiento del hardware para incluirlo en el sistema. En este proyecto en el que se plantea un modelo de simulación de un prototipo de robot, basta con conocer algunas características de sus actuadores para comandarlo y ejecutar un control sobre ellos. Además, al ser un sistema libre, formado en su mayor parte por paquetes desarrollados por la comunidad, está en constante desarrollo y sus posibilidades crecen cada día. Por su parte, Gazebo2 es un entorno de simulación muy potente que permite diseñar robots, probar rápidamente algoritmos y hacer pruebas bajo escenarios realistas. Cuenta con una máquina capaz de hacer cálculos físicos sobre las magnitudes reales que definen la dinámica de un sistema (por ejemplo, la gravedad). Por esto mismo, dado que el robot que ocupa este proyecto es un robot equilibrista, que se ve afectado por su propio peso, inercias y fricciones, se ha elegido este entorno. Además, Gazebo está preparado para comunicarse a través de ROS, haciendo así que los actuadores que se incluyen en el robot puedan ser programados por los controladores que el desarrollador haya creado. En ROS existen los denominados topics, a los que distintas unidades de software (rosnodes o nodos de ROS) pueden suscribirse para obtener la información que se envíen a través de ellos. De esta forma, el sistema de control que se ha desarrollado para este proyecto, ejecutado en Simulink, enviará como mensajes a través de esos topics los comandos de esfuerzo (par) a las articulaciones activas del robot. Por su parte, los controladores internos de los actuadores generarán el movimiento en los eslabones del robot simulado, pudiendo ser visualizados a través de Gazebo. 1 https://www.ros.org/ 2 http://gazebosim.org/
Modelado para simulación 16 Por último, dado que el control que se implementará se hará en bucle cerrado, se aprovecha también el simulador para obtener la lectura de las posiciones del robot en cada instante. Gazebo publica la información de la posición y velocidad actual de las articulaciones del robot a través de otro tópico de ROS, que será recogida directamente por el controlador de Simulink, completando así el bucle de control. 4.2 Sistema operativo y Software Aunque recientemente se ha lanzado una versión oficial de ROS para Windows, en sus inicios fue diseñado orientado a UNIX. Por tanto, se utilizará un sistema operativo basado en Linux para llevar a cabo las simulaciones a través de ROS y Gazebo. ROS se ha adaptado de forma que existe una distribución para cada versión del S.O. La lista de software con la que se ha desarrollado este proyecto es la siguiente: - Ubuntu 20.04 - ROS Noetic - Gazebo 10 - MATLAB R2018b No obstante, todo el proyecto está preparado para ser compatible con versiones anteriores de software si es necesario. 4.3 Descripción del robot en URDF Para describir un robot en Gazebo se utiliza el formato URDF (Unified Robot Description Format), que es una especificación XML para describir un robot. Este tipo de formato permite indicar los eslabones (links) que forman el robot y las articulaciones (joints) que los relacionan. A su vez, eslabones y articulaciones son descritos según su aspecto, ya sean formas primitivas, como cilindros o cubos, o formas más complejas; y sus magnitudes físicas, como masa, longitud e inercias. Las articulaciones, además, permiten describir las características de los actuadores que incorporan, así como de sus controladores. Tal y como se describió en el apartado 2.2.2, se forma el robot con los datos especificados para que sea lo más fiel posible a un prototipo real. En el siguiente código se muestran las propiedades físicas de los eslabones y articulaciones que definen el robot. <!-- Geometrical properties --> <xacro:property name="link_radius" value="0.005"/> <xacro:property name="joint_radius" value="0.01"/> <xacro:property name="joint_length" value="0.01"/> <xacro:property name="motor1_mass" value="0.00"/> <xacro:property name="motor2_mass" value="0.07"/> <xacro:property name="motor3_mass" value="0.025"/> <xacro:property name="equival_mass" value="0.03"/> Por su parte, cada eslabón está definido por sus características visual, colisión (ambas son descritas como cilindros) e inercia:
17 17 Control de un robot manipulador bioinspirado <link name="${name}"> <visual> <geometry> <cylinder length="${l_length}" radius="${l_radius}"/> </geometry> <xacro:insert_block name="l_origin" /> </visual> <collision> <geometry> <cylinder length="${l_length}" radius="${l_radius}"/> </geometry> <xacro:insert_block name="l_origin" /> </collision> <inertial> <mass value="${l_mass}" /> <xacro:insert_block name="l_origin" /> <inertia ixx="${1/12*l_mass*(3*l_radius*l_radius+l_length*l_length)}" ixy="0.0" ixz="0.0" iyy="${1/12*l_mass*(3*l_radius*l_radius+l_length*l_length)}" iyz="0.0" izz="${0.5 * l_mass * l_radius * l_radius}" /> </inertial> </link> Todas las articulaciones que definen el robot son de rotación. Para cada una de ellas se especifican los dos eslabones que conecta. También es muy importante ajustar sus límites físicos, de posición, velocidad y par. Si las articulaciones incluyen actuador, se añade el tipo de transmisión hardware que incorporan. Como se ha visto en apartados anteriores, los valores de entrada del robot son el par ejercido en las articulaciones. Por tanto, se incluye la interfaz de hardware de esfuerzos: <joint name="${name}" type="revolute"> <parent link="${parent}"/> <child link="${child}"/> <axis xyz="0 -1 0"/> <origin xyz="0 0 ${z}" rpy="0 0 0"/> <limit effort="2.0" velocity="1.0" lower="${-PI}" upper="${PI}"/> </joint> <transmission name="${name}_transmission"> <type>transmission_interface/SimpleTransmission</type> <joint name="${name}"> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> </joint> <actuator name="${name}_actuator"> <mechanicalReduction>100</mechanicalReduction> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> </actuator> </transmission> Cuando se ejecuta el modelo que se ha descrito, en Gazebo se obtiene el esquema que conformará el cuerpo del pájaro, como se puede ver en la Figura 4-1.
Modelado para simulación 18 Figura 4-1. Captura de los eslabones del robot en Gazebo. No obstante, para hacer aún más atractiva la simulación, se ha optado por sustituir el campo “visual” del eslabón superior por un modelo 3D de un pájaro. Nótese que, a pesar de modificar el aspecto del eslabón, no se ha modificado el campo “colisión”. Por tanto, en términos físicos, el eslabón continúa actuando como el cilindro descrito anteriormente. <visual> <geometry> <mesh filename="model://mesh/bird.dae"/> </geometry> </visual> Al introducir el modelo 3D del pájaro se obtiene el modelo de simulación como el que se muestra en la Figura 4-2. Figura 4-2. Captura del modelo de simulación en Gazebo
19 19 Control de un robot manipulador bioinspirado 4.4 Controladores de ROS Con la descripción URDF completa explicada en el apartado anterior, se tiene un modelo de robot que tanto visualmente como geométricamente responde al modelo que se ha estudiado de forma analítica en anteriores apartados. No obstante, para poder ejecutar las simulaciones, hay que permitir que las articulaciones reciban el valor de esfuerzo o par aplicado con el que aplicarle movimiento al robot. Para ello, se añade el plugin de ROS con los controladores que harán que se puedan enviar los pares a las articulaciones desde Simulink al robot a través de topics de ROS: <gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/robot</robotNamespace> </plugin> </gazebo> Con este plugin, cada una de las articulaciones activas del robot contará con un controlador interno, el cual se encarga de llevarla a una posición concreta en función del par que recibe como referencia. Se hicieron varias simulaciones para ajustar el valor del PID de este controlador interno y optimizar así el funcionamiento del robot completo. Tras finalizar la configuración del robot se puede ejecutar el sistema. Durante la simulación, estarán disponibles los siguientes topics con los que enviar comandos a las articulaciones: /robot/joint2_effort_controller/command /robot/joint3_effort_controller/command Como se comentó anteriormente, Simulink necesita recibir la información del estado de las articulaciones del robot. Por su parte, en Gazebo se ejecuta un plugin cuyos sensores ofrecen esta información en el siguiente tópico de ROS: /robot/joint_states De esta forma, el modelo de simulación 3D en Gazebo queda preparado para ser comandado a través de otro software externo. En los próximos apartados se explica cómo se ha desarrollado el control en Simulink que se aplica sobre este modelo.
Control del equilibrio 26 En segundo lugar, se incluye un bloque de publicación (Publish) para cada articulación activa del robot. Tal y como se vio en la Figura 5-7, son dos topics de ROS sobre los que se van a publicar. Al contrario que el suscriptor, que requiere un bus selector para extraer la información, hay que crear un bus a partir del valor de par () y adaptarlo al tipo de mensaje del tópico: std_msgs/Float644. También se añade el bloque Enable que estará asociado al flag que se ha comentado en el suscriptor para que solo se publique si se garantiza que la comunicación está activa y se va a poder recibir la información por parte del robot. El esquema de publicación es el que se muestra en la Figura 5-9. Figura 5-9. Bloques de publicación de Simulink a ROS Finalmente, se agrupan los bloques de suscripción y publicación, y se añade el control LQR para realizar la simulación completa, tal y como se puede ver en el diagrama de bloques de la Figura 5-10. Figura 5-10. Diagrama de bloques de control LQR Gazebo-Simulink Una vez integrado el Control LQR con la estructura necesaria para establecer la comunicación con Gazebo a través de ROS, se llevan a cabo diversas simulaciones con las que comprobar el efecto del control LQR sobre el robot simulado. A diferencia de los experimentos realizados sobre el modelo linealizado en Simulink, para estas simulaciones no se establecen condiciones iniciales fuera del punto de equilibrio. Por el contrario, se inicia el modelo de Gazebo siempre en su punto de equilibrio más alto (0,0,0). Entonces, se lanza la simulación en Simulink y, cuando todos los controladores estén funcionando, se añade una perturbación de forma manual sobre el robot, por ejemplo, se aplica una rotación sobre el eslabón 2. En las siguientes imágenes, se mostrarán los resultados que se han obtenido en los experimentos realizados. En la imagen superior se puede ver una captura de la desviación aplicada sobre el estado de equilibrio del robot. En la imagen de la izquierda, se muestra la posición de las articulaciones: en color naranja la referencia -como el robot debe permanecer en equilibrio la referencia es =(0,0,0), y en color azul se muestra la posición alcanzada durante la simulación. En la imagen de la derecha se muestran los valores de par (,), con los que se ha comandado el movimiento del robot. 4 http://docs.ros.org/en/melodic/api/std_msgs/html/msg/Float64.html
27 27 Control de un robot manipulador bioinspirado Experimento 1 En la Figura 5-11, se muestran los resultados cuando se aplica una rotación en el eslabón 2 de aproximadamente 5º (0.085 rad). Figura 5-11. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación =0.085. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación.
Control del equilibrio 28 Experimento 2 En la Figura 5-12, se muestran los resultados cuando se aplica una rotación en el eslabón 2 de aproximadamente 10º (0.175 rad). Figura 5-12. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación =0.174. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación.
29 29 Control de un robot manipulador bioinspirado Experimento 3 En la Figura 5-13, se muestran los resultados cuando se aplica una rotación en el eslabón 3 de aproximadamente 10º (0.175 rad). Figura 5-13. Control LQR. Modelo Gazebo. Imagen del robot en Gazebo con desviación =0.174. A la izquierda, la posición de las articulaciones (en naranja la referencia). A la derecha, los pares de actuación. Todos los experimentos han ofrecido resultados satisfactorios, ya que el robot ha recuperado la posición de equilibrio tras varios segundos. 5.3 Control en ROS Se observó que tanto Simulink como Gazebo son dos softwares que requieren un alto consumo de recursos gráficos y de computación. En ocasiones, aparecían problemas de sincronización y se veía limitado el equipo en el que se desarrollaban las simulaciones. Por tanto, se llegó a la conclusión de que el control podría ser trasladado a una unidad de software de ROS (nodo) y prescindir del uso de Simulink. De esta forma, se elimina también la dependencia del sistema de una herramienta como MATLAB que no es libre. Por tanto, trasladar el esquema de control a un código compilado como puede ser un ROS nodo, hará que el sistema de control sea más ligero y extensible a diferentes equipos, y también más robusto y estable ya que es poco probable que se experimenten errores de sincronización. En este apartado, se detalla el esquema de control de nodos de ROS junto con Gazebo que se ha establecido,
Control del equilibrio 30 así como los resultados obtenidos para diversos experimentos. El nodo de control en ROS se ha escrito en lenguaje C++. Dicho nodo, puede suscribirse a los topics que publica Gazebo con la información de posición y velocidad actual del robot; y publicar a su vez el par calculado para las articulaciones sobre los topics que comandan al robot. En la Figura 5-14 se muestra el diagrama de flujo de los datos entre los nodos de ROS y los topics con los que se comparte información, obtenido directamente a través de la herramienta rqt_graph5 de ROS. Los nodos son los que se encuentran en el interior de las elipses, mientras que los topics son los que se encuentran en el interior de los rectángulos. Obsérvese que todos los topics se encuentran bajo el espacio de nombres (o namespace) /robot. Figura 5-14. Diagrama de bloques del control LQR en ROS-Gazebo. Para comparar el efecto del control implementado, se repetirán los experimentos que se detallaron en el apartado anterior sobre el modelo de Gazebo. Las gráficas con los resultados de dichos experimentos que se muestran a continuación se han obtenido mediante la herramienta rqt_plot6. En ella, se grafican los datos que se obtienen de los topics de ROS implicados en el sistema, de forma similar a la información que se obtiene en Simulink. De la misma forma que en el apartado anterior, en los resultados que se muestran en las siguientes figuras se puede reconocer la siguiente información: en la imagen de la izquierda, se muestra la posición de las articulaciones; y en la imagen de la derecha se muestran los valores de par (,) con los que se ha comandado el movimiento del robot. 5 http://wiki.ros.org/rqt_graph 6 http://wiki.ros.org/rqt_plot
31 31 Control de un robot manipulador bioinspirado Experimento 1 En la Figura 5-15, se muestran los resultados cuando se aplica una rotación en el eslabón 2 de aproximadamente 5º (0.085 rad). Figura 5-15. Control LQR. Modelo Gazebo – ROS. Resultados para rotación en =0.085. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. Experimento 2 En la Figura 5-16, se muestran los resultados cuando se aplica una rotación en el eslabón 2 de aproximadamente 10º (0.175 rad). Figura 5-16. Control LQR. Modelo Gazebo - ROS. Resultados para rotación en =0.175. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación.
Control del equilibrio 32 Experimento 3 En la Figura 5-17, se muestran los resultados cuando se aplica una rotación en el eslabón 3 de aproximadamente 10º (0.175 rad). Figura 5-17. Control LQR. Modelo Gazebo - ROS. Resultados para rotación en =0.175. A la izquierda, la posición de las articulaciones. A la derecha, los pares de actuación. Al igual que ocurrió con el control implementado en Simulink, todos los experimentos han ofrecido resultados satisfactorios, ya que el robot ha recuperado la posición tras varios segundos. En conclusión, el controlador implementado en C++ directamente en un nodo de ROS es igual de válido que el implementado en Simulink y pueden ser usados indistintamente para controlar el robot. Teniendo en cuenta las ventajas que aporta eliminar la dependencia del sistema de Simulink, a partir de ahora todo el control será igualmente desarrollado directamente sobre nodos de ROS. No obstante, el control LQR que se ha desarrollado en este apartado es útil para mantener el equilibrio del robot, pero está limitado, ya que no permite llevar al mismo hasta cualquier otra posición deseada. Por tanto, en el siguiente apartado se explicará cómo se ha implementado un control más avanzado que garantice el equilibrio del robot manteniendo la primera articulación sin actuación y, además, que se pueda especificar una posición objetivo para el resto de las articulaciones.
33 CONTROL AVANZADO El marco en el que se encuentra este proyecto, consiste en la realización de un sistema robótico que reproduzca el comportamiento de un pájaro. Se puede observar que los pájaros utilizan su pico para realizar acciones mientras están apoyados sobre sus patas. Tras estudiar en apartados anteriores que mantener el equilibrio de las patas del robot teniendo la primera articulación pasiva es posible, se pretende conseguir que el robot sea capaz de utilizar el pico como efector final para realizar otras acciones. Por tanto, el nuevo objetivo del control consiste en hacer que el efector final sea capaz de alcanzar una posición deseada mientras se mantiene el equilibrio, como se puede ver en la Figura 6-1. Con esto, se puede conseguir que el robot sea capaz de seguir una trayectoria dada. Figura 6-1. Esquema del robot en Gazebo avanzando de una posición a otra. 6.1 Introducción de la fricción Dado que el objetivo final es poder realizar un prototipo del robot, es necesario aportarle más realismo, añadiendo aspectos físicos que no se habían tenido en cuenta hasta ahora. Para ello, la definición de la dinámica del modelo que se explicó en apartados anteriores ha sido replanteada. En un principio, la primera articulación fue considerada como pasiva, dado que no obtiene ningún tipo de actuación, pero también se le asignó una capacidad de rotación completamente libre. Sin embargo, si se observa el ejercicio de equilibrio que realizan los pájaros, la garra sobre la que se apoyan ofrece una fricción debido al rozamiento de esta sobre otra superficie. Por tanto, se vuelve a plantear el modelo dinámico del sistema añadiendo un par de fricción estática (,)
Control avanzado 34 sobre la primera articulación. De esta forma, la ecuación (9) desarrollada queda ahora redefinida como: + + = , (20) Se puede dividir esta formulación entre el sistema pasivo y el sistema activo sobre el que se aplica el control. Se obtienen entonces dos ecuaciones: , = + + + (21) = + + + = ( ) + ( , ) + ( ) (22) El par de fricción que ofrece la garra puede ser modelado como una fricción estática. No obstante, es un valor desconocido ya que depende del material de la garra, así como de la superficie sobre la que contacte. Por tanto, los experimentos se harán para garantizar el control ante diversos valores de . En cuanto al robot 3D de simulación en Gazebo, este valor de fricción estática puede ser añadido como uno de los parámetros característicos de la articulación en su descripción URDF: <joint name="${name}" type="revolute"> <parent link="${parent}"/> <child link="${child}"/> <axis xyz="0 -1 0"/> <origin xyz="0 0 ${z}" rpy="0 0 0"/> <limit effort="2.0" velocity="1.0" lower="${-PI}" upper="${PI}"/> <dynamics friction="0.015"/> </joint> 6.2 Equilibrio del robot En este nuevo alcance del control, el objetivo es que la fricción que ofrece la garra sea capaz de mantener el equilibrio del robot, mientras las articulaciones activas se llevan a una posición deseada. Siendo el valor máximo de fricción estática que ofrece la garra, la condición que se debe cumplir para mantener la articulación pasiva en equilibrio será: ||< A partir de la ecuación del par de fricción estática 16) que se vio en el apartado anterior, se puede obtener el valor máximo de par que puede experimentar la articulación manteniendo el eslabón en equilibrio o, lo que es lo mismo, =0→=0. Para simplificarlo, se puede asumir que, a bajas velocidades, el efecto de las inercias es despreciable en comparación con los términos gravitatorios. Por tanto, la condición de control que garantiza que se mantenga el equilibrio del sistema es: | | = | | < (23) Se define un nuevo enunciado de control que cumpla con la condición expuesta. Considerando como entrada, se define la salida del sistema de control no lineal como: = (24) Donde: =(,,) =
35 35 Control de un robot manipulador bioinspirado De esta manera, se puede especificar un valor de referencia ∗. En este punto, es posible desarrollar un bucle de control que garantice, por un lado, que < y, por otro lado, que el robot sea capaz de situarse en una posición deseada. En el siguiente apartado se profundizará en el desarrollo del problema de control que cumpla con el objetivo especificado. 6.3 Bucles de control En este apartado, se detallarán las herramientas matemáticas que se han utilizado para linealizar el sistema y desarrollar así un bucle de control válido que garantice, por un lado, el control del equilibrio del robot y, por otro lado, que es capaz de alcanzar una posición deseada para el efector final. Considérese el efector final como el pico del pájaro y su posición directamente inferida a partir de la posición del tercer eslabón. Partiendo de la salida que se ha mencionado en el apartado anterior (23), la posición de la tercera articulación puede ser directamente medida a través de , mientras que estará enfocada en mantener el equilibrio de la articulación pasiva del robot. Para tener el enunciado de control completo, es necesario obtener las expresiones que definen =[,] e =[,]. Recordando la expresión de la matriz de efectos gravitatorios que se obtuvo en el apartado de modelado dinámico (12): = sin ( ) + sin ( + ) + sin ( + + ) (25) Donde: =(−(++)) =(−(+)) =(−) Se hace uso de una variable auxiliar que facilitará la obtención de las derivadas para e . =(,,) Donde: =cos()+cos(+)+cos(++) =cos(+)+cos(++) =cos(++) Con la que se definen: = = (26) = = ∇ + + + (27) Donde: = ∇ representa el Jacobiano del vector
Control avanzado 42 En la Figura 6-9 se muestra el resultado del par y que han recibido las articulaciones durante la trayectoria. Figura 6-9. Resultado simulación para seguimiento de una trayectoria. Par de actuación Experimento 3 Como el experimento anterior ha ofrecido buenos resultados, se hace un último experimento en el que se modifica la posición inicial de las articulaciones. De esta forma, se pretende que el robot se asemeje aún más a la morfología del cuerpo de un pájaro. Es importante recordar que la posición inicial del robot debe ser tal que se siga cumpliendo la hipótesis de estabilidad, por la cual ||= ||<. Como =(,,), se buscará encontrar una condición inicial que mantenga ∗≈0, garantizando así que se mantiene el equilibrio de control. Por tanto, la posición inicial del robot para este experimento será: =−0.433 ≈−64º =0.433 ≈64º =1.116 ≈64º =(−0.433,0.433,1.116)= 5.27−6≈0 ≪=0.015 La Figura 6-10, muestra una captura del robot en Gazebo con las posiciones iniciales en las que se encuentra el sistema al inicio de la simulación. Figura 6-10. Captura del robot en Gazebo con la posición inicial para la simulación Al igual que en el experimento anterior, se muestran las gráficas correspondientes a la trayectoria. Como se ha mencionado, la referencia introducida ∗ corresponde directamente con la posición deseada para la tercera articulación ∗, que se muestra como la línea discontinua naranja en la última gráfica de la Figura 6-11.
43 43 Control de un robot manipulador bioinspirado Figura 6-11. Resultado simulación para seguimiento de una trayectoria con posición inicial distinta de cero. Posición de las articulaciones En la gráfica de la Figura 6-12 se puede comprobar el valor de los pares y que han recibido las articulaciones durante la trayectoria. Figura 6-12. Resultado simulación para seguimiento de una trayectoria con posición inicial distinta de cero. Par de actuación En la Figura 6-13 se muestran capturas del simulador en las que se pueden apreciar algunas de las posiciones alcanzadas por el robot durante la trayectoria.
Control avanzado 44 Figura 6-13. Captura del robot en algunas posiciones alcanzadas durante la ejecución de la trayectoria.(a) ∗= 30º (b) ∗= 100º (c) ∗= 0º (d) ∗= 20º Con este último experimento se ha comprobado que el robot también es capaz de seguir la trayectoria especificada a pesar de que la posición inicial de las articulaciones sea distinta de cero. Esto permite que el sistema robótico se asemeje aún más a la naturaleza de un pájaro. Ha quedado validada también la hipótesis de control para mantener el equilibrio del robot mientras se permite la ejecución de una trayectoria deseada.
45 CONCLUSIONES En este documento se han recogido los resultados de las diferentes estrategias de control que se han llevado a cabo para alcanzar el objetivo de este proyecto: diseñar y controlar un sistema robótico sub-actuado, imitando la morfología de forma generalizada de los pájaros, cuando este se encuentra apoyado y, además, permitir que pueda realizar tareas de manipulación. En primer lugar, se realizó el modelado dinámico del robot de forma teórica y se observó, tras varias simulaciones en Simulink, que el comportamiento del modelo era el correspondiente a un sistema con la primera articulación sin actuación: ante la ausencia de control, el sistema pierde el equilibrio si se le aplican perturbaciones y cae por la acción de la gravedad. Además, permanece oscilando como un péndulo en torno a la primera articulación. Dado que la ecuación dinámica que describe el modelo del robot es no lineal, se procedió a realizar una linealización del modelo. Se identificaron sus puntos de equilibrio, sin tener en cuenta actuación por parte de los motores, como aquellos que compensan la acción gravitatoria. Se observó que correspondían a la configuración completamente vertical de los eslabones, con el efector final hacia arriba y hacia abajo. Una vez realizada la linealización, se verificó igualmente con Simulink que el sistema, en torno al punto de equilibrio, se comportaba igual que el modelo no lineal. La primera técnica de control que se aplicó para recuperar el equilibrio del robot cuando aparecen perturbaciones, fue LQR. Para cada punto de equilibrio, se obtuvieron unas ganancias que permitieron que el error del sistema tendiese a cero. En este caso, el error era considerado como la diferencia entre la posición de las articulaciones y el punto de equilibrio. Se hicieron simulaciones para comprobar que, efectivamente, el sistema recuperaba la posición de equilibrio. Tras verificar que era posible hacer un ejercicio de control capaz de mantener el robot en equilibrio aun teniendo la primera articulación sin actuación, se elaboró un modelo de simulación visual, como el que se muestra en la Figura 7.1. para que fuese más cómodo reconocer el comportamiento del robot, a través del software de simulación Gazebo. Figura 7-1. Modelo de simulación en Gazebo.
Conclusiones 46 Desde Simulink, se utilizó ROS para enviar los comandos de par de actuación a los actuadores incluidos en las articulaciones del modelo simulado; y se obtenía a su vez la lectura de la posición del robot en cada instante, cerrando así el bucle de control. Aunque fue posible que el control LQR actuase adecuadamente sobre el modelo de simulación, se observó que tanto Simulink como Gazebo son aplicaciones con un alto consumo de los recursos gráficos y de computación, por lo que se obtuvieron limitaciones y se experimentaron problemas de sincronización entre ambos sistemas. Entonces, se tomó la decisión de prescindir de Simulink y escribir el software de control en lenguaje c++, que puede ser compilado y ejecutado directamente como un nodo de ROS. El último paso del proyecto consistió en aplicar una técnica de control que no solo evitase que el robot cayese, sino que además hiciera posible llevar el efector final del sistema, identificado como el pico del pájaro, a una posición deseada. Se aplicó la estrategia de control feedback linearization que permite anular las nolinealidades del modelo dinámico, redefiniendo el modelo mediante variables auxiliares. Esta técnica fue incluida en un bucle cerrado cuya ley de control fue diseñada para garantizar que el sistema se mantuviera estable. Para completar esta técnica, se introdujo en la actuación pasiva del sistema un valor de par, conocido como fricción estática de Coulomb, que representa el esfuerzo que sufre un pájaro en la garra debido a la acción del rozamiento al entrar en contacto con una superficie. Gracias a esta fuerza de fricción, se pudo mantener el sistema en equilibrio. Para ello, se añadió un segundo bucle de control interno encargado de garantizar que el par experimentado por la articulación pasiva no superara el valor de la fricción estática. Al igual que para la técnica LQR, se realizó el correspondiente nodo de ROS con los bucles de control implementados y se realizaron varias simulaciones con el modelo diseñado en Gazebo. Se comprobó que se podía llevar el robot a una posición determinada e incluso realizar la ejecución de trayectorias completas, como se demuestra en el gráfico de la Figura 7-2. Figura 7-2. Simulación del seguimiento (línea continua ) de una trayectoria (línea discontinua con al referencia ∗). Se superponen imágenes de las posturas más significativas durante la trayectoria. Como se ha podido observar en los resultados de los experimentos expuestos en este proyecto, las técnicas de control implementadas han hecho posible controlar un sistema robótico con la primera articulación sin actuación, manteniendo el equilibrio del sistema mientras el efector final procedía a la ejecución de una trayectoria. Por tanto, con este proyecto queda validado tanto el modelo de simulación diseñado en Gazebo del sistema robótico, como las estrategias de control. No obstante, aún queda camino por recorrer antes de llevar a la realidad este modelo, ya que ha sido realizado como una aproximación del sistema real con tan solo tres eslabones, mientras que el objetivo global del proyecto en el que se enmarca consiste en la obtención de un sistema de, al menos, dos eslabones más con un actuador final.
xxi Referencias [1] Baturone, A. O. (2005). Robótica: manipuladores y robots móviles. Marcombo. [2] Feliu-Talegon, D., Acosta, J. Á., Suarez, A., & Ollero, A. (2020). A BioInspired Manipulator with Claw Prototype for Winged Aerial Robots: Benchmark for Design and Control. Applied Sciences, 10(18), 6516. [3] Fortes, S.R., Acosta J.A. (2013). PFC. Control nolineal de un quadrotor en condiciones extremas. Universidad de Sevilla. [4] Xu, C., Li, M., & Pan, F. (2011, September). The system design and LQR control of a two-wheels selfbalancing mobile robot. In 2011 International Conference on Electrical and Control Engineering (pp. 2786-2789). IEEE. [5] Xin, X., & Kaneda, M. (2007). Swing-up control for a 3DOF gymnastic robot with passive first joint: design and analysis. IEEE transactions on robotics, 23(6), 1277-1285. [6] Bhandari, R., & Kalaichelvi, V. Analysis and control techniques for twolink underactuated manipulator. In 2017 4th IEEE International Conference on Engineering Technologies and Applied Sciences (ICETAS) (pp. 1-5). IEEE. [7] Liu, D., Lai, X., Wang, Y., & Wan, X. (2018, July). Position control of a planar fourlink underactuated manipulator. In 2018 37th Chinese Control Conference (CCC) (pp. 929-932). IEEE.