Full text
Equation Chapter 1 Section 1 Proyecto Fin de Grado Ingeniería Electrónica, Robótica y Mecatrónica MONTAJE Y CONFIGURACIÓN DEL DRONE COMERCIAL ERLE-COPTER Autor: Mario Jiménez León Tutores: Manuel Vargas Villanueva Manuel Gil Ortega Linares Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017
iii Proyecto Fin de Grado Ingeniería Electrónica, Robótica y Mecatrónica MONTAJE Y CONFIGURACIÓN DEL DRONE COMERCIAL ERLE-COPTER Autor: Mario Jiménez León Tutores: Manuel Vargas Villanueva Profesor titular Manuel Gil Ortega Linares Profesor titular Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017
v Proyecto Fin de Grado: MONTAJE Y CONFIGURACIÓN DEL DRONE COMERCIAL ERLE-COPTER Autor: Mario Jiménez León Tutores: Manuel Vargas Villanueva Manuel Gil Ortega Linares El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2017 El Secretario del Tribunal
vii Resumen El presente proyecto se ha pretendido que actúe a modo de manual. Un documento en el cual se recopila información y que consta de varias partes. Por un lado, se presenta Erle-Copter, un vehículo quadrotor desarrollado por la compañía Erle Robotics, con el cual se ha tenido la suerte de trabajar físicamente. Se expondrán, por tanto, cada uno de los elementos que lo componen, los pasos seguidos para su montaje y su configuración interna necesaria para preparar al vehículo para futuros experimentos asegurando que éste vuela de manera correcta. Por otro lado, se definen los programas necesarios para la manipulación y disposición de Erle-Copter y las distintas funciones que se pueden realizar con los mismos. A continuación, se explica la configuración del sensor de flujo óptico necesaria y los pasos previos a realizar para un primer vuelo con éxito. Del mismo modo, se ha recopilado información acerca del autopiloto ArduCopter, desarrollado por la compañía ArduPilot. Entre ella los controladores que éste utiliza para la manipulación de un quadrotor y los diferentes modos de vuelo de los que dispone. Dicho autopiloto es utilizado por un gran número de vehículos y de forma concreta en nuestro Erle-Copter. Finalmente se expone alguna representación gráfica de las magnitudes a controlar en él, obtenidas a partir de la realización de distintos vuelos, con el objetivo de visualizar su comportamiento durante los mismos. La mayor parte de la información dedicada a Erle-Copter que aquí se expone puede ser extendida y servir de ayuda en diferentes vehículos aéreos de tipo quadrotor.
ix Abstract This proyect is able to act like a manual. A document which recopilates information and it is compose in many parts. On the one hand, Erle-Copter is presented. A quadrotor vehicle developed by Erle Robotics company, with it we had luck to work physically. It is explained each elements which is composed, its steps required for his assembly and its internal configuration necessary to prepare the vehicle for future experiments. On the other hand, the programs necesary for the Erle-Copter´s manipulation is defined as well as its different functions. Consequently, it is explained optical flow sensor´s configuration and the previus steps to realized a succesful first flight. Besides, some information is recopilated about ArduCopter, developed by ArduPilot company. Each controller which is used for the manipulation of a quadrotor and the differents flight modes. Finally, some of its magnitudes graphics representations are exposed. Obtained with the realitation of different flights. This information is dedicated for all tipes of quadcopters.
Ilustración 5-4. Conexión con el controlador Erle-Brain 2 desde el programa Putty 31 Ilustración 6-1. Medidas obtenidas por el sensor PX4Flow v1.3.1 33 Ilustración 6-2. Medidas obtenidas por el sensor PX4Flow v1.3 34 Ilustración 6-3. Lista de parámetros del sensor PX4Flow en QGroundControl 35 Ilustración 6-4. Enfoque de la lente del sensor PX4Flow 36 Ilustración 6-5. Comprobación del puerto I2C utilizado por el sensor PX4Flow 37 Ilustración 6-6. Habilitación del sensor PX4Flow en el programa Mission Planner 37 Ilustración 6-7. Comprobación de la toma de medidas del sensor PX4Flow en Mission Planner 38 Ilustración 7-1. Posición del stick izquierdo para armar el drone 39 Ilustración 7-2. Posición del stick izquierdo para desarmar el drone 39 Ilustración 7-3. Giro adecuado de los motores en un quadrotor 40 Ilustración 7-4. Pantalla de calibración de la emisora en APM Planner 41 Ilustración 7-5. Ajustes básicos a través de Mission Planner 42 Ilustración 8-1. Bucle de control PID 43 Ilustración 8-2. Sentido de giro de los ángulos roll, pitch y yaw 44 Ilustración 8-3. Parámetros de los controladores PID presentes en ArduCopter 48 Ilustración 8-4. Drone 3DR IRIS 48 Ilustración 8-5. Evolución de los distintos filtros usados por ArduCopter 50 Ilustración 9-1. Trayectoria seguida por el drone en el modo RTL 55 Ilustración 9-2. Trayectoria seguida por el drone en el modo Auto 56 Ilustración 10-1. Ángulo pitch del quadrotor frente al ángulo pitch deseado 59 Ilustración 10-2. Ángulo roll del quadrotor frente al ángulo roll deseado 60 Ilustración 10-3. Altura del vehículo según el GPS frente a la altura deseada 61 Ilustración 10-4. Altura del vehículo según el barómetro frente a la altura deseada 62 Ilustración 10-5. Medidas del giroscopio según el eje X 63 Ilustración 10-6. Medidas del giroscopio según el eje Y 64 Ilustración 10-7. Medidas del giroscopio según el eje Z 64 Ilustración 10-8. Medidas del acelerómetro según el eje X 65 Ilustración 10-9. Medidas del acelerómetro según el eje Y 66 Ilustración 10-10. Medidas del acelerómetro según el eje Z 66
xvii Notación A Amperios V Voltios cm Centímetros mm Milímetros g Gramos kg Kilogramos ~ Aproximadamente mAh Miliamperios hora " Pulgadas KV KiloVoltio Hz Hercios MHz/GHz Mega/Giga Hercios DIY Do it yourself ESC Electronic Speed Control RPM Revoluciones por minuto LiPo Litio Polímero CW ClockWise (Giro en el sentido de las agujas del reloj) CCW CounterClockWise (Giro contrario a las agujas del reloj) APM ArduPilot Mega CPU Central Processing Unit PCB Printed Circuit Board ROS Robot Operating System PWM Pulse-Width Modulation MAVLink Micro Air Vehicle Communication Protocol IMU Inertial Measurement Unit UART Universal Asynchronous Receiver-Transmitter MP MegaPixel R/C Radio Control DCM Direction Cosine Matrix EKF Extended Kalman Filter
Índice de Figuras 18
1 INTRODUCCIÓN n este primer capítulo de la memoria se exponen, en dos secciones diferenciadas, una breve introducción del conjunto de circunstancias que rodean al proyecto y los distintos objetivos que han sido cumplidos una vez se ha finalizado el mismo. 1.1 Contexto El presente proyecto se trata de la primera parte de uno de mayor amplitud, que unido al trabajo de fin de grado y master realizado por otros compañeros, posee como principales finalidades el montaje y configuración del vehículo quadrotor Erle-Copter, el control del mismo a través de una interfaz gráfica sin necesidad de emisora radio control y una copia, tanto del drone físico como de su control, en el entorno de simulación Gazebo. En su totalidad, tanto el entorno de simulación como la interfaz gráfica de control del drone, se ha preparado en un ordenador de mesa propiedad del departamento de Sistemas y Automática en una máquina virtual con sistema operativo Ubuntu 14.04 para que pueda ser utilizado en futuros experimentos y/o proyectos. El montaje del vehículo se ha realizado en el laboratorio de robótica de dicho departamento, excepto su configuración software, ya que fue necesario conectarlo a Internet a través de un dispositivo router. Por otro lado, las pruebas de vuelo con la emisora radio control, fueron llevadas a cabo en una zona de la escuela habilitada para ello, pudiendo ejecutarlas de manera segura. 1.2 Objetivos Los propósitos fijados para mi parte del proyecto, se tratan de los pasos esenciales para la posible continuación de éste. Por tanto, los objetivos principales que se han perseguido han sido los siguientes: Dar forma física al vehículo mediante la unión de cada una de las piezas que lo componen. Establecer la configuración del software necesario, utilizado por su autopiloto. Confirmar el correcto funcionamiento del drone mediante distintas pruebas de vuelo utilizando la emisora radio control. Por otra parte, se establecen otros que, aunque de menor importancia, son de gran utilidad a la hora de manipular el quadrotor. Estos son, el control del módulo de la cámara integrada en el vehículo para poder observar la imagen captada en tiempo real, la configuración y comprobación del funcionamiento del sensor de flujo óptico y una introducción al estudio del software autopiloto que Erle-Copter utiliza con el fin de comprender mejor su funcionamiento. Todos estos objetivos fueron alcanzados de manera satisfactoria y el camino hacia ellos se expone, a continuación, en los distintos capítulos que componen la estructura de este documento. E
1 Introducción 2 2
3 2 ERLE-COPTER: COMPONENTES FÍSICOS n este segundo capítulo se describirán todos los elementos que componen fisicamente el vehículo Erle- Copter y los sensores de posición que éste utiliza para poder conocer su ubicación en el espacio. A modo de introducción, se muestra una imagen del resultado final del vehículo junto con una serie de características que lo definen. Ilustración 2-1. Erle Copter, montaje completo La parte delantera del drone y dirección positiva del eje X se corresponde con la parte del frame de color rojizo. Además, al tener pensado su uso para futuros experimentos, se ha incorporado un pequeño péndulo simple en su parte inferior y se ha modificado la posición del módulo de la cámara con el objetivo de que apunte al mismo para su posterior control. Del mismo modo, se ha colocado una pequeña lámpara de Leds para mejorar la iluminación en esa zona. A continuación se exponen algunas de las características del vehículo, en ausencia de las patas: Tabla 2-1. Características del drone comercial Erle-Copter Característica Descripción Dimensiones 370 x 370 x 95 mm Peso 878 g (batería incluida) Carga útil 1 kg Distancia entre ejes 730 mm Hélices 10x4.5 o 9.4x4.3 Tiempo de vuelo ~ 20 min con batería de 5000 mAh Color del frame Blanco y rojo E
2 Erle-Copter: componentes físicos 4 4 2.1 Componentes esenciales En esta sección se exponen cada uno de los elementos básicos que constituyen la parte hardware de Erle- Copter. La gran mayoría han sido obtenidos al comprar el Erle-Copter DIY kit, a través de la página web de la empresa Erle Robotics, en la cual me he apoyado para obtener información específica de cada uno de ellos. De manera similar se ha hecho con los sensores de posición y el elemento de control de nuestro drone. Estos últimos serán comentados en secciones posteriores. 2.1.1 Chasis El chasis, también conocido como frame, es la estructura principal de Erle-Copter y de cualquier drone en general. Es un elemento de soporte primordial al cual van unidos el resto de componentes y aporta sustentación y rigidez al mismo. En este caso, está formado por cuatro brazos en cuyos extremos se colocarán los motores y dos láminas centrales que sirven de unión y base para el controlador, las patas y la batería, entre otros. Ilustración 2-2. Frame F450 Algunas de las características de este frame son, Tabla 2-2. Características del frame F450 Característica Descripción Color Rojo / Blanco Distancia entre ejes 450 mm / 17.7 " Peso 248 g
5 2.1.2 Motores Los motores convierten la energía eléctrica proveniente de la batería, en energía mecánica apreciada en forma de rotación y transmitida directamente a las hélices. Estos motores son los únicos actuadores presentes en Erle-Copter. Modificando únicamente su velocidad de giro podemos variar su empuje. Se han utilizado motores de edición limitada MN2213 de la marca T-Motor. Se trata de motores sin escobillas, que apenas tienen rozamiento y que generan una menor pérdida de calor que hace que aumente la vida útil de los mismos. A continuación se muestra una imagen de ellos y una breve selección de sus características, Ilustración 2-3. Motores MN2213 edición limitada 6º Aniversario Tabla 2-3. Características de los motores MN2213 de T-Motor Característica Descripción Potencia 950 KV Eje 3 mm Peso 58 g Tamaño estator 22 x 13 mm (diámetro x altura) Debido a que la alimentación proporcionada por las baterías se trata de una corriente continua, necesitaremos algún dispositivo que permita convertirla en corriente trifásica admisible por los motores y regularla para controlar la velocidad de giro de éstos. Aquí, entran en juego los variadores. 2.1.3 Variadores Los variadores o ESCs, son pequeños circuitos utilizados para variar la velocidad y la dirección de rotación de los motores. Generan la corriente adecuada para que estos aumenten o disminuyan sus RPM. Para nosotros es también el elemento que transmite información desde el Erle-Brain 2 a los motores.
2 Erle-Copter: componentes físicos 6 6 Ilustración 2-4. Variadores SimonK30A A continuación se muestran algunas de sus características obtenidas de la página web de Erle-Robotics, Tabla 2-4. Características de los variadores SimonK30A Característica Descripción Corriente máxima 30 A Rango de voltaje 2-4s LiPo (desde 7.4 hasta 14.8 V) Peso 26.5 g (cables y enchufe incluidos) Tamaño 50 x 25 x 11 mm 2.1.4 Hélices Las hélices son el componente encargado de convertir el movimiento de rotación generado por los motores en propulsión. Tal y como se ha especificado en la Tabla 2-1, las hélices que son utilizadas por Erle-Copter pueden ser de 10x4.5 o 9.4x4.3. Siendo el primer número el tamaño de la hélice de extremo a extremo en pulgadas y el segundo su ángulo de inclinación. Ilustración 2-5. Hélices CW y CWW
7 Tabla 2-5. Características de las hélices Característica Descripción Peso 0.100 Kg Tipo/Material Estandar/Plástico 2.1.5 Batería La batería es la principal fuente de alimentación de nuestro drone. Ésta va conectada a Erle-Brain 2 a través del módulo de potencia. En el proyecto se cuenta con dos baterías 3S LiPo (litio y polímero) de 11.1 voltios y 5500 mAh. La letra S nos revela que se trata de una batería de 3.7 V en cada celda (3 x 3.7 = 11.1 V). A modo informativo, comentar que las baterías LiPo son ligeras, de cualquier forma y tamaño, con una gran capacidad y una tasa de descarga elevada. Ilustración 2-6. Batería Floureon 3S LiPo 11.1V y 5500mAh 2.1.6 Soporte para la batería Componente de plástico que nos permite anclar la batería al drone y poder cambiarla facilmente. Ilustración 2-7. Soporte para la batería
2 Erle-Copter: componentes físicos 14 14 Ilustración 2-17. Conexiones presentes en la placa PXFmini Ilustración 2-18. Unión de la placa PXFmini a Raspberry Pi 2 Tabla 2-10. Dimensiones de la placa PXFmini Característica Descripción Peso 15 gramos / 0.033 libras Tamaño 31 x 73 cm
15 Conectividad Al estar compuesto principalmente por una Raspberry Pi 2, ofrece mecanismos de conexión tales como puertos I2C, UART, USB o Ethernet. Además, cuenta con un módulo PiCamera de 5 MP para poder obtener en directo una visión de la misma. Más adelante veremos como usarla. En la siguiente imagen puede observarse los diferentes pines y puertos con los que cuenta Erle-Brain 2, Ilustración 2-19. Conexiones presentes en el controlador Erle-Brain 2 Configuración Al tratarse de una Raspberry Pi 2 es necesario introducir en la misma un sistema basado en Linux (Debian) a través de una tarjeta SD. Una vez lo tenemos instalado, necesitaremos conectar nuestro Erle-Brain 2 a Internet para proveerlo de la fisionomía de un quadrotor. De esto nos ocuparemos más adelante. En la tabla siguiente podemos observar algunas de las especificaciones técnicas de este controlador proporcionadas por Erle Robotics en su página web, Tabla 2-11. Especificaciones técnicas de Erle-Brain 2 Característica Descripción Dimensiones 63 x 96 x 25 mm Peso 100 g Procesador ARM Cortex-A7 CPU, 4 nucleos a 900 MHz Memoria RAM 1 GB Cámara 5 MP E/S 2xI2C, UART, conexión POWER, 4 puertos USB Puerto HDMI, Ethernet y conector de audio de 3.5 mm
2 Erle-Copter: componentes físicos 16 16
17 3 ERLE-COPTER: MONTAJE FÍSICO n este tercer capítulo se explica el procedimiento que se ha seguido para el montaje físico de nuestro Erle-Copter. Una vez recibidos todos los componentes, el primer paso a realizar fue ensamblar nuestro drone. En principio, una tarea fácil ya que en este sentido Erle Robotics nos proporciona de manera digital una serie de manuales bastante completos para el montaje de cada uno de sus vehículos autónomos. En nuestro caso, seguiremos las instrucciones presentes en el apartado “Erle-Copter assembly” de su página web correspondientes a Erle-Copter. Para adaptar nuestro vehículo a las necesidades que fueron apareciendo a lo largo del proyecto y pensando en experimentos posteriores, una vez montado tal y como dícen las instrucciones, fue modificada la posición de algunos elementos, por ejemplo, sacando el módulo PiCamera fuera de Erle-Brain 2 para que éste apuntase hacia una posible pelota colgada en su parte inferior para su posible reconocimiento. Ciertos incisos importantes a destacar en el montaje de nuestro drone son los siguientes, 3.1 Posición correcta de los motores Tal como avisan las instrucciones, en nuestro Erle-Copter DIY kit se incluyen motores distintos a los que habitualmente se utilizan y, según el manual proporcionado por la compañía, deben ir colocados en una posición diferente. La colocación correcta de éstos se aprecia en la siguiente imagen, Ilustración 3-1. Posición correcta de los motores en Erle-Copter E
3 Erle-Copter: montaje físico 18 18 Teniendo en cuenta la imagen anterior se asocia un número distinto a cada motor según su posición. De este modo, los motores 1 y 2 se corresponden con los motores de punta de color negro y los números 3 y 4 con los de punta de color blanco. Esta distribución se aprecia de mejor forma en esta otra ilustración, Ilustración 3-2. Numeración de los motores en Erle-Copter 3.2 Conexión de los motores a los variadores Debido al uso de los motores MN2213, debemos considerar también una variación en su conexión con los distintos ESCs. Al igual que con la posición, para dicha conexión las instrucciones nos avisan, indicando cual es la forma correcta de conectar ambos componentes. Sin embargo, ese aviso induce a error ya que con dicha conexión los motores giran en dirección opuesta a la adecuada. La dirección de giro necesaria para que el drone se controle de forma satisfactoria aparece en la siguiente figura proporcionada por el foro de Erle Robotics, 2 2 4 3 2 1
19 Ilustración 3-3. Giro adecuado de los motores en un quadrotor Teniendo en cuenta la imagen anterior, una configuración general para la conexión entre variadores y motores, independientemente del modelo de éstos y teniendo en cuenta el sentido de giro, puede obtenerse de la siguiente tabla, Tabla 3-1. Conexión ESC-motores según el sentido de giro de los mismos Sentido de giro Motores Conexión En contra de las agujas del reloj Uno y dos + ESC y - Motor - ESC y + Motor A favor de las agujas del reloj Tres y cuatro + ESC y + Motor - ESC y - Motor Por lo tanto, siendo de color rojo los cables positivos y de color negro los negativos en ambos componentes, en los motores número 1 y 2 se cruzan los cables para invertir la polaridad, mientras que en los números 3 y 4 se conectan de manera directa a los variadores. Las conexiones expuestas en la Tabla 3-1 son válidas para cualquier tipo de vehículo quadrotor.
3 Erle-Copter: montaje físico 20 20 3.3 Conexión de los variadores a Erle-Brain 2 Para conectar los distintos variadores a Erle-Brain 2 debemos tener en cuenta el orden de los distintos pines PWM disponibles en el controlador. Puede verse en la siguiente imagen, Ilustración 3-4. Orden de los pines PWM presentes en Erle-Brain 2 Teniendo en cuenta la Ilustración 3-4, los motores irán conectados a los pines PWM del controlador de derecha a izquierda. Empezando por el motor número 1 en el extremo derecho, seguido por el 2, 3 y 4. En el pin de entrada del extremo izquierdo (pin número 14) debe ir conectado el receptor de señal, tal y como puede verse en la siguiente ilustración, Ilustración 3-5. Modo de conexión del receptor de señal de radio
21 4 ERLE-COPTER: PUESTA A PUNTO DE ERLE-BRAIN 2 n este cuarto capítulo se describe, por un lado, el software compatible y utilizado por Erle-Brain 2. Por otro, la manera en la que se configura internamente el controlador desde cero, es decir, cómo introducir en él la imagen del sistema operativo que utiliza y cómo instalarle el autopiloto adecuado. 4.1 Software del controlador En esta sección se describe de forma breve el software soportado por Erle-Brain 2 que ha influido en mayor medida a la hora de realizar el proyecto. En la siguiente imagen, extraida de la página web de ArduPilot, se puede observar las numerosas características software que Erle-Brain 2 puede manejar, Ilustración 4-1. Software compatible con Erle-Brain 2 Teniendo esto en cuenta, a continuación se describen dos de ellos que nos afectan de manera más directa. 4.1.1 Robot Operating System (ROS) Tal y como lo describe su página web, ROS es un conjunto de librerías software y herramientas que ayudan a los desarrolladores a la creación de nuevas aplicaciones para los robots. Para ROS, el hardware es irrelevante. Se trata de un software de código abierto que nos facilita entre otras cosas controladores de dispositivos, librerías, herramientas de visualización, intercambio de mensajes entre procesos, etc. Una función muy importante a la hora de utilizar ROS en nuestro proyecto, vendrá dada a la hora de controlar el módulo cámara de Raspberry Pi 2. Para llevar a cabo este proceso, es necesario instalar ROS en un PC con sistema operativo Ubuntu 14.04, ya sea en una partición del disco duro o utilizando una máquina virtual. E
4 Erle-Copter: puesta a punto de Erle-Brain 2 22 22 Erle Robotics cuenta con un entorno de simulación totalmente equipado para poder experimentar de manera segura y de identica forma a como lo haríamos con el drone real. Los pasos de instalación del entorno se encuentran en la propia página de Erle Robotics, en la sección “Support Docs Simulation Configuring your environment”. Para este proyecto no es necesario la instalación del entorno completo, pero sí la parte correspondiente a ROS. Las instrucciones para su instalación en su versión “Indigo” se encuentran incluidas en los pasos de instalación del entorno. Éstos incluyen las herramientas básicas de ROS. Para una gama de paquetes más amplia, se recomienda la realización de los ejemplos presentes en la web. Ilustración 4-2. Robot Operating System 4.1.2 ArduPilot Tal y como lo define Erle Robotics en su web, ArduPilot es un software de piloto automático de código abierto que nos ayudará a controlar cualquier vehículo. Cuenta con características como: múltiples modos de vuelo, fácil de configurar al vehículo que queramos, programación a prueba de fallos, como que se pierda la señal, etc. Del mismo modo, proporciona un firmware o conjunto de habilidades en función del hardware que estemos utilizando, en nuestro caso, un quadrotor y por tanto instalaremos el firmware denominado ArduCopter. Destacar la flexibilidad con la que cuenta ArduPilot para distintos vehículos simplemente actualizando la última versión del firmware para uno determinado. Esto se lleva a cabo a través del programa Mission Planner, explicado más adelante y desarrollado por la misma compañía. Ilustración 4-3. Tipos de firmaware para ArduPilot
23 4.2 Montaje de la imagen Frambuesa en la tarjeta SD Esta sección resulta sencilla siguiendo los pasos presentes en la página web de la compañía. Pero antes de eso, necesitamos descargar la imagen que utiliza el Erle-Brain 2 y cuyas principales características se reflejan en la siguiente tabla, Tabla 4-1. Especificaciones de la imagen del sistema Frambuesa Característica Descripción Nombre Frambuesa Versión 3.4 Fecha de lanzamiento 12/10/2016 Una vez se haya descargado, introducimos la tarjeta SD en nuestro ordenador a través de un adaptador e incluimos la imagen utilizando el programa Win32DiskImager (compatible para el sistema operativo Windows), tal como nos indican en la web. Una vez tenemos la imagen preparada en la SD, la introducimos en Erle-Brain 2. Ahora mismo, lo que tenemos es un ordenador con un sistema operativo basado en Linux. Para aportar la fisionomía de un quadrotor, debemos elegir e instalar en él el autopiloto correspondiente al vehículo para el cual queremos que funcione, en nuestro caso ArduCopter. 4.2.1 Elección del autopiloto ArduCopter Para instalar el autopiloto ArduCopter en la versión Frambuesa de Erle-Brain 2, es necesario conectar el controlador a Internet a través de un cable Ethernet utilizando un dispositivo router. Del mismo modo, es necesario conectarlo a un monitor mediante conexión HDMI junto con un ratón y un teclado USB, como se muestra en la imagen a continuación, Ilustración 4-4. Conexiones de Erle-Brain 2 a periféricos
5 Software 30 30 5.1.2 QGroundControl Al igual que Mission Planner, QGroundControl actúa como estación de tierra y presenta unas funciones muy similares. La diferencia entre ambos, es que éste ha sido desarrollado por la compañía PixHawk mientras que Mission Planner lo ha sido por el proyecto ArduPilot. Basicamente, este programa ha sido utilizado para introducir de forma sencilla los parámetros que configuran el PX4Flow. Esto viene explicado en el siguiente capítulo. Ilustración 5-3. QGroundControl 5.1.3 Putty y conexión SSH con Erle-Brain 2 Utilizaremos dicho programa, compatible con el sistema operativo Windows, en caso de que queramos introducirnos en el sistema del controlador Erle-Brain 2 de forma remota. Putty utiliza el protocolo SSH por lo que necesitaremos introducir la dirección IP presente en la Tabla 5-1, pidiendo usuario y contraseña para poder establecer la conexión, los cuales se presentan a continuación, Tabla 5-2. Usuario y contraseña para Erle-Brain 2 Usuario erle Contraseña holaerle El resto de opciones, como el número 22 del puerto, se dejan por defecto.
31 Ilustración 5-4. Conexión con el controlador Erle-Brain 2 desde el programa Putty
5 Software 32 32
33 6 CONFIGURACIÓN DEL SENSOR DE FLUJO ÓPTICO l sensor de flujo óptico es utilizado para poder realizar vuelos, no solo en espacios abiertos, sino también en cerrados, complementando o sustituyendo las medidas del GPS. En este sexto cápitulo, se exponen los pasos seguidos para la configuración del sensor de flujo óptico Px4Flow con el que poder obtener medidas apropiadas una vez lo conectemos a Erle-Copter. Para la realización del proyecto hizo falta utilizar dos sensores de flujo óptico en dos versiones distintas. Por un lado, su versión 1.3.1 se corresponde con el sensor incluido en el kit adquirido junto con el resto de los componentes. Aun habiéndolo configurado de forma correcta, no se consiguió que éste tomara medidas de ningún tipo. Al principio se pensó en una posible incompatibilidad con la nueva imagen Frambuesa instalada en Erle-Brain 2, pero estando conectado de forma aislada tampoco funcionaba. Por tanto, se llegó a la conclusión de que estaba defectuoso y se decidió utilizar una versión anterior cuyo funcionamiento se había comprobado con anterioridad. Este segundo sensor, en su versión 1.3 funcionaba perfectamente. En las siguientes ilustraciones podemos comparar las medidas tomadas por cada uno de los PX4Flow, ambos fueron conectados de manera individual y mediante cable micro USB al programa QGroundControl. Una vez dentro de éste, abrimos el desplegable “Widgtes” de la parte superior izquierda de la pantalla y ahí seleccionamos la opción “Analyze”. Esto nos abrirá una ventana donde podremos observar de forma gráfica los diferentes valores que está captando el sensor en ese mismo momento. Como se puede observar en las siguientes imagenes, comprobamos cómo el sensor defectuoso no capta valores de velocidad. Sin embargo, el sensor en su versión 1.3 los obtiene de manera correcta. Ilustración 6-1. Medidas obtenidas por el sensor PX4Flow v1.3.1 E
6 Configuración del sensor de flujo óptico 34 34 Ilustración 6-2. Medidas obtenidas por el sensor PX4Flow v1.3 A continuación se numeran los pasos seguidos, basándome en los encontrados en la página web de ArduPilot y PixHawk, para la correcta configuración del sensor de flujo óptico. 6.1 Actualización del firmware en el sensor PX4Flow Para configurar el sensor de flujo óptico con los parámetros adecuados utilizaremos el programa QGroundControl en su versión 3.1.0. Debemos conectarlo a nuestro PC a través de un cable micro USB del siguiente modo: Una vez dentro del programa pulsamos en el icono “Vehicle Setup”, cuyo símbolo es un engranaje de tres ruedas dentadas. A la izquierda de esta ventana nos aparecen dos opciones: “Summary”: si conectamos el sensor teniendo abierta esta ventana, el programa nos mostrará los parámetros que tiene cargados en ese momento. “Firmware”: conectando el sensor en esta opción podremos cargar en él los parámetros actualizados. Al conectarlo en esta última, el programa nos preguntará qué versión del firmware queremos descargar, seleccionamos la que viene por defecto, “standar version (stable)”, y pulsamos “Ok”. El programa comenzará a descargarlo de la web del fabricante e introducirlo en nuestro sensor. Una vez cargado completamente, junto a las pestañas “Summary” y “Firmware” aparecen otras dos, “PX4” y “Parameters”.
35 6.2 Compatibilizar el sensor PX4Flow con el autopiloto ArduCopter Debido a que el sensor pertenece a la compañía PixHawk, los parámetros descargados e incluidos en el mismo viene predeterminados para utilizarse en su propio controlador. Para poder usarse en Erle-Brain 2 y por tanto hacerlo compatible con ArduPilot debemos modificar el parámetro SYS_AP_TYPE en la pestaña “Parameters”. Con este parámetro definimos el tipo de autopiloto en el que vamos a incluir el sensor de flujo óptico. Su valor por defecto es 0, compatible por tanto con el autopiloto PixHawk. Para que sea compatible con ArduPilot debemos asignarle un valor de 12. Este valor aparece en la página web de ArduPilot en su sección dedicada al sensor PX4Flow. Los distintos parámetros pueden observarse en la siguiente ilustración, Ilustración 6-3. Lista de parámetros del sensor PX4Flow en QGroundControl 6.3 Enfoque de la lente Estos sensores se envían normalmente sin estar enfocados. Para hacerlo realizamos los siguientes pasos, 1. Después de cargar el firmware y modíficar el parámetros que determina el tipo de autopiloto, necesitamos enfocar la lente. Para ayudarnos en este proceso se modifica el valor del parámetro VIDEO_ONLY a “1”, esto hará que la imagen captada por el sensor se visualice con una mayor resolución, facilitando el enfoque de la cámara. 2. Pulsamos la pestaña “PX4” y retiramos la tapa de la lente. Nos aparecerá una nueva ventana donde podremos ver la imagen en tiempo real captada por el sensor. 3. Apuntamos a un objeto de alto contraste situado entre uno y tres metros de distancia. 4. Ajustamos el enfoque de la lente hasta que la imagen aparezca de forma clara y fijamos dicha posición utilizando la rueda roscada que posee la misma. 5. Una vez enfocada la lente, volvemos a designar su valor inicial de cero al parámetro VIDEO_ONLY.
6 Configuración del sensor de flujo óptico 36 36 Ilustración 6-4. Enfoque de la lente del sensor PX4Flow En la figura anterior se ha querido visualizar la imagen captada por el sensor de flujo óptico, al enfocar su lente a una distancia de aproximadamente un metro del suelo. 6.4 Conexión con Erle-Brain 2 Una vez tenemos el sensor PX4Flow preparado podemos conectarlo a nuestro controlador a través del puerto I2C que queda libre, como se muestra en la Ilustración 2-16. Para comprobar que el dispositivo funciona correctamente, comprobamos que la dirección I2C del sensor de flujo óptico aparece en el bus. Para esto, conectamos nuestro PC a Erle-Brain 2 a través del programa Putty y escribimos el siguiente comando, proporcionado en la web de Erle Robotics, en el terminal: sudo i2cdetect –r 1 Debería poder verse la dirección 0x42 tal y como muestra esta imagen,
37 Ilustración 6-5. Comprobación del puerto I2C utilizado por el sensor PX4Flow 6.5 Ajuste de parámetros en Mission Planner El sensor puede activarse mientras estemos conectados al programa Mission Planner. Para ello, en la ventana “Initial Setup Optional Setup Optical Flow”, seleccionamos la casilla “Habilitar el flujo óptico”. En algunas versiones, esta opción aparece en inglés como “Enable Optical Flow”. A modo alternativo, podemos habilitarlo ajustando el parámetro FLOW_ENABLE a “1” a través de la lista completa de parámetros. Para que el sensor se inicialice es necesario reiniciar Erle-Brain 2. Ilustración 6-6. Habilitación del sensor PX4Flow en el programa Mission Planner
6 Configuración del sensor de flujo óptico 38 38 6.6 Comprobación del correcto funcionamiento del sensor Tras reiniciar el controlador podemos comprobar si el sensor se encuentra funcionando abriendo la opción “Status” de la pantalla “Flight Data”. Si el sensor está funcionando, los valores opt_m_x, opt_m_y y opt_qua deben ser distintos de cero. Para nuestro sensor podemos apreciarlo en la siguiente ilustración, Ilustración 6-7. Comprobación de la toma de medidas del sensor PX4Flow en Mission Planner
39 7 UN PRIMER VUELO n este séptimo cápitulo, describiremos los pasos previos básicos que se han de establecer para un correcto primer vuelo de Erle-Copter. Es totalmente recomentable que si se carece de experiencia en el pilotaje de vehículos aéreos tipo quadrotor, este primer vuelo se realice en ausencia de las patas, ya que éstas modifican la dinámica del sistema haciendo más complicado su control. Antes de poder echar a volar el Erle-Copter, es necesario realizar una serie de comprobaciones y configuraciones para evitar posibles fallos o accidentes durante el periodo en el que el drone esté en el aire. Los pasos siguientes se realizan utilizando el mando radio control o a través del programa Mission Planner. Arme y desarme del drone Para que los motores comiencen a girar y poder elevar el vehículo, es necesario armar el drone. Para iniciar un vuelo, al encenderlo, el stick izquierdo de la emisora correspondiente al acelerador, debe encontrarse en su posición inferior. Después, es necesario esperar a que Erle-Brain 2 lanze un relativamente largo pitido y el Led de color naranja comience a parpadear. Será entonces cuando Erle-Copter está preparado para armarse. Para armarlo simplemente colocamos el stick izquierdo en la posición inferior derecha hasta que el Led naranja permanezca fijo. Ilustración 7-1. Posición del stick izquierdo para armar el drone Si lo que queremos es desarmarlo, colocamos el stick izquierdo en la posición inferior izquierda. El Led naranja parpadeará de nuevo. Ilustración 7-2. Posición del stick izquierdo para desarmar el drone E
8 Controladores en ArduCopter 46 46
47
8 Controladores en ArduCopter 48 48 A partir del programa Mission Planner o cualquier otro utilizado como estación de tierra, es posible ajustar los parámetros de los distintos controladores que posee ArduCopter. A continuación se expone una imagen de dicho programa con cada uno de los controladores. Después se explicarán de forma breve, Ilustración 8-3. Parámetros de los controladores PID presentes en ArduCopter Los parámetros que ArduCopter incluye de forma predeterminada corresponden al vehículo quadrotor 3DR IRIS. Estos mismos parámetros son los utilizados por nuestro drone físico Erle-Copter, la única diferencia es la configuración del frame. 3DR IRIS posee una configuración en H mientras que Erle-Copter presenta una en forma de X. Ilustración 8-4. Drone 3DR IRIS
49 Qué controlador está activo en cada momento depende del modo de vuelo. Los cuatro controladores de velocidad, Rate (Roll, Pitch, Yaw y Loiter) son los controladores internos y más importantes, éstos están activos en todos los modos. Si estos controladores están bien ajustados, el vehículo volará relativamente estable. El resto de controladores, usan de forma directa o indirecta los internos. A modo de resumen, Rate (Roll, Pitch, Yaw): controladores de velocidad angular. A bajo nivel. Stabilize (Roll, Pitch, Yaw): controladores de ángulo. Funcionan por encima de los Rate. Rate Loiter: controla la velocidad angular en modo Loiter. Loiter Speed: controla la velocidad en modo Loiter. Throttle (Rate, Acell): controladores de aceleración y velocidad vertical para controlar la altura. Altitude Hold: controlador de altitud para dicho modo. Nav WP: es el controlador de navegación que define los puntos objetivo de otros controladores en el modo Auto. Cada uno de estos controladores se explicará en profundidad en el siguiente capítulo, de manera individual utilizados en sus respectivos modos de vuelo.
8 Controladores en ArduCopter 50 50 8.2 Filtro de Kalman extendido ArduCopter utiliza el algoritmo de filtro de Kalman extendido o EKF para realizar una estimación de la posición del vehículo, su velocidad y orientación basándose en las medidas captadas por el giroscopio, el acelerómetro, la brújula, el GPS y la presión barométrica. Ilustración 8-5. Evolución de los distintos filtros usados por ArduCopter La principal ventaja que presenta este filtro respecto a otros más simples como, por ejemplo, “Inertial Nav”, es que mediante la fusión de todas las medidas disponibles, es capaz de rechazar mediciones con un error significativo, de modo que el vehículo es menos susceptible a un determinado fallo que pueda afectar a un único sensor. Del mismo modo, a EKF se le puede incluir las medidas de otros sensores externos tales como el lídar o el sensor de flujo óptico. Otra característica del filtro EKF, es que es capaz de estimar desplazamientos en las lecturas de las brújulas de los vehículos, esto hace que sea menos sensible a errores de calibración de la misma. 8.2.1 Principio de funcionamiento El filtro de Kalman extendido, estima un total de 22 estados. Un estado, es cualquier variable que se desee estimar, como la posición, la velocidad o los ángulos. A continuación se enumeran los pasos de funcionamiento del filtro de forma resumida, 1. Las velocidades angulares proporcionadas por la IMU se integran para calcular la posición angular. 2. Las aceleraciones proporcionadas por la IMU se convierten utilizando la posición angular del cuerpo. 3. Estas aceleraciones se integran para calcular la velocidad. 4. Dicha velocidad se integra para calcular la posición. Los puntos anteriores se refieren al “estado de predicción”. 5. Se estima el ruido presente en el giroscopio y el acelerómetro. Los parámetros EKF_GYRO_NOISE y EKF_ACC_NOISE se utilizan para llevar a cabo dicha estimación, sin ella el error continuaría creciendo. Si se aumenta el valor de esos parámetros, la estimación del error en los filtros será más rápida. Estos errores estimados se almacenan en una matriz denominada “Matriz de covarianza de estados”. Los pasos del 1 al 5 se repiten siempre que se obtengan nuevos valores de la IMU y hasta que esté disponible
51 una nueva medida en otro sensor. 6. Cuando se recibe una medida del GPS, el filtro calcula la diferencia entre la posición predicha en el punto 4 y la posición real. 7. La diferencia obtenida en el punto 6, junto con la “Matriz de covarianza de estados” del punto 5 y el error de medición del GPS especificado por el parámetro EKF_POSNE_NOISE, se combinan para estimar la corrección para cada uno de los estados del filtro. Hacer que el valor del parámetro EKF_POSNE_NOISE aumente, conlleva que el filtro piense que las medidas proporcionadas por el GPS son menos precisas. 8. Al haber tomado una medida, la incertidumbre en cada uno de los estados actualizados se reduce. El filtro calcula la reducción de esa incertidumbre, actualiza la “Matriz de covarianza de estados” y vuelve al paso 1. La versión actual y estable del filtro de Kalman utilizada por ArduPilot es EKF2 junto con “DCM” funcionando en segundo plano. Esto es, si un controlador de vuelo posee dos (o más) IMUs operativas, dos “nucleos”/instancias de EKF, éstas se ejecutarán en paralelo y cada una de ellas utilizará las medidas de una IMU diferente. 8.2.2 Elección de EKF y el número de nucleos A partir de los siguientes parámetros, puede elegirse el tipo de filtro a utilizar por el autopiloto y el número de nucleos en paralelo que usaría EKF. EKF2 por tanto, es capaz de utilizar hasta dos nucleos con dos IMUs diferentes. Mientras que EKF3 es capaz de utilizar hasta 3. AHRS_EKF_USE: se ajusta a “1” para usar EKF y a “0” utiliza “DCM” para el control de actitud y navegación del vehículo (versión 3.2.1 de ArduCopter). AHRS_EKF_TYPE: se ajusta a “2” para usar EKF2 para la estimación de la actitud y posición del quadrotor y a “3” para utilizar EKF3. EK2_ENABLE, EK3_ENABLE: ajustándolos a “1” habilita EK2 o EK3 respectivamente. EK2_IMU_MASK, EK3_IMU_MASK: se trata de una máscara de bits que especifica cuál de las IMUs disponibles se va a utilizar. Se iniciará el nucleo de EKF correspondiente según la IMU elegida. Los siguientes valores se refieren a EKF2, dos nucleos junto con dos IMUs. 1. Inicia un solo nucleo EKF utilizando la primera IMU. 2. Inicia un solo nucleo EKF utilizando la segunda IMU. 3. Inicia dos nucleos EKF en paralelo utilizando la primera y la segunda IMU. 8.2.3 Parámetros de ajuste más comunes Algunos de los parámetros más utilizados si se quiere modificar el filtro de Kalman según las necesidades del piloto son los siguientes, EK2_ALT_SOURCE: establece qué sensor se utiliza como principal fuente de información de la altitud. 0. Utiliza el barómetro (valor por defecto).
8 Controladores en ArduCopter 52 52 1. Se utiliza para entornos en los que las medidas del barómetro incluyen mucho ruido. 2. Utiliza las medidas del GPS. EK2_ALT_NOISE: por defecto con valor “1”. Valores más bajos hacen que se reduzca la dependencia del acelerómetro y se incremente la del barómetro. EK2_GPS_TYPE: controla el uso que se realiza con las medidas tomadas por el GPS. Puede tomar los siguientes valores, 0. Utiliza la velocidad en 3D y la posición en 2D del GPS. 1. Utiliza la velocidad 2D y la posición 2D del GPS. 2. Utiliza solo la posición 2D del GPS. 3. No utiliza el GPS. Se utilizarán las medidas del sensor de flujo óptico si este estuviera operativo.
53 9 MODOS DE VUELO EN ARDUCOPTER na vez que se conocen los distintos controladores que ArduCopter utiliza, en este noveno capítulo se explican los modos de vuelo más importantes que puede ofrecer a nuestro vehículo. ArduCopter cuenta con un total de 14 modos de vuelo diferentes, sin embargo los más usados son los siguientes: Stabilize Alt Hold Loiter RTL (Return to launch) Auto A continuación se explicarán de manera general estos cinco modos y sus respectivos controladores. Una vez conocidos los modos de vuelo básicos, se hará referencia a dos de ellos algo más avanzados, el modo Acro y el Sport. 9.1 Modo Stabilize Al activar este modo, el piloto tiene el control total del vehículo. Éste controla los motores y el movimiento del drone. El trabajo que realiza la controladora es estabilizarlo, ajustando automáticamente los valores de los ángulos pitch y roll. Se trata de un modo que no depende del GPS. El drone, puede encontrarse en este modo utilizando unicamente las medidas proporcionadas por la IMU. El piloto debe de estar continuamente regulando la entrada de aceleración para mantener el vehículo a la altura deseada, así como la de los ángulos pitch y roll para mantenerlo en una posición determinada. 9.1.1 Ajuste del controlador Este modo se controla con los parámetros PID que aparecen de color amarillo en la Ilustración 8-3. A continuación se explican en detalle, Stabilize Roll/Pitch: estos parámetros controlan la capacidad de respuesta del quadcopter para dichos ángulos en función de la entrada proporcionada y el error entre los ángulos pitch y roll deseados y los reales. Un valor demasiado elevado hará que el drone oscile bruscamente durante esos giros. De manera opuesta, un valor demasiado bajo hará que el drone se torne lento. Rate Roll/Pitch: controlan la salida de los motores basándose en la velocidad de rotación obtenida desde el controlador superior Stabilize. Para vehículos más potentes, estos términos han de ser de menor valor y viceversa. Término P: es necesario que esté bien ajustado. Posee un valor por defecto de P = 0.15 y su aumento provoca que la respuesta en los motores se eleve para alcanzar la velocidad de giro deseada lo antes posible. U
9 Modos de vuelo en ArduCopter 54 54 Término I: se utiliza para compensar las perturbaciones que provocan que el drone no se mantenga en esa velocidad deseada. Término D: amortigua la respuesta en aceleración del quadrotor. Su valor por defecto es D = 0.11 y su aumento puede causar vibraciones indeseadas. Existen numerósos parámetros que modifican la forma de volar en este modo, explicados en profundidad en la página oficial de ArduCopter. El lazo de control utilizado para este modo viene representado en el capítulo anterior. 9.2 Modo Alt Hold En el modo Alt Hold, el controlador mantendrá la altura relativa del vehículo respecto a un punto de referencia utilizando las variaciones en la presión barométrica. Este modo, por tanto, tampoco depende de las medidas del GPS. Cuando el piloto mantiene el stick de aceleración entre el 40 y 60% de su valor, el controlador mantendrá la altura del vehículo, si no, éste subirá o bajará a una velocidad predefinida de 2.5 m/s. Este valor puede cambiar modificando el parámetro PILOT_VELZ_MAX. 9.2.1 Ajuste del controlador Este modo se controla con los parámetros PID que aparecen de color verde en la Ilustración 8-3. A continuación se explican en detalle, Altitude Hold: estos parámetros convierten el error de altitud (diferencia entre la altitud deseada y la real) en velocidad de ascenso o descenso. Cuanto mayor sea el valor de estos, más agresiva será la respuesta del vehículo al tratar de mantener la altura. Throttle Rate: convierten la velocidad de ascenso o descenso deseada en una aceleración hacia arriba o hacia abajo. Throttle Accel: convierte el error en aceleración en la salida de los motores. En estos parámetros, la relación 1:2 entre los términos P e I debe mantenerse siempre, es decir, el valor del término I debe ser siempre el doble que el de P. El lazo de control utilizado para este modo viene representado en el capítulo anterior. 9.3 Modo Loiter En modo Loiter, el piloto puede controlar el drone de manera manual pero cuando éste suelta los sticks, el controlador mantendrá de manera automática la posición actual del vehículo mediante las medidas del GPS y su altitud barométricamente. Es, por tanto, un modo dependiente del GPS.
55 Se trata del modo más sencillo de utilizar, ya que el controlador se encarga del control de toda la dinámica. Importante: si la brújula no está bien ajustada o sus medidas se exponen a algún tipo de interferencia electromagnética, el drone comenzará a girar en círculos sobre su posición. 9.3.1 Ajuste del controlador Este modo se controla con los parámetros PID que aparecen de color rosa en la Ilustración 8-3. Si los parámetros de control de los ángulos pitch y roll están bien ajustados, el GPS y la brújula están correctamente configurados y las vibraciones son aceptables, este modo no requiere de mucha afinación. 9.4 Modo RTL El modo RTL o vuelta a tierra, resulta bastante útil cuando ocurre algún tipo de fallo, cuando se está acabando la batería o simplemente cuando el vehículo se sale del rango de control. Cuando algo de esto ocurre, el drone puede iniciar este proceso habiendo sido programado previamente. Durante el mismo, el drone iniciará de forma autónoma un ascenso hasta una altura programada seguido por un desplazamiento en linea recta hasta la vertical del punto de partida, donde el drone descenderá hasta tocar tierra. El punto de partida será aquel en la que se armó el vehículo. Ilustración 9-1.Trayectoria seguida por el drone en el modo RTL Al igual que el modo anterior, RTL es dependiente del GPS, por lo que es importante asegurarse de que el vehículo recibe su señal. Esto puede ser comprobado mediante la luz del Led azul del ArduPilot que debe ser sólida y fija. 9.4.1 Ajuste del controlador Las alturas y velocidades del drone durante este recorrido pueden ser modificados cambiando el valor de distintos parámetros, por ejemplo: RTL_ALT: este parámetro ajusta la altura que debe tomar el quadrotor antes de iniciar la vuelta a casa. Si es cero, volverá desde la altura en la que se encuentre. Su valor por defecto es de 15 m y puede ajustarse desde 1 a 8000 cm.
10 Representaciones gráficas del vuelo 62 62 Ilustración 10-4. Altura del vehículo según el barómetro frente a la altura deseada Como se puede observar, en este vuelo, Erle-Copter pudo mantener de manera más o menos satisfactoria la altura deseada durante el tiempo en el que estuvo activo el modo Alt Hold.
63 10.3 Medidas proporcionadas por la IMU Otros valores representables, son las medidas obtenidas por los sensores acelerómetro y el giroscopio. Giroscopio El giroscopio capta las velocidades de rotación en cada uno de los 3 ejes de posición (x, y, z) en grados/segundo. Los parámetros que ofrecen están información son GyrX, GyrY y GyrZ. Se exponen en tres gráficas individuales para su mejor visualización. Ilustración 10-5. Medidas del giroscopio según el eje X
10 Representaciones gráficas del vuelo 64 64 Ilustración 10-6. Medidas del giroscopio según el eje Y Ilustración 10-7. Medidas del giroscopio según el eje Z
65 Acelerómetro De manera similar, el acelerómetro capta las aceleraciones en cada uno de los 3 ejes de posición (x, y, z) en m/𝑠2. Los parámetros que ofrecen están información son AccX, AccY y AccZ. Ilustración 10-8. Medidas del acelerómetro según el eje X
10 Representaciones gráficas del vuelo 66 66 Ilustración 10-9. Medidas del acelerómetro según el eje Y Ilustración 10-10. Medidas del acelerómetro según el eje Z
67 ANEXO A. CÓDIGOS Representaciones ATT Representaciones CTUN % Representaciones ATT t = (0:1:785); % Vector de 786 unidades de longitud % Ángulo Roll figure(1) plot(t,ATT(:,4),'r',t,ATT(:,3),'b'); grid; % Roll (rojo), Roll deseado (azul) title('Ángulo roll del vehículo frente al ángulo roll deseado'); legend('Roll','DesRoll'); ylabel('Ángulo roll [º]'); % Ángulo Pitch figure(2) plot(t,ATT(:,6),'r',t,ATT(:,5),'b'); grid; % Pitch (rojo), Pitch deseado (azul) title('Ángulo pitch del vehículo frente al ángulo pitch deseado'); legend('Pitch','DesPitch'); ylabel('Ángulo pitch [º]'); % Representaciones CTUN t = (0:1:313); % Vector de longitud 314 unidades figure(1) plot(t,CTUN(:,8),'b',t,CTUN(:,7),'r'); grid; % Altura real según GPS (azul), Altura deseada (rojo) title('Altura real según el GPS frente a la altura deseada en metros'); legend('Alt','DAlt'); ylabel('Altura [metros]'); figure(2) plot(t,CTUN(:,9),'b',t,CTUN(:,7),'r'); grid; % Altura real según barómetro (azul), Altura deseada (rojo) title('Altura real según el barómetro frente a la altura deseada en metros'); legend('BAlt','DAlt'); ylabel('Altura [metros]');
Anexo A. Códigos 68 68 Representaciones IMU. Giroscopio Representaciones IMU. Acelerómetro % Representaciones_IMU % Giroscopio t = [0:1:785]; % Vector de 786 unidades de longitud figure(1) plot(t,IMU(:,3),'b'); grid; % GyrX title('Medidas captadas por el giroscopio en el eje X'); legend('GyrX'); ylabel('Velocidad de rotación según el eje X [º/s]'); figure(2) plot(t,IMU(:,4),'b'); grid; % GyrY title('Medidas captadas por el giroscopio en el eje Y'); legend('GyrY'); ylabel('Velocidad de rotación según el eje Y [º/s]'); figure(3) plot(t,IMU(:,5),'b'); grid; % GyrY title('Medidas captadas por el giroscopio en el eje Z'); legend('GyrZ'); ylabel('Velocidad de rotación según el eje Z [º/s]'); % Representaciones_IMU % Acelerómetro t = [0:1:785]; % Vector de 786 unidades de longitud figure(1) plot(t,IMU(:,6),'b'); grid; % AccX title('Medidas captadas por el acelerómetro en el eje X'); legend('GyrX'); ylabel('Aceleración según el eje X [m/s2]'); figure(2) plot(t,IMU(:,7),'b'); grid; % AccY title('Medidas captadas por el acelerómetro en el eje Y'); legend('AccY'); ylabel('Aceleración según el eje Y [m/s2]'); figure(3) plot(t,IMU(:,8),'b'); grid; % AccZ title('Medidas captadas por el acelerómetro en el eje Z'); legend('AccZ'); ylabel('Aceleración según el eje Z [m/s2]');
69 REFERENCIAS [1] http://erlerobotics.com/blog/ [En linea] [2] http://forum.erlerobotics.com/top/all [En linea] [3] http://ardupilot.org/ [En linea] [4] https://pixhawk.org/ [En linea] [5] http://diydrones.com/ [En linea]