Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
TECNOLÓGICO NACIONAL DE MÉXICO Instituto Tecnológico de La Paz INSTITUTO TECNOLÓGICO DE LA PAZ DIVISIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN MAESTŔIA EN SISTEMAS COMPUTACIONALES CONTROL DE UN VEHÍCULO SUBMARINO NO TRIPULADO: ANÁLISIS Y EXPERIMENTOS TESIS QUE PARA OBTENER EL GRADO DE MAESTRO EN SISTEMAS COMPUTACIONALES PRESENTA: ABIGAYL ZARETH CHARGOY CORTEZ DIRECTOR DE TESIS: DR. JESÚS ALBERTO SANDOVAL GALARZA COMITÉ TUTORIAL: DR. EUSEBIO BUGARIN CARLOS DR. ISRAEL MARCOS SANTILLÁN MÉNDEZ LA PAZ, BAJA CALIFORNIA SUR, MÉXICO, DICIEMBRE 2018. Blvd. Forjadores de B. C. S. #4720, Col. 8 de Oct. 1era. Sección C. P. 23080 La Paz, B. C. S. Conmutador (612) 121-04-24, Fax: (612) 121-12-95 www.itlp.edu.mx Resumen En este trabajo de tesis se presenta la puesta en operación de un veh́ıculo subacuáti- co comercial, BlueROV2, con el fin de implementar algoritmos de control y de visión por computadora. Se verificó la operación del veh́ıculo a partir del sistema de control establecido por la compañ́ıa BlueRobotics, en donde se calibraron y se pusieron a prueba los sensores y actuadores. Se realizaron modificaciones en la configuración y la conexión eléctrica del submarino para implementar visión monocular, leer los sensores y poder controlar los motores sin el uso del sistema predeterminado, con el fin de usarlo para validar diferentes algoritmos de control. Se realizaron experimentos con el veh́ıculo a través de comunicación remota para corroborar la correcta lectura de los sensores y operación de los propulsores bajo el agua. Abstract In this thesis, we present the operation of a commercial underwater vehicle, Blue ROV2, in order to implement computer vision and control algorithms. The vehicle was tested from the control system established by Blue Robotics, where the sensors and actuators were calibrated and tested. We made modifications to the configuration and electrical connection of the submarine to implement monocular vision, read the sensors and be able to control the thrusters without the use of the predetermined system in order to use it to validate different control algorithms. Experiments were perfomed with the vehicle via remote communication to verify the correct reading of the sensors and operation thrusters. Índice general Índice general I Índice de figuras IV Índice de tablas VI 1. Introducción 1 1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5. Objetivos espećıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.7. Alcances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.8. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Marco teórico 5 2.1. Veh́ıculo submarino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1. Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2. Componentes de robots submarinos . . . . . . . . . . . . . . . . . 6 2.1.3. Diseño robots submarinos . . . . . . . . . . . . . . . . . . . . . . 7 2.1.4. Nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.5. Matriz de rotación . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2. Modelo matemático de veh́ıculos submarinos . . . . . . . . . . . . . . . . 10 2.2.1. Matriz de inercia . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.2. Matriz de masa añadida . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.3. Matriz de Coriolis . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.4. Matriz de amortiguamiento . . . . . . . . . . . . . . . . . . . . . 13 2.2.5. Matriz gravitacional . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.6. Modelo de propulsión y asignación de control . . . . . . . . . . . 15 2.3. Visión por computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.1. Representación de la cámara . . . . . . . . . . . . . . . . . . . . . 15 2.3.1.1. Modelo de proyección de la perspectiva de la cámara . . 15 i ÍNDICE GENERAL 2.3.1.2. Estimación de la calibración de la cámara . . . . . . . . 17 2.3.2. Parametrización de la postura de la cámara . . . . . . . . . . . . 17 2.3.3. Visión monocular . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.4. Libreŕıa OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4. Entrada/salida de propósito general (GPIO) . . . . . . . . . . . . . . . . 20 2.5. Telecomunicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5.1. Protocolo Secure Shell (SSH) . . . . . . . . . . . . . . . . . . . . 21 2.5.2. Protocolo MAVLink . . . . . . . . . . . . . . . . . . . . . . . . . 22 3. Hardware 23 3.1. Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.1.2. Flotabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.1.3. Sistema de propulsión . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.3.1. Control electrónico de velocidad . . . . . . . . . . . . . 28 3.1.3.2. Configuración . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.4. Sistema de enerǵıa . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.5. Cabina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.6. Componentes eléctricos . . . . . . . . . . . . . . . . . . . . . . . . 31 3.1.6.1. Computadora Raspberry Pi 3 . . . . . . . . . . . . . . . 31 3.1.6.2. Lámparas . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.1.6.3. Componente Pixhawk . . . . . . . . . . . . . . . . . . . 33 3.1.6.4. Cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.1.6.5. Componente Fathom-X . . . . . . . . . . . . . . . . . . 34 3.1.6.6. Cable o cordón umbilical . . . . . . . . . . . . . . . . . . 35 3.2. Ensamble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3. Modificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.1. Componente Pixhawk . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2. Control electrónico de velocidad (ESC) . . . . . . . . . . . . . . . 38 3.4. Modelo matemático del BlueROV2 . . . . . . . . . . . . . . . . . . . . . 40 3.4.1. Dinámica de cuerpo ŕıgido . . . . . . . . . . . . . . . . . . . . . . 41 3.4.2. Matriz de amortiguamiento . . . . . . . . . . . . . . . . . . . . . 42 3.4.3. Matriz de gravedad . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.4. Matriz de propulsores . . . . . . . . . . . . . . . . . . . . . . . . . 44 4. Software 45 4.1. Sistema operativo de la computadora del veh́ıculo submarino . . . . . . . 45 4.2. Programa QGruound Control . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3. Modificaciones (sistema operativo y libreŕıas) . . . . . . . . . . . . . . . 47 4.4. Algoritmo de control de propulsores y lámparas . . . . . . . . . . . . . . 48 4.5. Algoritmo de visión por computadora . . . . . . . . . . . . . . . . . . . . 49 4.6. Algoritmo de lectura del componente Pixhawk . . . . . . . . . . . . . . . 51 4.7. Comunicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Abigayl Zareth Chargoy Cortez ii ÍNDICE GENERAL 5. Resultados 53 5.1. Experimento puesta en operación del submarino BlueROV2 . . . . . . . 53 5.1.1. Prueba de hermeticidad . . . . . . . . . . . . . . . . . . . . . . . 53 5.1.2. Pruebas de navegación y transmisión de video . . . . . . . . . . . 54 5.2. Visión por computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2.1. Calibración monocularfuera del agua . . . . . . . . . . . . . . . . 55 5.2.2. Calibración monocular bajo el agua . . . . . . . . . . . . . . . . . 56 5.2.3. Detección de la postura de un patrón conocido fuera del agua . . 58 5.2.4. Detección de la postura de un patrón conocido bajo el agua . . . 58 5.3. Control de propulsores y lectura de la unidad inercial . . . . . . . . . . . 61 5.3.1. Fuera del agua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.3.1.1. Evaluación de la unidad inercial . . . . . . . . . . . . . . 61 5.3.2. Bajo el agua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6. Conclusiones 69 Referencias bibliográficas 71 Apéndice 73 A. Instalación de libreŕıas 73 B. Algoritmo de control de propulsores y lámparas 75 C. Algoritmo de captura de imágenes para calibración 79 D. Algoritmo de calibración monocular 81 E. Algoritmo de visión por computadora y lectura del componente Pix- hawk2 84 F. Especificaciones del veh́ıculo BlueROV2 92 Abigayl Zareth Chargoy Cortez iii Índice de figuras 1.1. BlueROV2 [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1. Esquema coordenado con referencia fijo al submarino. . . . . . . . . . . . 8 2.2. Proyección de la perspectiva de la cámara. . . . . . . . . . . . . . . . . . 16 2.3. Diagrama de la apertura de visualización de una cámara. . . . . . . . . . 19 3.1. Corrección de la orientación del ROV. . . . . . . . . . . . . . . . . . . . . 24 3.2. Estructura del BlueROV2. . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3. Dimensiones del veh́ıculo submarino BlueROV2 de BlueRobotics. . . . . 25 3.4. Espuma de Uretano R-3318. . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5. Propulsor T200 de BlueRobotics. . . . . . . . . . . . . . . . . . . . . . . 26 3.6. Relación de empuje contra PWM del propulsor T200. . . . . . . . . . . . 27 3.7. Relación de potencia contra PWM del propulsor T200. . . . . . . . . . . 27 3.8. ESC Basic de BlueRobotics. . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.9. Configuración vectorizada de los propulsores. . . . . . . . . . . . . . . . . 29 3.10. Fuente de enerǵıa del BlueROV2. . . . . . . . . . . . . . . . . . . . . . . 29 3.11. UBEC. Reductor CD-CD a 5V. . . . . . . . . . . . . . . . . . . . . . . . 30 3.12. Cabina de componentes electrónicos. . . . . . . . . . . . . . . . . . . . . 30 3.13. Esquema de conexión de los componentes para la operación del submarino. 31 3.14. Computadora Raspberry Pi 3 modelo B+. . . . . . . . . . . . . . . . . . 32 3.15. Sistema de iluminación de montaje para el submarino BlueROV2. . . . . 33 3.16. Componente Pixhawk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.17. Módulo de cámara Raspberry Pi v2 con lente gran angular. . . . . . . . . 34 3.18. Tarjeta Fathom-X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.19. Componentes montados en la bandeja de electrónicos. . . . . . . . . . . . 35 3.20. Veh́ıculo submarino BlueROV ensamblado. . . . . . . . . . . . . . . . . . 36 3.21. Esquema de conexión de los componentes para la operación del submarino. 37 3.22. Configuración de los propulsores. . . . . . . . . . . . . . . . . . . . . . . 37 3.23. Componente Pixhawk v2. . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.24. Conexión de los propulsores al GPIO de la Raspberry Pi 3. . . . . . . . . 39 3.25. Modelo virtual del BlueROV2. . . . . . . . . . . . . . . . . . . . . . . . . 40 3.26. Simulación de flujo en el veh́ıculo BlueROV2 en el programa Solidworks. 42 iv ÍNDICE DE FIGURAS 3.27. Visión general de distancias y orientación de propulsores con respecto al centro de masa del submarino. . . . . . . . . . . . . . . . . . . . . . . . 44 4.1. Programa QGround Control . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2. Configuración de la IP fija de la computadora remota. . . . . . . . . . . . 52 5.1. Fotograf́ıa del BlueROV2 en operación bajo el agua. . . . . . . . . . . . . 54 5.2. Indicador de orientación del veh́ıculo BlueROV2 sumergido en una fosa de clavados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3. Visualización del programa QGround Control, utilizado para maniobrar el veh́ıculo submarino. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.4. Imágenes tomadas para la calibración fuera del agua. . . . . . . . . . . . 56 5.5. Imágenes tomadas bajo el agua para la calibración. . . . . . . . . . . . . 57 5.6. Resultados del algoritmo de visión para detección de postura de un patrón de tablero de ajedrez. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.7. Detección de la pose del tablero de ajedrez bajo el agua. . . . . . . . . . 60 5.8. Prueba del control de propulsores y lámparas fuera del agua. . . . . . . . 61 5.9. Lectura de la orientación del veh́ıculo submarino con girocompás de un teléfono celular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.10. Lectura del ángulo en roll. . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.11. Lectura del ángulo en pitch. . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.12. Lectura del ángulo en yaw. . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.13. Lectura de las velocidad en los ejes roll, pitch y yaw. . . . . . . . . . . . 64 5.14. Prueba de lámparas y potencia de los propulsores. . . . . . . . . . . . . . 65 5.15. Desplazamiento del BlueROV2 bajo el agua en el eje x. . . . . . . . . . . 66 5.16. Desplazamiento del BlueROV2 bajo el agua en el eje y. . . . . . . . . . . 66 5.17. Desplazamiento del BlueROV2 bajo el agua en el eje z. . . . . . . . . . . 66 5.18. Rotación en roll bajo el agua del BlueROV2. . . . . . . . . . . . . . . . . 67 5.19. Rotación en yaw bajo el agua del BlueROV2. . . . . . . . . . . . . . . . 67 5.20. Datos de la orientación del veh́ıculo obtenidos del algoritmo de control. . 68 Abigayl Zareth Chargoy Cortez v Índice de tablas 2.1. Notación del movimiento de veh́ıculos marinos (SNAME, 1950). . . . . . 8 3.1. Dimensiones y peso del BlueROV2. . . . . . . . . . . . . . . . . . . . . . 25 3.2. Especificaciones del propulsor T200. . . . . . . . . . . . . . . . . . . . . . 28 3.3. Caracteŕısticas del componente Pixhawk v1 . . . . . . . . . . . . . . . . 33 3.4. Dimensiones y peso del BlueROV2. . . . . . . . . . . . . . . . . . . . . . 38 3.5. Propiedades f́ısicas del modelo virtual del veh́ıculo submarino BlueROV2. 40 3.6. Resultados de fuerza de arrastre en el eje x, y y z. . . . . . . . . . . . . . 43 4.1. Datos del sistema operativo instalado. . . . . . . . . . . . . . . . . . . . 47 4.2. Activación de propulsores de acuerdo a la acción asignada. . . . . . . . . 49 4.3. Datos para la conexión por protocolo ssh. . . . . . . . . . . . . . . . . . 52 vi Caṕıtulo 1 Introducción 1.1. Motivación Los robots son utilizados para realizar tareas en las cuales se reducen los costos y los riesgos al realizarlos por humanos. El ambiente marino es uno de los entornos que ofrece numerosas actividades para el uso de robots llamados Veh́ıculos Autónomos Subacuáticos (AUV) y los Veh́ıculos Operados Remotamente (ROV), tales como: el monitoreo y recopilación de áreas protegidas, exploración submarina, conteo de especies acuáticas entre otras. Los veh́ıculos submarinos tienen problemas de comunicación, sobre todo para loca- lizarse en entornos no explorados, ya que el Sistema de posicionamiento global (GPS) no está disponible bajo el agua, para ello se utilizan otras técnicas para la localización. Una de las técnicas para conocer el desplazamiento y localización de un veh́ıculo es el uso de cámaras como principal sensor, las cuales permiten recolectar datos a partir de imágenes capturadas y procesarlas para tomar decisiones sobre el control del veh́ıculo. En el Laboratorio de Control de Veh́ıculos Móviles del Instituto Tecnológico de La Paz se cuenta con el robot submarino BlueROV2 de BlueRobotics, el cual es un veh́ıculocon una cámara y una unidad de medición inercial (IMU por sus siglas en inglés). El objetivo de esta tesis es implementar un algoritmo de visión artificial y leer la IMU para conocer la postura del veh́ıculo, con el propósito de utilizar el robot como plata- forma móvil para evaluar diferentes algoritmos de control que eventualmente permitan su autonomı́a. 1 CAPÍTULO 1. INTRODUCCIÓN 1.2. Antecedentes La ĺınea de investigación “Análisis y Evaluación Experimental de Veh́ıculos Móvi- les”de la Maestŕıa en Sistemas Computacionales de la División de Estudios de Posgrado e Investigación (DEPI) del Instituto Tecnológico de La Paz (ITLP), la cual aborda diferentes tópicos sobre veh́ıculos móviles entre los cuales se encuentran los veh́ıculos submarinos, dada su importancia en el impacto social, tecnológico y económico de la región. Los trabajos realizados en esta ĺınea de investigación son: Garćıa Molleda, D. (2016), Control de un veh́ıculo subacuático, Tesis de Maestŕıa, Instituto Tecnológico de La Paz. Higuera Verdugo, C. (2016), Implementación del control de un veh́ıculo subacuáti- co, Tesis de Maestŕıa, Instituto Tecnológico de La Paz. Higuera C., Sandoval J., Coria L., Bugaŕın E., Santillan I. (2018), Configura- ción experimental de un veh́ıculo submarino no tripulado, Congreso Mexicano de Robótica (COM Rob 2018), Ensenada, B. C., pp 98. 1.3. Problemática Actualmente, el Laboratorio de Control de Veh́ıculos Móviles de la DEPI del ITLP, adquirió recientemente un robot submarino para usarlo en actividades de investigación, y no se cuenta con un conocimiento previo para su puesta en operación. El veh́ıculo submarino es el modelo BlueROV2 de BlueRobotics mostrado en la Figura 1.1. Adi- cionalmente el veh́ıculo depende de un programa (QGround Control) para su funcio- namiento, el cual no permite la validación de diferentes algoritmos de control. Por tal motivo, es necesario realizar modificaciones que permitan manipular el veh́ıculo sin el uso de programas y librerias predeterminadas. Figura 1.1: BlueROV2 [2]. Abigayl Zareth Chargoy Cortez 2 CAPÍTULO 1. INTRODUCCIÓN 1.4. Objetivo general Implementar visión por computadora y el control de un veh́ıculo submarino no tri- pulado para analizar su desempeño experimentalmente. 1.5. Objetivos espećıficos Diseñar un algoritmo de visión monocular para reconocer la posición y orientación de un patrón con respecto al veh́ıculo submarino. Realizar la lectura de los sensores para obtener la orientación del veh́ıculo subma- rino. Implementar un algoritmo para controlar el desplazamiento del veh́ıculo subma- rino. 1.6. Justificación Para el control de un veh́ıculo submarino que utiliza realimentación de estados (coor- denadas de posición y orientación) es necesario conocer la postura que describa adecua- damente su desplazamiento con el fin de implementar diferentes técnicas de control para realizar tareas espećıficas. Dado que el robot BlueROV2 no proporciona la información completa para conocer la postura del veh́ıculo no es posible implementar algoritmos de control que reuieren de dicha información para su implementación. 1.7. Alcances Puesta en operación del veh́ıculo submarino BlueROV2 implementando visión arti- ficial para conocer su postura en un ambiente controlado. Abigayl Zareth Chargoy Cortez 3 CAPÍTULO 1. INTRODUCCIÓN 1.8. Limitaciones La evaluación experimental del veh́ıculo submarino se realiza en un ambiente con- trolado (en una alberca) y no se puede asegurar obtener los mismos resultados en un ambiente hostil, como puede ser en aguas turbias donde la captura de imágenes de la cámara puede ser deficiente. Abigayl Zareth Chargoy Cortez 4 Caṕıtulo 2 Marco teórico En este caṕıtulo se describe el estado del arte de veh́ıculos submarinos con énfasis en el robot BlueROV2 y sobre la teoŕıa de visión por computadora. 2.1. Veh́ıculo submarino Los veh́ıculos submarinos no tripulados son capaces de operar bajo el agua sin ningún humano a bordo, en general suelen controlarse a distancia por un operador o por śı solos. 2.1.1. Clasificación La principal clasificación de los robots submarinos está basada respecto a su nivel de autonomı́a. Existen robots que requieren ser controlados por un operador (ROV, Remote Operated Vehicles), y los que se consideran autónomos. De ésta ultima clasificación se encuentran los veh́ıculos autónomos (AUV, Autonomous Unmaned Vehicles ) y los veh́ıculos autónomos no tripulados para intervención (IAUV, Intervention Autonomous Unmaned Vehicles) donde se consideran dos niveles de autonomı́a. El nivel intermedio de autonomı́a, los IAUV, deben ser supervisadas las acciones que determina el submarino, mientras que en el caso de robots completamente autónomos no requieren de la ayuda ni supervisión de operadores. ROV Un veh́ıculo operado a distancia bajo el agua (ROV) es un robot móvil diseñado para entornos de trabajo acuáticos. El control remoto se realiza generalmente a 5 CAPÍTULO 2. MARCO TEÓRICO través de cables de cobre o fibra óptica. El operador maniobra el veh́ıculo bajo el agua mientras observa en pantalla lo que una cámara instalada en el submarino está captando. El control remoto en estos artefactos está limitada a la longitud de los cables que conectan al submarino a una estación de monitoreo fuera del agua, además que está restringida la tasa de transferencia de datos a causa de la frecuencia de las ondas de radio. AUV Los veh́ıculos autónomos realizan tareas sin la supervisión ni control de ope- radores. Las tareas están programadas de manera predefinida en el submarino, excluyendo las limitaciones por el uso de cables, tal como es en el caso de los ROV. Los datos que recopila el veh́ıculo se almacenan en su memoria interna para luego ser analizados o enviados a través de dispositivos acústicos. IAUV Los AUV han sido diseñados para realizar misiones de observación, sin embargo, recientemente se ha generado un interés en que estos puedan realizar tareas de manipulación. Esta es la idea detrás de los robots submarinos autónomos para intervención (IAUV, por sus siglas en inglés). Con este tipo de robots las misiones seŕıan más económicas que en el caso de los ROV, además su maniobrabilidad es superior ya que el IAUV estaŕıa libre de las restricciones que impone el cable de comunicación [11]. 2.1.2. Componentes de robots submarinos Los componentes principales utilizados para el diseño de veh́ıculos submarinos des- critos en [11], son: Cabina La cabina están montados y/o contenidos, el ordenador abordo, el equipo eléctrico y electrónico (controladores, fuente de enerǵıa, sensores, etc). Sensores Los robots submarinos están equipados con sistemas de sensores dedicados a determinar la localización del veh́ıculo, su velocidad y aceleración, aśı como su estado de funcionamiento. Los sistemas de visión entran en esta categoŕıa de dispositivos cuando son utilizados para determinar la posición y orientación de objetos con respecto al veh́ıculo. Algunos de los sensores mayormente utilizados en estos artefactos son: Unidad de medición inercial (IMU). Provee información acerca de la ace- leración lineal del veh́ıculo y la velocidad angular. La IMU que se utiliza en los robots submarinos se basa en tres giróscopos que permiten hacer las mediciones de los ángulos de: cabeceo, alabeo y guiñada. Brújula de estado sólido. Para la detección de los campos magnéticos de la Tierra. Abigayl Zareth Chargoy Cortez 6 CAPÍTULO 2. MARCO TEÓRICO Sensor de profundidad. Para medir profundidad que consiste en colocar un sensor de presión absoluta, el cual mide la presión ejercida en el sensor. Sistemas de Visión. Las cámaras de video se utilizan para ob- tener imágenes del entorno donde se opera el submarino. Se suelen implementar técnicas para obtener estimados del movimiento, posición u otros parámetros que permitan la operación del veh́ıculo. Sin embargo,las calidad de las imángenes depende del grado de turbidez del agua y la atenuación de la luz. Medición de consumo eléctrico. Sistema de propulsión Los sistemas de propulsión son los dispositivos que permiten maniobrar al veh́ıculo en los grados de libertad requeridos de acuerdo al posicio- namiento de los impulsores. Fuente de enerǵıa El tipo de fuente de enerǵıa define el tiempo de operación, el volumen y el peso del veh́ıculo submarino. 2.1.3. Diseño robots submarinos Para el diseño del sistema de control de un veh́ıculo submarino es necesario conocer sus propiedades f́ısicas que describan el modelo matemático. Debido a las condiciones de operación es necesario tomar en consideración la hidrodinámica y la cinemática del submarino, las cuales infieren en el rendimiento del sistema de control. Los movimientos de los veh́ıculos submarinos se describen en 6 grados de libertad, que son el conjunto de movimientos independientes a lo largo de tres direcciones defini- das como alabeo, para el desplazamiento sobre el eje x, cabeceo, desplazamiento sobre el eje y y guiñada para el eje z, roll, pitch y yaw en el idioma inglés (aśı llamados a lo largo de éste documento), respectivamente; y las rotaciones de tres ejes definidos anteriormente, ver Figura 2.1. 2.1.4. Nomenclatura Para analizar el movimiento de un submarino, es necesario definir dos marcos de referencia para describir su movimiento, estos son: Marco de referencia inercial Este marco esta ubicado sobre la superficie de la tierra. En este marco el eje x apunta hacia el norte, el eje y apunta hacia el este, y el eje z apunta hacia abajo. Abigayl Zareth Chargoy Cortez 7 CAPÍTULO 2. MARCO TEÓRICO Figura 2.1: Esquema coordenado con referencia fijo al submarino. Marco de referencia del cuerpo Este marco de referencia está fijo al cuerpo del robot. El origen de este marco de referencia se hace coincidir con el centro de gravedad del cuerpo. Existe la convención de la SNAME (Society of Naval Architects and Marine Engi- neers) para expresar la posición, orientación del veh́ıculo y las fuerzas que se ejercen sobre este. Esta convención es utilizada en navegación maritima y en robótica subma- rina. En la tabla 2.1 se describe la convención SNAME [16]. Movimiento Nombre Posición Velocidad Fuerza Español Inglés Traslación en x Avance Surge x u X Traslación en y Desv́ıo Sway y v Y Traslación en z Mov. Vertical Heave z w Z Rotación en x Alabeo Roll φ p K Rotación en y Cabeceo Pitch θ q M Rotación en z Guiñada Yaw ψ r N Tabla 2.1: Notación del movimiento de veh́ıculos marinos (SNAME, 1950). La posición del veh́ıculo se describe como el vector: η = [ rno Θ ] (2.1) donde rno = [x y z] > representa la posición del veh́ıculo con respecto el marco inercial, mientras que el vector Θ define la orientación entre los dos marcos de referencia. La Abigayl Zareth Chargoy Cortez 8 CAPÍTULO 2. MARCO TEÓRICO velocidad del veh́ıculo se representa por: vb0 = [ vbo ωbb ] (2.2) donde vb0 = [u v w] > es la velocidad lineal del veh́ıculo mientras que ωbb = [p q r] > representa la velocidad angular. La fuerzas se describen: τ = [ f bo nbb ] (2.3) donde f bo = [X Y Z] > y nbb = [K M N ] > son los vectores de fuerza y momento ejercidos sobre el cuerpo del submarino. 2.1.5. Matriz de rotación Estas matrices describen la orientación mutua entre dos sistemas coordenados. Euler estableció que si se conoce la secuencia de ejes a rotar, se necesitan sólo tres ángulos de Euler para definir completamente la rotación total. η̇ = J(η2)v (2.4) Nótese que (2.4) define la relación de ambos marcos de referencia por medio del término J(η2)v el cual se obtiene de las siguientes definiciones: J1(η2) =cosψ cos θ − senψ cosφ+ cosψ sen θ senφ senψ senφ+ cosψ cosφ sen θcos θ senψ cosφ cosψ + senφ sen θ senψ − senφ cosψ + cosφ sen θ senψ − sen θ cos θ senψ cos θ cosφ (2.5) J2(η2) = 1 senφ tan θ cosφ tan θ0 cosφ − senφ 0 senφ/ cos θ cosφ/ cos θ (2.6) J(η2) = [ J1(η2) 0 0 J2(η2) ] (2.7) Los veh́ıculos subacuáticos operan cerca de la superficie en donde más afectan las corrientes, por eso se tienen que considerar estas perturbaciones en el vector de velocidad Abigayl Zareth Chargoy Cortez 9 CAPÍTULO 2. MARCO TEÓRICO con referencia a tierra esto es vc = {vcx, vcy, vcz, 0, 0, 0}, resultando (2.4) de la siguiente forma: η̇ = J(η2)v + vc (2.8) donde vc es el vector de velocidad de perturbaciones. 2.2. Modelo matemático de veh́ıculos submarinos El modelado dinámico se puede clasificar en dos categoŕıas: cinemática y cinética. La cinemática considera los aspectos geométricos del movimiento, mientras que la cinética investiga las fuerzas que causan los cambios de movimiento.[5] Para el modelo dinámico de un cuerpo ŕıgido puede usarse la formulación Newton- Euler quien toma en cuenta los efectos que actúan sobre un veh́ıculo subacuático como: masa agregada, fuerza de arrastre, efecto de Coriolis y la fuerza de gravedad. El modelo matemático de la dinámica del veh́ıculo subacuático, adoptando el modelo de Fossen [6], se puede escribir en su forma compacta de la siguiente manera: M v̇ + C(v)v +D(v)v + g(η) = τAct (2.9) donde: M es la matriz de inercia y masa agregada. C(v) es la matriz de Coriolis. D(v) es la matriz de amortiguamiento. g(η) es el vector gravitacional. τAct es el vector de fuerzas y momentos de los actuadores. La matriz de inercia M se compone de dos partes: la matriz de masa e inercia del cuerpo ŕıgido MRB, y por la matriz de masa hidrodinámica añadida MA. La matriz de inercia será la suma de ambas matrices y se expresa de la siguiente forma: M = MRB +MA (2.10) La matriz de Coriolis C(v), también está compuesta de dos partes, por un lado la matriz de Coriolis y centŕıpeta del cuerpo ŕıgido, CRB(v), y por otro lado la matriz de Coriolis de la masa añadida, CA(v) y se expresa como sigue: C(v) = CRB(v) + CA(v) (2.11) Abigayl Zareth Chargoy Cortez 10 CAPÍTULO 2. MARCO TEÓRICO 2.2.1. Matriz de inercia La matriz de masa e inercia de cuerpo ŕıgido MRB está definida por: MRB = [ mI3x3 −mS(rg) mS(rg) IB ] = m 0 0 0 mzg −myg 0 m 0 −mzg 0 mxg 0 0 m myg −mxg 0 0 −mzg myg Ixx −Ixy −Ixz mzg 0 −mxg −Iyx Iyy −Iyz −myg mxg 0 −Izx −Izy Izz (2.12) donde S(rg) ∈ R3x3 es la matriz antisimétrica de las distancias del tensor de inercia con relación el centro de gravedad e IB ∈ R3x3 es la matriz de inercia del veh́ıculo. 2.2.2. Matriz de masa añadida Los veh́ıculos subacuáticos al desplazarse a través de un fluido desplazan una can- tidad de este con él. La cantidad de flujo desplazado depende de la geométrica del veh́ıculo, fenómeno que se le conoce como masa añadida ó masa agregada. Se define como: MA = − Xu̇ Xv̇ Xẇ Xṗ Xq̇ Xṙ Yu̇ Yv̇ Yẇ Yṗ Yq̇ Yṙ Zu̇ Zv̇ Zẇ Zṗ Zq̇ Zṙ Ku̇ Kv̇ Kẇ Kṗ Kq̇ Kṙ Mu̇ Mv̇ Mẇ Mṗ Mq̇ Mṙ Nu̇ Nv̇ Nẇ Nṗ Nq̇ Nṙ (2.13) donde Xu̇ = ∂X ∂u̇ , Xv̇ = ∂X ∂v̇ , ... , Nṙ = ∂N ∂ṙ . Para los veh́ıculos que se encuentran totalmente sumergidos la matriz MA se sim- plifica a una diagonal principal, quedando de la siguiente manera: MA = − Xu̇ 0 0 0 0 0 0 Yv̇ 0 0 0 0 0 0 Zẇ 0 0 0 0 0 0 Kṗ 0 0 0 0 0 0 Mq̇ 0 0 0 0 0 0 Nṙ (2.14) Abigayl Zareth Chargoy Cortez 11 CAPÍTULO 2. MARCO TEÓRICO 2.2.3. Matriz de Coriolis La fuerza de Coriolis es una fuerza de inercia que actúa perpendicular a la dirección de movimiento de un cuerpo, es proporcional a la velocidad y a la rotación del sistema de coordenadas del veh́ıculo con respecto el sistema de referencia. Se compone de la matriz de Coriolis de masa agregada (CA(v)): CA(v) = 0 0 0 0 −a3 a2 0 0 0 a3 0 −a1 0 0 0 −a2 a1 0 0 −a3 a2 0 −b3 b2 a3 0 −a1 b3 0 −b1 −a2 a1 0 −b2 b1 0 (2.15) donde: a1 = Xu̇u+Xv̇v +Xẇw +Xṗp+Xq̇q +Xṙr, a2 = Xu̇u+ Yv̇v + Yẇw + Yṗp+ Yq̇q + Yṙr, a3 = Xu̇u+ Yv̇v + Zẇw + Zṗp+ Zq̇q + Zṙr, b1 = Xu̇u+ Yv̇v + Zẇw +Kṗp+Kq̇q +Kṙr, b2 = Xu̇u+ Yv̇v +Zẇw +Kṗp+Mq̇q +Mṙr, b3 = Xu̇u+ Yv̇v + Zẇw +Kṗp+Mq̇q +Nṙr, Tomando la diagonal principal de la matriz de masa agregada 2.14, la matriz de Coriolis de masa agregada queda: CA(v) = 0 0 0 0 −Zẇw Yv̇v 0 0 0 Zẇw 0 −Xu̇u 0 0 0 −Yv̇v Xu̇u 0 0 −Zẇw Yv̇v 0 −Nṙr Mq̇q Zẇw 0 −Xu̇u Nṙr 0 −Kṗp −Yv̇v Xu̇u 0 −Mq̇q Kṗp 0 (2.16) mientras la matriz de Coriolis de cuerpo ŕıgido y con coincidencia en el centro de gravedad y el de flotación (CRB(v)) resulta: Abigayl Zareth Chargoy Cortez 12 CAPÍTULO 2. MARCO TEÓRICO 0 0 0 0 −mw mv 0 0 0 mw 0 −mu 0 0 0 −mv mu 0 0 −mw mv 0 Izzr −Iyyq mw 0 −mu −Izzr 0 Ixxp −mv mu 0 −Iyyq −Ixxp 0 (2.17) 2.2.4. Matriz de amortiguamiento Cuando un veh́ıculo subacuático se está moviendo a través del agua, se presentan fuerzas que se oponen a la dirección del movimiento del veh́ıculo, estas se denominan fuerzas de amortiguamiento hidrodinámico. La fuerza de amortiguamiento hidrodinámi- co se compone de dos términos: por un lado, los términos cuadráticos de la fuerza as- censional o de sustentación (DQ) y por otro lado, los términos lineales de la fuerza de fricción (DL) [12]. La fuerza de amortiguamiento hidrodinámico tiene un efecto significativo en la dinámica del veh́ıculo que puede llegar a producir una no linealidad. Se propone una simplificación en los parámetros del la fuerza de amortiguamiento hidrodinámico, la cual consiste en una matriz formada por los términos lineales y los términos cuadráticos de las ecuaciones de fuerza de arrastre sobre los ejes, siendo: D(v) = DL +DQ|V k| (2.18) Más aún la fuerza de amortiguamiento hidrodinámico depende de la velocidad del veh́ıculo, tal que: DL = [ Xu Yv Zw Kp Mq Nr ] , (2.19) DQ = [ Xu|u| Yv|v| Zw|w| Kp|p| Mq|q| Nr|r| ] . (2.20) Abigayl Zareth Chargoy Cortez 13 CAPÍTULO 2. MARCO TEÓRICO Por tanto, de acuerdo a 2.18, la matriz D(v) queda como: D(v) = Xu 0 0 0 0 0 0 Yv 0 0 0 0 0 0 Zw 0 0 0 0 0 0 Kp 0 0 0 0 0 0 Mq 0 0 0 0 0 0 Nr + Xu|u||u| 0 0 0 0 0 0 Yv|v||v| 0 0 0 0 0 0 Zw|w||w| 0 0 0 0 0 0 Kp|p||p| 0 0 0 0 0 0 Mq|q||q| 0 0 0 0 0 0 Nr|r||r| (2.21) 2.2.5. Matriz gravitacional Los efectos de la gravedad y la flotación se describen en la matriz g(η) como sigue: g(η) = [ fB + fG rBxfB + rGxfG ] (2.22) donde: fG es la fuerza de gravedad. fB es la fuerza de flotación. rG es el centro de gravedad. rB es el centro de flotación. rBxfB es el producto cruz del centro de flotación y la fuerza de flotación. por tanto, (2.26) queda de la siguiente manera: g(η) = (W −B) sen θ −(W −B) cos θ senφ −(W −B) cos θ cosφ −(ygW − ybB) cos θ cosφ+ (zgW − zbB) cos θ senφ (zgW − zbB) sen θ + (xgW − xbB) cos θ cosφ −(xgW − xbB) cos θ senφ− (ygW − ybB) sen θ (2.23) Abigayl Zareth Chargoy Cortez 14 CAPÍTULO 2. MARCO TEÓRICO 2.2.6. Modelo de propulsión y asignación de control El vector de fuerzas y momentos se define con base a la disposición de los propulsores que son los que proporcionan el empuje para generar los movimientos y giros en los ejes del veh́ıculo. Se define por: τ = Bu (2.24) donde B es la matriz de posición de los motores y u es el vector de empuje de los propulsores. La matriz de posición de propulsores se obtiene de la distancia del centro de masa a los propulsores. De acuerdo a que el veh́ıculo submarino cuenta con 6 propulsores, el vector de propulsores se define como: U = [ T1 T2 T3 T4 T5 T6 ]T (2.25) 2.3. Visión por computadora La visión artificial se puede considerar como el conjunto de todas aquellas técnicas y modelos que nos permitan el procesamiento, análisis y explicación de cualquier tipo de información espacial obtenida a través de imágenes digitales. [1] En robótica la visión artificial permite que los robots puedan inferir en su entorno. 2.3.1. Representación de la cámara Con la cámara se puede percibir el entorno mediante visión artificial, este artefacto consta de lente y sensor. Este sensor es capaz de convertir la luz que le llega en impulsos eléctricos, por lo que puede visualizar el entorno, pero para que la luz de la escena llegue al sensor, es necesario recogerla y dirigirla hacia el sensor, de lo anterior se encarga la lente. El primer problema principal con sistemas de visión, es la obtención de imágenes no distorsionadas, debidas a alteraciones en la lente, o defectos de construcción de la cámara [1]. 2.3.1.1. Modelo de proyección de la perspectiva de la cámara En este modelo, una vista de escena se forma proyectando puntos 3D en el plano de la imagen utilizando una transformación de perspectiva. Para calcular la postura 3D Abigayl Zareth Chargoy Cortez 15 CAPÍTULO 2. MARCO TEÓRICO se necesita un conjunto de correspondencias 3D a 2D entre n puntos de referencia P donde P = [X, Y, Z]> su correspondencia de proyección en 2D p donde p = [u, v]> en el plano de la imagen (Ver Figura 2.2). Se utiliza la transformación de perspectiva: sp̃ = K[R|t]P̃ (2.26) donde s es un factor de escala, p̃ = [u, v, 1]> y P̃ = [X, Y, Z, 1]> son las coordenadas de los puntos p y P , respectivamente. P3×4 es la matriz de proyección e puede descompo- nerse como: P = K[R|t] (2.27) donde K3×3 es una matriz de que contiene los parámetros de calibración de la cámara, como la distancia focal, el factor de escala y las coordenadas del punto central óptico. [R|t]3×4 es una matriz de que corresponde a la transformación euclidiana de un siste- ma de coordenadas global al sistema de coordenadas de la cámara. R es la matriz de rotación, y t el vector de traslación. Figura 2.2: Proyección de la perspectiva de la cámara. Las lentes reales generalmente tienen algo de distorsión, principalmente distorsión radial y ligera distorsión tangencial. Los coeficientes de distorsión no dependen de la es- cena vista. Por lo tanto, también pertenecen a los parámetros intŕınsecos de la cámara. Y Abigayl Zareth Chargoy Cortez 16 CAPÍTULO 2. MARCO TEÓRICO siguen siendo los mismos, independientemente de la resolución de la imagen capturada. Aśı, el modelo (2.26) se extiende como: s uv 1 = fx 0 cx0 fy cy 0 0 1 r11 r12 r13 t1r21 r22 r23 t2 r31 r32 r33 t3 X Y Z 1 (2.28) donde cx y cyes un punto principal (centro de la imagen), fx y fy son las distancias focales expresadas en unidades de ṕıxeles. La matriz de parámetros intŕınsecos no depende de la escena visualizada. Por lo tanto, una vez estimado, puede reutilizarse siempre que la distancia focal sea fija. La matriz de rotación-translación [R|t] se denomina matriz de parámetros extŕınse- cos. Se utiliza para describir el movimiento de la cámara alrededor de una escena estáti- ca, o viceversa, el movimiento ŕıgido de un objeto frente a una cámara fija. Es decir, [R|t] traduce las coordenadas de un punto [X, Y, Z]> a un sistema de coordenadas, fijo con respecto a la cámara. 2.3.1.2. Estimación de la calibración de la cámara La estimación de la postura de la cámara a partir de n correspondencias de puntos 3D a 2D es un problema fundamental en el área de visión geométrica de computadora. El objetivo principal es estimar los seis grados de libertad de la postura de la cámara y los parámetros de calibración de la cámara: la distancia focal, el punto principal, la relación de aspecto y el sesgo [15]. Para realizar la estimación de postura en 3D se asume que los parámetros intŕınsecos de la cámara son conocidos y fijos. Estos parámetros deben calcularse en un proceso fuera de ĺınea utilizando imágenes tomadas con la misma cámara que se usará para la detección. La metodoloǵıa predeterminada para realizar esta estimación de parámetros es utilizar un objeto de calibración con un patrón de tamaño conocido. Los objetos más comunes son los tableros de ajedrez blanco y negro. El objetivo es encontrar las correspondencias 2D-3D entre los centros de la cuadŕıcula del patrón para finalmente calcular la matrizde proyección. 2.3.2. Parametrización de la postura de la cámara Para estimar la posición de la cámara, primero se necesita una parametrización apropiada de su vector de translación y matriz de rotación. Una matriz de rotación tiene Abigayl Zareth Chargoy Cortez 17 CAPÍTULO 2. MARCO TEÓRICO solo tres grados de libertad, lo que significa que dependerá directamente de los nueve elementos de la matriz de rotación R3×3. Dado que esta matriz debe ser ortonormal, se necesitan seis restricciones no lineales adicionales: tres para forzar a las tres columnas a tener una longitud de unidad, y tres para garantizar la ortogonalidad entre ellas. La matriz de rotación R se puede escribir como el producto de tres matrices que representan rotaciones alrededor de los ejes X, Y y Z, donde se toma α, β, γ, respecti- vamente: R = cosα − senα 0senα cosα 0 0 0 1 cos β 0 sen β0 1 1 − sen β 0 cos β 1 0 00 cos γ − sen γ 0 sen γ cos γ (2.29) La obtención de los ángulos de Euler para una matriz de rotación dada se puede realiza fácilmente mediante la identificación de los coeficiente de la matriz. 2.3.3. Visión monocular Por cuestiones de diseño del submarino, tamaño y costo computacional esta inves- tigación se basa en una cámara, es decir, visión monocular. Sin embargo, con la visión monocular diferentes enfoques han para ser utilizado para obtener información de la apertura de la cámara. Las imágenes de la cámara son bidimensionales, durante el proceso de captura la imagen pierde la información de profundidad e introduce la proyección de perspectiva. Todos los puntos en el espacio tridimensional a lo largo del área visible de la cámara se asignarán al mismo ṕıxel en la imagen [15]. La matriz de transformación se puede determinar a través del análisis utilizando una cámara idealizada con conocimiento de la distancia focal de la lente de la cámara. En el diagrama mostrado en la Figura 2.3, se muestra el área visible de la cámara montada en el veh́ıculo submarino, el cual está sobre el horizonte real (la ĺınea horizontal a través del centro de la cámara). Abigayl Zareth Chargoy Cortez 18 CAPÍTULO 2. MARCO TEÓRICO Figura 2.3: Diagrama de la apertura de visualización de una cámara. Si la resolución de la imagen es de j×i ṕıxeles, entonces los valores de las coordenadas de la imagen (u, v) variarán de 0 a (m−1) y de 0 a (n−1) respectivamente. Los ṕıxeles en la dirección horizontal corresponden a un arco de 2δ/(m−1). El valor de a representa la longitud horizontal del espacio visualizado por la cámara a una distancia d+b, donde b indica la distancia al borde inferior visualizado por la apertura δ de la cámara. Estos valores se pueden medir, aunque no con mucha precisión, donde: tan δ = a b+ d (2.30) permite calcular la apertura de la cámara. 2.3.4. Libreŕıa OpenCV OpenCV (Open Source Computer Vision) es una libreŕıa software de código abierto de visión artificial y aprendizaje por computadora. OpenCV provee una infraestruc- tura para aplicaciones de visión artificial. tiene una licencia BSD (Berkeley Software Distribution), lo que permite utilizar y modificar el código [13]. OpenCV está escrito en lenguaje C++, tiene interfaces en C++, C, Python, Java y MATLAB, y funciona en Windows, Linux, Android y Mac OSX. Algunas de las funciones utilizadas son: Abigayl Zareth Chargoy Cortez 19 CAPÍTULO 2. MARCO TEÓRICO CalibrateCamera La función estima los parámetros intŕınsecos de la cámara y los parámetros extŕınsecos para diferentes vistas . Se deben especificar las coordena- das de los puntos de objeto 3D y sus correspondientes proyecciones 2D en cada vista. Esto se logra utilizando un objeto con una geometŕıa conocida y puntos de caracteŕısticas fácilmente detectables. Un objeto de este tipo se denomina plata- forma de calibración o patrón de calibración, y OpenCV tiene soporte incorporado para un tablero de ajedrez como plataforma de calibración. findChessboardCorners La función intenta determinar si la imagen de entrada es una vista del patrón del tablero de ajedrez y ubicar las esquinas internas del tablero de ajedrez. Las coordenadas detectadas son aproximadas, y para determinar sus posiciones con mayor precisión, la función llama a cornerSubPix (). CornerSubPix La función se itera para encontrar la ubicación precisa de sub-ṕıxel de las esquinas o puntos de apoyo radiales. SolvePnP Encuentra una pose de objeto a partir de correspondencias de puntos 3D- 2D. La función estima la posición del objeto dado un conjunto de puntos de objeto, sus correspondientes proyecciones de imagen, aśı como la matriz de la cámara y los coeficientes de distorsión. Rodrigues Convierte una matriz de rotación en un vector de rotación o viceversa. Un vector de rotación es una representación conveniente y más compacta de una matriz de rotación (ya que cualquier matriz de rotación tiene solo 3 grados de libertad). 2.4. Entrada/salida de propósito general (GPIO) La Entrada/salida de propósito general (en inglés General Porpuse Input Output -GPIO) es un tipo de pin que se encuentra en un circuito integrado que no tiene una función espećıfica, la cual es personalizable y puede ser controlada por software. Un dispositivo popular que incluye GPIO es la Raspberry Pi, una computadora de una sola placa. Se puede conectar un dispositivo a pines GPIO espećıficos y controlarlo con un programa de software. En śı, los pines GPIO: Pueden ser configurados para ser entrada o salida. Pueden ser activados / desactivados. Además de los dispositivos de entrada y salida simples, los pines GPIO de la Rasp- Abigayl Zareth Chargoy Cortez 20 CAPÍTULO 2. MARCO TEÓRICO berry Pi se pueden usar con una variedad de funciones alternativas, algunas están dis- ponibles en todos los pines, otras en pines espećıficos, tales como: PWM (modulación de ancho de pulso) • Software PWM disponible en todos los pines. • Hardware PWM disponible en GPIO12, GPIO13, GPIO18, GPIO19 SPI • SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7) • SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16) I2C • Datos: (GPIO2); Reloj (GPIO3) • Datos de EEPROM: (GPIO0); Reloj EEPROM (GPIO1) Serial:TX (GPIO14); RX (GPIO15) Favoreciendo que los pines pueden ser programados como PWM, ideal para contro- lar gran número de motores a la vez. Para el uso pines, se recomienda utilizar la libreŕıa pigpio, la cual es biblioteca para la Raspberry Pi que permite el control de las entra- da/salidas de propósito general (GPIO). La biblioteca pigpio está escrita en el lenguaje de programación C. Visitar la página http://abyz.me.uk/rpi/pigpio/ para instalar o mayor información. 2.5. Telecomunicación Para que los veh́ıculos puedan ser controlados remotamente, se utilizan protocolos para enviar y recibir datos. 2.5.1. Protocolo Secure Shell (SSH) SSH o Secure Shell, es un protocolo que facilita las comunicaciones seguras entre dos sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host remotamente (a través de Internet). Cualquier usuario de Linux Abigayl Zareth Chargoy Cortez 21 http://abyz.me.uk/rpi/pigpio/ CAPÍTULO 2. MARCO TEÓRICO o macOS puede hacer SSH en su servidor remoto directamente desde la terminal de comandos. Los usuarios de Windows pueden aprovechar los clientes SSH como Putty. La ventaja significativa ofrecida por SSH es el uso del cifrado para asegurar la transferencia segura de información entre el host y el cliente (client). Host se refiere al servidor remoto al que está intentando acceder, mientras que el cliente es el equipo que está utilizando para acceder al host. 2.5.2. Protocolo MAVLink Micro Aerial Vehicle Link(MAVLink), es un protocolo de comunicación especialmen- te desarrollado para el intercambio de información con veh́ıculos no tripulados a partir de una estación de control. Con él se comunicala estación de control (Mission Planer, QGroundControl, DroidPlanner) con la controladora APM o PX4 viceversa. Abigayl Zareth Chargoy Cortez 22 Caṕıtulo 3 Hardware El BlueROV2 (2017) de la compañia BlueRobotics es un ROV comercial de al- to rendimiento, maniobrable, asequible y flexible. Con una configuración vectorial de 6 propulsores, electrónica y software de código abierto, contando con la capacidad de expansión o modificación para multiples tareas como inspecciones, investigación y aven- turas. El BlueROV2 proporciona las capacidades de un ROV de alta gama al precio de los ROV comerciales más básicos [2]. Cada componente utilizado en el veh́ıculo submarino es asequible a través de la tienda en ĺınea de BlueRobotics. 3.1. Diseño La forma del BlueROV2 es de tipo de marco abierto, lo cual ayuda a la estabilidad del veh́ıculo que se relacionada con la distancia entre el centro de gravedad y el centro de flotabilidad, también llamada altura metacéntrica [10]. El centro de gravedad CG de un objeto es el punto aparente en el que se centra todo el peso. El centro de flotabilidad CB es el punto en el que se centran todas las fuerzas de flotación. En general, el CB debe estar ubicado por encima del CG; de lo contrario, el objeto girará para tratar de estabilizarse por śı mismo. La ubicación y los valores de CG y CB están relacionados con la forma, el peso y el volumen del objeto. Cuando el veh́ıculo está sujeto a una inclinación a lo largo de sus ejes. Se genera un momento iniciado por la fuerza de gravedad g y la fuerza de flotación ∆ llevando al veh́ıculo a su estado de estabilidad como se muestra en la Figura 3.1. 23 CAPÍTULO 3. HARDWARE Figura 3.1: Corrección de la orientación del ROV. 3.1.1. Estructura La estructura del ROV sirve para montar los equipos y proporcionar soporte y protección durante las tareas que realice. El BlueROV2 cuenta con un marco abierto para mantener la estabilidad, mostrado en la Figura 3.2. Además facilita la adición de nuevos componentes o extensiones, evitando la obstrucción del flujo de agua hacia a los propulsores. Figura 3.2: Estructura del BlueROV2. Las dimensiones y peso del veh́ıculo son dadas de acuerdo a la estructura, ver tabla 3.1 y Figura 3.3. Abigayl Zareth Chargoy Cortez 24 CAPÍTULO 3. HARDWARE Longitud 457 mm Anchura 338 mm Altura 254 mm Peso en el aire 11 kg Tabla 3.1: Dimensiones y peso del BlueROV2. Figura 3.3: Dimensiones del veh́ıculo submarino BlueROV2 de BlueRobotics. 3.1.2. Flotabilidad Para lograr la flotabilidad en el veh́ıculo BlueROV2, se utilizan bloques de flotabili- dad, que están construidos de material con una densidad menor que el agua. El material es capaz de soportar la presión aplicada por profundidades. LAST-A-FOAM® Uretano R-3318 es una espuma de hidrostática, resistente a la presión que proporciona flotabilidad bajo el agua. Su estructura está diseñada para re- sistir la penetración del agua (ver Figura 3.4). Instalada en el BlueROV2 maximiza la cantidad de flotabilidad de este. Cada módulo añade 500 gramos (1 libra) de flotabi- lidad adicional. Esto agrega más estabilidad y capacidad de carga útil al ROV. En el BlueROV2 se instalan 4 módulos que crean una flotabilidad neta de 2 kg. A causa de la instalación de la bateŕıa con un peso de 1152 g la flotabilidad final del BlueROV2 es negativa. Abigayl Zareth Chargoy Cortez 25 CAPÍTULO 3. HARDWARE Figura 3.4: Espuma de Uretano R-3318. 3.1.3. Sistema de propulsión Los propulsores del veh́ıculo son el modelo T200 de BlueRobotics (Figura 3.5). Con- siste en un motor trifásico sin escobillas diseñado espećıficamente para su uso en el océano. La propela y la boquilla del propulsor proporcionan un empuje eficiente y po- tente mientras que se efectúa el enfriamiento activo al motor por agua. Figura 3.5: Propulsor T200 de BlueRobotics. El T200 viene con propelas en sentido horario y antihorario para contrarrestar el par. Las especificaciones del fabricante se aprecian en las Figuras 3.6 y 3.7 y en la tabla 3.2. El propulsor necesita un controlador electrónico de velocidad (ESC) para funcionar. Abigayl Zareth Chargoy Cortez 26 CAPÍTULO 3. HARDWARE Figura 3.6: Relación de empuje contra PWM del propulsor T200. Figura 3.7: Relación de potencia contra PWM del propulsor T200. Abigayl Zareth Chargoy Cortez 27 CAPÍTULO 3. HARDWARE Tabla 3.2: Especificaciones del propulsor T200. 3.1.3.1. Control electrónico de velocidad El control electrónico de velocidad (ESC, Electronic Speed Control) instalado es el modelo ESC Basic de 30 A de la compañ́ıa BlueRobotics (ver Figura 3.8), permite tener dirección de rotación hacia adelante y hacia atrás en el motor sin escobillas. Para la activación de los propulsores se debe env́ıar una señal de parada (1500 microsegundos) durante unos segundos para inicializar el ESC y luego se puede enviar señales de 1100-1900 µs para operar el propulsor. Figura 3.8: ESC Basic de BlueRobotics. Abigayl Zareth Chargoy Cortez 28 CAPÍTULO 3. HARDWARE 3.1.3.2. Configuración El montaje de los propulsores ayudan a distribuir la fuerza de empuje para el des- plazamiento del veh́ıculo submarino. Los propulsores horizontales están montados a 45° generando empuje en todas las direcciones. En la Figura 3.9 de la posición de los pro- pulsores y su orientación. Los propulsores de color verde tienen propelas con sentido horario mientras que los azules tienen sentido anti-horario. Figura 3.9: Configuración vectorizada de los propulsores. Los propulsores 1-4 son utiliza- dos para desplazamiento hacia adelante/atrás y movimiento rotacional. Los propulsores 5-6 desplazan el veh́ıculo arriba y abajo. El triángulo color rojo indica el frente del veh́ıculo. 3.1.4. Sistema de enerǵıa La bateŕıa de iones de litio (14.8V, 18Ah) es una bateŕıa personalizada de alta capacidad hecha de 18650 celdas de iones de litio de alta calidad diseñadas para su uso en el BlueROV2 (ver Figura 3.10). Esta bateŕıa 4S (14.8V) tiene una capacidad nominal de 18.0Ah, suficiente para hasta 4 horas de uso moderado continuo en el BlueROV2. Tiene un peso de 1152 g. La bateŕıa está aprobada por CE (Conformité Européenne), cumple con ROHS y tiene la certificación UN38.3. Figura 3.10: Fuente de enerǵıa del BlueROV2. Abigayl Zareth Chargoy Cortez 29 CAPÍTULO 3. HARDWARE Para la energización de la computadora del veh́ıculo móvil se utiliza un reductor de CD a CD de alta eficiencia que puede generar hasta 3 amperios a 5 V sin la necesidad de ningún disipador de calor o enfriamiento forzado. El circuito eliminador de bateŕıa universal (UBEC por sus siglas en inglés) está diseñado para reemplazar un suministro de 5 V para cualquier tipo de microcontrolador o proyecto electrónico que funcione de 5V, como lo es la computadora Raspberry Pi del veh́ıculo submarino. Para su uso se admiten desde 6V hasta 16V y se genera una salida regulada de 5 V (±5 %), con corriente de salida de 3 A (pico de 5 A). Se observa el modelo UNEC 30 A en la Figura 3.11. Figura 3.11: UBEC. Reductor CD-CD a 5V. 3.1.5. Cabina Se utiliza una cabina hermética para ROV/AUV de 4 pulgadas de diámetro para resguardar la electrónica y una cabina de 2 pulgadas para bateŕıas (ver Figura 3.12). Estos contenedores herméticos configurables realizados de acŕılico fundido soportan pre- siones hasta de 150m de profundidad. Dentro de la cabina para electrónicos, se instala una placa de montaje para componentes electrónicos. (a) Cabina con cúpula . (b) Bandeja de montaje para componentes eléctricos. Figura 3.12: Cabina de componentes electrónicos. Abigayl Zareth Chargoy Cortez 30 CAPÍTULO 3. HARDWARE 3.1.6. Componentes eléctricos Los componentes eléctricos son conectados de acuerdo al esquema mostrado en la Figura 3.13. Figura 3.13: Esquema de conexión de los componentes para la operación del submarino. Los componentes numerados son: (1) Raspberry Pi 3. (2) RaspiCamera. (3) y (10) Fathom X. (4)Pixhawk v1. (5) Control de velocidades (ESC ×6). (6) Propulsores (× 6). (7) Lámparas (×4). (8) Regulador DC-DC 5V. (9) Bateŕıa LiPo 14.8V 4Cell. (11) Conector Ethernet-USB. (12) Computadora portátil con el programa QGround Control. (13)Control alámbrico de Xbox. 3.1.6.1. Computadora Raspberry Pi 3 Para realizar el la operación remota el veh́ıculo debe procesar los parámetros envia- dos por el usuario, para ello se requiere de un equipo el cual los interprete. Para ello, se utiliza una computadora pequeña y asequible, Raspberry Pi 3 Model B+ (ver Figura 3.14). La computadora Raspberry Pi 3 tiene las siguientes especificaciones: Abigayl Zareth Chargoy Cortez 31 CAPÍTULO 3. HARDWARE Quad Core 1.2GHz Broadcom BCM2837 64bit CPU 1 GB de RAM LAN inalámbrica IEEE 802.11.b / g / n / ac de 2.4GHz y 5GHz, Bluetooth 4.2, (Bluetooth Low Energy - BLE ) Gigabit Ethernet sobre USB 2.0 (rendimiento máximo de 300 Mbps) Cabecera GPIO de 40 pines extendida Puerto HDMI 4 puertos USB 2.0 Puerto de cámara CSI para conectar una cámara Raspberry Pi Puerto de visualización DSI para conectar una pantalla táctil Raspberry Pi Puerto micro SD para cargar su sistema operativo y almacenar datos Entrada Micro USB de corriente continua de 5V / 2.5A Al ser una computadora de bajo consumo es favorable su uso en robots, puesto a que ahorra en recursos energéticos. Figura 3.14: Computadora Raspberry Pi 3 modelo B+. 3.1.6.2. Lámparas El sistema de iluminación de 4 lámparas submarinas Lumen, ver Figura 3.15, se caracteriza por: Control regulable usando una señal servo PWM (1100-1900 µs) Control simple de encendido/apagado sin necesidad de señal Permite conectar varias luces desde una sola conexión Funcionamiento con entra- das de 10-48V y de 3-48V para señales PWM Compensación automática e inteligente de sobrecalentamiento para la máxima salida de luz y seguridad en el aire Compuestas de LED Cree XLamp MK-R de alta eficiencia, 1500 lúmenes a 15 vatios y con temperatura de color de 6200K Tiene un ángulo de haz de 135 grados para una iluminación amplia frente a un ROV Abigayl Zareth Chargoy Cortez 32 CAPÍTULO 3. HARDWARE Figura 3.15: Sistema de iluminación de montaje para el submarino BlueROV2. 3.1.6.3. Componente Pixhawk Pixhawk es un componente estandarizado para los pilotos automáticos de código abierto. Este controlador provee la parte de hardware para el proyecto de la Linux Foundation: DroneCode. El autopiloto tiene algoritmos para altitud y posición y provee algoritmos de gúıa, navegación y control para distintos tipos de drones multirotor, de ala fija e incluso rovers. El hardware de Pixhawk tiene su software llamado Dronecode que lo controla y conecta con distintos sensores, extensiones de telemetŕıa y otros accesorios periféricos. Las caracteŕısticas del componente son los descritos en la tabla 3.3: Microprocesador 32-bit STM32F427 Cortex M4 core with FPU168 MHz/256 KB RAM/2 MB Flash Sensores Giroscopio ST Micro L3GD20 3-axis 16-bit Acelerómetro/Magnetómetro/Compás ST Micro LSM303D 3-axis 14-bit BarómetroMEAS MS5611 Tabla 3.3: Caracteŕısticas del componente Pixhawk v1 El componente Pixhawk (Figura 3.16) realiza su comunicación por telemetŕıa con computadoras o tablets que permite un completo, avanzado y de bajo costo control de vuelo con el software QGroundControl. Este software también pertenece a la plataforma DroneCode y corre en cualquier plataforma Android, IOS, Mac, Windows, Linux. Pix- hawk ejecuta el Firmware PX4 en el sistema operativo NuttX. El código fuente de PX4 se almacena en Github en el repositorio de PX4 (https://github.com/PX4/Firmware). Figura 3.16: Componente Pixhawk Abigayl Zareth Chargoy Cortez 33 https://github.com/PX4/Firmware CAPÍTULO 3. HARDWARE 3.1.6.4. Cámara Módulo de cámara Raspberry Pi v2 con lente gran angular de 8MP ofrece una excelente calidad de video en una amplia gama de condiciones. Con el lente gran angular se obtiene campo de visión de 110 grados. La cámara funciona correctamente en la Raspberry Pi 3, a la cual se conecta directamente por medio del conector CSi de la Raspberry Pi. Figura 3.17: Módulo de cámara Raspberry Pi v2 con lente gran angular. 3.1.6.5. Componente Fathom-X Las tarjetas de interfaz Fathom-X Tether proporcionan una conexión Ethernet de alta velocidad y larga distancia a un ROV u otra plataforma remota. Están diseñados para usarse con el cable umbilical Fathom, el cable estándar Cat5 o incluso un sólo par de cables trenzados. Esta placa utiliza el módulo HomePlug, que aprovecha el robusto estándar HomePlug AV (IEEE-1901) para enviar datos a través de ĺıneas eléctricas de Ethernet. Tiene las siguientes caracteŕısticas: Ethernet de 80 Mbps a través de dos cables Capacidad de enviar datos a través de cables con longitudes mayores a 300 metros. Plug-and-play sin configuración involucrada Conector USB Mini-B para alimentar directamente desde una computadora. Figura 3.18: Tarjeta Fathom-X. Se requieren de dos tarjetas para la comunicación remota, una instalada en el subma- rino conectada por medio del cable umbilical a la otra tarjeta ubicada en la superficie. Abigayl Zareth Chargoy Cortez 34 CAPÍTULO 3. HARDWARE 3.1.6.6. Cable o cordón umbilical El cable umbilical Fathom Slim Tether es un cable de alto rendimiento diseñado es- pećıficamente para ROV y otras aplicaciones submarinas y optimizado para peso ligero, alta resistencia y transportabilidad. Tiene flotabilidad neutral, tiene una resistencia a la rotura de 300 lb y está incrustado con fibras que bloquean el agua para sellar cualquier fuga. El cable tiene un diámetro de 4 mm y lleva un par trenzado sin blindaje (UTP) de cable 26AWG. Sus fibras están impregnadas con un compuesto que bloquea el agua para evitar cualquier fuga causada por mellas o rasgaduras en el cable; es resiste a la abrasión y proporciona flotabilidad neutra. Se instaló un cable de 100 m de largo para interactuar con el BlueROV2, el cuál pesa 1.4 kg. 3.2. Ensamble El ensable del veh́ıculo BlueROV2 es descrito en la página de BlueRobotics. Se siguieron los pasos completos para la instalación de cada uno de los componentes e ins- talación de software y firmware. Visitar la página http://docs.bluerobotics.com/brov2/ assembly/. Los componentes eléctricos son montados en una bandeja que se instala den- tro de la cabina o encapsulado. En la Figura 3.19 se muestran los electrónicos montados. (a) Lado izquierdo. (b) Lado derecho. Figura 3.19: Componentes montados en la bandeja de electrónicos. En la Figura 3.20 se muestra el veh́ıculo ensamblado y listo para su puesta en operación. Abigayl Zareth Chargoy Cortez 35 http://docs.bluerobotics.com/brov2/assembly/ http://docs.bluerobotics.com/brov2/assembly/ CAPÍTULO 3. HARDWARE Figura 3.20: Veh́ıculo submarino BlueROV ensamblado. 3.3. Modificaciones Las modificaciones efectuadas se realizaron sin modificar el ensable del submarino BlueROV2. El esquema mostrado en la Figura 3.21 presenta la reconexión de compo- nentes utilizados. Se cambiaron los sentidos de las propelas y el giro de los motores para facilitar la programación de éstos. La posición de las propelas no fue modificada manteniendo la configuración vectorizada. Se sustituyó el componente Pixhawk v1 por un modelo nuevo de la misma marca, Pixhawk 2. Junto con este cambio se realizó la desconexión de los propulsores en el Pixhawk v1, para realizar la conexión a partir del GPIO de la computadora Raspberry Pi 3, favoreciendo el algoritmo de control diseñado. La Figura 3.22 muestra la configuración vectorizada final de los propulsores. Los propulsores de color verde tienen propelas con sentido horario mientras que los azules tienen sentido anti-horario. Abigayl Zareth Chargoy Cortez 36 CAPÍTULO 3. HARDWARE Figura 3.21: Esquema de conexión de los componentes para la operación del submarino. Los componentes numerados son: (1) Raspberry Pi 3. (2) RaspiCamera. (3) y (10) Fathom X. (4) Pixhawk v2. (5)Control de velocidades (ESC ×6). (6) Propulsores (× 6). (7) Lámparas (×4). (8) Regulador DC-DC 5V. (9) Bateŕıa LiPo 14.8V 4Cell. (11) Conector Ethernet-USB. (12) Computadora portátil. Figura 3.22: Configuración de los propulsores. Abigayl Zareth Chargoy Cortez 37 CAPÍTULO 3. HARDWARE 3.3.1. Componente Pixhawk Se remplazó el componente Pixhawk v1 por el componente Pixhawk v2(Figura 3.23). A diferencia de la versión 1 del componente Pixhawk, la versión 2 incluye para mayor precisión 3 IMUs, 2 compaces, 2 barómetros y entrada de alimentación dual. Figura 3.23: Componente Pixhawk v2. Cabe mencionar que el cambio de versiones del componente sólo se realizaó para me- jorar la precisión de los programas a desarrollar, puesto que utilizan protocolos idénticos se puede utilizar una versión u otra de las antes mencionadas. 3.3.2. Control electrónico de velocidad (ESC) Al sustituir el componente Pixhawk v1, se optó por realizar el control de los pro- pulsores mediante la computadora Raspberry Pi 3, esto para facilitar el algoritmo de control del veh́ıculo. Los pulsos para activar los propulsores serán enviados a los ESCs desde el GPIO de la Raspberry Pi. En la Figura 3.24 muestra la reconexión de los pro- pulsores al GPIO. La asignación de pines a los propulsores se muestra en la tabla 3.4, ver Figura 3.22 para identificar la posición de los propulsores. Propulsor Pin GPIO Propulsor 1 5 Propulsor 2 6 Propulsor 3 13 Propulsor 4 19 Propulsor 5 20 Propulsor 6 21 Lámparas 26 Tabla 3.4: Dimensiones y peso del BlueROV2. Abigayl Zareth Chargoy Cortez 38 CAPÍTULO 3. HARDWARE Figura 3.24: Conexión de los propulsores al GPIO de la Raspberry Pi 3. Abigayl Zareth Chargoy Cortez 39 CAPÍTULO 3. HARDWARE 3.4. Modelo matemático del BlueROV2 A partir del modelo virtual tridimensional del veh́ıculo BlueROV2 (ver Figura 3.25), se realizaron simulaciones de flujo a diferentes velocidades para obtener la fuerza de flui- do que se opone al movimiento del veh́ıculo. Las simulaciones fueron realizadas con el programa de diseño asistido por computadora (CAD, computer-aided design), Solid- works. Figura 3.25: Modelo virtual del BlueROV2. Las propiedades f́ısicas determinadas en el diseño son descritas en la tabla 3.5. Densidad 1000 kilogramos por metro cúbico Masa 9.44 kilogramos Volumen 0.01 metros cúbicos Área de superficie 2.58 metros cuadrados Centro de masa X=0.15 metros Y=0.15 metros Z=-0.13 metros Tabla 3.5: Propiedades f́ısicas del modelo virtual del veh́ıculo submarino BlueROV2. A partir de la simulación de obtuvieron los ejes principales de inercia, Px = 0.13 Py = 0.16 Pz = 0.22 (3.1) Abigayl Zareth Chargoy Cortez 40 CAPÍTULO 3. HARDWARE los momentos principales de inercia [kg*m2] medidos desde el centro de masa, Ix = (0.20, −0.06, 0.98) Iy = (0.98, −0.02, −0.20) Iz = (0.04, 1.00, 0.05) (3.2) los momentos de inercia [kg*m2] en el centro de masa y alineados con el sistema de coordenadas de resultadosLxx Lxy LxzLyx Lyy Lyz Lzx Lzy Lzz = 0.16 0.00 0.010.00 0.22 −0.01 0.01 −0.01 0.13 (3.3) y los momentos de inercia [kg*m2] medidos desde el sistema de coordenadas de salidaIxx Ixy IxzIyx Iyy Iyz Izx Izy Izz = 0.48 0.19 −0.160.19 0.56 −0.17 −0.16 −0.17 0.51 (3.4) Cabe mencionar que los parámetros obtenidos para el modelo matemático corresponden unicamente al cuerpo ŕıgido, dada la dificultad para realizar pruebas y cálculos de los valores dinámicos correspondientes a la masa añadida durante el desplazamiento bajo el agua del submarino. 3.4.1. Dinámica de cuerpo ŕıgido Se obtiene el vector de distancia desde el origen al centro de gravedad del veh́ıculo: rbg = [xg, yg, zg] > = [0.02, 0.01, 0.09] (3.5) La matriz de inercia de cuerpo ŕıgido (2.12) con (3.4) y (3.5), resulta: MRB = 9.4400 0 0 0 0.8496 −0.0944 0 9.4400 0 −0.8496 0 0.1888 0 0 9.4400 0.0944 −0.1888 0 0 −0.8496 0.0944 0.4800 −0.1900 −0.1600 0.8496 0 −0.1888 −0.1900 0.5600 −0.1700 −0.0944 0.1888 0 −0.1600 −0.1700 0.5100 (3.6) La matriz de centŕıpeta y de Coriolis de cuerpo ŕıgido dada en (2.17) para el veh́ıculo submarino BlueROV2 resulta: CRB(v) = [ 03×3 CRB12 CRB21 CRB22 ] (3.7) Abigayl Zareth Chargoy Cortez 41 CAPÍTULO 3. HARDWARE donde: CRB12 = 0.0944q + 0.8496r −0.1888q + 9.44w −0.1888r − 9.44v−0.0944p− 9.44w 0.8496r + 0.1888p −0.0944r + 9.44u −0.8496p+ 9.44v −0.8496q − 9.44u 0.1888p+ 1.1504q CRB21 = −0.0944q − 0.8496r 0.0944p+ 9.44w 0.8496p− 9.44v0.1888q − 9.44w −0.8496r − 0.1888p 0.8496q + 9.44u 0.1888r + 9.44v 0.0944r − 9.44u −0.1888p− 1.1504q CRB22 = 0 −0.17q − 0.16p+ 0.51r 0.17r + 0.19p− 0.56q0.17q + 0.16p− 0.51r 0 −0.16r − 0.19q + 0.48p −0.17r − 0.19p+ 0.56q 0.16r + 0.19q − 0.48p 0 3.4.2. Matriz de amortiguamiento Esta matriz es formada por los valores de la ecuación de fuerza de arrastre calculada con el programa de diseño Solidworks. Se realizaron las simulaciones con corrientes a distintas velocidades, de 0.5 a 2.5 m/s incrememtando de 0.5 m/s cada simulación, aplicadas sobre los ejes x,y y z del submarino. Los resultados son mostrados en la tabla 3.6. En la Figura 3.26 se muestra el proceso de la simulación. Figura 3.26: Simulación de flujo en el veh́ıculo BlueROV2 en el programa Solidworks. Abigayl Zareth Chargoy Cortez 42 CAPÍTULO 3. HARDWARE Velocidad Fuerza en x Fuerza eny Fuerza enz 0.5 m/s 0.9830 N 1.6551 N 2.2565 N 1.0 m/s 3.3845 N 6.5686 N 9.1274 N 1.5 m/s 8.7103 N 15.3064 N 20.5278 N 2.0 m/s 15.4635 N 27.2671 N 35.6842 N 2.5 m/s 24.1679 N 42.5371 N 56.2862 N Tabla 3.6: Resultados de fuerza de arrastre en el eje x, y y z. De valores obtenidos de la simulación de flujo se calcularon las ecuaciones carac- teŕısticas de la curva de cada uno de los ejes: yx = 24.095x 2 + 0.0613x+ 0.0043 (3.8) yy = 42.975x 2 − 0.3661x− 0.0185 (3.9) yz = 55.745x 2 + 0.4140x+ 0.0010 (3.10) Con los valores cuadráticos se estructura la matriz de amortiguamiento: D(v) = 24.059u 0 0 0 0 0 0 42.975v 0 0 0 0 0 0 55.745w 0 0 0 0 0 0 0.1966p 0 0 0 0 0 0 0.3606q 0 0 0 0 0 0 0.9514r (3.11) 3.4.3. Matriz de gravedad La matriz de gravedad se calcula a partir de los valores hidrostáticos del veh́ıculo sumergido, el peso W del veh́ıculo BlueROV2 y la fuerza de flotación Bf , siendo: W = 92.602N Bf = ρg∇ = 98.1N donde ρ es la densidad del agua, ∇ es el volumen de fluido desplazado por el veh́ıculo sumergido. La matriz de gravedad (2.22) resultante para el submarino es: g(η) = 5.498 sen θ − 5.498 cos θ senφ − 5.498 cos θ cosφ − 0.926 cos θ cosφ + 8.3341 cos θ senφ 8.3341 sen θ + 1.852 cos θ cosφ − 1.852 cos θ senφ − 0.926 sen θ (3.12) Abigayl Zareth Chargoy Cortez 43 CAPÍTULO 3. HARDWARE 3.4.4. Matriz de propulsores La matriz de propulsores se obtiene sustituyendo los datos de la posición y orienta- cióncde los propulsores, ver Figura 3.27. (a) (b) (c) Figura 3.27: Visión general de distancias y orientación de propulsores con respecto al centro de masa del submarino. Vista en los planos: (a) xy, (b) xz y (c) yz. Donde: l1 = 0.00635m l4 = 0.10795m a2 = 0.020m h2 = 0.0624m l2 = 0.09785m l5 = 0.00635m a3 = 0.125m h3 = 0.090m l3 = 0.01000m a1 = 0.14605m h1 = 0.0195m σ = 45° Se encuentran las fuerzas y los momentos producidos por un total de 6 propulsores: τ = B(α)u = 0.707 −0.707 0.707 −0.707 0 0 0.707 0.707 −0.707 −0.707 0 0 0 0 0 0 1 −1 0 0 0 0 −0.1042 −0.1243 0.1724 0.1911 0.1575 0.1763 0 0 F1 F2 F3 F4 F5 F6 (3.13) Abigayl Zareth Chargoy Cortez 44 Caṕıtulo 4 Software 4.1. Sistema operativo de la computadora del veh́ıcu- lo submarino El sistema operativo instalado en la computadora Raspberry Pi 3, utilizado para la puesta en operación del BlueROV2 pertenece a ArduSub and ArduPilot Project. La computadora tiene como funciones principales en el ROV la transmisión de video HD a la computadora del operador y comunicación entre el piloto automático y la computadora a travésde comunicaciones Ethernet. La computadora debe estar ejecutando el software Companion para funcionar correctamente con ArduSub. Actualmente, sólo el modelo B de Raspberry Pi 3 es compatible con el software de computadora Companion. El sistema operativo fue instalado en una memoria con extensión de 16GB. El proyecto ArduSub es una solución de código abierto con todas las funciones para veh́ıculos subacuáticos (ROV) operados a distancia y veh́ıculos subacuáticos autónomos (AUV). ArduSub es parte del proyecto ArduPilot y se derivó originalmente del código ArduCopter. El proyecto ArduSub está patrocinado por BlueRobotics. ArduSub tiene capacidades extensas listas para usar que incluyen control de estabilidad de retroalimen- tación, retención de profundidad y rumbo y navegación autónoma. ArduSub funciona con el software Ground Control Station que puede monitorear la telemetŕıa del veh́ıculo y realizar poderosas actividades de planificación de misiones. El sistema precompilado instalado en la Raspberry Pi 3 es el Firmware ArduSub Versión: Estable 3.5, bajo la licencia GPLv3. ArduSub está diseñado para trabajar con motores brushless. Los motores brushless requieren controladores electrónicos de velocidad (ESC) para funcionar. ArduSub requiere que todos los motores funcionen en 45 CAPÍTULO 4. SOFTWARE avance y retroceso, los ESC instalados admiten esta funcionalidad. 4.2. Programa QGruound Control QGroundControl es una programa que proporciona control de vuelo completo y de veh́ıculo configurados con uso de Firmware PX4, ArduPilot y ArduSub. Proporciona un uso fácil y directo para la operación de veh́ıculos. Se muestra la visualización del programa QGround Control en la Figura 4.1. Sus caracteŕısticas principales son: Configuración completa de los veh́ıculos propulsados por ArduPilot y PX4 Pro. Soporte de vuelo para veh́ıculos que ejecutan PX4 y ArduPilot (o cualquier otro piloto automático que se comunique mediante el protocolo MAVLink). Planificación de la misión para el vuelo autónomo. Pantalla de mapa de vuelo que muestra la posición del veh́ıculo, la trayectoria de vuelo, los puntos de referencia y los instrumentos del veh́ıculo. Video streaming con superposiciones de visualización de instrumentos. Soporte para la gestión de múltiples veh́ıculos. Figura 4.1: Programa QGround Control Abigayl Zareth Chargoy Cortez 46 CAPÍTULO 4. SOFTWARE La instalación y configuración del programa se llevó a cabo mediante el tutorial mostrado en la página oficial, http://qgroundcontrol.com/. 4.3. Modificaciones (sistema operativo y libreŕıas) Para el desarrollo de los algoritmos de control se realizaron en lenguaje C y C++, para el control de los motores y para el algoritmo de visión por computadora respectiva- mente, puesto que las libreŕıas utilizadas son escritas en los lenguajes de programación mencionados, lo que permite la compilación de los programas sin la utilización de len- guajes intérpretes que disminuyen la eficiencia de los algoritmos. Los programas desarrollados son diseñados para su ejecución a partir de la terminal de comandos de forma local o remota mediante conexión ssh. Se puede visualizar el sistema operativo de la computadora Raspberry Pi 3 utilizando un monitor conectado en el puerto HDMI, o de igual manera, se puede trabajar desde consola a través de la conexión ssh. Al ejecutar los programas mediante consola sin la utilización de lenguajes orientados a objetos se obtiene un menor tiempo durante la ejecución. Lo anterior per- mite ahorrar recursos de memoria de la computadora y evita que el consumo energético aumente, ahorrando bateŕıa en el veh́ıculo. Se instaló el sistema operativo Rasbian con escritorio de Raspberry Pi. Los datos de la versión instalada se muestra en la tabla 4.1. Sistema operativo Raspbian GNU/Linux Versión Debian 8 (Jessie) Kernel Linux raspberrypi Versión de kernel 4.14.81-v7+ Procesador armv71 Tabla 4.1: Datos del sistema operativo instalado. Además, se instalaron las libreŕıas de OpenCV, MavLink y PiGPIO para programar los algoritmos de control, de visión por computadora y de comunicación al componente Pixhawk a implementar. Revisar Apéndice A para ver la instalación de libreŕıas. Abigayl Zareth Chargoy Cortez 47 http://qgroundcontrol.com/ CAPÍTULO 4. SOFTWARE 4.4. Algoritmo de control de propulsores y lámparas A continuación se presenta el pseudocódigo del algoritmo de control de propulsores y lámpara, el cual env́ıan pulsos a partir de la conexión mostrada en la sección 3.3.2. El algoritmo funciona a partir de tres parámetros indicados por el usuario, el eje de desplazamiento o rotación (Eje), el porcentaje de potencia de funcionamiento de los propulsores (Ganancia) y el tiempo de activación de los propulsores (Tiempo). Algorithm 1 Control de propulsores 1: procedure Control(Eje,Ganancia, T iempo) 2: repeat 3: potencia← (stop±Ganancia ∗ 4) 4: if Eje ==′′ x” then 5: Activar propulsores para desplazamiento en x con potencia durante Tiempo segundos. 6: else if Eje == “y” then 7: Activar propulsores para desplazamiento en y con potencia durante Tiempo segundos. 8: else if Eje == “z” then 9: Activar propulsores para desplazamiento en z con potencia durante Tiempo segundos. 10: else if Eje == “roll” then 11: Activar propulsores para rotación en roll con potencia durante Tiempo segundos. 12: else if Eje == “yaw” then 13: Activar propulsores para rotación en yaw con potencia durante Tiempo segundos. 14: else if Eje ==′′ l” then 15: Activar lamparas con potencia. 16: end if 17: until Eje == “q” 18: end procedure A partir de la lectura de la entrada Eje se realiza la activación de ciertos propulsores para el desplazamiento del veh́ıculo indicado por el usuario. Los desplazamientos se realizan en los ejes x, y o z y las rotación en roll o yaw. El porcentaje de la potencia de funcionamiento de los propulsores va de 0 a 100 %. La activación de los propulsores se realiza de acuerdo a cada desplazamiento,según la configuración de los controladores de velocidad (ESC) utilizados, los pulsos de activación se encuentran entre 1100 y 1900. Los valores de entre 1100 a 1500 generan giros de Abigayl Zareth Chargoy Cortez 48 CAPÍTULO 4. SOFTWARE retroceso en los motores, mientras que con valores de entre 1500 y 1900 se realizan giros de avance; el valor 1500 es el punto de parada que indica cero revoluciones. La ganancia introducida admite valores enteros positivos o negativos. La asignación de las pulsaciones enviadas se calcula a partir de la relación: (stop± gain ∗ 4) donde la suma o resta (dependiendo el sentido en que se requiera girar los propulsores) de la ganancia (puede tener valor positivo o negativo) léıda, es multiplicada por cuatro. El coeficiente 4 proviene de una regla de tres, en donde la máxima(o mı́nima) ganancia de (-)100 % inyectada a los propulsores indica la asignación del número de pulsaciones permitido dentro del rango de 1100 a 1900, o de 1500 a 1900, donde el valor de parada es 1500. Siendo 1500 el valor de reposo, se asigna como valor fijo el cual aumentará para crear giros de avance en los motores o disminuirá para generar retroceso en los propulsores. De acuerdo a la configuración y posición de los propulsores, la activación para el desplazamiento y rotación en los ejes se muestra en la tabla 4.2. El código del programa se presenta en el Apéndice B. Acción Propulsores Sentido Desplazamiento en x Propulsor 1 y Propulsor 3 Positivo Propulsor 2 y Propulsor 4 Negativo Desplazamiento en y Propulsor 1 y Propulsor 2 Positivo Propulsor 3 y Propulsor 4 Negativo Desplazamiento en z Propulsor 5 Positivo Propulsor 6 Negativo Rotación en roll Propulsor 5 y Propulsor 6 Negativo Rotación en yaw Propulsor 1, Propulsor 2, Positivo Propulsor 3 y Propulsor 4 Tabla 4.2: Activación de propulsores de acuerdo a la acción asignada. 4.5. Algoritmo de visión por computadora El algoritmo de visión se realizó en tres etapas.
Compartir