trabajo fin de master extensión de las capacidades de...

55
Máster en Ingeniería Informática Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros Informáticos TRABAJO FIN DE MASTER Extensión de las capacidades de operación de robots aéreos en el entorno Aerostack Autor: Rafael Artiñano Muñoz Director: Martín Molina González MADRID, JUNIO DE 2019

Upload: others

Post on 20-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Máster en Ingeniería Informática

Universidad Politécnica de Madrid

Escuela Técnica Superior deIngenieros Informáticos

TRABAJO FIN DE MASTER

Extensión de las capacidades de operación de robotsaéreos en el entorno Aerostack

Autor: Rafael Artiñano Muñoz

Director: Martín Molina González

MADRID, JUNIO DE 2019

Page 2: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid
Page 3: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

ÍNDICE

1. Introducción 1

1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Descripción del problema 3

2.1. Robótica Aérea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3. Aerostack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.4. Comportamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.4.1. Motion-planning en Visual Servoing . . . . . . . . . . . . . . . . 7

2.4.2. Motion-planning . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. Diseño de la solucion 14

3.1. Auto-localización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.1. Comportamiento "Self Localize by odometry" . . . . . . . . . . . 15

3.2. Control de movimiento sobre mapas geométricos . . . . . . . . . . . . . 18

3.2.1. Comportamiento "Generate path in geometric map" . . . . . . . . 18

3.2.2. Comportamiento "Follow path in geometric map" . . . . . . . . . 22

3.3. Seguimiento de imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.3.1. Comportamiento "Select object image" . . . . . . . . . . . . . . 28

3.3.2. Comportamiento "Follow object image" . . . . . . . . . . . . . . 31

3.4. Interacción con el operador . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.4.1. Comportamiento "Request operator confirm recognition" . . . . . 35

4. Validación y pruebas 39

4.1. Entornos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1.1. Simulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1.2. ARDrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2. Pruebas realizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2.1. Auto-localización . . . . . . . . . . . . . . . . . . . . . . . . . . 43

I

Page 4: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

4.2.2. Control de movimiento sobre mapas geométricos . . . . . . . . . 44

4.2.3. Seguimiento de imágenes . . . . . . . . . . . . . . . . . . . . . 44

4.2.4. Interacción con operador . . . . . . . . . . . . . . . . . . . . . . 45

5. Conclusiones 47

6. Referencias 48

II

Page 5: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

ÍNDICE DE FIGURAS

1. Capas de Aerostack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Diagrama de la capa reactiva . . . . . . . . . . . . . . . . . . . . . . . . 6

3. Diagrama UML de behavior generico . . . . . . . . . . . . . . . . . . . 15

4. Diagrama del comportamiento Self Localize By odometry . . . . . . . . 16

5. Diagrama del comportamiento Generate Path in Geometric Map . . . . . 19

6. Diagrama del comportamiento Follow Path in Geometric Map . . . . . . 23

7. Diagrama del comportamiento Select Object Image . . . . . . . . . . . . 29

8. Diagrama del comportamiento Follow Object Image . . . . . . . . . . . . 32

9. Diagrama del comportamiento Request Operator Confirm Recognition . . 36

10. Interfaz del CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

11. Captura de RVIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

12. Foto del ARDrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

ÍNDICE DE TABLAS

ÍNDICE DE TABLAS1

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Algorithm:OwnCheckActivationsConditions . . . . . . . . . . . . . . . . . . . 26

Algorithm:societyPoseCallback . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Algorithm:obstaclesCallback . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

III

Page 6: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Algorithm:ownCheckActivationConditions . . . . . . . . . . . . . . . . . . . 30

Algorithm:boundingBoxCallback . . . . . . . . . . . . . . . . . . . . . . . . . 31

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Algorithm:ownSetUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Algorithm:ownStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Algorithm:ownRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Algorithm:ownStop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2. tabla de pruebas de comportamientos de Auto-localización . . . . . . . . 43

3. tabla de pruebas de comportamientos de control de movimiento en mapas

geométricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4. tabla de pruebas de comportamientos de seguimiento de imágenes . . . . 45

5. tabla de pruebas de comportamientos de interacción con el operador . . . 45

IV

Page 7: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Resumen

Este documento describe los estudios realizados sobre las distintas técni-

cas de planificación de movimiento, interacción con el usuario y lectura de la

información de los sensores para la creación de comportamientos que ayudan

a la mejora en estos aspectos. Se hablará del diseño, implementación y las

distintas pruebas realizadas sobre simuladores y drones reales.

Palabras clave: Aerostack, Comportamientos.

Abstract

This document describes the studies over the different tecniques of plan-

ification of movement, interaction with the user and information obtained

from the drone sensors for the development of behaviors that helps with the

improvement in those aspects. This document will describe the design, im-

plementation and the tests performed with simulators and real drones.

Keywords: Aerostack, Comportamientos.

V

Page 8: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

1. INTRODUCCIÓN

En la sociedad cada vez más informatizada, cada vez más se busca que se hagan las cosas

de la manera más automática posibles. Por ello aumenta el auge de todo aquello que tenga

cierto automatismo. En la actualidad es cada vez más común encontrarse algún elemento

que tenga un algoritmo de inteligencia artificial con el fin de ayudarnos en labores con las

que tenemos problemas debido a la complejidad de hacerlo por nosotros mismos o del vo-

lumen que se tendría que manejar. En este caso profundizaremos en vehículos autónomos

y dentro de estos los aéreos.

En la Universidad Politécnica de Madrid se desarrolló y actualmente se mantiene accesi-

ble un entorno software de uso libre, denominado Aerostack, que tiene como fin ayudar al

desarrollo de robots aéreos autónomos. El presente trabajo ha tenido como fin extender las

capacidades que ofrece dicho entorno para ciertos comportamientos autónomos de robots

aéreos.

Para ello este trabajo se centra en esa vertiente, donde se intenta aumentar el número

y complejidad de las acciones automáticas que realizar, permitiendo al usuario mayo-

res posibilidades a la hora de realizar tareas complejas, permitiendo distintos modos de

realización o por distintos métodos para adaptarse a toda situación.

Este se divide en 3 grandes partes:

En la primera permitiremos al usuario, planificar rutas usando los datos obtenidos de los

sensores y establecer rutas geométricas, intentando alcanzar el objetivo de la manera más

eficiente posible. Para ello planificaremos las rutas de forma eficiente y comprobaremos

que la ruta a seguir, es válida, ya que es necesario saber si la trayectoria generada sigue

siendo o no valida mientras esta siga en curso.

En la segunda se expondrá sobre un poco de interacción hombre-máquina, para pedir al

usuario confirmación en casos donde el nivel de incertidumbre sea alto, o donde el usuario

requiera confirmar una acción/observación.

En la tercera y última se hablará de auto localización y las funciones que permiten al

1

Page 9: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

dron saber su posición, esta se sabe que contiene un cierto error, así que se pueden llevar

a cabo otras técnicas para calcular la posición actual y hacer un control del error tanto

en componentes aleatorias como en elementos de cálculo no calibrados. En este caso

usaremos el altímetro y acelerómetro del vehículo aéreo y la cámara para realizar el ajuste

de la posición captada con la cámara, para realizar un cálculo más robusto, aunque no libre

de errores.

1.1. Objetivos

Los objetivos del presente trabajo son los siguientes:

1. Análisis de capacidades de los robots aéreos: Con este objetivo se intenta conseguir una

visión del modo de funcionamiento de este tipo de robots.

2. Diseño de nuevos algoritmos para la mejora o ampliación de capacidades actuales:

Se buscan nuevas soluciones que ayuden a la mejora y ampliación de comportamiento

existentes que se veian faltos de cierta funcionalidad o que se quería extender.

3. Diseño de soluciones integradas al código ya desarrollado: Se intenta que la nueva

solución no sea disruptiva con el sistema actual.

4. Programación de las soluciones: Se quiere que las soluciones planteadas tengan un

resultado verificable para asegurarnos que aquello que planteamos pueda ser evaluado.

5. Evaluación y pruebas del funcionamiento de las soluciones: Se busca comprobar que los

algoritmos son correctos así como el código desarrollados también es correcto. También

verificamos que estos sistemas se comportan como deben en sistemas reales.

2

Page 10: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

2. DESCRIPCIÓN DEL PROBLEMA

Para poder entender la solución planteada, hablaremos de la robotica aerea e introducire-

mos las herramientas y los distintos elementos dentro de estas.

2.1. Robótica Aérea

La robótica es un area extensa donde existen muchos campos, desde robots manejados de

forma remota, a robots manejados de forma autónoma. A su vez en paralelo, estos pueden

ser de distinto ámbito, desde robots de tierra, voladores, submarinos, que se desplazan por

la superficie del agua, incluso mixtos.

En este trabajo nos centramos en la robotica aérea y para ser más concreto en la autonoma.

El objetivo de esta parte de la robotica es que el vehículo aereo, sea capaz de realizar sus

acciones de manera autónoma dada solo la misión a realizar. Donde este tome decisiones

o incluso notifique al usuario observaciones o datos utiles para el mismo. También estos

datos pueden ser utiles para el dron u otros drones, por lo tanto es interesante la inclusión

de un sistema de comunicación para con otros drones o con usuarios.

Por tanto en este tipo de sistemas, por el momento se intenta que el dron sea capaz de

recibir una acción a realizar, donde puede ser desde muy generica a muy concreta y sea

capaz de llevarla a cabo.

Para este trabajo se han realizado comportamientos que serán integrados en una herra-

mienta llamada Aerostack.

Para poder introducir Aerostack primero debemos introducir ROS.

2.2. ROS

ROS es un middleware orientado a facilitar programación de modulos mediante una ar-

quitectura editor/subscriptor[1].

3

Page 11: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Este middleware cuenta con distintos componentes:

-topics: canales de comunicación de mensajes, los modulos se suscriben o publican en

estos para ayudar en la comunicación.

-modulos: son los codigos a ejecutar, estos ejecutan la funcionalidad y se comunican por

topics con otros modulos. Estos a su vez pueden ofrecer o consumir servicios proporcio-

nados por otros modulos.

-servicios: estos ofrecen una funcionalidad a otros modulos que reciben una entrada y

proporcionan una respuesta. Este tipo de elemento es util si se quiere utilizar una parte

concreta de un modulo sin que este interaccione de forma directa a traves del hilo princi-

pal.

Los lenguajes que ROS soporta son C++ y python aunque por rendimiento los modulos

se han implementado en C++.

Todos ellos se combinan facilitando la labor de comunicación entre procesos. Los cuales

son usados en la implementación de los distintos comportamientos a presentar y parte

integral del sistema que intentamos mejorar: Aerostack.

2.3. Aerostack

Aerostack es un sistema desarrollado en la universidad Politécnica de Madrid, para ser

más concretos en el grupo cvar, que permite la actuación autónoma de drones[2].

Este sistema permite realizar misiones para los drones que posteriormente llevarán a cabo.

Aerostack cuenta con distintas capas1 entre las cuales podemos distinguir:

1.Capa Reactiva: capa encargada de la recogida de datos, y de la activación de los distintos

actuadores hardware.

2.Capa ejecutiva: capa encargada de las acciones realizadas en la capa reactiva, esta capa

es de mayor nivel por lo tanto cuenta con más información y puede realizar operaciones

más complejas que requieran varios componentes.

4

Page 12: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

3.Capa deliberativa: capa encargada de acciones de mayor nivel que la anterior, en esta

capa ya se realiza un plan y se manda a la capa ejecutiva las acciones para llevarlo a cabo.

4.Capa reflectiva: capa encargada de observar el estado del dron e indicar a la capa de-

liberativa este y ver si es necesario realizar alguna modificación al plan actual. Si lo

pusieramos en terminos humanos este sería el sistema nervioso o receptores de estimu-

los(positivos y negativos).

5. Capa social: Capa que permite la interacción del dron. Esta se realiza con el usuario o

con otro dron, con el fin de obtener información que le ayude a completar la misión.

Figura 1: Capas de Aerostack

Dentro de la capa ejecutiva2, se puede encontrar el execution engine. Este modulo se

encarga de dos tareas fundamentales:

- La gestion de los comportamientos que puede llevar a cabo el dron. Estos comporta-

mientos componen la funcionalidad básica del dron, pero permiten realizar acciones más

complejas al combinarse en misiones. Estos se coordinan y ejecutan en el behavior ma-

nagement system.

- La gestión de creencias y distintos datos inferidos u observados por el dron.Estos compo-

nen su base de hechos, que son los hechos o resultados observados a los que denominamos

5

Page 13: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

creencias. Estas se actualizan, añaden o borran en el belief managment system.

Figura 2: Diagrama de la capa reactiva

2.4. Comportamientos

En esta sección se indican los tipos de comportamientos que se plantean incluir en Aeros-

tack y que permiten incrementar las capacidades de funcionamiento autónomo en robots

aéreos. Los comportamientos son:

1. Comportamiento encargado de habilitar los datos de los sensores de odometria a los

demás modulos. Este comportamiento complementa a los demás comportamientos que

hacen uso de los datos de posición y velocidad.

2. Comportamiento que se encarga de la generación de trayectorias del dron. Recibe el

punto al que se quiere llegar y genera una trayectoria para alcanzarlo.

3. Comportamiento que toma una trayectoria y sigue el camino que dicta dicha trayectoria.

Esta trayectoria puede estar generada de multiples maneras, la recibe en forma de puntos

y las conecta de modo que se genere un camino.

4. Comportamiento que permite al usuario seleccionar una imagen y guardarla para su

6

Page 14: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

posterior analisis o uso.

5. Comportamiento que toma una imagen y realiza un seguimiento de esta. Hace uso de

un planificador de movimientos para hacer su seguimiento.

6. Comportamiento que permite la interacción con el usuario. Este se encarga de realizar

preguntas al mismo con el fin de obtener información o permitir la confirmación de un

reconocimiento que se considera dudoso.

En las siguientes secciones se describe la forma en que se llevan a cabo los comporta-

mientos. Por su mayor complejidad, la descripción se centrará en métodos utilizados en

comportamientos relacionados con la planificación de movimiento: (1) seguimiento de

imágenes (visual-servoing) y (2) generación de trayectorias (motion planning).

2.4.1. Motion-planning en Visual Servoing

El método de visual servoing es el encargado de realizar el seguimiento de la velocidad y/o

aceleración necesaria para conseguir un posicionamiento del objeto, posición o imagen a

seguir[3].

Estos sistemas parten de minimizar el error1 que es la diferencia entre el punto deseado y

el punto actual del dron. También se tienen encuenta los parametros de la camara: como

el distancia focal, coordenadas del punto de referencia y ratio de las dimensiones de la

camara.

e(t) = s(m(t), a)− s∗ (1)

También se parte de que la variación de las posiciones de referencia depende de la ve-

locidad de dron linear en los 3 ejes y angular en los mismos generando vectores de 6

componentes. También se usa un jacoviano de transformación temporal, que proporciona

7

Page 15: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

la variación temporal para indicar el tiempo de cada paso.

s = Le ∗ vc (2)

Se observa que la variación del error es equivalente a la variación de la referencia.

e = s′(m′(t), a′)− s ∗ −s(m(t), a) + s∗ (3)

Como se puede ver en 3 el punto destino es fijo por lo que no aplica para la variación del

error, lo que hace que la variación del error sea la variación de las referencias.

Esta es la consideración general una vez en este punto se puede considerar que la derivada

del error sigue un decrecimiento exponencial(esta puede ser cualquier tipo de derivada,

es según diseño). Como ejemplo ponemos la derivada del decrecimiento exponencial.

∂e

∂t= −λ ∗ e (4)

Esto es debido a que la aplicación al ser negativa la hara menor y al ser una relación

del valor actual hace que el decrecimiento sea mayor al principio y va decreciendo la

reducción a medida que disminuye el error.

Debido a que la utilidad principal de este tipo de modelos es la de la generación de un

controlador de velocidades. Se considerarán las ecuaciones anteriores y el ejemplo de la

reducción exponencial para la generación de un modelo. Este modelo esta reflejado en la

ecuación . En esta se puede ver que se usa la variación del error estimada de forma ex-

ponencial, usando el error actual, para conseguir las velocidades necesarias para alcanzar

dicha reducción.

vc = −λ ∗ L+e ∗ e (5)

8

Page 16: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Una de las partes importantes el

Le (6)

el cual es como ya se mencionó antes el jacoviano de transformación temporal, este es

muy importante. Este parametro es dependiente de la interacción actual de la referencia

actual, lo que hace que sea necesario su calculo. Para esto se realizarán estimaciones. En

la ecuación anterior vemos que aparece

L+e (7)

esta hace referencia a la pseudo inversa Moore-Penrose. El objetivo es conseguir una

inversa en todos los casos independientemente de que no pueda existir, obteniendo una

aproximación lo suficientemente acertada.

La matriz de interacción se puede aproximar facilmente consiguiendo la matriz de varia-

ción de posición, considerando fijos los parametros de la camara. Para ello se realiza la

proyección de los puntos y se obtienen sus variaciones 3D mediante la siguiente ecuación

9 . Los signos negativos se refieren a que consideran que la variación en los puntos del

espacio es por el movimiento de la cámara(si mueves la camara a la derecha, la escena se

mueve hacia la izquierda). Una vez realizado esto dado que podemos extraer la matriz

Le (8)

usando extrayendo las velocidades de la ecuación obtenida de sustituir 9 sobre las ecua-

ciones de la proyección al plano de la cámara.

X = −vc − wc ×X (9)

Para obtener la matriz completa, dado que se requieren 6 grados de libertad, dado que

como mínimo se necesitan 6 factores, se emplean como minimo 3 puntos para determinar

la imagen.

9

Page 17: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Una vez descritos los distintos componentes, dentro del visual servoing génerico se en-

cuentran 2 tipos el IBVS y el PBVS, con objetivo fijo o variable. Dada la similaridad del

objetivo fijo y variable(se requiere introducir la variación del error existente entre el anti-

guo objetivo el actual), vamos a explicar sobre este. Dado que el comportamiento Follow

Object Image usa IBVS nos vamos a centrar en este.

El IBVS hace uso de vectores de parametros de 3 puntos. Estos puntos estan descritos en

coordenadas 2D en el plano de la camara. Para la estimación de

L+e (10)

se siguen multiples estrategias, las mas usadas son:

1. El empleo de

Le = Lx (11)

para todos los puntos. Para esto se requiere la obtención de una aproximación de cada

profundidad valor profundidad(Z). Este tiene gran coste y su variación se comporta nor-

malmente de forma constante, ya que al avanzar los puntos no tiene demasiada variación

de velocidad con respecto al punto actual.

2. El empleo de

Le∗ = Lx∗ (12)

solo para el punto final. No se requiere nada más que el calculo para cada una de las

metas. Su inicio es muy rápido. Esto se debe a que las velocidades a inducir pueden ser

muy distintas y tienden a mantenerse.

2. El empleo de

L+e = (

Le

2+

Le∗2

)+

(13)

se usan todos los puntos como en el primer caso. Se requiere el calculo exhaustivo al igual

que en el primero, pero se mejora su fase inicial al usar parte de la mejora que ofrece el

segundo metodo. Pero ofrece la linealidad y control de las velocidades que dan los puntos

10

Page 18: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

actuales que pueden proporcionar una aproximación menos abrupta.

2.4.2. Motion-planning

Para el motion planning son las tecnicas que permiten al dron realizar un movimiento se

forma precisa y sin colisionar con ningún obstaculo. Existen muchas tecnicas para esto,

pero nos vamos a centrar en 2 principales:

1. El potencial field.

Esta tecnica de evasión de obstaculos consiste en la generación de vectores usando fuer-

zas de atracción generadas por los puntos destino(suele haber solo uno) y las fuerzas de

repulsión generadas por los obstaculos.

Estas fuerzas se suman para obtener la fuerza total que determinará el movimiento.

Ftot = Fatt + Frep (14)

Para esto se generan dos ecuaciones para las dos fuerzas necesarias.

Freq = katt + ntarget (15)

Donde n es el vector unitario entre el punto actual y el objetivo, de modo que seguiremos

esa dirección. K es la constante de atracción.

En cuanto a las ecuaciones de repulsión se plantea la clasica:

⎧⎨⎩Krep ∗

∑j(

1d(pj ,qi)

− 1d0) ∗ nj d(pj, qi) < d0

0 otherwise(16)

En esta K representa la constante de repulsión, p es la posición del obstaculo, y q la del

punto. n representa el vector unitario entre nuestra posición y el obstaculo. Como se puede

observar este siempre retorna valores positivos o 0. Es por ello que el vector unitario o

11

Page 19: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

la contante de repulsión deben llevar el signo negativo que compense la desviación en

sentido opuesto sobre la posición q.

Existe otra forma planteada que es la que emplea aceleraciones. Esta no requiere de un

cambio de signo al contrario que la anterior.

⎧⎨⎩Krep ∗

∑j(

a∗qi2ad(pj ,qi)−q2i

) ∗ nj ∗ nqi qi > 0

0 otherwise(17)

En esta aparece a que es la aceleración máxima, q que es la velocidad actual y nqi que es

el vector unitario de la velocidad del dron. En esta se observa que en el denominador se

obtiene la velocidad inicial al cuadrado con signo negativo(La ecuación es la de la velo-

cidad en Movimiento rectilineo uniformemente acelerado). Esto determina que cuando la

distancia y aceleración dejan de superar a la velocidad por poco el el valor es minimo. Lo

que hace que el valor negativo sea maximo(Esta en el denominador). esto se ve potencia-

do si la aceleración y velocidad son altas. Aunque el nivel de rechazo puede decaer mucho

si el vector velocidad y el vector de posición y obstaculo no tienen un angulo donde se

pueda producir incidencia(el producto escalar de ambos depende del coseno del angulo,

donde si coinciden es máximo). A medida que decrece la distancia desde ese punto em-

pieza cada vez más a estabilizarse sin dejar de ser negativo, aunque el vector entre punto

y obstaculo puede llegar a división por 0 lo que puede provocar fallos si se acerca mucho.

2. Proabalistic Road:

Esta tecnica consiste en la generación de puntos aleatorios y conexión de unos a los otros

formando un grafo.

Esta tecnica permite observar si la conexión es posible al comprobar si el camino colisiona

con un obstaculo. Esto produce que sea bastante más lento que el potentialField, pero

resuelve otros problemas.

Los caminos se suelen generar entre puntos que esten proximos, para ello se recurre al

metodo del vecino más próximo, estos se obtienen en base a la distancia hasta llegar a un

12

Page 20: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

k preestablecido.

Una vez generado se recorre el grafo de forma optima mediante metodos como el algorit-

mo de Dijkstra o de Bellman-Ford. Con ello se consigue la trayectoria a seguir.

Este metodo es mas simple que el anterior, y resuelve problemas de imposibilidad de

movimiento en algunos casos debido a compensaciones de fuerzas. Hay problemas en el

Potential Field sobre el aumento de fuerza repulsiva a medida que nos acercamos al obje-

tivo. Esto se suele compensar añadiendo a la ecuación la relación entre el punto y la meta,

de modo que si nos acercamos disminuya el valor del vector, consiguiendo compesar esa

falla. También el hecho de que si estamos muy lejos esta no deba atraer con tanta fuerza y

pueda suprimir a las fuerzas de repulsión para ello se suele poner un limite de modo que

haga menor la atracción pero existente, esta se ira modificando de modo que se adapte a la

posición con respecto a la meta actual(también la de repulsión habria aumentado debido a

la corrección anterior, lo que hace a el limite una medida para evitar que se sobrepase por

mucho la fuerza de repulsión si la distancia al obstaculo es corta, provocando choques).

13

Page 21: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

3. DISEÑO DE LA SOLUCION

Los comportamientos a desarrollar, se construyen sobre módulos de ROS comunicados

entre sí mediante topics, y servicios que permitirán la activación y parada de los mismos.

Esto permite la coordinación de los distintos comportamientos.

También emplea el uso de servicios que permiten la comunicación con el belief manag-

ment system, que permite conocimiento de “creencias” o información capturada, que per-

mite saber el estado actual y si es viable la activación o continuación del comportamiento.

Cada comportamiento es de dos tipos:

1.Goal based: Tiene una condición de terminación, así que termina sin que el usuario

tenga que preocuparse por su finalización.

2.Recursive: No tienen condición de terminación, es el usuario en encargado de terminar

con ellos una vez hayan cumplido con su función. Algunos de estos están diseñados para

coexistir con otros comportamientos manteniéndose en segundo plano.

Todos independientemente de su tipo tienen unas funciones predeterminadas:

1.OwnStart: Es la función que realiza todas las acciones que luego serán monitorizadas.

2.OwnSetUp: Es la función que prepara todos los topics y servicios necesarios y prepara

al comportamiento para la realización de su funcionalidad.

3.OwnRun: Es la función que monitoriza si el comportamiento cumple o no su objetivo.

En aquellos que no necesitan esa comprobación(Recursive) no suele ser usada, aunque

pueden servir para monitorizar que no se producen errores.

4.OwnCheckActivationsConditions: Esta función es la encargada de comprobar que se

cumplen las condiciones de activación necesarias.

Todos los behaviors heredan del behavior process3, cada comportamiento puede realizar

acciones de diversa indole, a continuación se les presentaran aquellos desarrollados.

14

Page 22: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 3: Diagrama UML de behavior generico

3.1. Auto-localización

Este tipo de comportamientos permite obtener la posición actual del dron. Existen varias

formas de obtener la posición actual del dron.

3.1.1. Comportamiento "Self Localize by odometry"

Este comportamiento proporciona la posición del dron obtenida a través de sus sensores.

Estos proporcionan la X, Y y Z que representan sus coordenadas absolutas en el mapa

generado internamente por el dron. Estas coordenadas están en función del punto inicial

del que inicio el dron.

También permite la obtención de las velocidades del dron en cada uno de los ejes, así

como sus rotaciones en ángulos de Euler (yaw, pitch, roll).

La funcionalidad principal de este comportamiento es la activación de un modulo. Este

modulo es el "Self localization selector" el cual tiene 3 modos: 1. modo usando odometria:

este el el modo que se activa. 2. modo usando visual markers: este modo es para el uso

de marcadores visuales para obtener la posición. 3. modo ekfsensor fusion: realiza una

mezcla de los valores obtenidos de los distintos sensores para la localización.

15

Page 23: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Es el módulo que realiza la lectura de los datos del controlador del sensor y realiza en

calculo, en base a la posición actual y la posición anterior realizando, recibida por el

sensor. Esto permite al restar la actual a la anterior y dividirla por el periodo de obtención

de datos calcular la velocidad: v= x’ que dado que estamos en un sistema discreto 18

donde (t-t1) es mínimo).

x′ .=

(x(t)− x(t− 1))

(t− t1)(18)

A continuación se muestra el diagrama del comportamiento:

Figura 4: Diagrama del comportamiento Self Localize By odometry

En este diagrama se puede observar que se usa un servicio(circulo), que conecta el com-

portamiento con el Belief Manager System, este hace uso del topic consult_belief, que se

describirá más adelante.

También se observar que usa otro servicio para comunicarse con el Self Localization

Selector y ponerlo en modo odometria, lo que proporciona por sus topics estimated_pose

16

Page 24: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

y estimated_speed la posición y velocidad obtenida por los sensores del dron. Este hace

uso del change_self_localization_mode_to_odometry.

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

Algorithm 1: ownSetUp()

1

2 droneid ->String

3 droneNamespace -> String

4 directory -> String

5 consult_belief -> String

6 change_self_localization_mode_to_odometry -> String

Se puede observar en el pseudocódigo presentado anteriormente que el ownSetUp es el

metodo encargado de cargar los topics de los ficheros de configuración.

Algorithm 2: ownStart()

1

2 consult_belief -> Service consult_belief

3 change_self_localization_mode_to_odometry -> Service

change_self_localization_mode_to_odometry

4

5 call Service_change_self_localization_mode_to_odometry(void message)

Como se muestra en el pseudocódigo presentado anteriormente en el ownStart se crean

los servicios que usarán los topics como medio para realizar la petición al modulo que

la publica. También se realiza una llamada al servicio de self_localization_mode para

ponerlo en modo odometria. Para ello basta con mandar un mensaje vacio a ese servicio.

El metodo ownRun esta vacio y el metodo OwnCheckActivationsConditions no realiza

ninguna comprobación en este caso. Por tanto no hay algoritmo que presentar como pseu-

docódigo.

Los topics utilizados son:

1. change_self_localization_mode_to_odometry: Permite cambiar el modo del Self loca-

lization Selector a modo odometria.

17

Page 25: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

2. consult_belief: Permite obtener el resultado de la creencia solicitada(si existe).

3.2. Control de movimiento sobre mapas geométricos

Estos comportamientos tienen como objetivo la planificación y ejecución del desplaza-

miento de un dron. Esta evita obstáculos. En este caso es una planificación sobre un mapa

geométrico.

3.2.1. Comportamiento "Generate path in geometric map"

Este comportamiento es goal based. Este comportamiento es el encargado de generar una

trayectoria y añadirla a la base de datos de creencias del dron. Esta trayectoria generada

no tiene por qué ser definitiva, ya que esta puede no ser válida en el momento de la

ejecución del movimiento, por lo que es común llamarle varias veces durante la ejecución

del movimiento.

Este comportamiento activa procesos(módulos) que permiten el cálculo de trayectorias.

Estas se realizan usando las posiciones de los distintos obstáculos y generando un camino

mínimo dada una nube de puntos generada aleatoriamente sobre el mapa. Estos se conec-

tan en forma de grafo y se busca la distancia mínima entre ello (siempre que no colisionen

con los obstáculos, aunque esto se refleja en el grafo). Esta se rectifica para hacer que el

camino sea más suave evitando todo lo posible que el camino sea muy irregular. También

existe la posibilidad de obtener el camino mínimo usando mapeo de campo potencial que

ordena en base a distancias a los distintos puntos de origen a los posibles destinos.

A continuación se muestra el diagrama del comportamiento:

18

Page 26: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 5: Diagrama del comportamiento Generate Path in Geometric Map

Este diagrama muestra la conexión con el Belief Manager System, al igual que en el caso

anterior hace uso del consult_belief, pero esta vez añade creencias a la base de hechos

para ello usa el add_belief.

También se conecta con el trajectory planner, de donde solicta la trayectoria dado un punto

destino. Este punto destino se pasa a traves del droneMissionPoint y se recibe por medio

de droneTrajectoryAbsRefGenerated(Trajectory Ref) la trayectoria generada.

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

Algorithm 3: ownSetUp()

1

2 def ownSetUp()

3

4 droneid -> String

5 droneNamespace -> String

19

Page 27: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

6 directory -> String

7 consult_belief -> String

8 droneTrajectoryAbsRefGenerated -> String

9 add_belief -> String

10 droneMissionPoint -> String

11

12 end ownSetUp

Se puede observar en el pseudocódigo presentado anteriormente que el ownSetUp es el

metodo encargado de cargar los topics de los ficheros de configuración.

Algorithm 4: ownStart()

1

2 consult_belief -> Service consult_belief

3 subscriber droneTrajectoryAbsRefGenerated -> Subscribe

droneTrajectoryAbsRefGenerated

4 add_belief -> Service add_belief

5 droneMissionPoint -> Publisher droneMissionPoint

6 load coordinates(point)

7

8 Publish coordinates in Pub_droneMissionPoint

Como se muestra en el pseudocódigo presentado anteriormente en el ownStart se crean

los servicios que usarán los topics como medio para realizar la petición al modulo que

la publica. En este también se muestra que se usan los argumentos recibidos por yaml,

para enviarselos al trajectory planner a traves de el topic droneMissionPoint publicando

en este.

Algorithm 5: ownRun()

1

2

3 if camino generado then

4 return GOAL_ARCHIEVED

5 end if

6

7 if timer finished then

8 return timeout

9 end if

20

Page 28: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

En el pseudo código previamente presentado podemos ver el metodo ownRun este es el

que se dedica a comprobar que alguno de los estados de terminación se cumple y devuelve

la causa de la finalización del comportamiento.

El metodo OwnCheckActivationsConditions no realiza ninguna comprobación por tan-

to no se presenta. Pero si se presenta el metodo callback de la trayectoria debido a su

relevancia

1 def TrajectoryCallback()

2

3

4 llamada a Service_add_belief con la trayectoria de parametro.

5 camino generado -> true

6

7 end TrajectoryCallback

Como se puede observar en este callback se añade la trayectoria recibida a la base de

hechos del dron. También se establece la condición de terminación para indicar que la

generación de trayectorias ha finalizado con éxito.

Los topics utilizados son:

1. add_belief: Permite añadir una creencia a la base de hechos del dron. Esta se usa para

añadir la trayectoria a seguir una vez obtenida.

2. consult_belief: Permite obtener una creencia dado el nombre de la tupla. Esta se usa

para obtener parametros del dron contenidos en la base de hechos del mismo.

3. droneMissionPoint: Permite indicar al trajectory planner el punto destino al que quere-

mos llegar. Este generará una trajectoria para alcanzar ese punto.

4. droneTrajectoryAbsRefGenerated: Este topic contiene las trajectorias generadas por el

trajectory planner. Estas se añadirán a la base de hechos del dron.

21

Page 29: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

3.2.2. Comportamiento "Follow path in geometric map"

Este comportamiento es goal based. Es el encargado de tomar una trayectoria y seguirla

usando el trajectoryController. Mientras el trajectoryController se mantiene llevando a

siguiendo los puntos de la trayectoria, el comportamiento observa los obstáculos para

comprobar que el movimiento es seguro y no lleva a una colisión.

Este comportamiento activa los procesos(módulos) que permiten la ejecución del movi-

miento, siguiendo los puntos enviados al controlador de trayectoria. Hace comprobacio-

nes de las situaciones de cada obstáculo. Esta la realiza el society pose, que es el encargado

de observar cambios en los objetos y notificarlos.

La trayectoria se recibe a través de los parámetros, esto se debe a que de esta manera se

comporta de forma universal y es capaz de seguir trayectorias generadas con múltiples

técnicas ( potentialField, probabilistic road, Ocupancy Grid. . . ).

A continuación se muestra el diagrama del comportamiento:

22

Page 30: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 6: Diagrama del comportamiento Follow Path in Geometric Map

El diagrama muestra que como en casos anteriores se conecta con el Belief Manager

System a traves del consult_belief. Por otro lado usa el Self Localization Selector del que

obtiene la posición del dron por medio del estimated_pose y la velocidad y angulos de

rotación usando estimated_speed y rotation_angles respectivamente.

Este se comunica con el DroneCommand para colocar los controladores a MOVE usando

el topic command/high_level. También se conecta con el trajectory controller para realizar

el control de la trayectoria que se le pasa por medio del droneTrajectoryAbsRefGenerated

la trajectoria que se seguirá. A parte al trayectory controller se le pasa el yaw actual usando

el droneControllerYawRefCommand que usará como yaw del que partir para establecer

el camino. Por otro lado el trayectory controller consta de 3 modos: trajectory, speed y

point. Se requiere poner el trajectory controller en modo trajectory para poder indicarle

que la entrada la interprete de ese modo.

23

Page 31: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

Algorithm 6: ownSetUp()

1

2 estimated_pose -> String

3

4 estimated_speed -> String

5

6 command/high_level -> String

7

8 consult_belief -> String

9

10 add_belief -> String

11

12 rotation_angles -> String

13

14 societyPose -> String

15

16 obstacles -> String

17

18 droneTrajectoryAbsRefCommand -> String

19

20 droneTrajectoryController/setControlMode -> String

21

22 droneControllerYawRefCommand -> String

En el pseudocódigo presentado anteriormente podemos observar que al igual que en casos

anteriores la función ownSetUp permite cargar los valores de los topics para luego ser

empleados en ownStart.

Algorithm 7: ownStart()

1

2

3 String rotation_angles -> Subscriber rotation_angles

4

5 String droneTrajectoryAbsRefCommand-> Publisher droneTrajectoryAbsRefCommand

6

7 String estimated_pose -> Subscriber estimated_pose

8

9 String estimated_speed -> Subscriber estimated_speed

10

11 String command/high_level -> Publisher command/high_level

24

Page 32: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

12

13 String consult_belief -> Service consult_belief

14

15 String add_belief -> Service add_belief

16

17 String rotation_angles -> Subscriber rotation_angles

18

19 String droneControllerYawRefCommand -> Publisher droneControllerYawRefCommand

20

21 String obstacles -> Subscriber obstacles

22

23 String societyPose -> Subscriber societyPose

24

25 Load trajectory

26

27 publish trajectory in droneTrajectoryAbsRefCommand

28

29 publish yaw in droneControllerYawRefCommand

30

31 publish MOVE in command/high_level

En ownStart apreciamos como creamos los servicios, suscriptores y publishers para el

envio o recepción de valores. En este caso cargamos la trayectoria de un fichero yaml

que se enviará al trajectoryController por medio del droneTrajectoryAbsRefCommand,

también usamos el command/high_level para poner el DroneCommand en modo MOVE.

A parte el trajectory controller requiere el yaw inicial que se pasará por medio del topic

droneControllerYawRefCommand.

Algorithm 8: ownRun()

1

2

3 if pos_final == estimated_pose then

4 return GOAL_ARCHIEVED

5 end if

6 if timer_is_finished then

7 return TIMEOUT

8 end if

9 if fail then

10 return FAIL

11 end if

25

Page 33: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

En el fragmento anterior se describe el metodo ownRun donde vemos las distintas posi-

bilidades que permitirían terminar al comportamiento. Estas requieren alcanzar el punto

destino, que termine el timer o que ocurra alguna situación que requiera replanificar(fail),

estas se verán en el societyPoseCallback y el obstaclesCallback

Algorithm 9: OwnCheckActivationsConditions()

1

2

3 call Service consult_belief with battery(self,low)->query1

4

5 if query1 then

6

7 return tuple(error, "battery low")

8

9 end if

10

11 call Service consult_belief with LANDED->query2

12

13 if query2 then

14

15 return tuple(error, "drone landed")

16

17 end if

18

19 return tuple(ok, "")

En el metodo ownCheckActivationConditions podemos observar que para realizar el com-

portamiento se require un buen nivel de bateria, para evitar que el dron se desconecte en

mitad del comportamiento. También que el dron este en el aire ya que el dron no se des-

plaza una vez aterrizado.

Algorithm 10: societyPoseCallback()

1

2

3 if estimated_pose - drone_poses < 1 then

4 fail=true

5 end if

Algorithm 11: obstaclesCallback()

26

Page 34: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

1 fail=true

Para los dos callback anteriores, se observa que mientra que el que controla la posición

de los drones se espera a replanificar una vez estemos a una distancia corta de otro dron,

cuando se produce un cambio en los obstaculos se replanifica directamente. Esto se debe

a que suponemos que los drones conoces nuestra posición ya que se conectan a nosotros,

mientras que los obstaculos pueden ser de distinto tipo, produciendo situaciones donde

podemos a colisionar si no controlamos si la ruta es libre de obstaculos.

Los topics utilizados son:

1. consult_belief: Permite obtener una creencia a la base de hechos del dron.

2. estimated_pose: Permite obtener la posición actual del dron. Permitirá saber la posición

actual y si ha alcanzado su destino. También se usa para comprobar que no hay colisiones

con otros drones.

3. command/high_level: Permite cambiar el modo del DroneCommand para poner el dron

en modo MOVE, lo que inciará permitirá el movimiento del dron.

4. rotation_angles: Permite obtener los angulos de rotación del dron. Se pueden utilizar

para obtener la orientación del dron.

5. estimated_speed: Permite obtener la velocidad del dron. Esto permite saber si nos pa-

samos al alcanzar el objetivo o no. Esto ocurre cuando la velocidad en destino es mayor

de las esperada.

6.droneControllerYawRefCommand: Permite indicar al trajectory controller el angulo

yaw del dron. Esto permite al modulo tener un angulo inicial sobre el que realizar los

movimientos necesarios para moverse por los puntos de la trayectoria.

7.droneTrajectoryController/setControlMode: Permite poner el trajectory controller en

modo trajectoria y que por tanto use puntos como referencia.

8.societyPose: Permite obtener la posición de los drones que se encuentran en comunica-

27

Page 35: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

ción con este. Se usa para evitar colisiones ya que al estar comunicados pueden conocer

la trayectoria de nuestro dron y evitar interrupciones. Unicamente se pide replanificar

cuando se corre riesgo de choque.

9. obstacles: Permite obtener los obstaculos del mapa. Este se actualiza cuando cambian.

En ese caso se pide replanificar, debido a que no se tiene ningún control sobre estos, ni

los obstaculos tienen por que tener consciencia del dron(al ser más probable encontrarnos

en una situación desfavorable se replanifica para evitar riesgos).

10. droneTrajectoryAbsRefGenerated: Permite transmitir la trajectoria al trajectory con-

troller. Este la usará para seguir los puntos que componen la trayectoria hasta llegar al

destino.

3.3. Seguimiento de imagenes

Esta familia de comportamientos tiene como objetivo la selección y seguimiento de un

objeto capturado en una imagen.

3.3.1. Comportamiento "Select object image"

Este comportamiento es el encargado de seleccionar una imagen. El propósito principal es

el guardar una imagen para su posterior uso ya sea seguirla, como tratarla de otros modos.

Este comportamiento activa los procesos relativos al OpenTLD que permite la selección

de imágenes y creación del boundary box alrededor el objeto que marca los limtes de

cercanía que se pueden mantener en torno a este.

Esta imagen con todos sus parámetros relativos a la boundary box y al elemento selec-

cionado por al gui del OpenTLD en un rosbag. Este rosbag es un fichero con todos los

valores de los parámetros seleccionados en este caso la boundary box y la imagen a seguir.

Este comportamiento recibe el nombre del fichero donde se quiere guardar la imagen. No

es necesario especificarle que es .bag. Este comportamiento es goal based.

28

Page 36: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

A continuación se muestra el diagrama del comportamiento:

Figura 7: Diagrama del comportamiento Select Object Image

En el diagrama anterior se puede ver como hace uso del consult_belief para comunicarse

con el Belief Manager System. También se puede observar como esta el add_belief esto

se debe a que como mejora se podría incluir la imagen X con su fichero en la base de

hechos, por tanto no se hace uso actual de este.

Se conecta con el OpenTLD al que no envía ningún tipo de información ya que es

el usuario el que hace directamente la interacción con este. Pero recibe por medio de

tld_bb la imagen con su bounding box y se recibe si la imagen esta visible por meido del

is_object_on_frame.

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

Algorithm 12: ownSetUp()

1

2 tld_bb -> String

3 consult_belief-> String

4 is_object_on_frame -> String

29

Page 37: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Algorithm 13: ownStart()

1

2 String tld_bb -> Subscriber tld_bb

3 String consult_belief-> Service consult_belief

4 String is_object_on_frame -> Subscriber is_object_on_frame

Como se obseva el ownSetUp carga los topics y el ownRun crea los suscriptores y servi-

cios necesarios.

Algorithm 14: ownRun()

1

2 if image_recieved then

3 return GOAL_ARCHIEVED

4 end if

5 if timer_is_finished then

6 return TIMEOUT

7 end if

En el ownRun se observa que el comportamiento termina si recibe una imagen o si termina

el tiempo del timer.

Algorithm 15: ownCheckActivationConditions()

1

2 call Service consult_belief with battery(self,low)->query1

3

4 if query1 then

5

6 return tuple(error, "battery low")

7

8 end if

9

10 call Service consult_belief with LANDED->query2

11

12 if query2 then

13

14 return tuple(error, "drone landed")

15

16 end if

17

18 return tuple(ok, "")

30

Page 38: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

El ownCheckActivationConditions no permite la acción del comportamiento si la bateria

es baja y si esta aterrizado. Esto último se debe a que la imagen se toma para ser seguida

posteriormente y ese seguimiento requiere que el dron este en el aire. Por tanto facilita al

dron el reconocimiento de la imagen buscada en la imagen capturada con la camara en

ese momento.

Algorithm 16: boundingBoxCallback()

1

2 write in rosbag image

3

4 image_recieved -> true

Este callback recibe la imagen y la guarda en un rosbag para su posterior uso y/o analisis.

Los topics utilizados son: 1.tld_bb: Permite al usuario recibir la imagen seleccionada por

medio del openTLD. Esta viene con su bounding box.

2.is_object_on_frame: Permite al usuario conocer si en ese momento se observa la ima-

gen.

3. consult_belief: Permite consultar la base de creencias del dron para conocer su situación

actual.

3.3.2. Comportamiento "Follow object image"

Es un comportamiento goal based. Este comportamiento es el encargado de seguir una

imagen descrita en un fichero rosbag. Este sigue el objeto durante un tiempo pasado como

argumento al comportamiento.

Este comportamiento activa el proceso del IBVSController, este controlador es el que

mantendrá el objeto a una posición adecuada para no sobrepasar los límites de la boundary

box pero tampoco alejarse del objeto.

31

Page 39: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Este comportamiento recibe como parámetro el nombre del fichero de la imagen a seguir,

y lee del fichero rosbag. Una vez terminado el tiempo especificado este termina y deja

de seguir al objeto. El tiempo especificado es opcional, por defecto está colocado a 120

segundos.

A continuación se muestra el diagrama del comportamiento:

Figura 8: Diagrama del comportamiento Follow Object Image

Este diagrama muestra que al igual que en casos anteriores hacemos uso del consult_belief

para acceder a la base de hechos del Belief Manager System. También se conecta con el

DroneCommand, esto es para cambiar el modo del dron a MOVE de modo que se pue-

da realizar el movimiento, para seguir la imagen recibida como arguemento. Por último

se comunica con el IBVSController para enviar la imagen recibida y que comience el

seguimiento. El topic empleado es el tld_gui_bb.

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

32

Page 40: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Algorithm 17: ownSetUp()

1 estimated_pose -> String

2

3 estimated_speed -> String

4

5 command/high_level -> String

6

7 consult_belief -> String

8

9 add_belief -> String

10

11 rotation_angles -> String

12

13 tld_gui_bb -> String

Algorithm 18: ownStart()

1 String activate_behavior -> Service activate_behavior

2

3 String consult_incompatible_behaviors-> Service consult_incompatible_behaviors

4

5 String estimated_pose -> Subscriber estimated_pose

6

7 String estimated_speed -> Subscriber estimated_speed

8

9 String command/high_level -> Publisher command/high_level

10

11 String consult_belief -> Service consult_belief

12

13 String add_belief -> Service add_belief

14

15 String rotation_angles -> Subscriber rotation_angles

16

17 String tld_gui_bb -> Service tld_gui_bb

18

19 Load image

20

21 call Service tld_gui_bb with image

22

23 publish MOVE in Publisher command/high_level

Al igual que en casos anteriores ownSetUp y ownRun cargan los topics y crean los publis-

33

Page 41: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

hers, servicios y suscriptores. A parte de esto en el ownStart Se carga la imagen pasada

como argumento. Esto permite el uso de distintas imagenes, tomadas en distintos tiempos.

Esto es para no limitar a un tipo de fichero o de nombre.

También se coloca a MOVE el DroneCommand para permitir el movimiento del dron.

Algorithm 19: ownRun()

1 if timer_is_finished then

2

3 return GOAL_ARCHIEVED

4

5 end if

El ownRun solo termina cuando se alcanza el timeout y devuelve GOAL_ARCHIEVED

ya que es el objetivo de este comportamiento, seguir la imagen durante un tiempo prees-

tablecido.

Algorithm 20: ownRun()

1 call Service consult_belief with battery(self,low)->query1

2

3 if query1 then

4

5 return tuple(error, "battery low")

6

7 end if

8

9 call Service consult_belief with LANDED->query2

10

11 if query2 then

12

13 return tuple(error, "drone landed")

14

15 end if

16

17 return tuple(ok, "")

Al igual que en casos anteriores se requiere buen nivel de bateria y que el dron este

volando.

34

Page 42: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Los topics utilizados son: 1. tld_gui_bb: Permite enviar al IBVSController la imagen a

seguir y su bounding box.

2. command/high_level: Permite poner al dron en modo MOVE, esto permite iniciar el

movimiento del dron.

3.4. Interacción con el operador

Son comportamientos encargados de recibir información del usuario. Pueden realizar pre-

guntas de distinto tipo una vez se alcanza una condición definida.

3.4.1. Comportamiento "Request operator confirm recognition"

Este comportamiento pregunta al usuario y da como opciones distintas preguntas especi-

ficadas como parámetro en la activación del mismo. Es un comportamiento goal based.

En contraposición a otros comportamientos este para la activación de todos los comporta-

mientos de movimiento en la activación y al acabar los reactiva. Durante su ejecución este

permite la llamada cualquier comportamiento usando la interfaz(GUI) y lo puede realizar

usando las teclas especificadas en este. Esto es para permitir al usuario responder con

mayor nivel de seguridad la pregunta planteada.

A continuación se muestra el diagrama del comportamiento:

35

Page 43: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 9: Diagrama del comportamiento Request Operator Confirm Recognition

El diagrama anterior muestra que se conecta al behavior coordinator. Esto se debe a que

debe solicitar la activación de comportamientos. Estos son los comportamientos interru-

pidos y el keep hovering para interrumpir los comportamientos de movimiento durante la

ejecución del comportamiento. El topic empleado para esto es activate_behavior. Para po-

der activar los comportamientos interrumpidos se obtiene usando el consult_incompatible_behaviors

la lista de los behavior que se interrumpiran al ser incompatibles con el keep hovering.

Por otro lado se consultan creencias(consult_belief) como en los comportamientos an-

teriores, pero además se añaden y se borran. Esto se hace a través del add_belief y el

remove_belief. Esto es debido a que se deben añadir las creencias proporcionadas por el

usuario y borrar aquellas que el usuario no considere precisas o correctas.

En cuanto la implementación usado se va a ver la logica de las distintas funciones.

36

Page 44: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Algorithm 21: ownSetUp()

1

2

3 activate_behavior -> String

4

5 consult_incompatible_behaviors -> String

6

7 remove_belief -> String

8

9 consult_belief -> String

10

11 add_belief -> String

Algorithm 22: ownStart()

1

2

3 String activate_behavior -> Service activate_behavior

4

5

6

7 String consult_incompatible_behaviors-> Service consult_incompatible_behaviors

8

9

10

11 String add_belief -> Service add_belief

12

13

14

15 String remove_belief -> Service remove_belief

16

17

18

19 String consult_belief -> Service consult_belief

20

21

22

23 Load question

El ownSetUp y ownStart se comportan de un modo bastante standard cargando los topics

y creando los servicios a emplear.

37

Page 45: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Algorithm 23: ownRun()

1

2

3 if not first steps finished then

4

5 call Service consult_incompatible_behaviors for behavior KEEP_HOVERING ->

Result Keep_hovering_incompatibilites

6

7 call activate_behavior with HOVER

8

9 first steps finished <- true

10

11 end if

12

13 if not finished then

14

15 activate ui -> answer

16

17 call Service consult_belief with question -> query

18

19 if not query and answer confirm then

20

21 call Service add belief with tuple(question,answer)

22

23 end if

24

25 elif query and and answer confirm and query[1]!=answer then

26

27 call Service remove_belief with tuple(question,query[1])

28

29 call Service add belief with tuple(question,answer)

30

31 end if

32

33 elif query then

34

35 call Service remove_belief with tuple(question,query[1])

36

37 endif

38

39 end if

El ownRun es el encargado de activar el behavior KEEP_HOVERING y preguntar por los

38

Page 46: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

activos para guardarlos. Una vez guardados y activado el KEEP_HOVERING, se le pasara

el control a la interfaz grafica de donde se obtendrá el resultado, esto lleva a eliminar o

añadir según se necesite de la base de hechos.

Algorithm 24: ownStop()

1

2

3 call activate_behavior with Keep_hovering_incompatibilites

Una vez realizado el stop, se reactivan los comportamientos interrumpidos.

Los topics utilizados son: 1. activate_behavior: Permite solicitar al behavior coordinator la

activación de un comportamiento. Este parará todos los comportamientos incompatibles.

Esto permite iniciar el keep Hovering en activación lo que hace que el dron se detenga y

una vez se realiza la función de este comportamiento se reactivan aquellos parados en la

activación del keep hovering. Esto se hace guardando todos los comportamientos activos

incompatibles con el keep hovering.

2. consult_incompatible_behaviors: Permite solicitar al behavior coordinator todos los

behaviors activos incompatibles con respecto a uno dado.

3. add_belief: Permite añadir una creencia a la base de hechos. Se usa para añadir la

respuesta del usuario a las creencias del dron.

4. consult_belief: Permite consultar a la base de hechos del dron sobre el estado del dron.

5. remove_belief: Permite eliminar una creencia de la base de hechos, esta se usa si el

usuario considera que aquello preguntado no es cierto.

4. VALIDACIÓN Y PRUEBAS

Para la validación de los distintos comportamientos, se han realizado pruebas de distinta

indole, estas las especificaremos por cada grupo de comportamientos.

39

Page 47: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Estos comportamientos tienen pruebas individuales y pruebas de integración tanto con

comportamientos que hacen uso de sus salidas, como de comportamientos que pueden

realizar su acción de manera concurrente. Se espera que se detecte si es posible la activa-

ción dada la situación actual y si debe parar un comportamiento en ejecución o no debido

a incompatibilidades entre ellos.

Anteriormente a esto describiremos los entornos donde se han llevado las pruebas simu-

lador y ARDrone.

4.1. Entornos

4.1.1. Simulador

Este entorno se usa como primera fase de las pruebas. Existen dos componentes dentro

de este el CLI y RVIZ.

El CLI10 es una interfaz que muestra las distintas variables que se llevan a cabo por el

dron, en función de las acciones a realizar en la misión y del mapa que tiene el dron,

esta tiene una versión grafica donde se pueden ver todas las variables y el movimiento del

dron de acorde a las variables recogidas, como la posición actual del dron, la velocidad,

los angulos de rotación...

Esta se actualiza de acorde a los datos recibidos de los topics de localización del dron.

Estos se pueden activar y desactivar usando los comportamientos de auto-localización,

que permite el uso del "Self localization selector" en distintos modos, según el comporta-

miento usado para su activación.

40

Page 48: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 10: Interfaz del CLI

RVIZ11 es un simulador 3D que muestra el recorrido del dron y muestra un escenario

usando la información de posicion del dron y de los obstaculos. Este se usa para visualizar

el movimiento del dron a lo largo del mapa y su posición respecto a los obstaculos.

Esto sirve para ver visualmente si realiza lo esperado, aunque no asegura su funciona-

miento en el dron real.

41

Page 49: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 11: Captura de RVIZ

4.1.2. ARDrone

El ARDrone12 es un dron de pruebas donde se realizan vuelos reales. Este entorno es

para pruebas con condiciones reales, a las que preceden pruebas en el simulador. En al-

gunos casos este es el primer medio de pruebas debido a imposibilidad de simular ciertos

dispositivos.

Este entorno también hace uso de la interfaz grafica(GUI) para la carga de misiones y el

control por teclado del operario.

42

Page 50: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Figura 12: Foto del ARDrone

4.2. Pruebas realizadas

4.2.1. Auto-localización

Para este grupo de comportamientos realizamos las pruebas descritas en 2.

En esta se describen las pruebas, con el comportamiento a probar en cada una de ellas de

los comportamientos de este tipo. Podemos observar que se realizaron pruebas en conjun-

ción con otro tipo de comportamientos para verificar que permitian una integración con

los demás comportamientos, tanto nuevos como exitentes. En este caso no se especifica

en la tabla el comportamiento por que solo describe las realizadas en "Self Localize By

odometry".

Prueba Descripción resultado

Prueba1 comprobación de la activación de los modulos correcto

Prueba2 Comprobación de las condiciones de activación correcto

Prueba3 Comprobación de desactivación del modulo al terminar correcto

Prueba4 Prueba con comportamiento GO TO POINT correcto

Tabla 2: tabla de pruebas de comportamientos de Auto-localización

43

Page 51: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Se puede observar que la cantidad de pruebas no fue extensa ya que su proposito es muy

concreto que es recibir la posición cuando este se activa y comprobar que el proceso se

desactiva bien ya que no tienen condición de terminación los comportamientos de este

tipo presentados.

4.2.2. Control de movimiento sobre mapas geométricos

Para este grupo de comportamientos realizamos las pruebas descritas en 3.

En esta se describen las pruebas, en esta se describen pruebas para varios comportamien-

tos, asi que indicamos la prueba y el comportamiento al que se refiere. Se realizaron como

en el caso anterior pruebas en conjunción a otros comportamientos. En este caso era ne-

cesario para la generación de trayectorias y para seguimiento de las mismas.

Prueba Comportamiento Descripción resultado

Prueba1 Generate path in geometric map comprobación de la activación de los modulos correcto

Prueba2 Generate path in geometric map Comprobación de generación de trajectorias error: se recibio trayectoria incompleta

Prueba3 Generate path in geometric map Comprobación de generación de trajectorias error: se recibían trayectorias antiguas

Prueba4 Generate path in geometric map Comprobación de generación de trajectorias correcto

Prueba5 Follow path in geometric map Comprobación de seguimiento de trajectorias correcto

Prueba6 Follow path in geometric map Comprobación de seguimiento de trajectorias con obstaculos variables correcto: para al no poder seguir y lo notifica

Tabla 3: tabla de pruebas de comportamientos de control de movimiento en mapas geo-

métricos

Las pruebas llevadas a cabo fueron principalmente en el simulador, aunque también se

probó en el dron real. El funcionamiento dadas las pruebas realizadas parecen indicar que

funciona correctamente.

4.2.3. Seguimiento de imágenes

Las pruebas realizadas se pueden ver en 4.

Las pruebas realizadas en los comportamientos de este tipo, se realizaron directamente en

el dron real, ya que no se disponía de modo de recolección de imágenes ni movimiento

de la cámara de acorde, para la captura y seguimiento de las imágenes.

Se puede observar que el tipo de pruebas realizadas son muy similares. Esto es debido a

que se tratan de unos comportamientos que dependen mucho de los parámetros escogidos,

44

Page 52: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

Prueba Comportamiento Descripción resultado

Prueba1 Select object image Comprobación de salida del gui del openTLD correcto

Prueba2 Select object image Comprobación de recepción de la imagen correcto

Prueba3 Select object image Comprobación de no recepción por el IBVSController error: Se recibía la imagen en activación

Prueba4 Select object image Comprobación de no recepción de la imagen por el IBVSController correcto

Prueba5 Select object image Guardado de la imagen correcto

Prueba6 Follow object image Comprobación de seguimiento la imagen error: necesarias las bounding box

Prueba7 Follow object image Comprobación seguimiento de la imagen correcto

Prueba8 Follow object image Comprobación del timeout correcto

Tabla 4: tabla de pruebas de comportamientos de seguimiento de imágenes

ya que estos pueden provocar que la imagen tenga todos los puntos correctamente, la

sigue y si se mantiene a la distancia correcta en cada caso, cambiando el objeto a seguir e

interpretando la información de la bounding box.

4.2.4. Interacción con operador

Las pruebas realizadas se pueden ver en 5.

Este grupo de comportamientos solo consta de un comportamiento a probar por tanto se

omite el campo comportamiento. Este es en todas las filas el “Request operator confirm

recognition”.

Prueba Descripción resultado

Prueba1 comprobación muestra de la interfaz de selección correcto

Prueba2 Comprobación de muestra de la pregunta y opciones correcto

Prueba3 Comprobación de los botones generados correcto

Prueba4 Prueba de recepción de la respuesta correcto

Prueba5 Prueba de parada de los comportamientos correcto

Prueba6 Prueba de control del operario correcto

Prueba7 Prueba de reactivación de comportamientos correcto

Tabla 5: tabla de pruebas de comportamientos de interacción con el operador

Las pruebas realizadas se realizaron principalmente en el simulador, aunque también se

comprobó su funcionamiento en el dron real. Para este comportamiento se realizaron prue-

bas en conjunción con los comportamientos GO TO POINT, KEEP MOVING y KEEP

HOVERING

En todas las pruebas se usó la GUI, ya que esta tiene la función de conectarse con el dron

45

Page 53: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

real para el manejo manual por parte del operario.

En las pruebas realizadas podemos ver que principalmente se hicieron pruebas de parada

y continuación y que al reactivar los comportamientos se retornaba de forma correcta al

estado anterior de movimiento.

46

Page 54: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

5. CONCLUSIONES

Para concluir revisaremos los objetivos y como se ha conseguido completarlos:

1. Análisis de capacidades de los robots aéreos: Se ha hecho una revisión de los com-

portamientos y de las capacidades existentes para extenderlo. Esto ha sido trabajo de

investigación de los comportamientos y los elementos con los que estos interactúan.

2. Diseño de nuevos algoritmos para la mejora o ampliación de capacidades actuales: Se

ha realizado un diseño de mejora de algunos comportamientos existentes y se ha realizado

otros que permitan una mejora en las capacidades. Esta proporciona mayor flexibilidad

para la incorporación de nuevos comportamientos.

3. Diseño de soluciones integradas al código ya desarrollado: Se ha usado código ya

existente y se han generados nuevos comportamientos a partir de estos. Se han tenido

que realizar modificaciones y adaptación de algunos módulos relacionados con ellos para

conseguir un funcionamiento adecuado.

4. Programación de las soluciones: Se han desarrollado los modulos adecuados y se ha co-

dificado de acorde a las soluciones previamente diseñadas. Este se ha programado usando

ROS como middleware y C++ como lenguaje. Con ello se han generado 6 comportamien-

tos de los cuales cuatro suponen una mejora sobre los existentes anteriormente:

- Antiguos: behavior go to point; Nuevos: behavior generate path in geometric map y

behavior follow path in geometric Path.

- Antiguos: behavior follow object image; Nuevos: behavior select object image y beha-

vior follow object image.

Y dos nuevos: behavior self localize by odometry y behavior request operator confirm

recognition.

5. Evaluación y pruebas del funcionamiento de las soluciones: Se ha evaluado los nuevos

módulos producidos y se han puesto a prueba en situaciones reales. Las pruebas realizadas

se han podido observar en apartados anteriores y se han logrado que los comportamientos

47

Page 55: TRABAJO FIN DE MASTER Extensión de las capacidades de ...oa.upm.es/55743/1/TFM_RAFAEL_ARTINANO_MUNOZ.pdf · Máster en Ingeniería Informática Universidad Politécnica de Madrid

implementados realicen su función de forma correcta.

A partir de aquí se plantean nuevos comportamientos, nuevas posibles formas de genera-

ción de trayectorias o incluso inclusión de funcionalidad nueva en alguno de los compor-

tamientos existentes para aumentar su funcionalidad u optimizar la misma.

6. REFERENCIAS

[1] O. S. R. Foundation, ROS tutorials. dirección: http://wiki.ros.org/ROS/

Tutorials.

[2] J. Sanchez-Lopez, M. Molina, H. Bavle, C. Sampedro, R. A. S. Fernandez, J.Pestana

y P. Campoy, «multi-layered component-based approach for the development of ae-

rial robotic systems: the aerostack framework», journal of Intelligent and Robotic

Systems, págs. 1-27, 2007.

[3] B. Siciliano y O. Khatib, Springer Handbook of Robotics. Berlin,Heidelberg: Sprin-

ger, 2016.

48