Table Of ContentDisen˜o e implementacio´n de una arquitectura de control de
un ROV
Anil Motilal Mahtani Mirchandani
Escuela de Ingenier´ıa de Informa´tica.
Universidad de Las Palmas de G.C.
Escuela de Ingenier´ıa de Informa´tica. Universidad de Las Palmas de G.C.
Proyecto fin de carrera
T´ıtulo: Disen˜o e implementacio´n de una arquitectura de control de un ROV
Apellidos y nombre del alumno: Mahtani Mirchandani, Anil Motilal
Fecha : Septiembre de 2012
Tutor: Cabrera G´amez, Jorge
Escuela de Ingenier´ıa de Informa´tica. Universidad de Las Palmas de G.C.
Agradecimientos
Quisiera mostrar mi m´as sincero agradecimiento ...
A mi tutor, Jorge Cabrera, por haberme dado la oportunidad de desarrollar un proyecto tan
apasionante y haberme ayudado a hacerlo realidad.
A mi familia y a mi novia, por estar siempre dispuestos a apoyarme en todos los proyectos en
los que me embarque, con independencia de la dificultad o complejidad que puedan entran˜ar.
A mis compan˜eros del equipo Avora, por las apasionantes experiencias que hemos vivido juntos
en los u´ltimos meses.
A mis amigos, que como siempre son una fuente de ´animo, ilusi´on e inspiraci´on.
A todos los que no se encuentren dentro de las categor´ıas anteriormente mencionadas, pero
hayan aportado su granito de arena en mi proyecto y en mi formaci´on como profesional y persona.
Muchas gracias a todos.
Escuela de Ingenier´ıa de Informa´tica. Universidad de Las Palmas de G.C.
´
Indice general
1. Introduccio´n 9
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Organizacio´n de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Estado del arte 13
2.1. Veh´ıculos no tripulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Veh´ıculos submarinos aut´onomos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1. Slocum Glider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3. Veh´ıculos submarinos remotamente operados . . . . . . . . . . . . . . . . . . . . . . 18
3. Metodolog´ıa 23
3.1. Modelo en cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2. Modelo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.1. Pruebas de caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.2. Pruebas de caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4. Plan de trabajo y temporizaci´on 29
4.1. Ana´lisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2. Disen˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3. Implementaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.5. Documentacio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6. Temporizaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5. Recursos necesarios 35
5.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.1. Veh´ıculo submarino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2.1. Documentaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.2. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.3. Librer´ıas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.4. Mantenimiento y copias de seguridad . . . . . . . . . . . . . . . . . . . . . . 42
1
´
2 INDICE GENERAL
6. An´alisis 45
6.1. Ana´lisis de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.1.1. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.1.2. Requisitos no funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.2. Arquitecturas de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.2.1. Arquitecturas jera´rquicas o deliberativas . . . . . . . . . . . . . . . . . . . . 48
6.2.2. Arquitecturas hetera´rquicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2.3. Arquitecturas de supresio´n o reactivas . . . . . . . . . . . . . . . . . . . . . 51
6.2.4. Arquitecturas h´ıbridas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3. Sistema de comunicacio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.1. Remote procedure call (RPC) . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.2. Protocolo de terminal virtual (TELNET) . . . . . . . . . . . . . . . . . . . . 57
6.3.3. Colas de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3.4. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3.5. External data representation (XDR) . . . . . . . . . . . . . . . . . . . . . . 62
6.3.6. Real Time Streaming Protocol (RTSP) . . . . . . . . . . . . . . . . . . . . . 64
6.4. Sistema de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.1. Log4j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.4.2. Protocolo Syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.4.3. Logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5. Interfaz gra´fica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.1. GIMP Toolkit (GTK+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.2. Cairo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.5.3. Pango . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.5.4. GStreamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7. Disen˜o 77
7.1. Disen˜o Hardware del veh´ıculo submarino . . . . . . . . . . . . . . . . . . . . . . . . 77
7.1.1. Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.1.2. Actuadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.2. Arquitectura del sistema de control . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.2.1. Mo´dulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.2.2. Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.2.3. Disen˜o de controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.2.4. Supervisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.3. Sistema de comunicacio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.3.1. Protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.3.2. Serializaci´on de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3.3. Ejecuci´on de procedimientos remotos . . . . . . . . . . . . . . . . . . . . . . 93
7.4. Sistema de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.5. Sistema de operaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.5.1. Estructura del sistema de operacio´n . . . . . . . . . . . . . . . . . . . . . . . 99
7.5.2. Interfaz gra´fica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
´
INDICE GENERAL 3
8. Resultados y Pruebas 109
8.1. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.1.1. Sistema de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.1.2. Sistema de operaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.2. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9. Conclusiones y Trabajo Futuro 115
9.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2.1. Supervisor servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2.2. Adaptaci´on para la arquitectura modular . . . . . . . . . . . . . . . . . . . . 118
9.2.3. Ampliaci´on del repositorio de m´odulos . . . . . . . . . . . . . . . . . . . . . 118
9.2.4. Supervisores distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.2.5. Adici´on de sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
9.2.6. Utilizaci´on en un entorno real . . . . . . . . . . . . . . . . . . . . . . . . . . 119
A. Criterios de Portabilidad 121
A.1. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
A.2. Endianness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
A.3. Disposicio´n estructural de C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
A.4. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
A.5. Extensiones de GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
B. Estilo de programaci´on 127
B.1. Indentado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
B.2. L´ıneas largas y ristras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
B.3. Llaves y espacios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
B.4. Control de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
B.5. Funciones y valores de retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
B.6. Interfaces de programaci´on y objetos de datos . . . . . . . . . . . . . . . . . . . . . 130
B.7. Saltos incondicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
´
4 INDICE GENERAL
Description:Es capaz de realizar tareas como recoger muestras biológicas o muestras de agua a G. V. (2006). Writing Portable C with GNU Autotools. http:.