Logo Studenta

Controle de Veículo Submarino Não Tripulado

¡Este material tiene más páginas!

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 resultadosLxx 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 salidaIxx 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.

Continuar navegando

Otros materiales