Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Trabajo Fin de Grado Control de vuelo para seguimiento de trayectorias de un cuadricóptero simulado mediante ROS/Gazebo Autopilot for trajectory tracking of a quadcopter simulated in ROS/Gazebo Autora: Maŕıa Ibáñez Rubio Directores: Rosario Aragüés Muñoz Enrique Teruel Doñate Grado en Ingenieŕıa Electrónica y Automática Escuela de Ingenieŕıa y Arquitectura Diciembre 2020 I Resumen Los cuadricópteros son uno de los robots aéreos más usados a d́ıa de hoy, más comúnmente conocidos como drones. A causa de esto, la investigación y desarrollo de sus tecnoloǵıas está en continuo crecimiento con el objetivo de conseguir vuelos cada vez más autónomos. Al tratarse de tecnoloǵıas de un elevado coste económico, en los primeros pasos de las investigaciones se hace uso de simuladores. Esta alternativa, además de suponer una ventaja a nivel económico, permite una experimentación más rápida y segura. Gazebo es uno de los simuladores más usados en el ámbito de la investigación robótica y el elegido para este proyecto. Para hacer posible su funcionamiento debe usar- se ROS (Robot Operating System), cuya unidad fundamental son los nodos. Son sus ejecutables y se organizan en paquetes. A lo largo del trabajo se ha comprobado el potencial de su uso conjunto y con otros software muy usados en el ámbito de la ingenieŕıa como Matlab. El objetivo de este proyecto es el control del vuelo de un cuadricóptero simu- lado siguiendo una trayectoria planificada. Para ello se han usado paquetes de ROS, hector quadrotor, que modelan el comportamiento de un dron genérico y su simulación. Para el control se ha desarrollado un módulo al que se supo- ne la llegada externa de puntos planificados con una determinada separación temporal que constituyen la trayectoria. Un algoritmo calcula la velocidad a tomar por el dron en función de su posición y la planificación con una cier- ta periodicidad. Esta velocidad es comunicada al modelado del dron, quien efectúa los movimientos pertinentes. Las simulaciones llevadas a cabo comprueban el correcto funcionamiento del controlador implementado. El dron alcanza los objetivos en los tiempos espe- rados con movimientos suaves y controlados. Además con ellas se han esta- blecido las caracteŕısticas que han de tener los puntos planificados para que aśı sea. Tanto los resultados como el análisis previo de las funcionalidades del entorno de simulación pueden usarse en proyectos futuros con este mismo tipo de aeronaves. II RESUMEN III Índice de figuras 1.1. Izquierda: cuadricóptero de salvamento maŕıtimo. Derecha: cuadricóptero comercial. . . . . . . . . . . . . . . . . . . . . . 1 1.2. Cuadricóptero desarrollado por Amazon. . . . . . . . . . . . . 2 1.3. Diagrama de Gantt de las tareas realizadas en el proyecto. . . 6 2.1. Logotipo de ROS. . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2. Esquema de comunicaciones entre nodos. . . . . . . . . . . . . 8 2.3. Logotipo de Gazebo. . . . . . . . . . . . . . . . . . . . . . . . 9 2.4. Logotipo de Matlab y Simulink. . . . . . . . . . . . . . . . . . 10 2.5. Visualización de hector quadrotor con sonar en Gazebo. . . . . 11 3.1. Ángulos de Euler en los ejes solidarios al cuadricóptero. . . . . 13 3.2. Diagrama de fuerzas del cuadricóptero. . . . . . . . . . . . . . 14 3.3. Esquema básico de control. . . . . . . . . . . . . . . . . . . . . 17 3.4. Trayectoria planificada mediante puntos intermedios. . . . . . 18 4.1. Interfaz gráfica de Gazebo. Hector quadrotor en un entorno de demostración. . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2. Izquierda: Rviz. Derecha: terminal con nodo de telemanipula- ción activado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3. Árbol de referencias. . . . . . . . . . . . . . . . . . . . . . . . 23 4.4. Grafo de nodos activos en la simulación de una demostración. 24 5.1. Esquema de controladores para el modelado del vuelo. . . . . 28 5.2. Modelado en Simulink para visualizar los datos de la simula- ción ROS/Gazebo. . . . . . . . . . . . . . . . . . . . . . . . . 29 5.3. Representación en 3D de las coordenadas espaciales del cua- drado dibujado mediante el tema cmd vel. . . . . . . . . . . . 32 5.4. Coordenadas de posición reales (real) y deseadas (goal). Cua- drado dibujado con /cmd vel. . . . . . . . . . . . . . . . . . . 33 5.5. Orientaciones reales (real) y deseadas (goal) o de reposo. Cua- drado dibujado con /cmd vel. . . . . . . . . . . . . . . . . . . 34 IV ÍNDICE DE FIGURAS 5.6. Representación en 3D de las coordenadas espaciales del cua- drado dibujado mediante action pose. . . . . . . . . . . . . . . 36 5.7. Coordenadas de posición reales (real) y deseadas (goal). Cua- drado dibujado con action pose. . . . . . . . . . . . . . . . . . 37 5.8. Orientaciones reales (real) y deseadas (goal) o de reposo. Cua- drado dibujado action pose. . . . . . . . . . . . . . . . . . . . 38 6.1. Esquema de controladores para el modelado del vuelo modifi- cado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2. Interfaz gráfica de Gazebo. Hector posicionado en un mundo vaćıo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.3. Respuesta del controlador PID vz con Kp = 1. . . . . . . . . . 46 6.4. Respuesta del sistema con PID w con Kp = 1. . . . . . . . . . 47 6.5. Respuesta del sistema con PID vx con Kp = 1, siendo Kp = 1 en el controlador de la orientación. . . . . . . . . . . . . . . . 48 6.6. Respuesta del sistema con PID w con Kp = 15. . . . . . . . . 49 6.7. Respuesta del sistema con PID vx con Kp = 1, siendo Kp = 15 en el controlador de la orientación. . . . . . . . . . . . . . . 50 6.8. Respuesta del sistema con PID w con Kp = 15 y una corrección de giro de π rad. . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.9. Respuesta del sistema ante vz superior a su valor máximo. . . 52 6.10. Respuesta del sistema ante vx superior a su valor máximo. . . 52 6.11. Representación en 3D de las coordenadas espaciales. Cuadrado dibujado con el control desarrollado. . . . . . . . . . . . . . . 54 6.12. Coordenadas de posición reales (real) y deseadas (goal). Cua- drado dibujado con el control desarrollado. . . . . . . . . . . . 55 6.13. Orientaciones reales (real) y deseadas (goal). Cuadrado dibu- jado con el control desarrollado . . . . . . . . . . . . . . . . . 56 A.1. Interfaz de cliente para la acción pose de hector quadrotor. . . 66 C.1. Sensor láser Hokuyo UTM30LX. . . . . . . . . . . . . . . . . . 91 C.2. Datos publicados en el tema /scan. . . . . . . . . . . . . . . . 91 C.3. Simulación para medidas del láser en 7 puntos. . . . . . . . . . 92 V Índice general Índice de figuras I Índice general VI 1. Introducción 1 1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Contexto de realización . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Objetivos y tareas . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4. Contenido de la memoria . . . . . . . . . . . . . . . . . . . . . 4 2. Herramientas utilizadas 7 2.1. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2. Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3. Matlab y Simulink . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4. Modelo de cuadricóptero . . . . . . . . . . . . . . . . . . . . . 10 3. Aspectos teóricos del cuadricóptero 13 3.1. Modelado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2. Control de trayectoria y planificación . . . . . . . . . . . . . . 16 4. Hector quadrotor 19 4.1. Contenido del paquete . . . . . . . . . . . . . . . . . . . . . . 19 4.2. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3. Sensores en el hector . . . . . . . . . . . . . . . . . . . . . . . 25 5. Control de vuelo 27 5.1. Simulación del modelado matemático . . . . . . . . . . . . . . 27 5.2. Análisis de los modos de control . . . . . .. . . . . . . . . . . 29 5.2.1. Temas: /cmd vel y /command/twist . . . . . . . . . . 30 5.2.2. Acciones: Action pose . . . . . . . . . . . . . . . . . . . 35 5.2.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . 39 6. Seguimiento de una trayectoria 41 6.1. Descripción del algoritmo de control . . . . . . . . . . . . . . . 41 6.2. Ĺımites de operación y ajuste del control . . . . . . . . . . . . 43 7. Conclusiones y trabajo futuro 57 7.1. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.2. Conclusión personal . . . . . . . . . . . . . . . . . . . . . . . . 58 7.3. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Bibliogrf́ıa 61 Anexos 63 A. Conceptos básicos ROS 63 A.1. Primeros pasos y herramientas básicas . . . . . . . . . . . . . 63 A.2. Nodos y comunicaciones . . . . . . . . . . . . . . . . . . . . . 64 A.2.1. Nodos suscriptores y publicadores . . . . . . . . . . . . 65 A.2.2. Nodos servidores y clientes . . . . . . . . . . . . . . . . 65 A.2.3. Parámetros . . . . . . . . . . . . . . . . . . . . . . . . 67 B. Código fuente de los nodos desarrollados 69 B.1. Conversor orientación de quaternio a ángulos de Euler . . . . . 69 B.2. Dibujo de un cuadrado . . . . . . . . . . . . . . . . . . . . . . 70 B.2.1. Nodo publicador del tema /cmd vel . . . . . . . . . . . 70 B.2.2. Nodo cliente de la acción pose . . . . . . . . . . . . . . 77 B.3. Control de trayectorias continuas . . . . . . . . . . . . . . . . 82 C. Lectura de datos recogidos por el láser Hokuyo UTM30LX 89 1 Caṕıtulo 1 Introducción 1.1. Motivación Los cuadricópteros son los veh́ıculos aéreos no tripulados más comunes hoy en d́ıa. Popularmente reciben el nombre de drones. En los últimos años el uso de estas aeronaves ha crecido considerablemente. Inicialmente su uso y desarrollo estuvo ligado al ámbito militar, hoy en d́ıa alcanza aplicaciones de todo tipo. En la Fig. 1.1 se ilustran dos ejemplos de uso muy dispares. El primero se trata de un dron que da apoyo a socorristas en playas, tanto en tareas de salvamento como de vigilancia. En España han sido muy útiles durante la crisis sanitaria originada por la COVID-19 facilitando el control de aforos para garantizar la seguridad de los bañistas en muchas playas del páıs [3]. Por otro lado, un cuadricóptero menos sofisticado y al alcance de cualquier usuario, incorpora una cámara para realizar fotos y v́ıdeos durante el vuelo, cuyo único fin es recreativo. Figura 1.1: Izquierda: cuadricóptero de salvamento maŕıtimo. Derecha: cua- dricóptero comercial. 2 CAPÍTULO 1. INTRODUCCIÓN Otro ejemplo, más en sintońıa con este proyecto es el de la compañ́ıa Amazon, Inc [4]. Actualmente está desarrollando un servicio de entrega con este tipo de aeronaves de paquetes de un peso inferior a 2.3 kg, en menos de 30 minu- tos y a un radio de 24 km de sus centros loǵısticos. Sus cuadricópteros son autónomos y capaces de realizar vuelos en entornos dinámicos compartiendo el espacio aéreo con cualquier otro usuario. En la Fig. 1.2 puede observarse uno de los múltiples prototipos desarrollados para su servicio Prime Air. Es la legislación la que impide implantar este tipo de tecnoloǵıas a d́ıa de hoy. La Agencia Estatal de Seguridad Aérea (AESA) es la encargada de regular el vuelo de drones en España, en el Real Decreto 1036/2017 del 15 de diciembre se encuentra dicho reglamento. Figura 1.2: Cuadricóptero desarrollado por Amazon. En la actualidad el vuelo de un dron puede ser autónomo, sin necesidad de supervisión, o remoto, controlado desde tierra por un piloto. En un mundo cada vez más automatizado es el desarrollo del primero el que se encuentra en auge. Para realizar un vuelo sin supervisión son necesarios datos del entorno donde se lleva a cabo. Estos vuelos se realizan comúnmente con tecnoloǵıas SLAM, Simultaneous Localization And Mapping. El cuadricóptero es capaz de obtener datos del entorno en tiempo real y llevar a cabo el vuelo autónomo en entornos desconocidos. El tratamiento de los datos es crucial para adap- tar el vuelo a la aparición de obstáculos en la dirección de desplazamiento, algo que no es posible cuando se realizan vuelos simplemente con trayecto- rias planificadas. Las investigaciones en este campo actualmente se centran en el desarrollo de algoritmos para mejorar el control durante el vuelo y la optimización de los datos recogidos por los sensores. 1.2. CONTEXTO DE REALIZACIÓN 3 1.2. Contexto de realización El presente trabajo se ha realizado dentro del departamento de Informáti- ca e Ingenieŕıa de Sistemas de la Universidad de Zaragoza. Por otro lado se ha contado con la experiencia de investigadores del Instituto de Ingenieŕıa e Investigación de Aragón (I3A) con una amplia experiencia en este campo. Se pretende que este proyecto sirva como gúıa para el desarrollo de otros proyectos multi-robot de cuadricópteros, una de las lineas de investigación de este departamento. La simulación de robots es una manera rápida y económica de estudiar su comportamiento. Cuando se trabaja con veh́ıculos aéreos no tripulados co- mo en este caso, supone además una experimentación segura. El entorno de simulación Gazebo/ROS (Robot Operating System) [1][6] usado en este pro- yecto ofrece la posibilidad de controlar cualquier aspecto de la simulación, por lo que es ampliamente empleado por la comunidad cient́ıfica en la expe- rimentación con todo tipo de robots. Por otro lado, el vuelo de drones para actividades de cierta relevancia, requie- re una experiencia previa por parte del piloto y, dependiendo del peso de los mismos, una licencia de vuelo. Con la simulación estas limitaciones carecen de sentido. En el caso de vuelos autónomos la simulación es crucial para el desarrollo de estas tecnoloǵıas. Permitiendo total versatilidad tanto en los entornos como en las aeronaves y los componentes que incorporan. Además de no ser necesario poseer f́ısicamente los robots para su estudio, algo muy interesante en el ámbito de la enseñanza y la experimentación, contexto en el que se desarrolla este proyecto. 1.3. Objetivos y tareas El objetivo principal de este trabajo es el desarrollo o adaptación de un simulador para un cuadricóptero. Se pretende simular un cuadricóptero genérico de manera que los resultados obtenidos sean extrapolables a cual- quier proyecto. Es por ello que el modelo debe ser configurable en cuestio- nes tanto f́ısicas (peso, constantes aerodinámicas, etc) como de prestaciones (sensores y actuadores) pudiendo adaptar la simulación a unas necesidades concretas en todo momento. Como objetivo más concreto se llevará a cabo el control de la trayectoria del cuadricóptero de manera continua durante su vuelo. Dicho control hará que siga una trayectoria planificada previamente, haciéndole cumplir las especificaciones espaciales y temporales fijadas por la 4 CAPÍTULO 1. INTRODUCCIÓN misma. Se busca poder realizar un control a cualquier nivel. Para llevar a cabo el trabajo se usará un entorno ROS/Gazebo, idóneo en este caso como se verá a lo largo de la memoria, al tratarse de herramientas creadas espećıficamente para el desarrollo y simulación de robots. A continuación se enumeran las principales tareas realizadas: 1. Instalación, puesta en marcha y estudio básico de funcionamiento de ROS y Gazebo. 2. Elección de cuadricóptero entre los existentes dentro del entorno ana- lizando ventajas, inconvenientes y adaptación al proyecto. 3. Estudio teórico del modelado y control de cuadricópteros. 4. Análisis de prestaciones del cuadricóptero seleccionado para llevar a cabo el control. 5. Diseño del control de vuelo. Estudio de alternativas, análisis y diseño de algoritmos. 6. Experimentos para verificar el buen funcionamiento de lo desarrollado. 7. Elaboración de la documentación. La organización temporal de estas tareas puede verse de manera aproximada en el diagrama de Gantt de la Fig.1.3. 1.4. Contenido de la memoria La siguiente memoria se estructura en 7 caṕıtulos complementados por 3 anexos. En el caṕıtulo 2 se describe el software usado para la realización de este trabajo aśı como el modelo de cuadricóptero elegido. El caṕıtulo 3 detalla los fundamentos teóricos en los que se apoya el proyecto. Se presenta el modelo matemático del cuadricóptero y la manera de realizar el control de su trayectoria. En el caṕıtulo 4 se describen y detallan los aspectos más relevantes sobre el paquete hector quadrotor obtenido en los repositorios de GitHub [16]. En el caṕıtulo 5 se estudia el modelado del hector para la simu- lación y las alternativas que ofrece para el control de su vuelo. Se desarrolla una aplicación simple para apoyar el análisis. En el caṕıtulo 6 se describe cómo se ha llevado a cabo el control para una trayectoria planificada con los 1.4. CONTENIDO DE LA MEMORIA 5 recursos del entorno de trabajo y los experimentos que comprueban el correc- to funcionamiento. Por último, el caṕıtulo 7, reúne las conclusiones extráıdas en el desarrollo del proyecto. El primer anexo detalla los conceptos básicos de ROS, se explican algunas de las herramientas usadas o la manera de llevar a cabo las comunicaciones. En el segundo anexo se recoge el código fuente desarrollado a lo largo del proyecto. El último apoya una de las alternativas expuestas para un trabajo futuro. 6 CAPÍTULO 1. INTRODUCCIÓN Figura 1.3: Diagrama de Gantt de las tareas realizadas en el proyecto. 7 Caṕıtulo 2 Herramientas utilizadas 2.1. ROS ROS [1] es un sistema operativo robótico que facilita el desarrollo de soft- ware relacionado con aplicaciones robóticas. Está formado por un conjunto de herramientas y bibliotecas todas ellas de código abierto. Desde su crea- ción en Mayo de 2007 bajo el nombre de switchyard por el Laboratorio de Inteligencia Artificial de Stanford no ha dejado de evolucionar de manera colaborativa lo que supone una de sus principales ventajas. Figura 2.1: Logotipo de ROS. Es importante tener claros los conceptos principales de ROS aśı como su funcionamiento básico previamente a cualquier implementación [2] [5]. Todo el software del sistema se organiza a través de paquetes, estos contienen bi- bliotecas y ejecutables entre otras cosas. A los ejecutables se les denomina nodos y son la unidad fundamental dentro de ROS. El funcionamiento del sistema se basa en la comunicación de dichos nodos que puede ser de tres tipos. Se habla de nodos publicadores o suscriptores cuando el intercambio de mensajes se hace entre varios nodos a través de temas (topics) . Los nodos también se pueden comunicar a través de servicios o acciones. En estos tipos, la comunicación es exclusivamente entre dos nodos que se desconectarán una vez esta termine. Para que cualquiera de estas comunicaciones sea posible debe existir un maes- tro. Es el encargado de que los nodos se encuentren e intercambien dichos 8 CAPÍTULO 2. HERRAMIENTAS UTILIZADAS mensajes. El maestro fija una serie de parámetros, variables globales, que de- finen a cada uno de los nodos. A los parámetros se les puede considerar otro tipo de comunicación. Un esquema de estas comunicaciones puede observarse en la Fig. 2.2. En el anexo A se encuentran detallados los primeros pasos para el inicio del entono aśı como una descripción detallada de cada una de estas comuni- caciones. La versión de ROS usada en este proyecto es Kinetic Kame. Fue lanzada en el 2016 y es la versión más antigua de las estables en funcionamiento. Figura 2.2: Esquema de comunicaciones entre nodos. 2.2. Gazebo Gazebo [6] será usado como software de simulación. Se trata de una po- tente herramienta para la recreación de entornos y robots. Permite tanto el uso de bibliotecas de modelos de ambos elementos como su diseño. Una de las principales ventajas es que Gazebo está creado a través de paquetes de ROS lo que hace que su uso conjunto sea muy satisfactorio. Con este software se puede estudiar el comportamiento de un cuadricóptero en un determinado entorno que sea de interés tanto a nivel dinámico como cinemático. Gazebo ofrece una simulación muy realista de los entornos y el comportamiento de robots en ellos. Para ROS Gazebo será como un nodo más pudiéndose dar 2.3. MATLAB Y SIMULINK 9 cualquier tipo de comunicación de las anteriormente citadas entre ellos. Los plugins son los encargados de realizar esta comunicación, se definen como bibliotecas a insertar en la simulación. Con estos elementos se consigue un mejor control sobre Gazebo y al tratarse de bibliotecas son fáciles de com- partir, añadir y eliminar en las simulaciones. Cuando se lleva a cabo una simulación dentro de Gazebo es el simulador quien marca el tiempo de la misma. El Real Time Factor, dato proporciona- do en la interfaz visual de Gazebo, indica como de buena es la simulación y la relación entre el tiempo real y el marcado, siendo 1 el caso óptimo. Nor- malmente tomará valores en torno a 0.90 lo que hace que el tiempo de la simulación sea más lento que el real. El valor de este factor depende, entre otras cosas, de la complejidad del entorno y del robot simulado, a más com- plejidad menor valor. La versión de Gazebo es la 7.16.0 ya que es la que mejor se adapta a la versión de ROS usada. Cabe decir que el realismo visual de la simulación depende en parte del hardware usado, en este caso la tarjeta gráfica que se posee no permite una visualización del todo realista pero no compromete ningún otro aspecto. Figura 2.3: Logotipo de Gazebo. 2.3. Matlab y Simulink Matlab [7] es un potente software matemático de uso muy extendido en el ámbito de la enseñanza, la investigación y empresarial. Dentro de él se incluye Simulink [8], un entorno de programación visual. Estas herramientas se usarán para la recogida y visualización de datos de la simulación, dada la facilidad de conexión entre ROS y Simulink y el valor añadido que le aporta su uso al proyecto. No obstante no es imprescindible. ROS incluye herramientas para estas tareas: rqt plot para la visualización y rqt bag para 10 CAPÍTULO 2. HERRAMIENTAS UTILIZADAS la recogida de datos. Para ROS Simulink será un nodo más. Dentro de la libreŕıa de Simulink Simulink Library Browser y concretamente en ROS se encuentran implemen- tados bloques para efectuar las conexiones. La recogida y visualización de datos será sencilla con el uso de bloques suscriptores a los temas de interés como se verá a lo largo de la memoria. A diferencia de las herramientas ofre- cidas por ROS se pueden efectuar las dos tareas en un mis mismo paso y para todos los datos que se consideren de interés. Figura 2.4: Logotipo de Matlab y Simulink. La versión de Matlab que se ha usado es la R2018b. 2.4. Modelo de cuadricóptero ROS ofrece la posibilidad de trabajar con robots aéreos no tripulados tanto en simulación como apoyando el manejo real de estos. Algunos de ellos son Gapter, Crazyflie o Erle-Copter. Por otro lado dentro de ROS también se encuentra el paquete hector quadrotor [9] que permite el modelado, control y simulación de un dron genérico que no se basa en ninguno existente en el mercado. Fue desarrollado por Institute of Flight Systems and Automatic Control, en Technische Universität Darmstadt. Entre los objetivos de este trabajo no se encuentra la implementación real, por eso se busca el cuadricóptero que ofrezca las mejores prestaciones en cuanto a simulación y control dentro de los software a usar, ROS y Gazebo. Para la toma de esta decisión fue esencial el asesoramiento de investigadores del Instituto de Ingenieŕıa e Investigación de Aragón (I3A), y concretamen- te del grupo de investigación ”Robotics, Perception and Real Time Group” [10] dada su experiencia en el desarrollo de otros proyectos con robots tanto aéreos como terrestres [11]. Se optó finalmente por el uso del paquete hector quadrotor, su modelado es muy similar a cualquiera delos que existen en el mercado, y por ello no habŕıa dificultades en la extrapolación de este trabajo. Adicionalmente al paquete principal, existen otros que modelan funcionali- dades para este cuadricóptero o para cualquier otro robot, como es el caso 2.4. MODELO DE CUADRICÓPTERO 11 del paquete hector slam. Esto supone que su uso sea muy común por lo que existe numerosa documentación en la que apoyar este proyecto. Su desarrollo está en continuo crecimiento y como cualquier componente de ROS es de código abierto. A lo largo de la memoria se estudiará el funcionamiento de este cuadricóptero y las funcionalidades que ofrece. Figura 2.5: Visualización de hector quadrotor con sonar en Gazebo. 12 CAPÍTULO 2. HERRAMIENTAS UTILIZADAS 13 Caṕıtulo 3 Aspectos teóricos del cuadricóptero 3.1. Modelado La parte más relevante del modelado de un cuadricóptero es el movi- miento de sus hélices y como este tiene lugar [12][13]. Dos giran en sentido de las agujas del reloj y en sentido opuesto las otras dos. Esto hace posibles los movimientos de elevación, balanceo, cabeceo y giro. Los tres últimos se relacionan con los ángulos de Euler roll, pitch y yaw respectivamente, giros sobre los ejes X, Y y Z del dron, Fig. 3.1. Figura 3.1: Ángulos de Euler en los ejes solidarios al cuadricóptero. Como puede observarse en la Fig. 3.2 el movimiento de la hélice da lugar a una fuerza en la dirección positiva del eje Z y es el sumatorio de las cuatro el que da lugar al movimiento del dron. F1 y F3 son las fuerzas correspondien- tes a los motores que giran en sentido antihorario y F2 y F4 las de los que 14 CAPÍTULO 3. ASPECTOS TEÓRICOS DEL CUADRICÓPTERO lo hacen en sentido horario. Una variación de altitud implica que todas las fuerzas tengan el mismo valor. En el balanceo se mantienen constantes las fuerzas F1 y F3 y se vaŕıan F2 y F4 el mismo valor pero de manera inversa. Y de la misma manera para el cabeceo pero dejando constantes F2 y F4. Por último si se eleva F1 y F3 y se disminuye F2 y F4 el dron girará sobre su eje Z. Figura 3.2: Diagrama de fuerzas del cuadricóptero. Partiendo de estas ideas acerca de como se produce el movimiento se procede al modelado cinemático en función de su posición. En primer lugar se define su posición lineal y angular en el sistema de coordenadas inerciales, ξ y η respectivamente. Siendo q el vector con el que se definen ambas de manera conjunta, (3.1). Sobre el dron y en su centro de masas se definen las coor- denadas no inerciales del cuerpo que darán lugar a dos nuevos vectores para la posición lineal y angular, su derivada será la velocidad VB y ν respectiva- mente, (3.2). ξ = xy z η = φθ ψ q = [ ξ η ] (3.1) VB = vx,Bvy,B vz,B ν = p q r (3.2) La relación entre bases se define con la matriz de rotación R y Wη para una transformación más concreta, el paso de velocidades angulares entre 3.1. MODELADO 15 coordenadas inerciales y no inerciales, (3.3). Ambas se componen de senos y cosenos y son matrices 3x3. ν = Wnη̇, ν = 1 0 −Sθ 0 Cφ CθSφ 0 −Sφ CθCφ φ̇θ̇ ψ̇ (3.3) Por otro lado se asume que el dron es simétrico en el plano XY y por lo tanto su tensor de inercia será una matriz diagonal, (3.4), con Ixx = Iyy. Por último se definen las fuerzas y los momentos que ocasionan cada uno de los motores. La fuerza es igual al producto de la constante de sustentación k y la velocidad angular del motor wi al cuadrado, esta fuerza aparece en la dirección del eje de giro del motor y recibe el nombre de empuje, (3.5). El momento tiene dos contribuciones. Una debida a la inercia, aunque su bajo valor hace que sea despreciable, y otra debida al producto de la constate de arrastre b y la velocidad angular del motor wi al cuadrado, (3.6). Todas estas fuerzas y momentos se dan en el eje Z. En el caso de los momentos en las componentes que corresponden a φ y θ, giro entorno los ejes X e Y respectivamente. Su valor será el producto de la suma de las velocidades angulares al cuadrado de los motores perpendiculares a esos ejes por k y l, distancia entre el motor y el centro de masas. El signo menos se debe a que los motores giran en sentidos opuestos. Las ecuaciones de los momentos ilustran lo que ya se ha explicado al principio de esta sección, dependiendo de la variación de las velocidades de los motores se ocasiona el balanceo, el cabeceo o el movimiento de guiñada (Row, Pitch, Yaw) o la elevación. I = Ixx 0 0 0 Iyy 0 0 0 Izz (3.4) fi = kwi 2 −→ T = 4∑ i=1 fi = k 4∑ i=1 wi 2 (3.5) τMi = IM ẇi + bwi 2 −→ τψ = 4∑ i=1 τMi = b 4∑ i=1 wi 2 (3.6) TB = 0 0 T τB = lk(−w2 2 + w2 4) lk(−w2 1 + w2 3) τψ (3.7) 16 CAPÍTULO 3. ASPECTOS TEÓRICOS DEL CUADRICÓPTERO Para explicar la dinámica del cuadricóptero se usa el modelo de Newton- Euler o Euler-Lagrange. En el primero la suma del empuje de los motores y la acción de la gravedad serán igual a la suma del peso y la fuerza centŕıfuga, si se trabaja en ejes inerciales esta será nula, (3.8) y (3.9) coordenadas del cuerpo e inerciales respectivamente. En el segundo se define el lagrangiano como la suma de la enerǵıas traslacional y rotacional menos la potencial, (3.10) y (3.11). mV̇B + ν(mVB) = RTG+ TB (3.8) mξ̈ = G+RTB (3.9) L(q,q̇) = (m/2)ξ̇T ξ̇ + (1/2)νT Iν −mgz (3.10)[ f τ ] = d dt ( ∂L ∂q̇ ) − ∂L ∂q (3.11) El modelado del vuelo del cuadricóptero en la simulación se basa en el mo- delado matemático desarrollado en esta sección. Se explicará de manera más detallada en el caṕıtulo 5. 3.2. Control de trayectoria y planificación Con el control de la trayectoria de un cuadricóptero se busca llevarlo desde una posición origen a una posición destino deseada. El origen del movimiento del dron está en sus motores y en la velocidad angular que producen sobre las hélices del mismo. Teniendo un control sobre dicha velocidad, el momento y el empuje resultantes también estarán controlados y en consecuencia las velocidades angulares y lineales de la aeronave. La posición y orientación se pueden obtener a través de las derivadas de la velocidad lineal y angular respectivamente. Las funciones que modelan el sistema relacionan todas las variables citadas anteriormente como se ha visto en la sección anterior, lo que hace posible un control del vuelo usando cualquiera de ellas, o dicho de otro modo a cualquier nivel. El nivel más bajo supone actuar sobre los motores, variando su tensión en función del movimiento deseado. En los niveles más altos se sitúan los controles que actúan sobre las velocidades del dron para variar la posición y orientación. En cualquier caso, el esquema de control será similar al ilustrado en la Fig. 3.3. El sistema a controlar es el cuadricóptero y las entradas a este serán las tensiones aplicadas sobres sus motores. El resto 3.2. CONTROL DE TRAYECTORIA Y PLANIFICACIÓN 17 de elementos del esquema dependerán del nivel al que se decida realizar el control. En el caso de hacerse a un alto nivel la diferencia entre la posición actual y deseada será entrada al controlador que calcule las acciones sobre el sistema. Un sensor será el encargado de medir la posición actual del cua- dricóptero. El controlador puede ser desde un simple PID a algoritmos de control más sofisticados. Como se verá a lo largo de la memoria los paquetes del hector traen implementados ciertos controles. Figura 3.3: Esquema básico de control. En la realidad el vuelo del cuadricóptero se ve afectado por efectos no ideales, como pueden ser la fuerza de arrastre que se genera por la resistencia del aire o la dependencia del empuje del ángulo de ataque. Incluir estos efectos en el modelado harán que sea más fiel al comportamiento real de la aeronave durante el vuelo. En muchos cosas estos efectos no son sencillos de modelar y llevarlos a un simulador como es el caso. En la f́ısica se define trayectoria como el lugar geométrico de las posiciones sucesivas por las que pasaun cuerpo durante su movimiento [14]. Se habla de trayectorias continuas como aquellas calculadas a partir de las especifica- ciones del usuario para generar unos movimientos concretos y controlados en tiempo real. Por lo tanto, junto con el control es necesario el cálculo o defi- nición de los puntos intermedios. En la Fig. 3.4 se ilustra esta idea. Existen múltiples métodos para planificar una trayectoria, depende de los objetivos de la misma. Los algoritmos de planificación más simples tratan de mover un dron, o cualquier otro robot, en el espacio libre del entorno teniendo en cuenta las limitaciones del movimiento inherentes en los mismo. Un ejemplo en este caso seŕıa los splines usados con robots articulados industriales. Al- goritmos más sofisticados llevan al dron hasta un destino dado evitando los obstáculos que se puedan dar durante su trascurso. Y aún más lo son aquellos capaces de evitar obstáculos dinámicos [15]. 18 CAPÍTULO 3. ASPECTOS TEÓRICOS DEL CUADRICÓPTERO Este proyecto se centrará exclusivamente en el control de la velocidad del cuadricóptero para el seguimiento de una trayectoria. Se supondrá que al módulo de control llegan puntos intermedios previamente definidos en un módulo de planificación y que son totalmente válidos. Un primera definición de los puntos intermedios puede ser la composición de la posición y orien- tación deseada del dron y el tiempo que emplea en llegar hasta ellos desde sus condiciones de posición y orientación iniciales. Esta definición podrá ser distinta una vez que se defina el algoritmo de control. Dichos puntos deben ubicarse en el espacio libre de su alrededor y el desplazamiento hacia ellos debe hacerse de manera segura y en un tiempo determinado, la condición temporal lleva impĺıcita la velocidad a la que debe efectuarse el mismo. Figura 3.4: Trayectoria planificada mediante puntos intermedios. 19 Caṕıtulo 4 Hector quadrotor 4.1. Contenido del paquete El paquete hector quadrotor desarrollado por Stefan Kohlbrecher y Johan- nes Meyer, siendo este último el encargado de su mantenimiento, está dividido en una serie de subpaquetes que describen el modelado, control y simulación de veh́ıculos aéreos no tripulados de cuatro motores. A continuación se enu- meran y describen cada uno de ellos. 1. hector quadrotor description: contiene el modelo básico y variantes con diferentes sensores. 2. hector quadrotor gazebo: contiene lo necesario para la simulación en Gazebo. 3. hector quadrotor teleop: contiene lo necesario para el uso de joysticks externos que manejan el quadrotor en la simulación. 4. hector quadrotor gazebo pluging : contiene complementos espećıficos pa- ra la simulación del comportamiento del cuadricóptero en Gazebo. 5. hector quadrotor actions : se encuentran implementados comportamien- tos del cuadricóptero (despegue, aterrizaje y posicionamiento) a través de acciones. 6. hector quadrotor controller gazebo: contiene implementada la interfaz ros contol RobotHWSim, este tipo de objetos simulan hardware del robot, concretamente aqúı se simula el controlador. 7. hector quadrotor controllers : en él se describen los controladores básicos para definir el modelado matemático de la aeronave. 20 CAPÍTULO 4. HECTOR QUADROTOR 8. hector quadrotor demo: contiene demostraciones del funcionamiento de los paquetes. 9. hector quadrotor interface: en él se describen bibliotecas y nodos para el control del cuadricóptero. 10. hector quadrotor model : en él se encuentran bibliotecas que modelan aspectos del modelado matemático como puede ser las constantes ae- rodinámicas. 11. hector quadrotor pose estimation: este paquete proporciona un nodo y un conjunto de nodos, nodelet. Estima los 6 grados de libertad del cuadricóptero con un filtro de Kalman extendido (EKF) a través de las mediciones de varios sensores. 12. hector uav msgs : en él se describen tipos de mensajes que sirven para el controlador del cuadricóptero además de algunos necesarios para la recogida de datos de sensores que no se recogen en el paquete especifico dentro de ROS para este fin (sensor msgs). Dentro de los paquetes principales no se describen otros aspectos necesarios para la simulación como por ejemplo el entorno. Es por eso que es necesario añadir otros que lo complementen. A continuación se enumeran y describen cada uno de ellos. 1. hector gazebo: contiene paquetes en los que se describen entornos y complementos para la simulación en Gazebo. 2. hector localization: es un conjunto de paquetes que tienen implemen- tados nodos capaces de obtener los 6 grados de libertad del dron o cualquier otro robot. 3. hector models : contiene paquetes que describen el modelo componentes de robots y sensores en archivos .urdf (Universal Robotic Description Format). 4. hector slam: contiene paquetes relacionados con la navegación. Todos los paquetes descritos y usados en este proyecto se han obtenido de los repositorios de GitHub [16]. 4.2. FUNCIONAMIENTO 21 4.2. Funcionamiento El primer paso, tanto para entender el funcionamiento como para compro- bar la correcta instalación, es lanzar las demostraciones que trae implemen- tadas. Están descritas en archivos .launch con nombres indoor slam gazebo y outdoor flight gazebo. Para lanzar las demostraciones usamos el comando roslaunch como se explica en el anexo A.1. Tras esto se abre Gazebo y RViz, una herramienta de visualización 3D que incluye ROS, Fig. 4.1 y Fig. 4.2. RViz es útil para la visualización de datos recogidos de la simulación, por ejemplo los de sensores. En este paso se inicia el entorno de simulación, se posiciona a hector en él y se activa dos nodos para la telemanipulación a través de un joystick: joy y teleop. Este último descrito dentro del paquete hecto quadrotor teleop. Se opta por el uso de otro paquete de ROS, teleop twist keyboard, que permite la telemanipulación a través de la consola y el teclado sin necesidad de mandos externos. En cualquier caso se deben habi- litar los motores mediante la llamada a su servicio previamente: rosservice call /enable motors "enable: true" rosrun teleop twist keyboard teleop twist keyboard.py De estas demostraciones se extrae el esquema básico a seguir para cualquier simulación futura. 1. Inicio del entorno y posicionamiento del cuadricóptero en este. 2. Activación de los motores. 3. Activación de los nodos que ejecuten una tarea concreta, en este caso la telemanipulación. Para llevar a cabo el control de la trayectoria se activaŕıa uno o varios no- dos, previamente descritos, que realizarán la función manteniendo constantes siempre que sea posible el resto de pasos. La activación del nodo rqt graph muestra un grafo de los nodos y temas acti- vos durante la simulación. En la Fig. 4.4 se puede observar el grafo de una de las demostraciones. El grafo de cada simulación es único, aunque con nodos comunes encargados del funcionamiento básico. Con ayuda de las herramien- tas descritas en el anexo anteriormente citado para obtener información sobre los nodos, se buscará la manera de controlar el hector con temas, servicios o acciones descritas en él. 22 CAPÍTULO 4. HECTOR QUADROTOR Todas las simulaciones con hector quadrotor comparten los nodos básicos a los cuales se pueden sumar otros con prestaciones más especificas como por ejem- plo el uso de un joytick o la telemanipulación por pantalla. A continuación se detalla cada uno de los nodos básicos activados en una simulación genérica. Se activan a través de la llamada del archivo spawn quadrotor.launch. Figura 4.1: Interfaz gráfica de Gazebo. Hector quadrotor en un entorno de demostración. Figura 4.2: Izquierda: Rviz. Derecha: terminal con nodo de telemanipulación activado. Robot state publisher. Pertenece al paquete con su mismo nombre. Su función es publicar el estado de un robot en tf, facilitando el trabajo con múltiples sistemas de coordenadas. Tf hace un seguimiento de la variación4.2. FUNCIONAMIENTO 23 de todas las referencias en el tiempo de manera que cualquier otro componen- te de ROS puede acceder a ella y saber el posicionamiento del cuadricóptero en un determinado momento. El tipo de dato de tf es geometry msgs/PoseStamped. Estos datos incluyen por un lado un header, el encabezamiento en el que está el tiempo y la re- ferencia de coordenadas, y por otro la posición, compuesta a su vez por un cuaternio, para la orientación, y coordenadas. Ground truth to tf. Este nodo pertenece al paquete message to tf. Se encarga de traducir mensajes, la posición y orientación a tf concretamente. A través de un argumento bool, use ground truth for tf, se puede elegir la referencia absoluta para la traducción. Por defecto es true lo que quiere de- cir que la referencia del robot parte de la absoluta de la simulación. Debe ser falsa cuando se quiere trabajar con más de un robot. Activando el nodo view frames dentro de paquete tf se genera un archivo pdf con el árbol de referencia de la simulación. En la Fig. 4.3 se puede observar el árbol de refe- rencias para una simulación en la que el parámetro es falso. Este nodo es útil ya que publica la posición y la orientación del cuadricóptero respecto a la referencia absoluta. Figura 4.3: Árbol de referencias. Pose estimation. Este nodo pertenece al paquete hector quadrotor pose es- timation y su función es estimar la posición y coordendas del cuadricóptero basándose en las mediciones de ciertos sensores. Su uso depende del valor de un argumento bool, use ground truth for control, el cual da valor a otro, pose estimation. Por defecto son true y false respectivamente por lo que el nodo no se activa. 24 CAPÍTULO 4. HECTOR QUADROTOR Dentro de spawn quadrotor.launch se hace llamada a controller.launch donde se activan los siguientes nodos. Controller spawer. Este nodo pertenece al paquete controller manager. Proporciona toda la estructura necesaria para interactuar con los controla- dores, con él se pude cargar, descargar, iniciar y detener a los mismos. Los controladores se definen en archivos .yaml. Hector tiene definidos tres: posi- tion, velocity y attitude. Estop relay. Este nodo pertenece al paquete topic tools de tipo relay. Es necesario para el control. Se encarga de retransmitir datos. De la misma manera que en el caso anterior con la llamada al archivo ac- tions.launch se activan los siguientes nodos. Pose action, landing action y takeoff action. Todos pertenecen al paque- te hector quadrotor actions y definen tres comportamientos del cuadricóptero: el aterrizaje, el despegue y el movimiento a una determinada posición. Sus mensajes son acciones por lo que se habla de clientes y servidores. Landing action y takeoff action son clientes de pose action, el servidor. En el anexo A.2.2 se explica con más detalle este tipo de comunicación. Por último, estos nodos se activan como consecuencia de la llamada a start.launch para iniciar el entorno de simulación. Gazebo y gazebo gui Ambos pertenecen al paquete gazebo ros, son nece- sarios para la comunicación entre ROS y el entorno de simulación Gazebo. Figura 4.4: Grafo de nodos activos en la simulación de una demostración. 4.3. SENSORES EN EL HECTOR 25 4.3. Sensores en el hector El modelo básico de hector quadrotor viene provisto de un sonar para medir la altura del vuelo. Es posible variar su posición y parámetros en el archivo quadrotor base.urdf. Publica en el tema /sonar height datos del tipo sensor msgs/Range. El resto de sensores que posee son plugins de Gazebo, complementos que añaden funcionalidades a la simulación. Están descritos en el archivo qua- drotor sensors.gazebo.xacro, son los siguientes: 1. IMU (Inertial Measurement Unit). El nombre del plugin es quadro- tor imu sim, publica en el topic /raw imu mensajes del tipo sensor msgs/Imu que contiene la orientación, la velocidad angular, la aceleración linear y la covarianza de cada una de estas. Este sensor se compone de acelerómetros y giróscopos que miden velocidad, orienta- ción y fuerzas de gravedad actuantes. Se usa para el posicionamiento. 2. Barómetro. El nombre del plugin es quadrotor baro sim, publica en el topic /pressure height mensajes del tipo geometry msgs/PointStamped. Mide la presión atmosférica. Permite conocer la altura del vuelo con gran precisión. 3. Magnetómetro. El nombre del plugin es quadrotor magnetic sim, pu- blica en el topic /magnetic mensajes del tipo geometry msgs/Vector3Stamped. Mide fuerzas magnéticas para cono- cer la orientación en la superficie terrestre. 4. GPS. El nombre del plugin es quadrotor gps sim, publica la posición en el topic /fix, mensajes del tipo geometry msgs/NavSatFix, y la veloci- dad en /fix velocity, mensajes del tipo geometry msgs/Vector3Stamped. Posiciona el cuadricóptero de manera más precisa que el IMU. A este listado es posible añadir otros si fuera necesario en la aplicación a desarrollar. En el paquete hector models se encuentra la descripción de otros sensores que es posible usar como láseres o cámaras. El hector ilustrado en la Fig. 2.5 trae incorporado un láser en la parte inferior de su chasis. 26 CAPÍTULO 4. HECTOR QUADROTOR 27 Caṕıtulo 5 Control de vuelo 5.1. Simulación del modelado matemático El modelo matemático descrito en el caṕıtulo 3 explica como se produce el vuelo de un cuadricóptero. Para su modelado en la simulación de hector quadrotor se define el paquete hector quadrotor controllers. Dentro de este se encuentra descrito el modelo como un plugin de Gazebo cuyo contenido son tres controladores: position, velocity y attitude. Dichos controladores actúan en cascada y en ese orden siendo su salida final el empuje y los momentos que provocan el movimiento del cuadricóptero [17]. En la Fig. 5.1 se esque- matiza este modelado de manera simplificada. Las flechas azules representan las formas incidir externamente al plugin, a través de los temas /cmd vel o /command/twist a los que está suscrito Gazebo o con la acción pose descri- ta en otros paquetes. La comunicación entre los controladores tiene lugar a través de parámetros internos. Cada uno de los controles está formado in- ternamente por controladores proporcionales, integrales y derivativos cuyos parámetros están descritos en el mismo paquete, archivo controller.yaml. Las constantes derivan de los parámetros intŕınsecos de los motores o la aero- dinámica del cuadricóptero estudiada con modelos de cuadricópteros reales. Carece de sentido modificar los valores de cualquiera de ellos. Para el se- guimiento de trayectorias o cualquier otra tarea deberá hacerse un control a un nivel superior. El controlador de posición por su parte no modela ningún aspecto f́ısico real. Se trata de un simple proporcional en el que se calcula la velocidad en función del error de posición, podŕıa resultar interesante modi- ficarlo para variar los resultados. 28 CAPÍTULO 5. CONTROL DE VUELO Figura 5.1: Esquema de controladores para el modelado del vuelo. Se usará la herramienta Simulink para la recogida y análisis de datos durante todo el trabajo. En la Fig. 5.2 se puede observar el diagrama de bloques en- cargado de recoger los datos de la simulación que posteriormente se tratarán en Matlab. En la parte izquierda se encuentran los bloques suscriptores a temas de ROS pero es el inspector de datos de la simulación quien se encar- ga de recabar los indicados por los śımbolos azules de la parte derecha. En cualquier simulación realizada en este proyecto interesa conocer la posición y orientación del dron real frente a la deseada en función del tiempo, los cuatro bloques centrales se suscriben a los temas que publican estos datos. La posición, en cualquier caso, se representa por un punto en IR3 y la orien- tación mediante los ángulos de Euler Yaw, Pitch y Roll. Para visualizar los ángulos de Euler se ha implementado previamente un nodo, Quaternion to Euler, que publica la orientación dada por elnodo ground truth to tf , en forma de cuaternio, como dichos ángulos. Los cuaternios transformados en ángulos de Euler toman valores entre 0 y π radianes positivos o negativos, cuando se supera el valor π el ángulo pasa a ser negativo e incrementa su valor hasta hacerse 0. El código fuente de este nodo se encuentra en el anexo B.1. El bloque final se subscribe al reloj de Gazebo. Como ya se ha explica- do en la sección 2.2 el simulador marca el tiempo y depende de factor Real Time que coincida con el tiempo real. Además el valor de dicho factor no es constante por lo que se estaŕıan obteniendo relaciones temporales erróneas aún habiendo configurado los parámetros de simulación en Simulink. El ini- cio de la simulación en Gazebo y Simulink no es simultaneo, lo que equivale a otra fuente de error temporal. Por todo ello es imprescindible recoger las lecturas del reloj para proceder al tratamiento y extracción de conclusiones sobre cualquier variable. Puede ser interesante recoger datos de la velocidad que se le está indicando externamente, si es el caso, el primer bloque estará suscrito a este tema. Con el fin de encontrar la manera idónea de controlar el cuadricóptero pa- 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 29 ra desarrollar el objetivo principal de este proyecto, el control continuo de trayectorias, se realizará un análisis de ambos modos de control disponibles, temas y acciones. El control ha de permitir llevar al cuadricóptero desde su posición a un destino en un determinado tiempo. En la siguiente sección se procede al análisis. Figura 5.2: Modelado en Simulink para visualizar los datos de la simulación ROS/Gazebo. 5.2. Análisis de los modos de control En simulaciones de robots en entornos Gazebo/ROS el dibujo de un poĺıgono es una de las demostraciones que más se repite. Como ejemplos se 30 CAPÍTULO 5. CONTROL DE VUELO han usado implementaciones en Turtlesim [18], paquetes desarrollados para facilitar el aprendizaje de ROS. Se realizará el dibujo de un cuadrado durante el vuelo a través de un nodo que publique mensajes en uno de los temas o sea cliente de las acciones. Con este análisis se busca encontrar la manera de controlar la trayectoria de manera continua además de la familiarización con el entorno de trabajo y la escritura de nodos. En cualquiera de las alternativas las posiciones deseadas serán las referencias del control. En este caso concreto se busca la manera de indicar al cua- dricóptero que ascienda hasta una determinada altura, concretamente 2 m, y manteniéndola dibujar un cuadrado, de 3 m de lado, en el plano XY de la referencia absoluta. Además dichos movimientos deben realizarse en un tiempo dado. Para conocer la posición y orientación real se usará el tema /ground truht to tf/pose, en el que se publica dicha información. El avance del cuadricóptero debe hacerse en la dirección positiva de su eje X, coinciden- te con su brazo rojo Fig. 2.5, por lo que también será necesaria la orientación durante el vuelo. Dado que se está trabajando entre dos referencias, la abso- luta y la solidaria a los ejes del cuadricóptero, las posiciones X e Y deseadas serán dependientes del ángulo de Yaw (5.1) y (5.2), ángulo entre las dos re- ferencias respecto del eje Z. Dicho ángulo variará su valor con escalones de valor π 2 , (5.3). La posición en Z coincide en ambas referencias pero tomando como cota cero el suelo solamente podrá tomar valores positivos y mayores a la altura de los apoyos del cuadricóptero, aproximadamente 0.18 m. Los ángulos Roll y Pitch los fijará el modelado en función de los movimientos. x deseada = x actual + cos(yaw)longitud (5.1) y deseada = y actual + sen(yaw)longitud (5.2) yaw deseado = yaw actual + π/2 (5.3) A continuación se explican las implementaciones llevadas a cabo para cada alternativa y los resultados obtenidos. 5.2.1. Temas: /cmd vel y /command/twist En un control llevado a cabo a través de cualquiera de los dos temas disponibles, /cmd vel o /command/twist, la variable indicada con ellos será la velocidad. La diferencia entre uno y otro radica en la complejidad de los mensajes a publicar. En el primer caso los mensajes son simples, dos vectores en los cuales se indica la velocidad angular y lineal relativa a los ejes soli- darios al dron. Adicionalmente en el segundo caso sus mensajes poseen un encabezamiento en el que contiene el momento de la publicación y la referen- cia de coordenadas en la que se hace, pudiendo ser la absoluta o nuevamente 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 31 la solidaria al cuadricóptero. En relación al modelado descrito inicialmente, Fig. 5.1, solo estarán en uso los controladores velocity y attitude. Con el fin de simplificar la implementación se usará el tema /cmd vel en el cual se publicarán las velocidades oportunas en cada eje para cada movi- miento. Dado que se indica la velocidad será sencillo cumplir las restricciones temporales si se calcula la misma con los datos de tiempos y desplazamien- tos. Nuevamente por simplicidad se indican valores constantes en todas ellas, distintos de 0 cuando la posición u orientación deseada sea distinta de la real con una cierta tolerancia. En la Fig. 5.3 puede observarse la representación 3D de las coordenadas del vuelo del cuadricóptero. La trayectoria real no coincide con la deseada. Con la Fig. 5.4 es sencillo justificar el motivo, la altura real es ligeramente mayor a la deseada como consecuencia de las tolerancias establecidas para el posicionamiento en Z. En cuanto a las coordenadas XY la evolución del posicionamiento real es correcto. La posición deseada se calcula en función de la actual y la orientación del cuadricóptero. La existencia de un pequeño error en ellas hace que la posición no se mantenga constante en 3 m cuando debeŕıa ser aśı. La evolución de los ángulos durante el vuelo se refleja en la Fig. 5.5. La variación en los ángulos de Roll y Pitch evidencian que el vuelo no es totalmente horizontal, tal y como se describe en el modelo teórico del caṕıtulo 3. El código desarrollado en esta sección se encuentra en el anexo B.2.1. Es posible visualizar la simulación llevada acabo en el canal de YouTube creado para este proyecto [21]. 32 CAPÍTULO 5. CONTROL DE VUELO Figura 5.3: Representación en 3D de las coordenadas espaciales del cuadrado dibujado mediante el tema cmd vel. 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 33 (a) X. (b) Y. (c) Z. Figura 5.4: Coordenadas de posición reales (real) y deseadas (goal). Cuadrado dibujado con /cmd vel. 34 CAPÍTULO 5. CONTROL DE VUELO (a) Roll. (b) Pitch. (c) Yaw. Figura 5.5: Orientaciones reales (real) y deseadas (goal) o de reposo. Cua- drado dibujado con /cmd vel. 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 35 5.2.2. Acciones: Action pose Dentro de los paquetes básicos de hector quadrotor hay implementadas tres acciones: takeoff, landing y pose. Cada una da lugar a un nodo con su nombre: takeoff action, landing action y pose action. El nodo pose action es servidor de takeoff action y landing action y es a través de él como es posible mover el cuadricóptero con este tipo de comunicación, en la Fig. 4.4 pueden verse las comunicaciones entre ellos. En esta alternativa se hace uso de to- dos los controladores que describen el modelo matemático de la Fig. 5.1, la variable indicada externamente es la posición. La acción pose publica en el topic /command/pose que constituye la en- trada de position controller. El nodo a implementar será cliente del servidor pose, en el anexo A.2.2 se explica como tiene lugar la comunicación. En el se indica únicamente el objetivo al servidor pose, la posición y orientación deseadas para poder dibujar el cuadrado calculadas como en el caso anterior (5.1), (5.2) y (5.3). Las indicaciones se hacen respecto a la referencia absoluta y sin partir de las condiciones iniciales del cuadricóptero, es posible modifi- car estas premisas en el archivo spawn quadrotor.launchcomo se indica en el capitulo 4 en la descripción del nodo pose estimation. En este caso no es necesario conocer la posición deseada para llevar a cabo el control, position controller la tiene en cuenta en sus cálculos relativos a la velocidad. Con esta alternativa no es posible controlar el tiempo, y en definitiva la velocidad de manera sencilla. Los resultados se han extráıdo de una simulación cuya única indicación es la posición y orientación deseadas, despreciando premisas temporales. En la Fig. 5.6, representación 3D de las coordenadas espaciales reales y deseadas, puede observarse como el cuadricóptero hace el dibujo de un cuadrado de lados arqueados. Si además se observan las gráficas de la Fig. 5.7 pueden ver sobrepasamientos de las posiciones deseadas. Esto lleva a la deducción de que aun siendo bueno el posicionamiento final se realiza a una velocidad muy elevada. Algo que se ve reafirmado en las variaciones de los ángulos Roll y Pitch de la posición de reposo, Fig. 5.8. El código desarrollado en esta sección se encuentra en el anexo B.2.2. Es posible visualizar la simulación llevada acabo en de la misma manera que el caso anterior [22]. 36 CAPÍTULO 5. CONTROL DE VUELO Figura 5.6: Representación en 3D de las coordenadas espaciales del cuadrado dibujado mediante action pose. 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 37 (a) X. (b) Y. (c) Z. Figura 5.7: Coordenadas de posición reales (real) y deseadas (goal). Cuadrado dibujado con action pose. 38 CAPÍTULO 5. CONTROL DE VUELO (a) Roll. (b) Pitch. (c) Yaw. Figura 5.8: Orientaciones reales (real) y deseadas (goal) o de reposo. Cua- drado dibujado action pose. 5.2. ANÁLISIS DE LOS MODOS DE CONTROL 39 5.2.3. Conclusiones El objetivo de este proyecto es el seguimiento de trayectorias continuas. La propia estructura de comunicación de las acciones, las hace no aptas para esta tarea. Cuando se indica una posición objetivo mediante estas no será posible enviar uno nuevo mientras no se alcance y el servidor de la acción lo notifique. Lo que da lugar continuos arranques y paradas del cuadricóptero. Por otro lado, el posicionamiento está configurado para llevarse a cabo rápi- damente por lo que cuanto más separado esté el cuadricóptero del objetivo mayor será la velocidad para alcanzarlo. La comunicación con acciones ha si- do creada para tareas que requieren un cierto tiempo. En este caso concreto, las comunicaciones que se buscan son a frecuencias de intercambio de datos altas. No es posible cumplir con la continuidad deseada. El uso de cualquiera de los dos temas disponibles en el modelado, /cmd vel o /command/twist, hace posible un control continuo y de manera más pre- cisa. La mayor parte de robots simulados en Gazebo se controlan con el tema /cmd vel, control sobre la velocidad. Haciéndolo con /command/twist en la referencia del cuadricóptero daŕıa los mismos resultados pero dotaŕıa al nodo de cierta versatilidad. Siendo posible el cambio de dicha referencia en cualquier momento a la absoluta y teniendo información temporal de las publicaciones, beneficioso en el caso de usar la herramienta /rqt plot para dibujar gráficos durante la simulación, en la que solo es posible la visualiza- ción de datos con sello temporal. Respecto al desarrollo del código fuente de ambos nodos, cabe destacar que la escritura para la comunicación mediante temas es más sencilla e intuitiva. 40 CAPÍTULO 5. CONTROL DE VUELO 41 Caṕıtulo 6 Seguimiento de una trayectoria Todo el análisis, implementaciones y conclusiones hechas en caṕıtulos an- teriores son la base de este caṕıtulo. Aqúı se describe e implementa el nodo encargado de cumplir el objetivo de este proyecto, controlar el vuelo de un cuadricóptero para que se desplace hasta un destino en un determinado tiem- po. Ambos datos especificados de manera externa al módulo encargado de llevar a cabo el control. Se empezará explicando de manera general cómo se lleva a cabo el control. Después se procederá a explicar el ajuste y las limita- ciones del algoritmo desarrollado. Por último, para justificar su utilidad, se comparará con el control llevado a cabo en caṕıtulo 5. 6.1. Descripción del algoritmo de control Se define como trayectoria continua aquella que es planificada a través de las especificaciones de un usuario. En función de dicha panificación se gene- ran los movimientos para llevarla a cabo. En este último punto se centrará el algoritmo de control a implementar en esta sección, partiendo de una serie de puntos que constituyen la planificación previa. Tomando el modelado de cuadricóptero descrito en el caṕıtulo anterior e incidiendo sobre él a través del tema /command/twist, se pretende controlar la posición del mismo. La velocidad publicada en dicho tema será la tomada por la aeronave en su vuelo. Dentro de velocity controller y attitude con- troller se encuentra el control a más bajo nivel que calcula las fuerzas y los momentos para hacer posible el movimiento, constituyen la salida de di- cho modelado. El control de posición se realizará indicando las velocidades previamente calculadas en función de los requisitos del posicionamiento. El algoritmo a definir será el encargado de realizar dichos cálculos. Sus entradas 42 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA serán la posición deseada y real y el tiempo de desplazamiento entre ambas. Este último dato junto con la posición deseada equivale a los datos proce- dentes de la planificación de trayectorias. La posición real, como en otros casos, puede ser obtenida a través del tema /ground truth to tf/pose. El nodo relativo a su implementación se situará en el lugar que ocupa position controller en el modelado expuesto en la Fig. 5.1, el resultado de este nuevo esquema se encuentra en la Fig. 6.1. La entrada de la posición deseada no se ha representado para que dicho esquema sea fiel a la implementación, los puntos de la planificación se definirán internamente en el nodo. Figura 6.1: Esquema de controladores para el modelado del vuelo modificado. A pesar de que la planificación de la trayectoria no es un tema de estu- dio en este trabajo es necesario definir cómo serán los puntos procedentes de la misma. Se suponen puntos formados por las tres componentes del espacio cartesiano relativos a la referencia absoluta y un tiempo, (x, y, z, t), cuyas unidades son metros y segundos respectivamente. De proceder dichos puntos del exterior ese tiempo seŕıa equivalente a la frecuencia de llegada entre los mismos. De la misma manera que en el dibujo del cuadrado, se busca que el cuadricóptero avance siempre en la dirección positiva de su eje X por lo que nuevamente se estará trabajando entre dos referencias, la absoluta en la indicación del posicionamiento y la del cuadricóptero para indicar las veloci- dades. La orientación de la aeronave en la dirección del nuevo objetivo ha de hacerse durante la marcha. En este caso la orientación deseada será igual al ángulo que forma el vector definido por puntos (x,y) deseados cuando corta el eje X positivo de la referencia absoluta, (6.1). Mientras que el cuadricóptero avanza este ángulo va variando, a causa de x(t) e y(t). Lo que evidencia que el control de orientación y avance no son independientes. yawdeseado(t) = atan2( ydeseada − y(t) xdeseada − x(t) ) (6.1) 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 43 Definiendo vx, vy y vz como las velocidades lineales en los ejes X, Y y Z solidarios al dron y w la velocidad angular en en el eje Z, vy será todo el tiempo nula y será el valor del resto lo que deba fijar el algoritmo a desarro- llar. La corrección en la orientación ha de ser lo más rápida posible evitando el avance hacia una dirección equivocada. Las velocidades lineales, vx y vz, deben hacer posible que el dron se desplace hasta la posición en el plano XY y la altura deseadas en el tiempo dado. Conforme vaya pasando el tiempo el error irá tendiendo a unvalor nulo por lo que las velocidades deben ser recal- culadas constantemente para tener en cuenta las variaciones en la posición y la orientación. El error de posicionamiento nunca llegará a ser exactamente nulo y por lo tanto tampoco lo serán las velocidades, se definirá un cierto error admisible entre los valores deseados y reales. Al nodo donde se encuentra implementado el algoritmo se le ha nombra- do como trajectoryControl.cpp. Su código fuente se encuentra en el anexo B.3. Dicho nodo calculará y publicará las velocidades cada un cierto tiempo, periodo de muestreo. Para llevar a cabo el control se han definido en él tres controladores PID (6.2) y (6.3). Se corresponden con el control de movimien- to del dron en cada uno de sus ejes, desplazamiento lineal en X y Z y giro en Z. En la siguiente sección se valorará la necesidad de las diferentes acciones y se definirán el control de manera más precisa. u(t) = Kpe(t) +Ki ∫ t 0 e(t)dt+Kd de(t) dt (6.2) Ki = Kp τi Kd = Kpτd (6.3) 6.2. Ĺımites de operación y ajuste del control El mundo donde se lleva a cabo la simulación y el ajuste de los controla- dores es un entorno vaćıo como el mostrado en la Fig. 6.2. En esta además es visible el eje de coordenadas solidario al cuadricóptero, se encuentra girado 90o en Z respecto del eje de coordenadas absoluto. Las acciones de un controlador PID son función del error de la variable sobre la que se está efectuando el control. En este caso concreto la acción total del control equivale a las velocidades vz, vx y w. La velocidad lineal en Z toma valores de ambos signos para variar la altura de la aeronave. Las posiciones deseadas y reales en este eje siempre serán positivas. El choque de su chasis con el suelo, la cota 0, da lugar a la mı́nima, aproximadamente 0,18 m. La 44 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA Figura 6.2: Interfaz gráfica de Gazebo. Hector posicionado en un mundo vaćıo. velocidad lineal en X debe tomar valores siempre positivos según se ha des- crito el control. Los puntos (x,y) deseados y reales pertenecen a cualquiera de los cuatro cuadrantes del plano XY de vuelo. El error de los controladores de estas dos velocidades se calculan según (6.4) y (6.5), siendo en ambas ttotal el tiempo dado. El error de avance en el plano XY se calcula a partir de la distancia eucĺıdea, de esta manera se consigue una velocidad siempre positi- va independientemente del signo de las componentes (x,y) de los puntos. La velocidad angular en Z tomará valores positivos cuando el giro se produzca hacia la derecha y negativos en el caso de hacerlo a la izquierda. Una vez más el error depende de la evolución temporal pero, a diferencia de los casos anteriores, el error no tiene unidades de velocidad, m/s o rad/s en este caso, si no rad (6.6). La velocidad de giro no se fija con el tiempo dado si no que debe hacerse lo más rápido posible. El valor de este error no debe superar en valor absoluto a π, en consecuencia a como se define la orientación en Gazebo, por eso es necesario realizar una compensación si se da el caso. ez(t) = zdeseada − z(t) ttotal − t (6.4) ex(t) = √ (xdeseada − x(t))2 + (ydeseada − y(t))2 ttotal − t (6.5) eyaw(t) = yawdeseado(t)− yaw(t) (6.6) 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 45 Según las definiciones de los errores la respuesta del controlador de vz es independiente del resto. Sin embargo las respuestas de los otros dos controles son dependientes entre śı. Una correcta orientación llevará a un correcto avance en el plano XY. Cada una de las acciones de un controlador PID trata de mejorar la respuesta de una manera. Para un ajuste preciso es necesario conocer la función de transferencia del sistema y sobre ella hacer un estudio frecuencial que mejore su respuesta. Como no es posible conocer dicha función de manera exacta se ha optado por realizar un ajuste emṕırico basado en las ideas básicas de cada acción [19]: 1. Acción proporcional: es igual al error multiplicado por una constante Kp. Provoca un aumento en la velocidad de la respuesta pero valores muy elevados en su constante pueden llevar el sistema a la inestabilidad. En su ajuste el resto de las acciones se hacen nulas y el valor de Kp se va aumentando hasta conseguir la velocidad deseada en la respuesta. 2. Acción derivativa: es igual a la derivada del error multiplicada por una constante Kd (6.3). Trata de anticiparse al error que pueda darse en el sistema. Evita los sobrepasamientos originados por la inercia del sistema ante una acción proporcional pura por lo que será necesaria si se observan oscilaciones entorno al valor deseado tras una acción proporcional. Para su ajuste se aumenta el valor de τd, a un tiempo poco superior al periodo de muestreo, de manera que se consiga una respuesta más estable. 3. Acción integral: es igual a la integral del error multiplicada por una constante Ki (6.3). Trata de reducir el error en régimen permanente pero valores muy elevados en su constante pueden llevar nuevamente el sistema a la inestabilidad. Se usará esta acción de darse un error en la respuesta estacionaria. Previo al ajuste es necesario establecer el periodo de muestreo, T , que estará limitado por el escalón temporal mı́nimo de Gazebo. Dicho valor es time step publicado en el tema /gazebo/parameter descriptions por Gazebo. Puede ser configurado entre 0 s y 10 s siendo 0,001 s su valor por defecto y el usado en las simulaciones de este trabajo. Periodos muy próximos a dicho valor pueden provocar errores como consecuencia de trabajar sobre un sistema en tiempo real digital. Además T debe ser menor que la separación mı́nima entre puntos planificados, los controladores tienen que tener tiempo suficiente para ofrecer una buena respuesta. Por todo ello se fija un T 10 veces mayor al escalón del reloj, 0,01 s. A continuación se procede al ajuste de los controladores par- tiendo en todos los casos de una acción proporcional únicamente con Kp = 1. 46 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA Ajuste PID para el control de la altura Para obtener la respuesta de este controlador se ha hecho nula la acción pro- vocada por el resto. La trayectoria planificada está compuesta por un único punto (0 m, 0 m, 1 m, 10 s), por lo que se espera una acción del controlador entorno a 0,1 m/s, vz. Los resultados de la simulación llevada a cabo se pue- den observar en la Fig. 6.3. La respuesta se ajusta con la deseada, el dron alcanza una altura de 1 m en 10 s y se mantiene en un valor prácticamente igual a ella. No será necesario modificar la constante Kp ni añadir una acción integral. Puede observarse un pequeño sobrepasamiento del todo desprecia- ble, tan solo un 1 % por encima del valor en régimen permanente, por lo que tampoco será necesaria una acción derivativa en este caso. Figura 6.3: Respuesta del controlador PID vz con Kp = 1. Ajuste PIDs para el avance en el plano XY Llevando el cuadricóptero a una cierta altura, posible gracias al ajuste an- terior, se procede al ajuste del resto de controladores de manera que el roce con el suelo no influya en el movimiento. La trayectoria planificada estará compuesta por el punto (1 m, 1 m, 1 m, 10 s) y partirá de la posición (0,0) del plano XY con una orientación de 0 rad en Z. La respuesta esperada es una rápida orientación a π 4 rad de manera que el avance se produzca cuanto antes en la dirección correcta. Los resultados de la simulación se recogen en la Fig. 6.4 y la Fig. 6.5. El dron se sitúa en la posición deseada en el tiempo deseado, el erro en régimen permanente se debe a las tolerancia fijada para 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 47 este desplazamiento. La posición exacta en X e Y no se alcanza pero si un valor muy próximo. Las tolerancias evitan que el dron continúe moviéndose cuando se encuentra en esta situación. Diferencias pequeñas en el posicio- namiento pueden dar lugar a ángulos significativos por lo que en este caso también seránecesario fijar una tolerancia. La corrección de la orientación es lenta, lo que provoca un desplazamiento curvo entre las posición inicial y deseada, Fig. 6.5a. Para aumentar la velocidad de la respuesta del controlador de orientación se aumenta su constante proporcional de manera gradual. Para un valor de Kp = 15 se da la velocidad máxima de dicha respuesta. Las Fig. 6.6 y 6.7 recogen los resultados de una simulación para la misma trayectoria. La res- puesta ahora satisface los requerimientos. Nuevamente, el dron alcanza la posición (1 m,1 m) en 10 s ,despreciando el error ocasionado por las tole- rancias. Es por eso que el controlador encargado de este desplazamiento se mantendrá como un proporcional con Kp = 1. De la misma manera para el de orientación, pero con Kp = 15. La respuesta es rápida, estable y sin errores en el permanente, Fig. 6.6. Figura 6.4: Respuesta del sistema con PID w con Kp = 1. 48 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA (a) Respuesta XY. (b) Respuesta X. (c) Respuesta Y. Figura 6.5: Respuesta del sistema con PID vx con Kp = 1, siendo Kp = 1 en el controlador de la orientación. 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 49 Figura 6.6: Respuesta del sistema con PID w con Kp = 15. 50 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA (a) Respuesta XY. (b) Respuesta X. (c) Respuesta Y. Figura 6.7: Respuesta del sistema con PID vx con Kp = 1, siendo Kp = 15 en el controlador de la orientación. 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 51 Con el objetivo de conocer el tiempo que cuesta corregir el error máximo, π rad, se lleva a cabo una simulación con un punto distinto, (-1 m, 0 m, 1 m, 10 s) y las mismas condiciones iniciales. Este tiempo depende del controlador de orientación y de la velocidad del avance en el plano XY. El controlador tarda aproximadamente 3 s en corregir dicha orientación en estas condiciones de simulación, Fig. 6.8. Figura 6.8: Respuesta del sistema con PID w con Kp = 15 y una corrección de giro de π rad. El valor de las velocidades reales tomadas por el dron durante su vuelo está limitado por su modelado. Existe un valor máximo al que saturan las mis- mas a pesar de la que se indique externamente, en este caso por el algoritmo implementado. En la definición de los controladores para el modelado del comportamiento se indica que la velocidad máxima en z es de 5 m/s y 10 m/s en xy. Se han comprobado dicho valores usando el control desarrollado. Para lo cual se ha llevado al dron a alcanzar velocidades superiores a las mismas. Para la velocidad máxima en Z la trayectoria planificada será un único punto, (0 m ,0 m, 60 m, 10 s). La velocidad esperada será aproximadamente 6 m/s y sin embargo, como cabe esperar, esta toma un valor de aproximadamente 5 m/s, Fig. 6.9. En cambio, la velocidad en X no satura al valor esperado. En este caso la simulación se realiza con el punto (150 m, 0 m, 2.0 m, 10 s), partiendo de la posición (0,0) y una orientación nula en el eje Z. La velocidad que se espera que tome el dron es igual a 15 m/s pero sin embargo toma un 52 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA valor de aproximadamente 8 m/s, Fig. 6.10, inferior al valor de saturación esperado. Figura 6.9: Respuesta del sistema ante vz superior a su valor máximo. Figura 6.10: Respuesta del sistema ante vx superior a su valor máximo. Las limitaciones de velocidad máxima lineal en vx y vz, el tiempo de res- puesta del controlador de orientación ante un giro máximo y el periodo de 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 53 muestreo T condicionan los puntos provenientes de la planificación de tra- yectorias. Para un correcto funcionamiento del algoritmo se deben tener en cuenta la siguientes aspectos en la planificación de la trayectoria entrante. 1. El tiempo entre puntos debe ser superior a T al menos 10 veces. De no ser aśı llegará un nuevo punto antes que las acciones hagan que el dron haya alcanzado el objetivo anterior. 2. La velocidad máxima entre los puntos no debe superar la ĺımite. 3. La diferencia de orientación entre puntos depende de su separación en X e Y. Conforme avanza el dron en el plano XY la orientación deseada cambia y a su vez la actual por la acción del control de esta variable. Velocidades altas de avance provocan malas respuestas de orientación. Con el objetivo de comparar los controles básicos de hector quadrotor con el desarrollado en este proyecto se ha llevado a cabo la misma tarea que en el caṕıtulo 5: el dibujo de un cuadrado de 3 m de lado volando a una altura de 2 m. A diferencia del primer caso, el cuadricóptero no detiene su avance para efectuar el giro. Es por eso que la representación 3D del dibujo del cuadrado con el nuevo control, Fig. 6.11, no es un poĺıgono tan regular, Fig. 5.3. Dado que el ángulo a corregir es elevado, π 4 , las respuestas de los controladores de avance y orientación no consiguen seguir la trayectoria deseada mientras este no es corregido. Se debe tener en cuenta que esta trayectoria se ha definido por 6 puntos separados 10 s que se corresponden con el despegue, las esquinas del cuadrado y el punto de aterrizaje. Una trayectoria definida por más puntos tendŕıa mejores resultados. Las Fig. 6.12 y Fig. 6.13 recogen los resultados espećıficos de cada una de las coordenadas y orientaciones. Comparándolos con los obtenidos en el caṕıtulo 5, Fig. 5.4 y 5.5, puede observarse la mejora en el control del movimiento. En la primera simulación la velocidad del cuadricóptero conmutaba entre 0 y 1 en función de si se estaba o no en el destino, un simple control ON-OFF. Dicho control estaba dotado de histéresis, la tolerancia. Aunque era posible cumplir con los requisitos temporales los movimientos de la aeronave eran más bruscos y con paradas y arranques en los cambios de orientación. En el nuevo control hace posible el giro sin necesidad de detener la marcha suavizando aśı el vuelo. El valor de la velocidad es continuamente calculado por el control y no un valor constante. Dotando al cuadricóptero de cierta autonomı́a y adaptabilidad a las condiciones del vuelo frente al caso anterior. Es posible visualizar la simulación llevada a cabo en el canal de YouTube de este proyecto [23]. 54 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA Figura 6.11: Representación en 3D de las coordenadas espaciales. Cuadrado dibujado con el control desarrollado. 6.2. LÍMITES DE OPERACIÓN Y AJUSTE DEL CONTROL 55 (a) X. (b) Y. (c) Z. Figura 6.12: Coordenadas de posición reales (real) y deseadas (goal). Cua- drado dibujado con el control desarrollado. 56 CAPÍTULO 6. SEGUIMIENTO DE UNA TRAYECTORIA (a) Roll. (b) Pitch. (c) Yaw. Figura 6.13: Orientaciones reales (real) y deseadas (goal). Cuadrado dibujado con el control desarrollado 57 Caṕıtulo 7 Conclusiones y trabajo futuro 7.1. Conclusión El objetivo de este trabajo es la simulación de un cuadricóptero y el segui- miento de su trayectoria de manera continua. Previamente, ha sido necesario un estudio en profundidad del entorno de simulación ROS/Gazebo usado. La documentación desarrollada en esta parte puede servir como punto de parti- da para trabajos con cuadricópteros en el mismo entorno. Se ha comprobado la utilidad de este o cualquier otro simulador cuando se trata de estudiar el comportamiento de un robot, pudiendo llevar a cabo experimentos más variados, con menor coste temporal y económico y de manera segura. Gazebo ofrece múltiples posibilidades en la configuración de las variables relevantes de un experimento y muchos robots tienen su modelo disponible para usar en este entorno. El uso tan extendido de Gazebo y ROS hace fácil la resolu- ción de problemas o dudas que puedan surgir. Está disponible un amplio y estructurado conjunto de tutoriales y documentación. Los resultados obtenidos en el control de la trayectoria han resultado sa- tisfactorios. El cuadricóptero llega a los objetivos fijados en los tiempos es- perados con movimiento
Compartir