scieee AI-readable full text Open interactive document viewer

Simulación Dinámica de Robots usando Simscape (Simulink). Aplicación en el Movimiento de Robots Humanoides y Cuadrúpedos

Sánchez-Girón Coca, Celia

Abstract

Departamento de Ingeniería de Sistemas y Automática

Full text

UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERIAS INDUSTRIALES Grado en Ingeniería Electrónica Industrial y Automática Simulación Dinámica de Robots usando Simscape (Simulink). Aplicación en el Movimiento de Robots Humanoides y Cuadrúpedos Autor: Sánchez-Girón Coca, Celia Tutor: Herreros López, Alberto (Departamento de Ingeniería de Sistemas y Automática) Valladolid, julio 2022 AGRADECIMIENTOS En primer lugar, quiero dar las gracias a mi tutor de Trabajo de Fin de Grado Alberto Herreros por dirigir mi proyecto y ayudarme siempre que lo necesitaba. A mis padres por la paciencia que han tenido durante los cuatro años de carrera y por el apoyo que me han dado siempre para continuar con mis metas. A mis amigos y compañeros de curso por motivarme y animarme para superar las dificultades. Por último, gracias Miguel por ser mi pilar en la carrera y por ser el mejor compañero de camino desde el primer día. RESUMEN En el presente proyecto se realiza el estudio dinámico de diferentes modelos robóticos, entre los que destacamos varios modelos humanoides y un robot cuadrúpedo. Para conseguirlo se utilizará el programa Matlab, así como otras herramientas como Simscape para conseguir la simulación de los modelos o appDesigner para que el usuario pueda jugar con el dispositivo robótico utilizando la interfaz. Además, se incorporarán elementos de control para estabilizar el sistema y mejorar el movimiento del robot. El proyecto se plantea como una ampliación de una librería de control robótico, que se centraba en el estudio cinemático de robots diferentes. En el desarrollo del TFG, se expondrán varios ejemplos para comprender el funcionamiento de los modelos robóticos paso a paso. Palabras clave: Simscape, dinámica, control, humanoide, cuadrúpedo, robot ABSTRACT In this project, the dynamic study of different robotic models is carried out, among which we highlight several humanoid models and a quadruped robot. To achieve this, the Matlab program will be used, as well as other tools such as Simscape to simulate the models or appDesigner so that the user can play with the robotic device using the interface. In addition, control elements will be incorporated to stabilize the system and improve the movement of the robot. The project is conceived as an extension of a robotic control library, which focused on the kinematic study of different robots. In the development of the TFG, several examples will be presented in order to understand the operation of the robotic models step by step. Keywords: Simscape, dynamics, control, humanoid, quadruped, robot Contenido CAPÍTULO I: INTRODUCCIÓN .............................................................................................. 2 1.1 INTRODUCCIÓN .................................................................................................. 2 1.1 JUSTIFICACIÓN DEL PROYECTO ......................................................................... 3 1.2 MOTIVACIÓN DEL AUTOR ................................................................................... 4 1.3 OBJETIVOS .......................................................................................................... 5 1.5 ANTECEDENTES (PROYECTOS RELACIONADOS CON ESTE) ................................. 6 CAPÍTULO II: ESTADO DEL ARTE ........................................................................................ 7 2.1 REPRESENTACIÓN DE UN MODELO ROBÓTICO ..................................................... 7 2.1.1 DENAVIT-HARTENBERG (DH) ........................................................................... 7 2.1.2 UNIFIED ROBOTICS DESCRIPTION FORMAT (URDF) .................................... 11 2.2 MODELADO MOVIMIENTO DE UN ROBOT ............................................................ 14 2.2.1 MODELO CINEMÁTICO.................................................................................... 14 2.2.2 MODELO DINÁMICO ....................................................................................... 15 2.2.3 CONTROLADORES BÁSICOS Y ARQUITECTURAS DE CONTROL ................... 17 2.3 HERRAMIENTAS DE TRABAJO ............................................................................... 24 2.3.1 MATLAB ........................................................................................................... 24 2.3.3 SIMULINK ........................................................................................................ 25 2.3.4 SIMSCAPE MULTI-BODY ................................................................................. 27 2.4 LIBRERÍA SIMROBOT ............................................................................................. 28 2.4.1 CREACIÓN LIBRERÍA DE ICONOS ................................................................... 29 2.4.1.1 ICONOS DE ROBOTS ............................................................................... 29 2.4.1.2 ICONOS DE TRABAJO .............................................................................. 32 2.4.1.3 ICONOS DE HERRAMIENTAS O CARGAS ................................................ 33 2.4.2 MODELADO CINEMÁTICO ROBOT .................................................................. 35 2.4.3 CLASE KIN ....................................................................................................... 39 CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS ........................................ 43 3.1 MODELADO DINÁMICO ROBOT ............................................................................. 43 3.1.1 DISEÑO DE LA ESTACIÓN ............................................................................... 43 3.1.2 LAZO INTERNO DE CONTROL ......................................................................... 45 3.1.3 APLICACIONES DEL MODELO ROBÓTICO ...................................................... 47 3.2 FUERZAS EXTERNAS .............................................................................................. 53 3.3 APLICACIÓN DE FUERZAS...................................................................................... 58 CAPÍTULO IV: HUMANOIDE ............................................................................................... 61 4.1 MODELO ROBÓTICO DE MATLAB .......................................................................... 61 4.2 MODELO CINEMÁTICO DEL HUMANOIDE ............................................................. 64 4.2.1 DISEÑO DE LA ESTACIÓN............................................................................... 65 4.3 MODELO DINÁMICO DEL HUMANOIDE ................................................................ 73 4.3.1 DISEÑO DE LA ESTACIÓN............................................................................... 73 4.3.2 LAZO INTERNO DE CONTROL ........................................................................ 77 4.3.3 CONTACTO PIES-SUELO ................................................................................. 80 4.3.4 CLASE HUM Y PRPOPIEDAD EJE ................................................................... 83 4.3.3.1 APLICACIÓN UNIVERSAL A HUMANOIDES ............................................. 85 4.3.5 APRENDIZAJE MANUAL .................................................................................. 93 4.3.5.1 FUNCIONES PARA EL APRENDIZAJE ...................................................... 93 4.3.5.2 INTERFAZ PARA EL APRENDIZAJE .......................................................... 95 4.3.5.3 APLICACIÓN UNIVERSAL A HUMANOIDES ............................................. 97 4.3.6 LAZOS EXTERNOS DE CONTROL ................................................................... 97 4.3.5.3 CONTROLADOR AUTOMÁTICO EN POSICIÓN DE EJES .......................... 98 4.3.6.2 CONTROL AUTOMÁTICO CON OBJETIVO .............................................. 102 4.3.6.3 APLICACIÓN UNIVERSAL A HUMANOIDES ........................................... 106 CAPÍTULO V: APLICACIONES EN LOS MODELOS .......................................................... 112 CAPÍTULO VI: CONCLUSIONES Y LÍNEAS FUTURAS ...................................................... 119 5.1 CONCLUSIONES ................................................................................................... 119 5.2 LÍNEAS FUTURAS ................................................................................................. 120 CAPÍTULO VI: ANEXOS .................................................................................................... 123 6.1 MÉTODOS CLASE “KIN” ...................................................................................... 123 6.2 MÉTODOS CLASE “HUM” .................................................................................... 124 6.3 DEFINICIÓN CÓDIGO ROBOTS HUMANOIDES .................................................... 128 6.4 CÓDIGO PARA MOVIMIENTO “MARCHA” ............................................................ 133 BIBLIOGRAFÍA ................................................................................................................. 135 Ilustración 1: Parámetros clásicos DH [5] ........................................................................ 8 Ilustración 2: Posición punto respecto a otro sistema de referencia [5] ..................... 10 Ilustración 3: Estructura de árbol en URDF [6] .............................................................. 11 Ilustración 4: Estructura link padre-hijo en URDF [6] .................................................... 13 Ilustración 5: Relación URDF, Matlab y Simulink ........................................................... 14 Ilustración 6: Relación propiedades dinámicas entre dos eslabones contiguos [7] ... 18 Ilustración 7: Esquema acción de control PID [8] .......................................................... 21 Ilustración 8: Arquitectura de control con un lazo de realimentación [9] .................... 21 Ilustración 9: Arquitectura de control con múltiples lazos anidados [9] ...................... 22 Ilustración 10: Diagrama de bloques "controladores básicos PD" del proyecto .......... 22 Ilustración 11: Funcionamiento de un encoder incremental [10] ................................ 23 Ilustración 12: Efecto de la Td en la acción derivativa [11] .......................................... 24 Ilustración 13: Relación SimRob y URDF ........................................................................ 29 Ilustración 14: Iconos diversos robots librería SimRob [4] ........................................... 30 Ilustración 15: Tercera Ley de Newton ........................................................................... 53 Ilustración 16: Puntos de contacto entre suelo y geometrías simples ......................... 57 Ilustración 17: Experimentación pelota botando con optmziación [16] ...................... 58 Ilustración 18: Operaciones colaborativas con robots según la norma lSO/TS 15066 [17] .................................................................................................................................... 60 Ilustración 19: Modelado mano derecha e izquierda .................................................... 66 Ilustración 20: Modelado pie derecho e izquierdo ........................................................ 66 Ilustración 21: Bloque articulación en modelo dinámico .............................................. 74 Ilustración 22: Bloque articulación en modelo cinemático ........................................... 74 Ilustración 23: Contacto con método basado en puntos [18] ...................................... 81 Ilustración 24: Contacto con método Contact Proxis [18] ............................................ 81 Ilustración 25: Objeto "eje" para humanoide "Matlab" .................................................. 84 Ilustración 26: Imagen obtenida de [23] ........................................................................ 86 Ilustración 27: Imagen obtenida de [22] ........................................................................ 87 Ilustración 28: Imagen obtenida de [20] ........................................................................ 89 Ilustración 29: Interfaz AppDesigner .............................................................................. 96 Ilustración 30: Diagrama bloques sistema con controlador de ejes por posición ..... 100 Ilustración 31: Estructura joint con control automático .............................................. 100 Ilustración 32: Estructura joint{1,1} con control automático ...................................... 101 Ilustración 33: Vector tQ con control automático ........................................................ 101 Ilustración 34: Vectores joint sin control automático .................................................. 101 Ilustración 35: Vector tQ sin control automático .......................................................... 102 Ilustración 36: Diagrama bloques sistema con controlador por objetivo y referencia ......................................................................................................................................... 104 Ilustración 37: Relación de proporción del ángulo en la extremidad inferior ............ 104 Ilustración 38:Vector tQ con controlador automático con objetivo ............................ 105 Ilustración 39: Modelo Train Humanoid Walker [21] .................................................. 111 Ilustración 40: Interfaz para Robots Humanoides en AppDesigner ........................... 112 Ilustración 41: Diferencia de contacto entre los pies del cuadrúpedo y el suelo en diferentes superficies .................................................................................................... 121 Simulación 1: ABB irb120 cinemática directa 30 grados ............................................. 37 Simulación 2: ABB irb120 Cinemática inversa ............................................................. 39 Simulación 3: ABB irb120 Tomar y dejar lápiz ............................................................... 42 Simulación 4: ABB irb120 rotación 30 grados con cinemática directa por dinámica 48 Simulación 5: ABB irb120 movimiento dinámico por cinemática inversa ................... 51 Simulación 6: ABB irb120 manipula carga (masa=1kg) ............................................... 52 Simulación 7: ABB irb120 manipula carga (masa muy elevada) ................................. 52 Simulación 8: Pelota botando ......................................................................................... 56 Simulación 9: ABB irb120 aplicación sensor de fuerza ................................................ 59 Simulación 10: Humanoide mueve extremidades por cinemática............................... 68 Simulación 11: Humanoide Acción dejar y coger caja con función PegarEn() ............ 71 Simulación 12: Humanoide mueve todas las articulaciones 30 grados ..................... 73 Simulación 13: Áreas diferentes de Contact Proxies humanoide ................................ 82 Simulación 14: Robot con control automático con objetivo ....................................... 105 Simulación 15: Robot con controlador automático con objetivo, mueve articulación sin sentido ...................................................................................................................... 106 Simulación 16: Robot roid desplazando referencia en eje Y ...................................... 107 Simulación 17: Robot Humanoide Ref en z (Ref=400*1e^-3) .................................. 108 Simulación 18: Robot Humanoide Ref en z (Ref=380*1e^-3) ................................... 109 Simulación 19: Movimiento humanoides universal .................................................... 113 Simulación 20: Movimiento marcha humanoides universal....................................... 114 Simulación 21: Movimiento marcha cuadrúpedo........................................................ 114 Simulación 22: Humanoide realizando movimiento de natación ............................... 115 Simulación 23: Configuraciones articulares iniciales cuadrúpedo ............................ 116 Simulación 24: Robot cuadrúpedo estable con 3 extremidades ............................... 116 Simulación 25: Movimiento automático humanoide al caerse hacia adelante ........ 118 Bloques Simulink 1: World, Mechanism Configuration, Solver y Reference Frame .... 26 Bloques Simulink 2: Bloque eslabón de un robot ......................................................... 26 Bloques Simulink 3: Familia Simscape [14] .................................................................. 27 Bloques Simulink 4: Estructura interna de un robot en librería SimRob ..................... 30 Bloques Simulink 5: Estructura interna de un brazo del robot en librería SimRob ..... 31 Bloques Simulink 6: Bloque joint con ángulo de entrada librería SimRob .................. 32 Bloques Simulink 7: Subsistema de un objeto de trabajo librería SimRob ................. 32 Bloques Simulink 8: Ejemplos iconos de trabajo librería SimRob ................................ 33 Bloques Simulink 9: Icono de trabajo con parámetros en librería SimRob ................. 33 Bloques Simulink 10: Iconos de herramientas o carga en librería SimRob ................ 34 Bloques Simulink 11: Robot modelo ABB irb120 .......................................................... 35 Bloques Simulink 12: Estación modelo ABB irb120 ..................................................... 36 Bloques Simulink 13: Bloque posición ........................................................................... 36 Bloques Simulink 14: Estación modelo ABB irb120 (cinemática inversa) .................. 37 Bloques Simulink 15: Bloque cinemática inversa ......................................................... 38 Bloques Simulink 16: Estación Simulink Multibody con objetos y herramientas ........ 40 Bloques Simulink 17: Articulación modelo cinemático ................................................. 44 Bloques Simulink 18: Articulación modelo dinámico .................................................... 44 Bloques Simulink 19: Modelo robótico ABB irb120 dinámica ...................................... 45 Bloques Simulink 20: Robot ABB irb120 dinámica ....................................................... 45 Bloques Simulink 21: Articulación modelo dinámico controlador PD .......................... 46 Bloques Simulink 22: Bloque saturación ....................................................................... 49 Bloques Simulink 23: Spatial Contact Force .................................................................. 54 Bloques Simulink 24: Modelo pelota que bota contra el suelo .................................... 55 Bloques Simulink 25: Sensor de fuerza ......................................................................... 56 Bloques Simulink 26: ABB irb120 aplicación sensor de fuerza ................................... 58 Bloques Simulink 27: Sensor de fuerza con interrupción ............................................. 59 Bloques Simulink 28: Robot Humanoide propuesto por Matlab .................................. 62 Bloques Simulink 29: Señal de entrada propuesta por MatLab ................................... 63 Bloques Simulink 30: Humanoide base ......................................................................... 64 Bloques Simulink 31: Modelo robótico Humanoide modelo cinemático ..................... 65 Bloques Simulink 32: Humanoide modelo cinemático ................................................. 66 Bloques Simulink 33: Bloque articulación modelo cinemático ..................................... 67 Bloques Simulink 34: Modelo robótico Humanoide para manipular cargas ............... 69 Bloques Simulink 35: Modelo robótico para modelado dinámico ................................ 75 Bloques Simulink 36: Robot para modelo dinámico ..................................................... 76 Bloques Simulink 37: Subsistema Fuerza Pies Humanoide ......................................... 76 Bloques Simulink 38: Bloque articulación modelo dinámico PD .................................. 77 Bloques Simulink 39: Robot con controlador P ............................................................. 78 Bloques Simulink 40: Robot con controlador PD ........................................................... 78 Bloques Simulink 41: Modelo humanoide "roid" ........................................................... 87 Bloques Simulink 42:Humanoide "roid" ......................................................................... 87 Bloques Simulink 43: Modelo humanoide "zjudancer" ................................................. 88 Bloques Simulink 44: Humanoide "zjudancer" .............................................................. 89 Bloques Simulink 45: Modelo cuadrúpedo "yobotics" ................................................... 90 Bloques Simulink 46: Cuadrúpedo "yobotics" ................................................................ 91 Bloques Simulink 47: Lazo de control automático en posición de ejes ....................... 98 Bloques Simulink 48: Modelo robótico para lazo de control automático en posición de ejes .................................................................................................................................... 99 Bloques Simulink 49: Lazo de control automático con objetivo ................................. 103 Bloques Simulink 50: Modelo robótico para lazo de control automático con objetivo ......................................................................................................................................... 103 Bloques Simulink 51: Lazo de control automático con objetivo (robot roid1) ........... 106 Bloques Simulink 52: Modelo robótico lazo de control automático con objetivo (robot roid1) ............................................................................................................................... 107 Gráfica 1: Torque y posición en articulaciones (rotación q 30 grados) ........................ 48 Gráfica 2: ABB irb120 al limitar el torque (Tsat=10) ..................................................... 50 Gráfica 3: Torque y posición en articulaciones (rotación 30 grados) con Tsat=10 ..... 50 Gráfica 4: Posición robot con controlador P ................................................................... 79 Gráfica 5: Posición robot con controlador PD ................................................................ 79 Código 1: Movimiento cinemática directa e inversa del robot ...................................... 67 Código 2: Movimiento tomar y dejar caja robot Humanoide ......................................... 69 Código 3: Movimiento articulaciones 30 grados en Humanoide .................................. 72 Código 4: Clase Hum ........................................................................................................ 85 CAPÍTULO II: ESTADO DEL ARTE 8 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 1: Parámetros clásicos DH [5] Con estos parámetros podremos obtener una matriz para cada eslabón que nos aporta información sobre el estado de un body respecto a su body anterior: 𝐴 𝑖−1 𝑖=𝑅𝑜𝑡𝑧(𝜃𝑖)𝑇(0,0,𝑑𝑖)𝑇(𝑎𝑖,0,0)𝑅𝑜𝑡𝑥(𝛼𝑖) ( 1 ) Desarrollando la ecuación anterior se consigue la siguiente matriz: 𝐴 𝑖−1 𝑖=[𝐶𝜃𝑖 −𝐶𝛼𝑖𝑆𝜃𝑖 𝑆𝜃𝑖 𝐶𝛼𝑖𝐶𝜃𝑖 𝑆𝛼𝑖𝑆𝜃𝑖 𝑎𝑖𝐶𝜃𝑖 −𝑆𝛼𝑖𝐶𝜃𝑖 𝑎𝑖𝑆𝜃𝑖 0 𝑆𝛼𝑖 0 0 𝐶𝛼𝑖 𝑑𝑖 0 1 ] ( 2 ) A partir de estas transformaciones básicas de paso de eslabón podemos obtener la matriz de transformación homogénea (MTH). Cuando la herramienta de un robot se mueve, esta realiza una serie de traslaciones y rotaciones respecto a un sistema fijo (la base de nuestro robot manipulador). Toda esta información sobre la posición del TCP la podemos recoger en una matriz de 4x4 llamada Matriz de Transformación Homogénea. Según se indica en la Figura, la matriz 3x3 de la izquierda representa la orientación en el espacio del TCP (por la combinación de rotaciones en x, y, z), la última columna (3x1) indica la traslación del TCP en el espacio y la última fila en robótica se define como un vector [0 0 0 1]. CAPÍTULO II: ESTADO DEL ARTE 9 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA La MTH la obtenemos al multiplicar todas las matrices de transformaciones básicas entre eslabones desde el primer body (0) hasta el sistema del TCP. Igualmente podemos representar de forma parcial la posición y orientación de cualquiera de los bodies del robot con respecto al sistema de coordenadas de la base. Por ejemplo, si queremos representar la posición y orientación del 3º body respecto a la base del robot: 𝐴= 3 0𝐴 1 0∗ 𝐴 2 1∗ 𝐴 3 2 ( 3 ) Donde 𝐴 2 1 representa la posición y orientación del segundo enlace respecto al primero, 𝐴 3 2 del tercero respecto al segundo… Además, la MTH permite transformar un vector de posición referido a un punto por otro vector de posición referido a otro punto diferente. Por ejemplo, si tengo el vector A con coordenadas x,y,z y el vector B con otras coordenadas x,y,z diferentes, la MTH nos permite especificar las rotaciones y traslaciones que hay que hacer para pasar del sistema A al sistema B. Esta MTH nos permite hacer un cambio de coordenadas de cualquier punto arbitrario del sistema A al sistema B. Por ejemplo, si conozco la posición de un punto P respecto a un sistema de referencia B, puedo utilizar la MTH para conocer su posición respecto a otro sistema de referencia A. CAPÍTULO II: ESTADO DEL ARTE 10 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 2: Posición punto respecto a otro sistema de referencia [5] Igualmente podemos calcular la posición y orientación del robot utilizando el método geométrico. Este consiste en despejar los valores que definen el efector final del robot utilizando relaciones trigonométricas entre bodies y ángulos entre eslabones. Este método suele aplicarse a robots sencillos con pocos grados de libertad, por lo que en nuestro caso no se utilizará el método geométrico. Estos son los métodos habituales que se utilizan para la resolución del problema cinemático directo e inverso. Los parámetros DH son fáciles de calcular para un robot cualquiera, por lo que se podrá obtener una estructura de un robot simple fácilmente conociendo el ángulo de rotación de las articulaciones y la distancia entre articulaciones. Sin embargo, el algoritmo de Denavit..Hartenberg solo nos proporciona información relacionada con la configuración articular y la posición del TCP del robot. No se tienen en cuenta parámetros como la masa de los eslabones, por ejemplo, por lo que no será posible representarlo de forma dinámica. Además, teniendo en cuenta que cada sistema de referencia se plantea en función del anterior, en un modelo robótico con muchas articulaciones el proceso será tedioso y se deberá realizar el cálculo analítico de los parámetros tantas veces como articulaciones haya. CAPÍTULO II: ESTADO DEL ARTE 11 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA 2.1.2 UNIFIED ROBOTICS DESCRIPTION FORMAT (URDF) La configuración DH se ha utilizado principalmente para resolver el problema cinemático directo de la mayoría de los manipuladores robóticos hoy en día. A pesar de esto, se han desarrollado nuevos entornos y herramientas de simulación en los que se imita el comportamiento de un robot de forma mucho más real. Un ejemplo de ello es la herramienta de simulación Gazebo de ROS. ROS es un entorno de programación que incluye muchas librerías para trabajar con modelos robóticos de forma verosímil; para modelar un sistema robótico en dicho entorno se suele utilizar un tipo de fichero llamado URDF. El formato URDF (Universal Robot Description Formal), se trata de un archivo en formato .xml en el que se definen las especificaciones físicas del modelo robótico (longitud de sus componentes, aspectos visuales de cada body…), por lo que la simulación será más detallada que en el caso de utilizar únicamente los parámetros DH. El formato URDF suele ser utilizado al trabajar con robots desarrollados mediante ROS, como se ha mencionado. Se emplea para diseñar el robot como un conjunto de estructuras rígidas (links), que definen cada eslabón del robot con ciertos parámetros como la inercia, unidas por articulaciones (joints), que establecen propiedades cinemáticas y dinámicas de cada articulación. Ilustración 3: Estructura de árbol en URDF [6] CAPÍTULO II: ESTADO DEL ARTE 12 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Así mediante las articulaciones (joint) podremos unir varios cuerpos rígidos con diferentes características dinámicas y cinemáticas. El formato .xml que utilizan los ficheros URDF contiene información de los ejes de tal forma que pueda ser interpretado de forma sencilla tanto por un humano como por una máquina: % <robot name> % <link name> % <inertial> % <origin xyz rpy /> % <mass value /> % <box size /> % <inertia ixx iyy izz ixy ixz iyz /> % </inertial> % <visual name> % <origin xyz rpy /> % <geometry> % <cylinder radius length /> % <sphere radius /> % <mesh filename /> % </geometry> % <material> % <color rgba /> % </material> % </visual> % </link> % <joint name type> % <origin xyz rpy /> % <parent link /> % <child link /> % <axis xyz /> % <dynamics damping /> % <limit lower upper /> % </joint> % </robot> En la configuración URDF de un robot podemos encontrar dos elementos bien diferenciados: <link> o eslabón, que guarda las características visuales u otras propiedades como la inercia o la masa que permitirán simular estados dinámicos, y <joint> CAPÍTULO II: ESTADO DEL ARTE 13 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA o articulación que une a dos eslabones seguidos. Mediante “joint” se pueden conectar dos “link” donde uno de ellos será la estructura base (parent) y el link unido a este será el eslabón secundario (child). Ilustración 4: Estructura link padre-hijo en URDF [6] La ventaja de las herramientas Matlab y Simulink es que ambas pueden trabajar con este tipo de archivos, de forma que podemos importar un modelo URDF mediante la librería Simscape MultiBody (Simulink) o con Robotics System Toolbox (Matlab). • Con la librería Robotics System Toolbox se puede importar la estructura de un robot a partir de un fichero urdf a un objeto RigidBody mediante la función importrobot(). Además, esta librería contiene varios robots guardados en memoria en formato .mat a los que podemos acceder con el comando load(). El objeto RigidBody es interesante ya que puede guardar la configuración de un robot mediante los parámetros de la matriz DH o a través de la información contenida en el fichero URDF. • Con el entorno Simscape MultiBody podemos importar un archivo urdf mediante el comando smimport() y obtener un fichero Simulink que define la posición de cada eje del robot y los componentes físicos entre ejes. Estos componentes físicos están definidos por su dinámica y sus ficheros de visualización. CAPÍTULO II: ESTADO DEL ARTE 14 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 5: Relación URDF, Matlab y Simulink Si el modelo robótico que se quiere plantear tiene un gran número de grados de libertad, se suele utilizar un formato diferente denominada XACRO, que se trata de un lenguaje XML que consigue diseñar ficheros URDF más reducidos y de fácil lectura en comparación con los archivos URDF. 2.2 MODELADO MOVIMIENTO DE UN ROBOT 2.2.1 MODELO CINEMÁTICO La cinemática de modelos robóticos analiza los movimientos que realiza el robot en el espacio teniendo como referencia un sistema de coordenadas fijo. Aquí se estudian y se relacionan los valores relacionados con las coordenadas articulares del robot y la posición y orientación del TCP (Tool Central Point) que es el punto que se utiliza para conocer el estado del efector final. A la hora de estudiar la cinemática podemos encontrar dos métodos diferentes: *Cinemática directa: el objetivo de la cinemática directa es encontrar la posición y orientación de la herramienta a partir de los ángulos de las articulaciones, es decir, vamos desde la base del robot a través de ángulos hasta el TCP del robot. Para la cinemática directa normalmente tiene una solución única; dado un robot del que conocemos los ángulos que forman sus articulaciones entonces la posición y orientación del TCP será única. CAPÍTULO II: ESTADO DEL ARTE 15 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA *Cinemática inversa: trata de encontrar los ángulos de las articulaciones del robot dada una orientación y posición de la herramienta determinada. Esto quiere decir que a partir de la situación de la herramienta queremos encontrar los ángulos de las articulaciones. La diferencia con la cinemática directa es que podemos encontrar varias soluciones para la cinemática directa. 2.2.2 MODELO DINÁMICO En robótica la dinámica estudia la relación existente entre las fuerzas generalizadas que actúan en el mecanismo robótico y el movimiento del robot. Al hablar de fuerzas se incluyen conceptos como las fuerzas y pares de las articulaciones que en intervienen en el movimiento. Por otro lado, el movimiento del robot se define mediante la trayectoria articular y la trayectoria cartesiana del efector final; este movimiento del robot se basa en las variables de posición, velocidad y aceleración de las coordenadas articulares. Se consideran dos problemas dinámicos que relacionan la evolución de las coordenadas articulares y sus derivadas con las fuerzas y pares del sistema: CAPÍTULO II: ESTADO DEL ARTE 16 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA El modelo dinámico directo obtiene la posición y sus derivadas de las coordenadas articulares en función de las fuerzas que intervienen en el movimiento del robot. Por otro lado, el modelo dinámico inverso calcula las fuerzas y pares que intervienen en el movimiento del modelo robótico en función de la evolución de q y sus derivadas. El modelo dinámico es un modelo no lineal que tiene una complejidad significativa a la hora de su resolución; por esta razón con frecuencia se utilizan métodos iterativos para hallar la solución. Entre los principales métodos para estudiar la dinámica de un robot destacan el método de newton-Euler, que es un método iterativo, y el método del Lagrangeano, que es un método cerrado. En el caso del método de Lagrange o método de Euler-Lagrange, se trata de un método basado en la energía del sistema donde el Lagrangiano se calcula como la diferencia entre la energía cinética (T(q,q)) y la energía potencial del sistema (U(q)): 𝐿(𝑞,𝑞󰇗)=𝑇(𝑞,𝑞󰇗),−𝑈(𝑞) ( 4 ) Las ecuaciones de movimiento del método Lagrange Euler dan como resultado las fuerzas generalizadas que se aplican sobre las articulaciones del robot (𝜏𝑖): 𝑑 𝑑𝑡 (𝑑𝐿 𝑑𝑞󰇗𝑖) −𝑑𝐿 𝑑𝑞𝑖= 𝜏𝑖 ( 5 ) CAPÍTULO II: ESTADO DEL ARTE 17 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA A partir de las ecuaciones anteriores se obtiene el modelo dinámico generalizado para cualquier sistema mecánico. En él se contemplan una serie de fuerzas que se pueden resumir en la siguiente ecuación: 𝜏=𝑀(𝑞)𝑞󰇘+𝐶(𝑞,𝑞󰇗)𝑞󰇗+𝑔(𝑞) ( 6 ) • 𝑀(𝑞): matriz de masa o inercia, donde se tiene en cuenta el peso de las articulaciones. • 𝐶(𝑞,𝑞󰇗): matriz que contabiliza las fuerzas centrífugas y de Coriolis. • 𝑔(𝑞): fuerza de la gravedad. De forma teórica, al modelar dinámicamente un robot se busca encontrar M, C, g que definen el modelo dinámico del robot. En los ejemplos de este proyecto, la entrada al modelo robótico será el par; para controlar la evolución de las coordenadas articulares se realimentará la posición real de cada articulación y hará la diferencia con la posición deseada. Para regular esto será necesario un sistema de lazos de control que se explicará más adelante. 2.2.3 CONTROLADORES BÁSICOS Y ARQUITECTURAS DE CONTROL El objetivo de un controlador es encontrar el método para generar la señal de entrada apropiada para que el sistema produzca la salida (referencia) deseada. La acción de control es la responsable de pasar a los motores las instrucciones precisas para conseguir el movimiento deseado de la articulación. Para controlar el modelo robótico total lo que se hace es emplear sistemas de control en cada una de las articulaciones, es decir, en cada motor que compone el robot. Un motor en un body del robot no existe de forma aislada; está conectado a un body que presenta dos efectos que afectan al comportamiento del motor: añade una inercia extra y añade un torque debido al peso del brazo. Estos parámetros variarán en función de la configuración articular. Podemos CAPÍTULO II: ESTADO DEL ARTE 24 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA el tiempo en el que la acción de rapidez se adelanta al efecto de acción P es reducido; cuando el Td es demasiado pequeño es posible que no haya un efecto significativo de la acción derivativa en el sistema. Encontrar el valor del Td óptimo es importante para eliminar las oscilaciones y conseguir la estabilidad del sistema. Ilustración 12: Efecto de la Td en la acción derivativa [11] La arquitectura de control se explicará de forma detallada en cada uno de los modelos robóticos que funcionen de forma dinámica. 2.3 HERRAMIENTAS DE TRABAJO 2.3.1 MATLAB Matlab [12] es una sofisticada herramienta de ingeniería disponible para resolver problemas matemáticos de forma sencilla. La palabra Matlab viene de las palabras Matrix Laboratory (Laboratorio Matricial), es por ello por lo que la especialidad de este software es resolver vectores y matrices, pero con ella también se pueden resolver cálculos mucho más complejos, simular procesos, crear interfaces gráficas para mostrar al usuario y muchas más aplicaciones. Matlab utiliza un lenguaje de programación de alto nivel, por lo que es mucho más fácil aplicarlo y usarlo a diferentes proyectos; por esta razón muchos centros de investigación y universidades han elegido esta herramienta. En el campo de la robótica Matlab tiene una gran popularidad, ya que posee un gran número de usos destinados a las aplicaciones relacionadas con la robótica, así como librerías y funciones que facilitan el trabajo del programador. CAPÍTULO II: ESTADO DEL ARTE 25 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Para conseguir no solo programar mediante código sino además simular empleando modelos, podemos combinar la herramienta Matlab con el entorno Simulink. Se trata de un entorno gráfico donde el modelo a simular se construye arrastrando los diferentes bloques que lo constituye. Aquí encontramos un gran número de librerías de bloques para aplicaciones de control, de comunicación, de análisis de señales, aeroespaciales y muchas más. Los archivos Simulink se guardan con la extensión.mdl. Debido a sus características, el uso de Matlab y la aplicación de la toolbox Simulink ha sido una herramienta muy útil para modelar y simular sistemas robotizados sin necesidad de construir antes un prototipo real. 2.3.3 SIMULINK Simulink [13] es un entorno de diagramas de bloque destinado al diseño de sistemas para simular el modelo deseado antes de desarrollar el hardware en la vida real. En este proyecto tendrá gran importancia la función smimport () que permitirá convertir un fichero URDF en un modelo Simulink. El fichero URDF inicial contiene información desde los bodies que forman el robot hasta las características articulares del mismo. Gracias a esta transformación, el fichero Simulink contendrá las especificaciones que definen al robot tanto de forma estructural como motriz. Cuando se importa el fichero a archivo Simulink se generan una serie de bloques de la biblioteca Simscape que se ha explicado anteriormente. Algunos de estos bloques son: • World: representa el sistema de referencia global del modelo. Este elemento está en reposo absoluto y todos los sistemas de referencia del modelo se definen respecto a este sistema de referencia global. • Mechanism Configuration: bloque que proporciona parámetros relacionadas con la mecánica y la simulación del sistema robotizado. Aquí se establecen parámetros como la gravedad; si no se incorpora al modelo el vector de aceleración gravitacional se pondrá a cero. • Solver Configuration: especifica los parámetros del solucionador que necesita nuestro modelo antes de comenzar la simulación. Estos tres bloques constituyen una entrada en el robot del modelo e indicarán la base del mismo. Si el robot está asociado a la base a través de una articulación, entonces esa articulación no podrá moverse. CAPÍTULO II: ESTADO DEL ARTE 26 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA • Reference Frame: representa un sistema de referencia respecto al que puedo llamar a otros sistemas de referencia. Bloques Simulink 1: World, Mechanism Configuration, Solver y Reference Frame Además, cuando se define cada articulación en el bloque del robot se generan varios bloques para especificar los detalles de cada articulación: Bloques Simulink 2: Bloque eslabón de un robot CAPÍTULO II: ESTADO DEL ARTE 27 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA En cada articulación del robot se utilizan diferentes bloques encargados de la transformación de un tipo de elemento a otro (rotación, traslación…). Así con el bloque “joint_Origin_Transform” se da una transformación desde el sistema origen hasta la articulación (joint), “Visual_Origin_Transformation” aplica la transformación desde el origen hasta el bloque que define las características visuales de la articulación y “Inertia_Origin_Transform” hace lo mismo con los aspectos inerciales. 2.3.4 SIMSCAPE MULTI-BODY Las gráficas de Matlab proporcionan simulaciones muy lentas y poco eficientes, es por ello por lo que se acude a la herramienta Simscape Multibody [14], que nos permite definir el entorno adecuado y simular nuestros robots en tres dimensiones. Simscape es un entorno de programación visual de Simulink que nos proporciona la tecnología necesaria para simular y analizar sistemas físicos. Simscape ofrece algunos componentes fundamentales para varios dominios físicos; además en la familia de productos Simscape también encontramos Add-on que nos proporcionan modelos adicionales y capacidades de análisis para aplicaciones relacionadas con la energía eléctrica, la transmisión de movimiento, los sistemas mecánicos en 3D y la mecánica de fluidos. Todo esto se puede integrar con sistemas mecánicos en 3D para analizar el comportamiento del modelo y comprobar los resultados de la simulación. Bloques Simulink 3: Familia Simscape [14] CAPÍTULO II: ESTADO DEL ARTE 28 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simscape Multibody proporciona un entorno de simulación para sistemas mecánicos en tres dimensiones, como robots, material de construcción o vehículos entre otros. Simscape Multibody plantea y resuelve las ecuaciones de movimiento para sistemas mecánicos completos. El sistema Multibody se modela asociando diferentes bloques que representan bodies, articulaciones y elementos de fuerza ente otros. Igualmente se pueden importar archivos CAD incluyendo todas las inercias, masas o geometrías 3d a nuestro modelo. Para comprender mejor la estructura de nuestro modelo, se genera automáticamente una animación 3D para visualizar la dinámica del sistema en la ‘Mechanics Explorer’. 2.4 LIBRERÍA SIMROBOT Este proyecto se plantea utilizando los conceptos fundamentales de la herramienta de Matlab/Simulink SimRob. Esto fue un método desarrollado en el TFG de Sandra Arévalo Fernández, antigua alumna de Ingeniería Industriales en la Universidad de Valladolid. [4] El objetivo de esta librería era permitir el diseño y simulación de diferentes estaciones robóticas de forma estandarizada. El usuario podrá jugar con varios robots y modificar sus estaciones fácilmente para su control. Para comprender el planteamiento de esta librería creada en el TFG mencionado se utilizarán las mismas imágenes que se incluyen en dicho TFG. Lo interesante de esta herramienta es que combina es capaz de combinar los objetos resultantes tras importar un modelo URDF utilizando Robotic Toolbox y Simscape Multibody. Es posible importar un objeto RigidBody de un fichero Simulink que a su vez ha sido obtenido de un URDF. Gracias a esto podemos tener en el objeto RigidBody todos los componentes añadidos al fichero Simulink. Así combinamos el objeto RigidBody que podremos utilizar para calcular la cinemática del robot y el fichero Simulink para realizar la simulación. Los resultados obtenidos se mostrarán en una simulación mediante Mechanics Explorer. CAPÍTULO II: ESTADO DEL ARTE 29 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 13: Relación SimRob y URDF 2.4.1 CREACIÓN LIBRERÍA DE ICONOS Para convertir esta librería en un entorno interactivo para el usuario, se incorporaron una serie de robots y piezas para poder diseñar la estación como se desee. 2.4.1.1 ICONOS DE ROBOTS En dicha librería se incorporaron varios brazos robóticos cuyo número de grados de libertad, configuración articular e incluso número de TCP varía. CAPÍTULO II: ESTADO DEL ARTE 30 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 14: Iconos diversos robots librería SimRob [4] La entrada a cada articulación de los robots en Simulink es la posición de cada articulación, ya que se querían controlar estos robots utilizando un modelo cinemático. Unido a la base del robot hay un bloque Rigid Transform definido como Robt1. En este bloque se define la posición y orientación de la base del robot respecto al sistema global de la estación. Bloques Simulink 4: Estructura interna de un robot en librería SimRob Por otro lado, a cada articulación se le ha pasado el valor de la coordenada articular y la posición del robot inicial que se pasa mediante una máscara. Los iconos fueron obtenidos combinando los dos métodos mencionados anteriormente: *Importando el robot a partir de un fichero URDF, del que obtenemos toda la información sobre cinemática y estructura del robot. CAPÍTULO II: ESTADO DEL ARTE 31 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA *Calculando los parámetros Denavit-Hartenberg de cada robot. Para que sea más accesible modificar los parámetros se ha creado una máscara en cada icono donde se define la matriz DH. Se ha modificado el archivo de Simulink que se obtiene al importar un fichero URDF. A este archivo este sistema Simulink se han incorporado los parámetros DH que definen la relación entre un eje del robot y el eje siguiente. Los parámetros DH se han pasado en forma de bloques Rigid Transform, de forma que se le pasa como argumento los valores de la matriz DH mediante una máscara. Bloques Simulink 5: Estructura interna de un brazo del robot en librería SimRob Entonces a la hora de modelar un robot solo habría que definir su configuración (adaptar el modelo en función del número de articulaciones y brazos y añadir los archivos. stl correspondientes) e inicializar ciertas variables como los parámetros DH, el color o algunos parámetros dinámicos que se exigen en el bloque de inercia. Como estamos introduciendo directamente la posición a la que queremos llegar en las articulaciones, hay que activar la opción de calcular el torque automáticamente para que haya una actuación sobre las articulaciones durante la simulación. CAPÍTULO II: ESTADO DEL ARTE 32 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 6: Bloque joint con ángulo de entrada librería SimRob 2.4.1.2 ICONOS DE TRABAJO Igualmente se han diseñado iconos de trabajo que definen objetos de trabajo que pueden estar presentes en el entorno de la simulación. Para conseguirlo se ha creado un subsistema con diferentes bloques que definen la orientación del objeto, sus masas o sus características visuales entre otros aspectos. Para cambiar todos los parámetros distintivos del objeto, se ha establecido una máscara con la que se podrá modificar el icono fácilmente. Bloques Simulink 7: Subsistema de un objeto de trabajo librería SimRob CAPÍTULO II: ESTADO DEL ARTE 33 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA En la librería encontramos los siguientes objetos de trabajo, pero gracias a la configuración de los bloques de Simulink el usuario puede diseñar nuevos objetos de trabajo con herramientas gráficas como CATIA o AutodeskInventor y así generar ficheros .stl propios que podrá pasar a los bloques. Bloques Simulink 8: Ejemplos iconos de trabajo librería SimRob Bloques Simulink 9: Icono de trabajo con parámetros en librería SimRob Como se puede comprobar, al pasar el objeto Esfera se están pasando a cada uno de los bloques del subsistema que constituye el objeto de trabajo la base del objeto, su masa, su centro de gravedad, inercia y color. 2.4.1.3 ICONOS DE HERRAMIENTAS O CARGAS Por último, se han creado un icono que sirve como herramienta para que el robot pueda manipular cargas; esta es una pinza que se situará en el extremo del brazo robótico. Igualmente se han incorporado objetos que funcionan como cargas, en este caso son distintas piezas de ajedrez y un dado. CAPÍTULO II: ESTADO DEL ARTE 40 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA A la clase Kin se le pasa como argumento el RigidBody asociado a la estación, la estación Simulink, la herramienta deseada y el valor de las coordenadas articulares iniciales (q0=[0 0 0 0 0 0]). El objeto RigidBody será el que defina el robot; este no se visualizará, solo se emplea para calcular la cinemática directa e inversa. Por otra parte, el fichero Simulink Multibody se pueden añadir las herramientas que se quieran; se emplea MultiBody ya que la simulación de movimientos es más continua en Simulink como se explicó en apartados anteriores. Por ejemplo, para el modelo ARB120, podemos distinguir entre el RigidBody, que se trata del propio robot de Matlab, y la estación Simulink en la que se encuentren las herramientas y los objetos con los que trabajará en robot. Bloques Simulink 16: Estación Simulink Multibody con objetos y herramientas El objeto Kin rob se define de la siguiente manera: rob= Kin(robot, Estacion, bodyCarga, q0); A partir del objeto Kin que se obtiene, se pueden aplicar diferentes métodos para incluir y quitar cuerpos, grabar los movimientos del robot, reproducirlos… que se detallan en “Capítulo VI: Anexos”. En conclusión, con la clase Kin se ha conseguido una herramienta que calcula la cinemática directa e inversa igual que lo hace cualquier simulador. Para ello Kin importa el modelo Robotic Toolbox que le permite calcular las cinemáticas inversas. Gracias al desarrollo de la librería SimRob podemos no solo calcular la cinemática del robot sino simular su movimiento gracias a la incorporación de Simscape Multibody. CAPÍTULO II: ESTADO DEL ARTE 41 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA CLASE PIEZA (PEGAR EN) La clase Kin tiene muchas funciones encargadas del movimiento del robot de forma cinemática. En caso de que se desee manipular cargas y jugar con la herramienta, es necesario crear un nuevo método. Para conseguir esto se ha creado dentro de la clase Pieza el método PegarEn que permite pegar todas las propiedades de un objeto en otro objeto. PegarEn(this1, this2, wobj1, wobj2) De esta forma se pegan las propiedades del objeto this2 en this1 donde wobj1 es la referencia [x,y,z,Rz,Ry,Rx] del objeto this1 y wobj2 es la referencia [x,y,z,Rz,Ry,Rx] del objeto this2. La base del objeto this1 se modifica de forma que en valor absoluto el objeto no se mueva. Para poner la pieza que queremos que esté asociada a la base que no se mueve, cargamos vacío (Null) para poner la pieza fuera de la carga; gracias a esto se mueve el robot, pero la pieza permanecerá en su posición. En caso de que queramos que una pieza se mueva con la herramienta, intercambiaremos la pieza asociada a la base con la carga del robot. CAPÍTULO II: ESTADO DEL ARTE 42 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA En el diagrama superior se ha definido un objeto LapExt como un icono con .stl nulo. Para dejar el lápiz en el entorno de la simulación, por ejemplo, en el objeto esfera, se deja la carga que se está manipulando en una posición relativa a la esfera. Para tomar la carga se intercambia la pieza del icono exterior (LapExt) a la carga del robot. PegarEn(LapExt, Carga, [], aux.tRzyx(rob.Pose())); PegarEn(Carga, LapExt, aux.tRzyx(rob.Pose), []); Simulación 3: ABB irb120 Tomar y dejar lápiz La librería SimRob presenta aspectos muy interesantes para modelar robots, como por ejemplo el uso de RigidBody para calcular la cinemática del robot y el entorno Simscape para realizar la simulación. Además, el hecho de realizar una librería con varios brazos robóticos es muy interesante para comprender las similitudes entre los diferentes robots que da libertad al usuario para crear la estación como más le guste. La estandarización de los elementos de Simulink y los métodos para aplicarlo a varios modelos puede resultar muy útil tanto a nivel de simulación como en un modelo robótico real. Este proyecto pretende ser una ampliación de esta librería, de forma que se emplearan los fundamentos de esta herramienta para diseñar varias estaciones para robots humanoides. Además, esta herramienta tiene un gran potencial para la resolución del problema no solo cinemático sino dinámico de un robot; por todo esto, el trabajo se centrará en el estudio dinámico de varios robots humanoides como parte una extensión de la librería SimRob. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 43 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS Casi todos los simuladores de robótica trabajan utilizando el modelo cinemático; este método es de resolución sencilla y siempre obtendremos una solución exacta a partir de la ecuación. La ventaja que nos ofrece Simscape que no presentan otros simuladores como RobotStudio es que se puede llevar a cabo el estudio dinámico del robot El proyecto se enfocará en el estudio del modelo dinámico de los robots. Inicialmente se utilizará el mismo robot ABB irb120 utilizado en los capítulos anteriores para comprender el funcionamiento de la dinámica en un robot cualquiera. 3.1 MODELADO DINÁMICO ROBOT 3.1.1 DISEÑO DE LA ESTACIÓN A la hora de estudiar la dinámica del robot, la entrada que se pasa al robot es directamente el par que se va a aplicar sobre cada articulación. A partir del valor del torque, se calcularán las coordenadas articulares que debe alcanzar el robot. El modelo dinámico tiene en cuenta las masas y fuerzas que actúan sobre el robot, por ello representa el comportamiento de un modelo robótico real en el que, en función de los parámetros de entrada, el robot puede llegar a su objetivo final o no. Los bloques de las articulaciones tienen la entrada B y la salida F que presentaban también las articulaciones del modelo cinemático; representan los sistemas de ejes sobre el que se posiciona la articulación actual y la siguiente. La diferencia de la estación con el modelo cinemático es que en los bloques de las articulaciones se le pasa el torque como entrada y tienen como salida la posición de la articulación, lo que nos permitirá controlar el movimiento del robot para que llegue a la posición adecuada, como se explicará en el apartado “2.2.3 Controladores básicos y arquitectura de control”. Esto es diferente del caso cinemático, donde los bloques de las articulaciones solo presentaban una entrada que era el ángulo que se quería mover cada articulación. No presentaba ninguna salida ya que no tenía sentido establecer un sistema de control para el caso cinemático porque se consigue un movimiento ideal a partir de la q de entrada. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 44 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 17: Articulación modelo cinemático Bloques Simulink 18: Articulación modelo dinámico Cuando la diferencia entre la posición articular real y deseada del robot es mayor que cero, significa que el robot aún no ha alcanzado su q final, por lo que se continúa introduciendo par al sistema para que las articulaciones continúen su movimiento. Si el error es cero (diferencia es nula), entonces significa que las articulaciones han llegado al sitio que queríamos por lo que se deja de aplicar torque en las articulaciones. Además, se ha añadido otro lazo de control que se encarga de seguir una velocidad de referencia para minimizar el error y eliminar las oscilaciones del robot que se explicará más adelante. El robot está unido al sistema global del sistema, por lo que permanecerá fijo en el suelo. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 45 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 19: Modelo robótico ABB irb120 dinámica Bloques Simulink 20: Robot ABB irb120 dinámica 3.1.2 LAZO INTERNO DE CONTROL El controlador que se aplica para controlar la dinámica del robot en un principio es de acción proporcional. Una vez que se ha realizado la diferencia entre la posición articular real del robot y la posición a la entrada del sistema, el resultado pasa por un controlador proporcional. Si la diferencia de posiciones es muy grande, significa que el robot aún no ha alcanzado su q final, por lo que la salida del controlador aumentará para introducir un torque mayor a los motores y que estos continúen su movimiento. Si el error es muy pequeño, entonces las articulaciones han llegado prácticamente a su posición CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 46 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA final y la salida del controlador se irá reduciendo para dejar de aplicar torque en las articulaciones. Para integrar el control derivativo al modelo robótico se modificaron los bloques de las articulaciones para obtener de salida la velocidad. Según la ecuación de la acción derivativa necesitamos la derivada del error (la magnitud a la entrada del controlador), que será la derivada de la posición articular, es decir, la velocidad articular. A diferencia de los bloques articulares en el modelo dinámico con control únicamente proporcional, los bloques en el modelo con control derivativo presentan una salida para la velocidad. Bloques Simulink 21: Articulación modelo dinámico controlador PD Es decir, el robot ABB irb120 presenta un control tanto de posición como de velocidad (proporcional y derivativo). Para ello se crearán dos salidas en cada bloque articulación que serán controlados por un lazo: del q1-q6 proporcional y del q7-q12 derivativo. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 47 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA El controlador proporcional (Kcontrol) minimiza el error tomando como referencia la salida posición q del robot. Por otro lado, el controlador derivativo (Kest) no tiene referencia; su función es reducir las oscilaciones para que los movimientos de las articulaciones sean más suaves. Así estamos planteando un controlador interno PD que aporta un núcleo interno de estabilidad donde la realimentación proporcional lleva al robot al objetivo y la derivativa elimina las vibraciones que dan inestabilidad al humanoide. 3.1.3 APLICACIONES DEL MODELO ROBÓTICO La clase Kin se puede usar tanto en estaciones modeladas con el problema dinámico como el cinemático; aunque la entrada al robot sea diferente (torque o posición articular), la entrada al sistema es la posición articular en los dos casos. Se podrá emplear la función Kin explicada anteriormente para calcular la cinemática directa e inversa del modelo robótico, es decir, para calcular relación que hay entre los dos puntos y los ejes del robot; no tiene relación con el modo de simulación del robot. Realizamos pruebas para comprender el funcionamiento de este modelo. En primer lugar, estudiaremos la cinemática directa en el robot ABB rib120. Damos la orden de movimiento de rotación de 30 grados a todas las articulaciones del robot. El robot es capaz de realizar el movimiento y esto lo ha conseguido aplicando un torque determinado en sus articulaciones. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 48 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 4: ABB irb120 rotación 30 grados con cinemática directa por dinámica Representamos en una gráfica la evaluación del par que se ejerce en cada articulación. Para que el robot alcance la posición inicial, ha sido necesario aplicar un torque mucho mayor de forma absoluta en las articulaciones 2 y 3 que en las 5 y 6. Esto tiene sentido porque en los brazos robóticos industriales es normal que los motores de la base del robot (se encargan de sujetar el brazo de mayor tamaño) tengan que ejercer más fuerza para mover el conjunto de bodies del robot. Los motores de las articulaciones del extremo no requieren un par tan elevado porque solo se encargan de rotar el extremo final del robot que pesa mucho menos. Además, vemos que todas las articulaciones llegan a la posición articular de 30 grados de forma lineal en la simulación. Gráfica 1: Torque y posición en articulaciones (rotación q 30 grados) CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 49 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA En los sistemas robóticos reales, los motores tienen unos límites de torque para que no roten más allá de una posición determinada. Se puede simular el efecto de este límite definiendo una variable que determine el torque de saturación máxima y mínima. Se añade un bloque de saturación una vez que se haya obtenido el par. Bloques Simulink 22: Bloque saturación Por ejemplo, si ponemos un torque de saturación de 10 la articulación 2 del robot no funcionará correctamente durante la simulación, ya que para alcanzar la posición articular deseada se tiene que ejercer un torque en la articulación 2 de -20 unidades. En otras palabras, con esta saturación los motores no soportan el peso del robot y las articulaciones no realizarán el movimiento demandado. Este fallo se ve reflejado en los torques del resto de las articulaciones ya que se produce un desequilibrio general de las articulaciones del robot. Igualmente afecta a la posición articular final, provocando que varias articulaciones no lleguen a los 30 grados. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 56 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 25: Sensor de fuerza Durante la simulación la pelota ejerce una fuerza contra el suelo que le hace rebotar. Con los parámetros establecidos en el bloque Spatial Contact Force a medida que avanza la simulación los botes de la pelota van perdiendo fuerza y altura, lo que está relacionado con el coeficiente de amortiguamiento. Por otra parte, se comprueba la rigidez porque la pelota no penetra en el suelo, si no que choca con el mismo. Simulación 8: Pelota botando CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 57 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA En este ejemplo particular, si el valor de la rigidez fuera muy pequeño, el suelo sería poco rígido, es decir, actuaría como si fuera un suelo de otro material menos sólido y la bola podría penetrar en él o incluso atravesarlo. Si disminuimos el coeficiente de amortiguamiento, se perderá menos energía en cada bote, por lo que la pelota seguirá rebotando de forma fuerte contra el suelo llegando sin reducir considerablemente la altura del bote a lo largo del tiempo. Con el amortiguamiento también trabajamos con la fuerza de la gravedad, ya que simulamos el efecto que esta aceleración tiene en la pelota. Este ejemplo se ha escogido porque el suelo y la pelota entran en contacto a través de un único punto de la superficie. En caso de escoger otra figura como un cubo o un prisma, la superficie de contacto entre sólidos sería muy grande y el método del bloque Spatial Contact Force no sería suficiente. Ilustración 16: Puntos de contacto entre suelo y geometrías simples Los parámetros de rigidez y amortiguamiento se han escogido haciendo varias simulaciones y comprobando qué resultado era más representativo. También es posible hallar estos parámetros de forma que la relación entre los sólidos que entran en contacto este totalmente controlada. Por ejemplo, hay proyectos desarrollados por Matlab en los que se crear un algoritmo de optimización para que el comportamiento de la bola en Simscape sea lo más parecido posible al comportamiento de una pelota real cuando bota. Aquí se ha modelado un sistema en el que la pelota bota de una forma y en un periodo de tiempo determinado y todo esto se consigue modificando los parámetros de contacto. CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 58 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 17: Experimentación pelota botando con optmziación [16] 3.3 APLICACIÓN DE FUERZAS La relación entre fuerzas puede útil para establecer un sensor de fuerza o limitador que indique hasta qué punto debe trabajar el robot. Esto se puede aplicar al brazo robótico, de forma que la esfera que estaba libre en la simulación se una de forma fija al extremo del robot humanoide, en el ejemplo se ha situado al final de la herramienta. Bloques Simulink 26: ABB irb120 aplicación sensor de fuerza CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 59 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 9: ABB irb120 aplicación sensor de fuerza Para que la esfera no atraviese el suelo se podrían variar los parámetros de rigidez y amortiguamiento para cambiar las propiedades del suelo, pero esto daría lugar a oscilaciones y a un tiempo de simulación muy grande una vez que la esfera haya entrado en contacto con el suelo. La solución que se ha encontrado ha sido modificar el bloque “Sensor fuerza” incorporando una condición: si la distancia de separación entre geometrías es menor o igual a cero, entonces la simulación se para automáticamente. Bloques Simulink 27: Sensor de fuerza con interrupción El dispositivo sensorial de fuerza desarrollado puede tener un gran número de aplicaciones en campos muy diferentes. Una de las aplicaciones podría ser la incorporación del sensor en robots colaborativos en los que hay interacción directa entre usuario y robot. Cuando el usuario ejerza un esfuerzo sobre el sensor (situado en el extremo del robot) el robot sigue el esfuerzo del paciente y hace el movimiento correspondiente al esfuerzo inverso. El sensor CAPÍTULO III: MODELADO DINÁMICO Y FUERZAS EXTERNAS 60 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA de fuerza detecta la fuerza del usuario y el robot hace un movimiento para que el esfuerzo resultante sea 0 para frenar al robot. Este sería el ejemplo más sencillo de robots colaborativos, donde el usuario puede guiar al usuario con su fuerza. Un ejemplo de esta aplicación es la técnica de Hand guiding donde se aprovecha la fuerza del robot y los sensores de fuerza para guiar al robot con la mano. Igualmente, otra aplicación es la de un sistema de protección que detecta si la intensidad de un motor pasa un determinado límite. Si esto ocurre hay que dejar de aplicar fuerza en el motor para evitar que se rompa la estructura robótica. Ilustración 18: Operaciones colaborativas con robots según la norma lSO/TS 15066 [17] CAPÍTULO IV: HUMANOIDE 61 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA CAPÍTULO IV: HUMANOIDE Una vez comprendidos los conceptos fundamentales de cinemática y dinámica orientados a modelos robóticos de Matlab y Simulink, se decidió aplicar dichos aspectos a un robot de mayor número de grados de libertad y complejidad. Hasta ahora, se ha trabajado con brazos robóticos que son sistemas robotizados fijos a una base, pero se consideró que los fundamentos de la herramienta SimRob podrían aplicarse a aspectos mucho más complejos como es el control de robots móviles. Para ello se ha ampliado la librería SimRob aplicando los conceptos expuestos a robots humanoides e incorporando nuevos conceptos relacionados con el modelado dinámico de robots. 4.1 MODELO ROBÓTICO DE MATLAB Matlab ofrece un ejemplo “sm_humanoid.urdf “que ha sido importado utilizando el comando smimport. En dicho modelo hay ciertos bloques de actuación articular, p, como entrada a las articulaciones para que le robot pudiera simular ciertos movimientos. Al importar el modelo URDF del humanoide directamente desde Matlab obtenemos un archivo Simulink con varios bloques para definir las articulaciones y las entradas de las mismas. CAPÍTULO IV: HUMANOIDE 62 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 28: Robot Humanoide propuesto por Matlab Cuando comienza la simulación de Matlab el robot mueve automáticamente las piernas y los brazos, las articulaciones de los hombros, la cadera y las rodillas. En el esquema se observan varios iconos que representan cada articulación del humanoide y algunos bloques con la letra “p” (posición angular) que sirven de entrada a la articulación. Dentro de cada bloque de entrada “p” encontramos un bloque Motion que crea diferentes grupos de señales de forma lineal por partes. Estas señales son las que definen el movimiento de cada articulación porque indican la posición en grados que tiene que rotar cada articulación rotacional. Por ejemplo, para balancear el hombro con un ángulo de 30 grados se dispone esta señal. CAPÍTULO IV: HUMANOIDE 63 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 29: Señal de entrada propuesta por MatLab A pesar de que este método de movimiento articular es válido, el usuario debe modificar los datos de manera gráfica (cambiando la figura de la gráfica) y tan solo se podrá trabajar con las articulaciones que tienen como entrada un bloque p. Además, para cambiar el grado de rotación de las articulaciones se debe hacer de forma individual, a diferencia de las estaciones modeladas en los ejemplos con el robot ABB irb120, donde las coordenadas articulares se almacenaban en una única variable q. Igualmente, con el modelo que ofrece Matlab el tronco del robot permanece unido al sistema de referencia base, por lo que el robot no podrá desplazarse durante la simulación y será, al fin y al cabo, un humanoide fijo igual que el brazo robótico. Este modelo tiene un gran potencial y aplicando los conceptos de dinámica y cinemática explicados anteriormente podremos lograr movimientos mucho más complejos e incluso similares a los de una persona real. Para conseguirlo se emplearán las funciones que proporciona Matlab para el control de robots y se realizarán mejoras para optimizar los movimientos del humanoide. Se trata de un robot humanoide con 22 bodies que constituyen la cabeza, tronco y extremidades del robot. El robot presenta 4 grados de libertad en cada brazo, 4 grados de libertad en cada pierna y dos en la cabeza. En la CAPÍTULO IV: HUMANOIDE 64 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA estructura encontramos 18 articulaciones rotacionales (4 para cada brazo, 4 para cada pierna, una para la articulación tronco-hombro y otra para hombrocuello). Igualmente cuenta con 4 articulaciones fijas que se reparten entre la cabeza y la cintura. Según la configuración de Matlab, para representar de forma visual el robot construido utilizamos un archivo stl por cada body empleado. Como se ha mencionado anteriormente, el formato de entrada de las posiciones articulares no es cómodo ni práctico para el usuario, por lo que en cada bloque de articulación se pasará la variable q de la misma forma que en las estaciones explicadas en el apartado “2.4 Librería SimRob” . Bloques Simulink 30: Humanoide base En el modelo de Simulink aprovecharemos la estructura y la configuración del robot (se mantienen los 22 bodies con sus articulaciones), pero se harán modificaciones a la hora de introducir las posiciones y otros parámetros para controlar el robot. 4.2 MODELO CINEMÁTICO DEL HUMANOIDE En el robot planteado por Matlab el modelo está enfocado a un estudio mayoritariamente cinemático, donde la entrada al robot es la posición angular y a partir de esta el robot calcula de forma matemática cómo resolver el planteamiento. Aquí se plantea un sistema de lazo abierto donde la única entrada es el ángulo que se moverá una articulación. Con el modelo cinemático, el sistema calcula automáticamente el torque (Torque CAPÍTULO IV: HUMANOIDE 65 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Automatically Computed en cada joint) movimiento resolviendo la siguiente ecuación: 𝑇=𝐽𝑑2𝑞 𝑑𝑡2+𝐵𝑑𝑞 𝑑𝑡+ 𝐾𝑞 ( 13 ) Para comprender mejor el modelo cinemático se llevaron a cabo una serie de ejemplos para lograr su control. 4.2.1 DISEÑO DE LA ESTACIÓN Como en un estudio dinámico no se analizan las fuerzas que producen el movimiento del objeto, se decidió mantener fijo al robot por la cadera. Con esto conoceremos la posición exacta de la cadera, por lo que a la hora de plantear el modelo cinemático inverso del robot sabremos la posición de cada articulación. Al plantear algunas simulaciones, se ha partido del modelo Simulink base para el humanoide y se han realizado algunos cambios en el modelo de (insertar o quitar objetos, herramientas, introducir nuevos TCPs…). Bloques Simulink 31: Modelo robótico Humanoide modelo cinemático CAPÍTULO IV: HUMANOIDE 72 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Código 3: Movimiento articulaciones 30 grados en Humanoide Al simularlo, se observa como las articulaciones realizan el movimiento definido por el usuario. También se aprecia que como el robot está sujeto de forma fija por la cadera, esta parte del robot no cambia de posición. No solo eso, si no que debido al movimiento de las dos extremidades inferiores el robot queda flotando en el aire al enviar esta instrucción. CAPÍTULO IV: HUMANOIDE 73 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 12: Humanoide mueve todas las articulaciones 30 grados Con este modelo podemos controlar los movimientos del robot de forma más o menos sencilla sin embargo no se tiene en cuenta masas ni otros parámetros relacionados con las fuerzas. Además, no se tiene en cuenta la estabilidad ni el equilibrio del robot, el humanoide nunca se caerá porque está fijo a la base a través de la cadera. No tiene sentido aplicar las funciones cinemáticas de Kin porque los movimientos de los humanos no son iguales que los de un robot; a esto se añade que con Kin solamente se indica al robot que llegue a una posición, pero no se puede dar ninguna orden para que realice un movimiento. Solo es capaz de definir la forma de llegar a un punto concreto, pero no sirve para hacer movimientos en los que se necesitan varias posiciones articulares de una misma articulación a lo largo de la simulación. Este modelo da pie a situaciones irreales que no podrían darse en los movimientos de una persona, por ello decidimos ir un paso más allá y diseñar un modelo dinámico en el que se tenga en cuenta la fuerza de la gravedad, las fuerzas normales y la estabilidad del robot entre otros aspectos. El movimiento de un ser humano solo puede definirse mediante un modelo dinámico. 4.3 MODELO DINÁMICO DEL HUMANOIDE 4.3.1 DISEÑO DE LA ESTACIÓN El estudio dinámico se centra en las causas que dan lugar al movimiento de un cuerpo. A diferencia de la cinemática, donde se pasa como entrada una CAPÍTULO IV: HUMANOIDE 74 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA coordenada articular y el robot calcula matemáticamente el torque que hay que ejercer, en el modelo dinámico se pasa al robot directamente el torque deseado. Como se explicó en el ejemplo con el brazo robótico, la diferencia entre el modelo cinemático y dinámico reside en el bloque de las articulaciones. En este ejemplo, la articulación del codo tiene como entrada la posición en el caso cinemático y no presenta ninguna salida. Por otro lado, el bloque articular en el modelo dinámico tiene como entrada el torque y de salida la posición articular que es vital para controlar la posición del humanoide. Ilustración 21: Bloque articulación en modelo dinámico Ilustración 22: Bloque articulación en modelo cinemático Más adelante se modificará el bloque de nuevo para incorporar una nueva salida; esto se explicará en el apartado de control. Los modelos dinámicos del humanoide tendrán como entrada al sistema la posición de todas las articulaciones que determinará el usuario. La salida será la posición y rotación en cuaternios de la base del robot (hemos considerado que la base será la cadera). Partiendo de la estructura que presentaban las estaciones de modelado cinemático diseñamos una nueva CAPÍTULO IV: HUMANOIDE 75 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA estación para trabajar con el humanoide de forma dinámica. La estación cuenta con el mismo número de articulaciones y TCP para manipular cargas. Como estamos modelando el humanoide de forma dinámica, hay una realimentación de la posición para conocer si la posición articular real del robot está cerca o no de la deseada. Si esta posición aún es muy diferente se continuará alimentando las articulaciones con un torque hasta que el error sea cero, como se explicó en el subcapítulo “3.1 Modelado dinámico robot”. Bloques Simulink 35: Modelo robótico para modelado dinámico CAPÍTULO IV: HUMANOIDE 76 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 36: Robot para modelo dinámico Por otra parte, los pies salen del subsistema del humanoide y se unen con otro subsistema que presenta como salida la fuerza que ejercen los pies. Bloques Simulink 37: Subsistema Fuerza Pies Humanoide Para modelar el robot de forma dinámica es necesario que este ejerza una fuerza contra el suelo para sujetar el cuerpo del humanoide utilizando CAPÍTULO IV: HUMANOIDE 77 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA solamente los pies. Para ello se deben definir las esferas Contact Proxis que se muestran en la ilustración. Cada esfera está unida por un lado a un bloque Rigid Transform para cambiar la posición de las esferas y por otro lado a un bloque Spatial Contact Force. A través de este último bloque se establece el contacto entre cada esfera y el suelo; en el siguiente apartado se explicará de forma más detallada la importancia de estas esferas de contacto en el control del robot dinámico. El modelado de la fuerza que ejercen las esferas contra el suelo se detalla a continuación en “4.3.3 Contacto pies-suelo” 4.3.2 LAZO INTERNO DE CONTROL En apartados anteriores se ha mencionado que para lograr el modelado dinámico del robot ha sido necesario incorporar una realimentación con un sistema de control. Este sistema básico de control presenta una acción proporcional y una acción derivativa, que conseguiremos con las salidas de la posición y la velocidad de los bloques de las articulaciones. Bloques Simulink 38: Bloque articulación modelo dinámico PD Con el objetivo de eliminar el error estacionario se empleó un control proporcional. Es cierto que se podía haber aplicado un control PI, pero como en el sistema funcionaba correctamente utilizando un proporcional no hemos incorporado el elemento integral. Por otra parte, se integró la acción derivativa para eliminar las oscilaciones en los movimientos del robot. Para comprobar el efecto de este controlador en el robot, graficamos la posición y orientación de la cintura del robot utilizando un controlador proporcional y un controlador PD interno. CAPÍTULO IV: HUMANOIDE 78 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 39: Robot con controlador P Bloques Simulink 40: Robot con controlador PD En primer lugar, representamos la posición y orientación de la cadera durante la simulación con el controlador proporcional. Aquí se representa la posición en x (Azul), y (rojo) y z (amarillo). CAPÍTULO IV: HUMANOIDE 79 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Gráfica 4: Posición robot con controlador P En la gráfica observamos como las líneas amarilla y azul (x, z) de la gráfica de la posición permanecen más o menos constantes, mientras que la línea que representa el eje y va descendiendo con el tiempo. Con esto podemos suponer que el eje e indica la dirección de desplazamiento del robot cuando se mueve (avanzará en el eje y en el sentido negativo). A continuación, se muestra la gráfica que representa la posición y rotación de la cadera del robot al incorporar un controlador proporcional derivativo al ejemplo anterior: Gráfica 5: Posición robot con controlador PD CAPÍTULO IV: HUMANOIDE 80 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Podemos comprobar que, al introducir un controlador derivativo, tanto la posición como la orientación del robot cambia de forma mucho más suave y hay un menor número de oscilaciones. Con este controlador el robot moverá las articulaciones de forma mucho menos abrupta, por lo que se el movimiento se asemejará más al de un humano real. Tras incorporar estos dos lazos, se consigue un modelo robótico estabilizado, por lo que los lazos de control explicados serán la base en los siguientes modelos de estación. Al estudiar el control de los humanoides, cada uno de los lazos de control formará un sistema independiente, de forma que se pueden anidar unos controladores dentro de otros para tener más control sobre el modelo. 4.3.3 CONTACTO PIES-SUELO Uno de los aspectos más importantes que hay que comprender al analizar el modelo dinámico del humanoide es el modelado de la fuerza de contacto entre los pies del humanoide y el suelo. Con el objetivo de conseguir un modelo humanoide lo más parecido posible a una persona real, se planteará el modelo dinámico del robot. Para este modelado vamos a considerar que el humanoide está sujeto únicamente por las plantas de los pies, como una persona real. Este se sostiene gracias a la fuerza que ejercen las plantas de los pies sobre la superficie, que hace que el robot no se caiga por gravedad. Si el humanoide estuviera cogido por la cadera como en los ejemplos anteriores, sería un cuerpo totalmente fijo a la base que no podría desplazarse ni desestabilizarse independientemente del movimiento; esto es muy diferente de lo que sucede en un modelo real. Como se ha expuesto en el apartado “3.2 Fuerzas externas” para controlar la fuerza de contacto entre dos sólidos, en este caso el pie y el suelo, se emplea el bloque Spatial Contact Force. Sin embargo, aquí surge el inconveniente de la superficie de los pies. Simscape Multibody emplea un método de penalización basado en puntos para modelar el contacto entre cuerpos. Este método significa que el bloque Spatial Contact Force aplica las fuerzas de contacto necesarias a sus cuerpos conectados en los puntos con la penetración máxima entre los dos cuerpos. Cada bloque de fuerza de contacto espacial solo aplica una única fuerza de contacto para cada cuerpo en cada paso de tiempo. Por ejemplo, en la siguiente ilustración, si la caja A penetra en la caja B, entonces se ejercerá una fuerza para compensar la esquina de la caja que tenga una penetración mayor. Tras aplicar esta fuerza, la caja A rotará y de nuevo habrá otro punto de penetración máximo sobre el CAPÍTULO IV: HUMANOIDE 81 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA que actuará otra nueva fuerza. Este comportamiento es muy exigente para el Solver y además disminuirá notablemente la velocidad de la simulación. Ilustración 23: Contacto con método basado en puntos [18] Para solucionar este impedimento, se utiliza el concepto de Contact Proxies, que se tratan de formas simples, como esferas, por ejemplo, para representar las partes de contacto entre los cuerpos. Así en el ejemplo anterior, utilizando Contact Proxis se anclarían 8 esferas, una en cada esquina, en vez de una sola esfera que modele el contacto entre los dos sólidos. A medida que se establece el contacto, la fuerza normal en cada esquina inferior será un cuarto del peso de la caja A. Ilustración 24: Contacto con método Contact Proxis [18] Al utilizar Contact Proxies la rapidez y robustez del modelo varía; no solo influyen parámetros relacionados con la fricción o las fuerzas de contacto, sino que también afectan otras condiciones como la distancia de separación entre las esferas de contacto. A continuación, se muestran tres ejemplos diferentes en los que se ha variado la distancia de las esferas de contacto. CAPÍTULO IV: HUMANOIDE 88 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA estabilidad y su gran número de grados de libertad, por ello se consideró que podría ser interesante para el proyecto. Es un modelo que presenta 18 articulaciones rotativas en el que las articulaciones de las extremidades superiores, inferiores y cabeza están referenciadas al pecho que es el sistema de referencia global del robot. Los movimientos de zjudancer son similares a los del robot de Matlab: puede rotar las mismas articulaciones a excepción de las muñecas; además tiene la capacidad de rotar las piernas en el eje z y los tobillos en el eje x cosa que no puede hacer el humanoide inicial. De la misma forma que antes, se ha adaptado el modelo de Simulink para poder trabajar con el robot en un entorno dinámico, por ello se ha definido una realimentación de la posición articular y un subsistema para controlar la fuerza de los pies contra el suelo. Bloques Simulink 43: Modelo humanoide "zjudancer" CAPÍTULO IV: HUMANOIDE 89 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 44: Humanoide "zjudancer" CUADRÚPEDO “YOBOTICS” Los métodos y funciones empelados se pueden utilizar para todo tipo de sistemas robotizados independientemente de su fisiología antropomórfica. Para verificar la universalidad de las herramientas utilizadas se ha tomado un robot cuadrúpedo que se ha adaptado para que se pueda mover con los mismos comandos que los humanoides anteriores. El modelo cuadrúpedo obtenido tiene los mismos grados de libertad y configuración que algunos de los robots cuadrúpedos más avanzados del mercado. Un ejemplo es el robot cuadrúpedo de Boston Dynamics con visión inteligente que ha presentado el centro tecnológico español Tecnalia en la Bienal de la Máquina Herramienta este mismo año 2022. Dicho robot está dotado de capacidades móviles y de reconocimiento inteligente del entorno en el que se aplican las últimas tecnologías de robótica flexible. [20]. Ante esta innovadora apuesta, se decidió incorporar al proyecto el modelo yobotics que cuenta con el mismo número de articulaciones y grados de libertad que el robot presentado por Tecnalia. Ilustración 28: Imagen obtenida de [20] CAPÍTULO IV: HUMANOIDE 90 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA El modelo yobotics cuenta con 12 articulaciones rotativas que le permiten al robot mover cada pata de forma frontal, lateral y doblar la rodilla. Igualmente se ha adaptado el modelo de Simulink para que el robot trabaje de forma dinámica. En este caso se ha utilizado una esfera de contacto en cada pata porque era suficiente para lograr el contacto entre el suelo y el pie del robot. Las órdenes que se den al robot no serán iguales que las que se pasan a los humanoides. Por ejemplo, para que un humanoide ande hay que movilizar las dos extremidades inferiores, sin embargo, aquí hay que controlar las cuatro extremidades. A pesar de esto, los objetos y los controladores que se utilicen para optimizar el comportamiento del robot son iguales que en los otros modelos. Bloques Simulink 45: Modelo cuadrúpedo "yobotics" CAPÍTULO IV: HUMANOIDE 91 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 46: Cuadrúpedo "yobotics" Para el caso de los humanoides, podemos hacer una comparación de los números de cada articulación y su sentido (positivo o negativo) que se han asignado en el objeto “eje” en cada modelo: CAPÍTULO IV: HUMANOIDE 92 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Nombre articulación Matlab Roid Zjudancer HomDF 1 -14 1 HomDL 2 15 X CodD 3 17 2 MunD 4 X X CadDL 5 2 4 CadDF 6 -3 -5 RodD 7 4 6 TobD 8 5 7 HomIF -9 -18 17 HomIL 10 19 X CodI 11 21 18 MunI 12 X X CadIL 13 8 10 CadIF 14 -9 -11 RodI 15 10 12 TobI 16 11 13 CuelF 17 X 16 CuelL 18 22 15 CadDG X 1 3 CadIG X 7 9 TobDL X 6 8 TobIL X X 14 CodDG X 16 X CodIG X 20 X TroL X 13 X Así, si por ejemplo se quiere realizar una rotación de 30 grados del codo derecho si no se hubiera implementado el objeto “eje” el código sería: %MATLAB joint= [3, 30]; tQ= MoveHum(tQ, joint, tinc); sol= sim(Estacion,tQ(:,1),[],tQ); %ROID joint= [17, 30]; tQ= MoveHum(tQ, joint, tinc); sol= sim(Estacion,tQ(:,1),[],tQ); CAPÍTULO IV: HUMANOIDE 93 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA %ZJUDANCER joint= [2, 30]; tQ= MoveHum(tQ, joint, tinc); sol= sim(Estacion,tQ(:,1),[],tQ); En cambio, con el objeto eje podríamos definir el movimiento de cualquiera de los humanoides, definidos como H, con estas líneas; %MATLAB, ZJUDANCER,ROID H= Hum(Estacion, eje, baseRobot_, q0_); joint= [H.eje.CodD, 30]; H.AddMove(joint, 1) H.Sim Con esto se ha conseguido controlar de forma universal cualquier modelo robótico humanoide empleando un objeto único. El objeto Hum también podría aplicarse al modelo cuadrúpedo, sin embargo, hay que tener en cuenta que un robot de 4 piernas no camina de la misma forma que un robot bípedo. En el apartado “Capítulo VI: Anexos” se muestran dos códigos de una posible combinación de articulaciones y rotaciones para que pueda caminar un robot humanoide y un robot cuadrúpedo. 4.3.5 APRENDIZAJE MANUAL 4.3.5.1 FUNCIONES PARA EL APRENDIZAJE Una forma de controlar el robot es enseñar al humanoide a realizar un movimiento paso a paso. Esto quiere decir que para que el humanoide se mueva es necesario pasar a cada articulación los grados que se quiere mover. Este método es parecido a cuando se enseña a andar a un niño, donde hay que explicar al niño como doblar las rodillas y como apoyar los pies para que no se caiga. Para que el usuario pueda aprender de forma manual cómo funciona el robot, se creó una clase Hum con el que se define el objeto humanoide como se ha explicado anteriormente en “4.3.4 Clase Hum y objeto eje”. Dentro de esta clase se han creado diferentes funciones para diseñar los movimientos básicos del robot de forma dinámica como son TestMove o AddMove. A partir de estos métodos se han diseñado funciones para hacer acciones completas, por ejemplo, dar un paso o andar. Para ello se ha CAPÍTULO IV: HUMANOIDE 94 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA introducido en la función diferentes joint que combinándolos dan lugar al movimiento adecuado. Para simular un paso completo se ha definido el método Paso() que emplea cuatro vectores joints para determinar los movimientos articulares que hacen falta para dar un paso. En el caso de la función Marcha() algunos vectores joint se repetirán en bucle para programar el número de pasos que dará el robot. Marcha() se forma mediante 6 pasos que se repiten de 3 en 3 con el pie derecho y con el izquierdo; lo que se ha hecho es repetirlo como ciclos para que se convierta en un aprendizaje “automático”. Además, podemos plantear los movimientos del robot en función de la amplitud del paso, teniendo en cuenta la proporción de pesos que guardan las diferentes articulaciones. Una vez planteados los diferentes joint, se podrán añadir a la simulación final mediante el comando AddMove. El usuario podrá plantear cualquier movimiento combinado que desee de esta forma sin necesidad de probar el movimiento antes si así lo desea. Se han tomado estas dos nuevas funciones para comprobar el movimiento del modelo humanoide, sin embargo, el usuario puede jugar con el robot e incorporar tantas funciones como desee para guardar movimientos que le hayan parecido interesantes para controlar el humanoide. CAPÍTULO IV: HUMANOIDE 95 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA 4.3.5.2 INTERFAZ PARA EL APRENDIZAJE El aprendizaje manual permitirá al usuario interaccionar con el robot que desee para que pueda controlar diferentes movimientos y realizar una simulación completa. Con el objetivo de hacer más ameno el control del robot al usuario, se ha propuesto el diseño de una interfaz con la extensión de Matlab AppDesigner. En ella se disponen una serie de controles con los que el usuario puede jugar para crear el movimiento de su robot. Para facilitar la comprensión de la interfaz al usuario, se han enumerado los botones de forma que vaya realizando las diferentes acciones de control en el orden adecuado. La interfaz se inicializa directamente desde Matlab; hay que escribir en la ventana de comandos el nombre del archivo AppDesigner y pasar como argumento el nombre del objeto Hum que se ha definido para el robot que queramos simular. Por ejemplo, para el robot humanoide de Matlab: Una vez que se llama a la app se mostrará la interfaz al usuario automáticamente. Dentro del objeto Hum se ha definido un parámetro numérico que servirá para indicar con qué modelo de los tres se está trabajando. En función de este parámetro se señalará con un recuadro amarillo cuál de los tres robots se ha importado cuando se abra la interfaz. CAPÍTULO IV: HUMANOIDE 96 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 29: Interfaz AppDesigner En primer lugar, el usuario debe introducir la posición en grados que desea alcanzar con una articulación. Seguidamente debe seleccionar de la lista la articulación que desea rotar. A continuación, puede hacer click sobre el botón Test para probar el movimiento. El usuario puede continuar añadiendo varias rotaciones simultáneas en diferentes articulaciones con el botón Test; todos estos movimientos se realizarán a la vez en el mismo intervalo temporal. Cuando el usuario considere que el conjunto de rotaciones de las articulaciones es definitivo, entonces podrá añadirlo a la Simulación. Al hacer click sobre Simular se podrán ver todos los movimientos que se han almacenado hasta el momento. Si el usuario considera que el conjunto de rotaciones que ha planteado no es adecuado, entonces podrá pulsar sobre Borrar Joint para comenzar otro conjunto de rotaciones. Es importante resaltar que una vez que el usuario añada un movimiento a la simulación este no podrá eliminarse de forma individual, por ello el botón Borrar Joint nos da la oportunidad de rectificar el movimiento antes de añadirlo de forma definitiva. En caso de que el usuario quiera borrar todos los movimientos almacenados en la simulación podrá hacer click sobre resetear para empezar de cero. CAPÍTULO IV: HUMANOIDE 97 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Igualmente se han establecido una serie de botones para que el humanoide lleve a cabo movimientos prediseñados como dar un paso o caminar el número de pasos que se le indique. 4.3.5.3 APLICACIÓN UNIVERSAL A HUMANOIDES Durante el diseño de la interfaz para controlar el movimiento del robot humanoide de Matlab, se tuvo en cuenta su posible aplicación a otros modelos humanoides diferentes. Para poder controlar los movimientos del humanoide a través del interfaz, basta con definir el objeto Hum con la estación y las articulaciones correspondientes del humanoide que queremos simular. Una vez creado el objeto humanoide el usuario podrá jugar con los botones para hacer que su humanoide se mueva. En la clase Hum que se ha explicado anteriormente, las articulaciones de los ejemplos de robots humanoides se han almacenado con el mismo nombre en una estructura “eje”. En la interfaz se ha escogido un componente ListBox que muestra Items de una estructura. Como las articulaciones también están almacenadas en una variable de tipo estructura se ha podido pasar este argumento a la ListBox. Gracias a este planteamiento, las articulaciones de los tres robots comparten el mismo nombre y se podrán seleccionar de la misma manera en los tres casos a pesar de que el nombre de una articulación esté asociada a números diferentes en los modelos humanoides. El problema de la rotación se ha solucionado modificando el signo de cada una de las articulaciones para que la rotación sea la misma en los tres casos al introducir un valor positivo o negativo de grados. Un ejemplo de esta aplicación de la interfaz se encuentra en el apartado “Capítulo V: Aplicaciones y líneas futuras”. Con este planteamiento, el usuario podrá jugar con los robots que se han mostrado en este informe e incluso añadir nuevos robots a la galería adaptándolos a estas funciones. De hecho, este tipo de control del movimiento podría aplicarse no solo a robots humanoides sino a muchos otros modelos robóticos cuadrúpedos o con movimientos totalmente diferentes. 4.3.6 LAZOS EXTERNOS DE CONTROL Hasta ahora se ha conseguido que los modelos se mueven de forma estable gracias al lazo interno de control, pero tenemos que detallar qué ángulo tiene que tomar cada articulación en cada momento de la simulación. El software CAPÍTULO IV: HUMANOIDE 104 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 36: Diagrama bloques sistema con controlador por objetivo y referencia Se ha establecido como condición que cuando el robot cumpla el objetivo, es decir, cuando la posición de la cadera en el eje z llegue a un valor determinado, el usuario realice una acción que en nuestro caso será levantar los brazos. Para conseguir esto, se ha dado a las articulaciones de las extremidades inferiores diferentes pesos para que se realice el movimiento que desee el usuario. Aquí no pasaremos un valor exacto a la articulación, si no una proporción de lo que tiene que moverse en función del resto de articulaciones, como se observa en la figura. Tan solo se moverán las articulaciones de las extremidades inferiores ya que son las que nos interesan para que el robot se desplace en el eje z (arriba y abajo porque así se podrá agachar). Se podrían incorporar todas las articulaciones del humanoide, pero hay que tener en cuenta que es muy difícil definir las estrategias de control y que en ocasiones si se establece un lazo de control muy complicado podría perjudicar al sistema. Ilustración 37: Relación de proporción del ángulo en la extremidad inferior CAPÍTULO IV: HUMANOIDE 105 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 14: Robot con control automático con objetivo En este caso si comprobamos el contenido del vector tQ no encontramos ninguna indicación de movimiento en las articulaciones. No se ha indicado el ángulo que debe rotar cada articulación por ello el vector de trayectorias es una matriz de ceros. Tampoco observamos ningún valor diferente de cero en la matriz de las coordenadas articulares, ya que no es necesario pasar la posición que debe tomar cada articulación al autómata. El robot realiza de forma “autónoma” el movimiento correspondiente para llegar al objetivo. Ilustración 38:Vector tQ con controlador automático con objetivo Sin embargo, que el movimiento sea automático no significa que el robot elija qué articulaciones mover. Por ejemplo, simulamos el mismo ejemplo de antes pero además se ha dado un valor a la articulación del hombro para que se mueva al alcanzar la referencia en el eje z. Este movimiento no tiene sentido, ya que el movimiento del hombro no influye en el objetivo; con esto se puede demostrar que el humanoide no es inteligente para decidir sobre qué articulaciones hay que actuar para llegar al objetivo. Se puede indicar que se muevan otras articulaciones en función de la referencia, pero puede que se CAPÍTULO IV: HUMANOIDE 106 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA muevan sin sentido, por ello es importante estudiar las articulaciones que realmente pueden minimizar el objetivo. Simulación 15: Robot con controlador automático con objetivo, mueve articulación sin sentido 4.3.6.3 APLICACIÓN UNIVERSAL A HUMANOIDES Todos los controles expuestos hasta ahora tienen un carácter universal; podrán ser utilizados en cualquiera de los robots estudiados para lograr su control. Basta con modificar la estación de Simulink introduciendo los lazos de control correspondientes. Por ejemplo, controlamos el robot roid empleando un lazo de control por referencia. El objetivo que deberá alcanzar el humanoide será el de la posición en el eje y, que según el sistema de ejes del modelo corresponde, es el que sitúa al robot hacia la derecha o la izquierda. Bloques Simulink 51: Lazo de control automático con objetivo (robot roid1) CAPÍTULO IV: HUMANOIDE 107 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Bloques Simulink 52: Modelo robótico lazo de control automático con objetivo (robot roid1) Según el sistema de referencia global, al aumentar cada vez más la y, el robot se inclinará hacia la derecha para intentar llegar a la posición indicada por el usuario. Simulación 16: Robot roid desplazando referencia en eje Y CAPÍTULO IV: HUMANOIDE 108 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Este controlador sirve para controlar la estabilidad del modelo robótico completo. Gracias a este controlador, se pueden poner condiciones emulando situaciones que se pueden dar en una persona real. Por ejemplo, podemos establecer una condición en la que cuando el humanoide alcance un valor en el eje z muy bajo (en este ejemplo hemos definido menos de 400) el humanoide extenderá sus brazos para aguantar su cuerpo ante una posible caída. La reacción del humanoide es similar a la de una persona cuando se cae hacia delante; el robot considera que se está cayendo y le mando poner las manos. Simulación 17: Robot Humanoide Ref en z (Ref=400*1e^-3) CAPÍTULO IV: HUMANOIDE 109 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 18: Robot Humanoide Ref en z (Ref=380*1e^-3) Como se puede observar hay diferencia entre los sistemas de control de lazo interno básicos en todos los modelos dinámicos y los lazos externos extras. El control básico permite que las articulaciones del robot realicen movimientos continuos; es responsable de la ejecución de movimientos precisos y el mantenimiento de equilibrio. Se podría comparar la función del control interno con la función del cerebelo, que se encarga de que el sistema muscular esquelético consiga movimientos suaves, uniforme y coordinados. Por otro lado, los lazos externos de control inteligente dan al robot la capacidad de razonar cuál es la mejor opción para que el robot alcance un objetivo. Aquí no se pasa a cada articulación el ángulo que tiene que rotar, solo se indica el punto final y el robot “decide” cómo llegar. Un símil de esto puede ser el cerebro, ya que controla acciones más o menos conscientes que involucran un nivel superior de procesamiento. Como hemos observado, la incorporación de lazos externos de control inteligente otorga al robot la capacidad de cumplir un objetivo concreto. En el proyecto hemos implementado un ejemplo de control inteligente muy sencillo, creando un sistema de lazos de control anidados con el controlador PD básico. El usuario puede jugar con el modelo e introducir más sistemas de control para que tenga un comportamiento determinado. A pesar de esto, al meter varios lazos a la vez puede suceder que se crucen entre sí y acaben por perjudicar la estabilidad del modelo robótico, por ello es de gran importancia comprender la estructura de control de los robots. CAPÍTULO IV: HUMANOIDE 110 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA ALGORITMOS DE OPTIMIZACIÓN PARA EL DISEÑO DE CONTROLADORES Para establecer los sistemas de control en el modelo dinámico se han dado unos valores a las constantes de los controladores de posición y velocidad que se han obtenido por prueba y error. Si establecemos otros valores diferentes a los controladores el movimiento resultante resulta más o menos oscilatorio. Los parámetros de los controladores se podían haber encontrado igualmente siguiendo una estrategia determinada mediante métodos de optimización. El objetivo de cualquier algoritmo de optimización será encontrar el mejor resultado para un objetivo determinado (reducir las oscilaciones, llegar a una posición, que el sistema no se caiga…). En nuestro ejemplo, lo que se debería hacer es optimizar los parámetros del controlador (K) para alcanzar el objetivo que queramos. De forma resumida podemos encontrar dos tipos de algoritmos para lograr la optimización: *Algoritmos de optimización local: se parte de un punto inicial o varios puntos (local con varios intentos) y se evalúa alrededor de cada punto la mejor posición. El humanoide de Matlab presenta 18 parámetros en su controlador, por lo que habría que evaluar alrededor del punto en 18 dimensiones diferentes. Una vez que no se encuentre ningún punto más, entonces se considera que se ha llegado al mejor punto que se podría llegar desde el punto de partida. *Algoritmos de optimización global: se analizan todos los puntos del espacio de trabajo y se evalúa la función en cada uno de los puntos. Aquí se miran los resultados de la optimización de todos los puntos, por lo que para hacerlo con 18 dimensiones tendríamos que trabajar con números de un orden muy elevado para obtener un resultado representativo. Como esto es muy complejo cuando las dimensiones son muy altas se suele acudir a algoritmos evolutivos como por ejemplo los algoritmos genéticos. Con los algoritmos genéticos se sigue alguna estrategia para evaluar los mejores resultados del espacio de trabajo. Para ello se analiza la función en el espacio de búsqueda, se toman los mejores resultados y la próxima evaluación se realizará con una combinación de los mejores resultados obtenidos. Se está eligiendo a los “hijos” que han dado mejores resultados y no están uniformemente repartidos en el espacio de búsqueda, por lo que no se pierde tiempo en evaluar profundamente las zonas donde los resultados no serán adecuados. La ventaja de estos algoritmos es que optimizan la zona donde hay mejores resultados, pero siguen comprobando en menor medida las zonas con resultados no favorables, por lo que si hay algún punto que nos ofrece los mejores resultados y está aislado también es posible encontrarlo. CAPÍTULO IV: HUMANOIDE 111 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Varios autores han aplicado algoritmos genéticos, ya que realiza una criba para quedarse con los mejores resultados y es más rápido que otros métodos de optimización. Un ejemplo de ello es el modelo Train Humanoid Walker [21] de Matlab, que utiliza el modelo humanoide de Matlab y lo entrena empleando algoritmos genéticos y aprendizaje por refuerzo. En el ejemplo se pretende que el humanoide camine sin que se caiga (se minimiza que caiga por debajo de un determinado valor, los movimientos laterales y la rotación del torso). Con el algoritmo se intenta encontrar el patrón de control óptimo para que las articulaciones del humanoide realicen una rotación determinada. Ilustración 39: Modelo Train Humanoid Walker [21] El problema es que nuestro modelo emplea 18 lazos en cada controlador, por lo que el proceso de optimización global con algoritmos genéticos también sería muy largo y tedioso. Como el modelo funciona correctamente con los valores determinados de forma manual (obtenidos por tanteo), no se aplicarán algoritmos de optimización para los controladores. CAPÍTULO V: APLICACIONES EN LOS MODELOS 112 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA CAPÍTULO V: APLICACIONES EN LOS MODELOS EJEMPLO 1: CONTROL HUMANOIDES MEDIANTE INTERFAZ Una aplicación de las funciones diseñadas en este proyecto es la construcción de una interfaz para que el usuario juegue y comprenda el funcionamiento de diferentes robots humanoides. El objetivo de este instrumento es demostrar la universalidad de los métodos diseñados utilizando una consola para controlar cualquier robot. Ilustración 40: Interfaz para Robots Humanoides en AppDesigner A continuación, se plantea una combinación de movimientos mediante la interfaz y se comprueba el resultado simulado en cada robot. Definimos mediante la consola que el robot lleve su articulación del Hombro Izquierdo Frontal a una posición de 30 grados y la articulación de Cadera Derecha Frontal a una posición de 30 grados igualmente. CAPÍTULO V: APLICACIONES EN LOS MODELOS 113 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Simulación 19: Movimiento humanoides universal Como se puede observar, los tres robots ejecutan los movimientos planteados en la articulación adecuada y en el sentido adecuado. Esto es posible gracias al diseño de la configuración articular de los robots y el objeto “eje” que almacena sus articulaciones. En cada uno de los robots se ha determinado el número de articulación y el sentido de rotación de forma que al seleccionar una opción en la ListBox Articulación se mueva la misma articulación y en el mismo sentido independientemente del robot que importemos. EJEMPLO 2: MOVIMIENTO MARCHA EN LOS MODELOS Gracias al diseño de la estación y el objeto Hum se han podido aplicar las mismas funciones a los tres modelos humanoides a través de la interfaz. Un ejemplo de esta aplicación universal de los métodos es el movimiento de marcha con la función Marcha() del objeto Hum. La acción de andar se puede conseguir en cualquiera de los robots introduciendo el ángulo correspondiente en las articulaciones de las extremidades inferiores. Como se detalló anteriormente, se ha creado un objeto “eje” que almacena el número de las articulaciones de cada robot, de forma que para que los tres modelos muevan la rodilla es posible que en cada caso se mueva una articulación numerada de forma diferente, pero tendrá el mismo nombre en los tres modelos. CAPÍTULO VI: CONCLUSIONES Y LÍNEAS FUTURAS 120 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA 5.2 LÍNEAS FUTURAS Como línea futura se podría realizar una investigación mucho más extensa sobre modelos cuadrúpedos, ya que al ser un modelo muy estable el usuario podría jugar con él sin preocuparse de que la estructura se desestabilizase, como puede pasar fácilmente con los ejemplos humanoides. El hecho de presentar 4 extremidades le da libertad al usuario de probar movimientos con menos probabilidad de fallo, ya que al trabajar con humanoides hay que tener en cuenta el paso que se va a dar o la articulación que se va a rotar para que este no se caiga. Un posible proyecto de investigación con el robot cuadrúpedo es la simulación de la mula robótica en entornos con superficies diferentes. A modo de sensor de fuerza, se podría situar un indicador (esfera de contacto) en el pie del robot, de forma que cuando toque el suelo mantenga el último torque que se ha aplicado a las articulaciones. Con esto sería posible conocer realmente donde está el suelo en terrenos nos familiares. A pesar de ser una aplicación interesante, las técnicas para conseguirlo son muy complejas y no se ha desarrollado en el proyecto, por lo que se deja como posible línea de investigación en el futuro. CAPÍTULO VI: CONCLUSIONES Y LÍNEAS FUTURAS 121 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA Ilustración 41: Diferencia de contacto entre los pies del cuadrúpedo y el suelo en diferentes superficies Como se ha mencionado en el trabajo, otra línea futura podría ser la aplicación de la esfera de contacto que se utiliza para sujetar a los humanoides por los pies como parte de un sistema sensor de fuerza. En la actualidad, los robots colaborativos empleados en industrias cuentan con sensores de fuerza en todas las articulaciones, de forma que cuando el actuador (la bola) se activa, los sensores de fuerza se comportan de una manera determinada. Se podría realizar un nuevo proyecto empleando la esfera para recrear un robot colaborativo o cualquier otro dispositivo que precise de un sensor de fuerza en sus articulaciones. Igualmente, en el ámbito de control se podría llevar a cabo un proyecto mucho más extenso definiendo otros objetivos externos. A esto le podríamos CAPÍTULO VI: CONCLUSIONES Y LÍNEAS FUTURAS 122 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA aplicar algoritmos de optimización para comprobar cómo cambia la estrategia de control en función del algoritmo que se aplique. Como posible proyecto se podrían establecer nuevos objetivos en el modelo humanoide o cuadrúpedo (minimizar su caída hacia adelante, la distancia entre los pies y el suelo, mejorar estabilidad…) y aplicar un aprendizaje reforzado para alcanzar la meta deseada. CAPÍTULO VI: ANEXOS 123 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA CAPÍTULO VI: ANEXOS 6.1 MÉTODOS CLASE “KIN” Métodos de Rigid-Body o Tool (): Permite cambiar de herramienta, o entre cargas y herramientas. rob.Tool(bodyCarga) o Wobj, Body, DelBody: Pueden incluir y quitar cuerpos en el robot Rigid-Body, pero no se aplicarán en este proyecto. Métodos de visualización o Show ([Joint], [pose]): Sin argumentos, muestra el robot en la posición actual. Con el argumento Joint muestra el robot en la posición articular dada y cambia la posición interna del robot. El argumento pose rastrea la posición del TCP [x y z rx ry rz]. o Rec(value): Recoge los movimientos del robot en una grabación. o Rep (): Reproduce lo que se ha grabado con Rec(). Métodos de movimientos básicos o MoveAbsJ (Joint, [nPts]): se mueven las articulaciones del robot en función de las coordenadas articulares que se pasan con el argumento Joint (matriz que contiene las coordenadas articulares). Se puede definir también el número de puntos interpolados entre la posición inicial y la deseada. q= [0,0,0,0,90,0]*deg. rob.MoveAbsJ(q). o MoveJ (pose, [Hwobj], [nPts]): se mueve el efector final del robot en función del pose que se pasa como argumento (matriz de 6 columnas de forma [x y z rx ry rz]). Para desplazarse el robot elige el camino más sencillo. Podemos definir el argumento Hwobj para que los puntos definidos sean respecto al eje de referencia Hwobj. x1= [0.4000, 0.1330, 0]; x2= [0.1500, -0.3000, 0]; y1= [0.7232, -0.0536, 0.1000]; h= Hmat(); CAPÍTULO VI: ANEXOS 124 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA % Matriz del objeto mesa Hmesa= h.T3pts([x1; x2; y1]); punto= [[100,100,0]*1e-3,[0,0,180]*deg]; rob.MoveJ(punto, Hmesa); o MoveL (pose, [Hwobj], [nPts]): se mueve el efector final del robot en función del pose que se pasa como argumento (matriz de 6 columnas de forma [x y z rx ry rz]). Para desplazarse el robot elige el camino más corto (trayectoria lineal). Podemos definir el argumento Hwobj para que los puntos definidos sean respecto al eje de referencia Hwobj. puntos= [[200,300,200]*1e-3, [0,0,180]*deg]; rob.MoveL(puntos); o MoveC (pos1, pos2, [Hwobj], [nPts]): la herramienta dibuja un arco que pasa por los dos puntos que se pasan como argumentos (formato [x y z]). Podemos definir el argumento Hwobj para que los puntos definidos sean respecto al eje de referencia Hwobj. Métodos Internos o Pose(joint,[Hwobj]): método que aplica la cinemática directa; tiene como argumento las coordenadas articulares del robot y devuelve la posición de la herramienta con coordenadas cartesianas de tipo [x y z rx ry rz]. o Joint(pose,[w]): método que aplica la cinemática inversa; tiene como argumento las posiciones cartesianas de la herramienta del robot y devuelve las coordenadas articulares en formato q=[q1 q2 q3 q4 … qn]. o Robot (): Devuelve una propiedad del robot que ha podido verse alterada. o Sim (mdl, type, value): Ordena realizar la simulación. Para ello se pasan como argumentos el fichero Simulink donde está el robot y los objetos, el valor de la velocidad o del tiempo y el tipo de medida (velocidad o tiempo). 6.2 MÉTODOS CLASE “HUM” o TestMove(): mueve el robot desde la última posición simulada para comprobar el nuevo movimiento. El usuario podrá utilizar esta función para hacer pruebas con diferentes movimientos del robot antes de añadirlos de forma definitiva a la cadena de movimientos finales. Debemos pasar como argumento el vector joint, compuesto por la articulación que se va a mover y CAPÍTULO VI: ANEXOS 125 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA los grados que se moverá, y el incremento del tiempo (consideramos 1 segundo). Con este comando se simula el movimiento desde la última simulación, por lo que el humanoide comenzará a testear el movimiento desde la última posición que se guardó en la memoria. Esto es de gran utilidad, porque podremos conocer la posición de las articulaciones del robot y también la posición del robot en el entorno en todo momento. En el código de Matlab se plantea que si la matriz que contiene las rotaciones de las articulaciones, tQ, no está vacía, entonces tomamos los valores de la última fila, que recogen la última posición articular que se ha registrado. Este movimiento lo simularemos mediante la función Sim sin almacenarlo en la memoria. o AddMove(): cuando el usuario ha comprobado que el movimiento que ha diseñado es definitivo, lo añadirá a la simulación mediante la función AddMove. El movimiento se almacenará en la memoria del objeto Hum. A continuación, se puede pulsar simular para comprobar el resultado de la simulación hasta el momento. Debemos pasar como argumento el vector joint, compuesto por la articulación que se va a mover y los grados que se moverá, y el incremento del tiempo. En el código de Matlab se plantea, al igual que en la función anterior, que si la matriz que contiene las rotaciones de las articulaciones, tQ, no está vacía, entonces tomamos los valores de la última fila, que recogen la última posición articular que se ha registrado. A partir de estos datos guardaremos el nuevo movimiento en tQ. CAPÍTULO VI: ANEXOS 126 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA o AddRef(): es similar a la función AddMove, pero aquí los movimientos de las diferentes articulaciones se guardarán en una estructura de tantas celdas como movimientos realice el robot. Dentro de cada celda se indicarán en una columna el número de la articulación que se mueve y en la segunda columna la posición que se quiere alcanzar con la articulación. Esta función será útil al plantear el sistema en lazo de control automático. o Reset(): inicializa el humanoide al valor inicial sus coordenadas articulares (q0) y la posición del humanoide en el espacio (baseRobot). Permitirá al usuario descartar todos los movimientos guardados en la memoria para comenzar la simulación desde el principio. En el script se ha planteado que cuando se llame a Reset(), la segunda fila de las coordenadas articulares, que contiene las coordenadas articulares actuales, tome el valor de la primera fila, CAPÍTULO VI: ANEXOS 127 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA que será siempre una fila de ceros. Además, se borran los valores del vector tQ. o Sim(): Simula los elementos guardados. Aquí se hace un test de movimiento desde la primera posición articular guardada en memoria. Al simular el movimiento de una articulación, realizará la rotación que se indique en grados de forma absoluta, no relativa a la última posición de la articulación. De esta forma se podrán extrapolar todas estas funciones empleadas a varios robots humanoides diferentes del robot de Matlab inicial. CAPÍTULO VI: ANEXOS 128 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA 6.3 DEFINICIÓN CÓDIGO ROBOTS HUMANOIDES HUMANOIDE MATLAB %ROBOT HUMANOIDE MATLAB clear all deg= pi/180; baseRobot_= [[0,0,440]*1e-3,[0,0,0]*deg]; q0_= zeros(1,18); num=1; Kcontrol= diag(ones(1,18)*1e2); Estacion= 'Sim30_Humanoide_LA_DePie_v2019b'; % 1: Hombro d frontal eje.HomDF= 1; % 2: Hombro d lateral eje.HomDL= 2; % 3: Codo d eje.CodD= 3; % 4: Muñeca d eje.MunD= 4; % 5: Cadera lateral d eje.CadDL= 5; % 6: Cadera frontal d (q pie se queda en suelo) eje.CadDF= -6; % 7: Rodilla d eje.RodD= 7; % 8: Tobillo d CAPÍTULO VI: ANEXOS 129 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA eje.TobD= 8; % 9: Hombor i frontal eje.HomIF= -9; % 10: Hombro i lateral eje.HomIL= 10; % 11:Codo i eje.CodI= 11; % 12:Muñeca i eje.MunI= 12; % 13:Cadera lateral i eje.CadIL= 13; % 14:Cadera frontal i eje.CadIF= 14; % 15:Rodilla (negativo) eje.RodI= -15; % 16:Tobillo eje.TobI= 16; % 17: Cuello frontal eje.CuelF= 17; % 18: Cuello lateral eje.CuelL= 18; H= Hum(Estacion, eje, baseRobot_, q0_, num); ROID %ROBOT ROID1 clear all Estacion='roid1_mod.slx'; BIBLIOGRAFÍA 136 TRABAJO FIN DE GRADO – CELIA SÁNCHEZ-GIRÓN COCA [14] «Simscape Multibody,» Software Mathworks, versión 2021b. [En línea]. Available: https://es.mathworks.com/products/simulink.html. [Último acceso: mayo 2022]. [15] «Newtons third law,» Khan Academy, 2019. [En línea]. Available: https://es.khanacademy.org/science/physics/forces-newtons-laws/newtons-lawsof-motion/a/what-is-newtons-third-law. [Último acceso: 2022 abril]. [16] «Estimating Bouncing Ball Contact Parameters,» Software Mathworks, versión 2021b. [En línea]. Available: https://www.matlabcoding.com/2020/07/estimatingbouncing-ball-contact.html. [Último acceso: mayo 2022]. [17] ISO, «Robots and robotic devices – Collaborative robots. Technical specification, International Organization for Standardization,» 2016. [18] «Contact Proxies,» Software Mathworks, versión 2021b. [En línea]. Available: https://es.mathworks.com/help/physmod/sm/ug/use-contact-proxies.html. [Último acceso: julio 2022]. [19] «Humanoid robots,» GitHub, [En línea]. Available: https://github.com/. [Último acceso: 2022 mayo]. [20] A. Legasa, «Tecnalia presenta un robot con visión inteligente para zonas industriales de difícil acceso,» Crónica Vasca, 14 junio 2022. [21] «Train Humanoid Walker,» Software Mathworks, versión 2021b. [En línea]. Available: https://es.mathworks.com/help/deeplearning/ug/humanoid_walker.html. [Último acceso: 2022 julio]. [22] «RoboCup Humanoid League,» 2019. [En línea]. Available: https://humanoid.robocup.org/. [23] «Feedback Control Architectures,» Software Mathworks, versión 2021b. [En línea]. [Último acceso: mayo 2022]. [24] Ninagawa, «Robot Roid1,» [En línea]. Available: https://note.com/ninagawa123/n/n2d51c3443d31. [Último acceso: julio 2022]. [25] A. M.Shelat, «MedLine Plus,» NIH, [En línea]. Available: https://medlineplus.gov/spanish/ency/esp_imagepages/18008.htm. [Último acceso: julio 2022].