diff --git a/memoria/capitulos/capitulo4.tex b/memoria/capitulos/capitulo4.tex index 9f1cc7e..b708698 100644 --- a/memoria/capitulos/capitulo4.tex +++ b/memoria/capitulos/capitulo4.tex @@ -111,7 +111,7 @@ \subsection{Teleoperador} Donde, tras inicializar el nodo \ac{ROS}, se definen por un lado los \textbf{suscriptores}, encargados de recibir los datos de la cámara y la posición del dron (usando MAVROS), los \textbf{publicadores}, cuya función es enviar posiciones y/o comandos al script controlador, y por último la \textbf{interfaz gráfica} diseñada con \textbf{OpenCV}, donde se define la ventana y los botones con las diversas acciones predefinidas \footnote{Código completo en \url{https://github.com/RoboticsLabURJC/2022-tfg-cristian-sanchez/blob/main/src/teleop/scripts/c2c_control.py}}.\\ -\section{Señales} +\section{Modelo de propagación de señal} \label{sec:signals} Continuando con el proyecto, entramos en el segundo gran bloque, las \textbf{señales \ac{RF}}. Este apartado fue especialmente relevante, ya que nos permitió desarrollar una aplicación reactiva, con la meta de generar entornos sobre los que probar soluciones robóticas.\\ @@ -275,45 +275,360 @@ \subsection{Aplicación de Friis} \end{figure} Cabe destacar que, por motivos de desarrollo, no se agregó la parte de generación dinámica de obstáculos a la aplicación, ya que esta se desarrollo como un extra al final del \ac{TFG}.\\ +% --------------------------------- +% \newpage +% \section{Integración conjunta} +% \label{sec:integration} -\newpage -\section{Integración conjunta} -\label{sec:integration} +% La integración conjunta engloba la parte final del proyecto, es la fase donde se juntaron las secciones anteriores, con el fin de generar el entorno deseado para resolver el problema.\\ + +% El objetivo, a parte de llevar a cabo la tarea encomendada, era comprobar y comparar los distintos algoritmos entre sí, a través de diversas métricas de rendimiento.\\ + +% \subsection{Primeros pasos} +% \label{subsec:primeros_pasos} + +% Inicialmente, se debía construir todo el entorno en base a lo anterior.\\ + +% Por ello, se diseñó una \textbf{aplicación servidor de datos}, que funciona como intermediaria con el módulo de Friis. Siendo concisos, dicha aplicación contiene \textbf{dos servidores} basados en \textbf{acciones \ac{ROS}}, que son especialmente útiles en este caso, dada su naturaleza asíncrona. Dichos servidores gestionan las peticiones para el dron y para rviz. A continuación detallamos cada caso: + +% \begin{enumerate} +% \item \emph{Caso dron}: a groso modo, el dron envía su posición en coordenadas transformadas al sistema de referencia del \emph{``heatmap''}, y recibe el valor de la señal de dichas coordenadas. En un caso real, el dron tan solo accedería al valor de la señal a través de un sensor que se lo permitiera. A posteriori, se agregó la funcionalidad de enviar, en dicha petición, si se deseaba un mapa con obstáculos o no. + +% \item \emph{Caso rviz}: recibe una petición donde se agregan todas las características de la señal para generar el \emph{``heatmap''} deseado, vease el origen y sus componentes. Esto, genera como respuesta un array de floats que contiene la información del mapa de calor, en un formato adecuado para su representación, es decir, para generar el mapa de forma gráfica, se emplea la biblioteca \textbf{grid\_map}, que a través de un topic de \ac{ROS}, permite enviar los datos a un plugin de rviz, el cual genera la representación visual buscada\footnote[2]{Toda la funcionalidad englobada en el directorio \textbf{heatmap\_util} del proyecto}. También se agregó la funcionalidad de los obstáculos para experimentación futura. +% \end{enumerate} +% \newpage +% \subsection{Algoritmos} +% \label{subsec:algoritmos} + +% En esta sección, se resume el núcleo del proyecto. Es el lugar donde se mostrarán todas las soluciones implementadas para comandar al dron hacía la resolución del problema y se explicará, desde la estructura general de la aplicación, hasta la lógica empleada detrás de cada algoritmo.\\ + +% Por ello, lo primero consistió en definir una \textbf{clase \emph{``Drone''}}, cuyo constructor se encargara de conectar los topics al controlador PX4 para comandar ordenes a la aeronave. Además, establece la comunicación con el servidor de datos (tanto para la potencia como para rviz) y se definen los diferentes atributos pertenecientes a la clase, que en este caso aluden a parámetros necesarios para los algoritmos y la extracción de resultados.\\ + +% En general, la clase sigue una estructura basada en lo siguiente: + +% \begin{enumerate} +% \item \emph{Métodos para comandar al dron}: o conjunto de funciones encargadas del movimiento del dispositivo (como despegar, aterrizar, desplazarse, entre otros). Mucha de esa funcionalidad fue adaptada del teleoperador realizado al inicio del \ac{TFG}. + +% \item \emph{Métodos de tolerancia}: encargados de establecer un margen aceptable entre la posición del dron y el objetivo deseado. Estos métodos sirven para controlar con precisión problemas que surgen de la deriva y de condiciones externas, como puede ser el viento. + +% \item \emph{Métodos de conversión}: que en este caso nos permiten transformar las coordenadas entre los sistemas de referencia, tal y como se puede apreciar a continuación. + +% \item \emph{Algoritmos}: o las soluciones propiamente dichas, que en sí contienen el conjunto de métodos que cada cual necesita para llevarse a cabo. Podemos distinguir entre \textbf{manual, manual optimizado y Q-Learning}. +% \end{enumerate} + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=10cm]{imagenes/cap4/8_reference_system.png} +% \end{center} +% \caption[Sistemas de referencia]{Sistemas de referencia} +% \label{fig:reference_sys} +% \end{figure} + +% En cuanto al desarrollo propiamente dicho de los algoritmos, se deben cumplir una serie de premisas de cara a la simulación.\\ + +% Primero que, \textbf{todos los movimientos realizados por el dron deben estar contenidos en el mapa de calor generado}; además, \textbf{la medida de la señal} sólo podrá tomarse cuando el dron esté en el \textbf{centro de la celda}; los movimientos del dron deberán ser \textbf{de centro en centro} aunque esto abarque más celdas de distancia (problema resuelto y adaptado del teleoperador); y cada celda mide 1x1 metros. + +% \subsubsection{Algoritmo manual} +% \label{subsec:alg-manual} + +% Es básicamente la primera aproximación, consiste en \textbf{visitar todos los vecinos más cercanos} y realizar el desplazamiento hacia las coordenadas del \textbf{vecino con mayor señal} medida.\\ + +% La \textbf{condición de parada} se basa en analizar si, las coordenadas objetivo de la iteración anterior son las mismas que las coordenadas objetivo de la iteración actual, además de que se cumpla que todos los vecinos colindantes tengan menor valor de señal mencionado.\\ + +% En cuanto a los métodos que usa, se encuentra el de verificar movimientos válidos y comprobar si ha llegado al final, mediante la verificación de que todos los vecinos adyacentes, tienen potencias de señal inferior.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=10cm]{imagenes/cap4/9_algoritmo_manual.png} +% \end{center} +% \caption[Representación algoritmo manual]{Representación algoritmo manual} +% \label{fig:manual_algorithm} +% \end{figure} -La integración conjunta engloba la parte final del proyecto, es la fase donde se juntaron las secciones anteriores, con el fin de generar el entorno deseado para resolver el problema.\\ +% \subsubsection{Algoritmo manual (optimizado)} +% \label{subsec:alg-manual-opt} -El objetivo, a parte de llevar a cabo la tarea encomendada, era comprobar y comparar los distintos algoritmos entre sí, a través de diversas métricas de rendimiento.\\ +% Tomando como referencia el algoritmo anterior, se buscó agregar ciertas mejoras y eficiencia. El principio es el mismo, obtener la información de los vecinos y navegar hacia el mejor candidato.\\ + +% La diferencia radica en \textbf{no revisitar vecinos} cuya información se conozca. Para ello se implementa un array que almacena hasta 18 coordenadas de vecinos visitados, de modo que solo se navega hacia coordenadas no contenidas en el mismo, y que por supuesto cumplan las condiciones del problema (no salir del mapa de calor, mover de centro a centro, entre otras).\\ + +% La condición de parada es idéntica a la anterior, y los métodos usados también.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=10cm]{imagenes/cap4/10_algoritmo_optimizado.png} +% \end{center} +% \caption[Representación algoritmo manual optimizado]{Representación algoritmo manual optimizado} +% \label{fig:opt_algorithm} +% \end{figure} + +% \subsubsection{Algoritmo Q-Learning} +% \label{subsec:alg-q} + +% El último algoritmo planteado, se basó en técnicas de \textbf{aprendizaje por refuerzo}. Concretamente empleando Q-Learning, que tal y como comentamos al principio de la memoria, consiste en la obtención de una tabla Q, de estados y acciones, donde se asignan valores numéricos cada acción según su estado, de modo que la acción más favorable acaba teniendo mayor valor que el resto.\\ + +% En nuestro caso, los \textbf{estados} son \textbf{las coordenadas del dron} en términos del mapa de calor, y las \textbf{acciones} son los \textbf{movimientos cardinales y diagonales}, de una o más celdas de distancia.\\ + +% Como todo algoritmo de esta naturaleza, posee dos fases bien diferenciadas, la \textbf{fase de entrenamiento}, cuyo objetivo es rellenar de forma eficaz la tabla Q, y la \textbf{fase de inferencia}, donde se prueban los resultados obtenidos del entrenamiento.\\ + +% Dentro del entrenamiento, distinguimos los \textbf{episodios}, que en nuestro caso son las llegadas a la fuente, o las salidas del mapa de calor (adicionalmente se probó añadir otra condición que fuera basada en el número de malas acciones consecutivas, pero para nuestra solución se decidió obviar); y las \textbf{iteraciones}, que se definen como el desempeño de una acción literalmente.\\ + +% Además, para rellenar el contenido de la tabla, se definieron las pertinentes \textbf{recompensas y penalizaciones} basadas en la diferencia entre la medidas, antes y después de realizar una acción (agregando un pequeño multiplicador a las recompensas negativas), excepto si se sale del mapa, en cuyo caso se establece una recompensa fija negativa, calculada en proporción al resto de recompensas. Posteriormente se asignan valores en la tabla Q, usando la ecuación de Bellman: +% \begin{equation} +% Q(s, a) = (1 - \alpha) \cdot Q(s, a) + \alpha \cdot \left(r + \gamma \cdot \mathrm{max}_{a'} Q(s', a')\right) +% \end{equation} +% Cabe destacar que, durante el entrenamiento, se especifican una serie de parámetros que fueron ajustados a través de la experimentación, entre los que se encuentran: el \textbf{número de episodios totales}, que repercute directamente en la \emph{fase de exploración} (detallado a continuación); el \textbf{parámetro $\alpha$}, o la tasa de aprendizaje, que afecta a la convergencia de las soluciones durante el aprendizaje; el \textbf{parámetro $\gamma$}, o factor de descuento, que atañe a la importancia de las acciones futuras con respecto a las inmediatas; y por último los valores de \textbf{epsilon ($\epsilon$)}, que determinan si la acción tomada será aleatoria o extraida de la tabla, esto está directamente asociado a la \emph{fase de exploración}, donde se prioriza la aleatoreidad con el fin de enriquecer con información la tabla Q.\\ + +% En nuestro caso, esta fase ocupa un \textbf{20\% del número de episodios}, de forma lineal, es decir, que cada vez la prioridad se va decantando más del lado de la tabla y no de la aleatoreidad (durante el entrenamiento siempre se mantiene cierta posibilidad de tomar una acción arbitraria, para seguir actualizando los datos).\\ + +% Para poder entrenar de forma eficiente, se establecieron distintos puntos de entrenamiento repartidos de forma uniforme por el mapa, hablaremos en detalle de esto, en la sección de métricas empleadas.\\ + +% Los métodos usados para Q-Learning, se basan en funcionalidades necesarias para desempeñar todo lo anterior, véase la generación de estados y acciones para la tabla, la extracción de índices dentro de la misma, el tratamiento del parámetro $\epsilon$, la obtención de coordenadas válidas, entre otros\footnote[3]{Todos los métodos están explicados dentro del código \url{https://github.com/RoboticsLabURJC/2022-tfg-cristian-sanchez/blob/main/src/teleop/scripts/algorithms.py}}.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=10cm]{imagenes/cap4/11_diagrama_training.png} +% \end{center} +% \caption[Esquema episodio fase de entrenamiento]{Esquema episodio fase de entrenamiento} +% \label{fig:training_phase} +% \end{figure} + +% Cabe resaltar que, si la acción tomada lleva al dron hacia una condición de final, este acaba el episodio, viaja hacia una nueva posición de entrenamiento y actualiza ciertos parámetros, como por ejemplo el parámetro $\epsilon$. La condición de final se aplica siempre tras actualizar los valores.\\ + +% Por último, en la \emph{fase de inferencia}, el dron analiza su estado (o sus coordenadas dentro del mapa de calor), y observa la mejor acción disponible dentro de la tabla Q ya rellena. Esto lo realiza hasta que detecta la condición de parada, que se cumple cuando la medida anterior de señal es mayor que la actual y todos los vecinos adyacentes a la medida anterior poseen señal inferior. Para hacer un correcto análisis, se parte siempre de coordenadas distintas a las que se usaron para entrenar y rellenar la tabla Q.\\ +% \newpage +% \subsection{Métricas empleadas} +% \label{subsec:metricas} + +% He decidido comentar las métricas empleadas en una sección individual, debido a la importancia que poseen de cara al desarrollo y los resultados del proyecto.\\ + +% En primer lugar se encuentra el \textbf{mapa de puntos}. Aquí se muestran las posiciones en el mapa de calor donde el dron entrenará, hará la inferencia (o desde donde partirá en los algoritmos manuales), además de la posición de la señal y propios los límites del mapa.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=7cm]{imagenes/cap4/12_puntos_30_esquina.png} +% \end{center} +% \caption[Mapa de puntos 30x30 con la señal en la esquina]{Mapa de puntos 30x30 con la señal en la esquina} +% \label{fig:30_points} +% \end{figure} + +% El siguiente gráfico representa el \textbf{camino seguido} por el dron al aplicar cada algoritmo para unas mismas coordenadas.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=5cm]{imagenes/cap4/13_trayectorias_12.png} +% \end{center} +% \caption[Trayectorias seguidas en mapa 12x12 con señal en el centro]{Trayectorias seguidas en mapa 12x12 con señal en el centro} +% \label{fig:12_traj} +% \end{figure} + +% A continuación se presenta uno de los gráficos más relevantes, en este caso, un gráfico triple que nos permite \textbf{conocer en detalle como ha ido el entrenamiento}. En concreto, representa tres métricas: el valor de \textbf{epsilon} ($\epsilon$), en el que se distingue la fase de exploración; la \textbf{recompensa acumulada}, que nos permite analizar la convergencia del entrenamiento; y el \textbf{número de iteraciones}, donde se observa que conforme el algoritmo aprende, el número se reduce. Todo ello con respecto a cada episodio.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/14_training_graph.png} +% \end{center} +% \caption[Gráfico de entrenamiento]{Gráfico de entrenamiento} +% \label{fig:training_graph} +% \end{figure} + +% Por último, se muestran los gráficos comparativos que nos dan un aproximado del \textbf{rendimiento} de cada algoritmo. En este caso, también se analizan tres cosas: el \textbf{tiempo medio} en segundos que tarda el dron desde que despega hasta que vuelve a su posición de despegue; el \textbf{número medio de iteraciones} empleadas para alcanzar la señal; y el \textbf{número medio de movimientos} hacía coordenadas donde la señal es menor y no mayor\footnote[4]{Los datos arrojados han sido guardados en formato \emph{csv}.}.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/15_avg_graphs.png} +% \end{center} +% \caption[Gráficos comparativos]{Gráficos comparativos} +% \label{fig:compare_graph} +% \end{figure} + +% \subsection{Experimentos y resultados} +% \label{subsec:experimentos_resultados} + +% Una vez sabemos que métricas se van a usar, queda ver que resultados arroja la experimentación. A excepción del último caso, las características de la señal siempre son los valores por defecto a excepción del tamaño del mapa, que se va modificando conforme el experimento. Además cabe destacar que la señal se toma como estática con respecto al dron, en posiciones diversas, también según el experimento a realizar.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=1cm]{imagenes/cap4/16_default_values.png} +% \end{center} +% \caption[Características de la señal por defecto]{Características de la señal por defecto} +% \label{fig:compare_graph} +% \end{figure} + +% Primero se probó sobre un escenario de tamaño \textbf{12x12 metros}, donde se distinguen dos posiciones de señal, una centrada y otra cerca de una esquina.\\ +% \newpage +% Para la \textbf{señal cerca del centro}, se dispuso en las coordenadas (5, 5) del \emph{``heatmap''}, siguiendo el siguiente mapa de puntos para los puntos de entrenamiento e inferencia:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/17_mapa_p_centro_12.png} +% \end{center} +% \caption[Mapa de puntos (12x12), señal centrada]{Mapa de puntos (12x12), señal centrada} +% \label{fig:map_p_center_12} +% \end{figure} + +% Los resultados obtenidos arrojan que el algoritmo más eficiente es el de Q-Learning, ya que tarda menos tiempo, realiza menos iteraciones hasta llegar a la meta y tiene un porcentaje inferior de malas acciones, tal y como podemos ver a continuación:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/18_comp_centro_12.png} +% \end{center} +% \caption[Comparativas (12x12), señal centrada]{Comparativas (12x12), señal centrada} +% \label{fig:comp_center_12} +% \end{figure} + +% En el caso de la \textbf{señal cerca de la esquina}, la señal se estableció en (3, 1) referente a las coordenadas del \emph{``heatmap''}, siendo su mapa de puntos el siguiente: + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/19_mapa_p_esq_12.png} +% \end{center} +% \caption[Mapa de puntos (12x12), señal en la esquina]{Mapa de puntos (12x12), señal en la esquina} +% \label{fig:map_p_esq_12} +% \end{figure} + +% En este caso, se obtiene la misma conclusión que en el escenario anterior, tal y como se puede apreciar a continuación:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/20_comp_esq_12.png} +% \end{center} +% \caption[Comparativas (12x12), señal en la esquina]{Comparativas (12x12), señal en la esquina} +% \label{fig:comp_esq_12} +% \end{figure} +% \newpage +% En segundo lugar, se incrementó el tamaño del mapa hasta \textbf{30x30 metros}.\\ + +% Nuevamente, para la \textbf{señal cerca del centro} en (12, 12): + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/21_mapa_p_centro_30.png} +% \end{center} +% \caption[Mapa de puntos (30x30), señal centrada]{Mapa de puntos (30x30), señal centrada} +% \label{fig:map_p_center_30} +% \end{figure} + +% En cuanto a los resultados, concluimos que Q-Learning vuelve a ser la mejor opción, que aunque se vea un incremento temporal y de iteraciones por el aumento de mapa, sigue superando al resto:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/22_comp_centro_30.png} +% \end{center} +% \caption[Comparativas (30x30), señal centrada]{Comparativas (30x30), señal centrada} +% \label{fig:comp_center_30} +% \end{figure} + +% Continuando con la \textbf{señal cerca de la esquina}, en este caso se encuentra en las coordenadas (5, 3), y su mapa de puntos es:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/23_mapa_p_esq_30.png} +% \end{center} +% \caption[Mapa de puntos (30x30), señal en la esquina]{Mapa de puntos (30x30), señal en la esquina} +% \label{fig:map_p_esq_30} +% \end{figure} + +% De igual modo vemos que el resultado de aprendizaje por refuerzo es claramente superior:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/24_comp_esq_30.png} +% \end{center} +% \caption[Comparativas (30x30), señal en la esquina]{Comparativas (30x30), señal en la esquina} +% \label{fig:comp_esq_30} +% \end{figure} +% \newpage +% Por último, se planteó un problema sólo para Q-Learning, en el cual se \textbf{entrenaba al modelo con una señal}, y se \textbf{realizaba inferencia con otra señal con características distintas}, aumentando la potencia del transmisor al doble y cambiando la frecuencia para simular una señal 5G, situada en (5, 3):\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=8cm]{imagenes/cap4/25_mapa_p_diff.png} +% \end{center} +% \caption[Mapa de puntos (30x30), señales diferentes]{Mapa de puntos (30x30), señales diferentes} +% \label{fig:map_p_diff_30} +% \end{figure} + +% Para este caso, el problema se resolvía de igual forma para ambos casos, con una cierta variación en el tiempo, derivada probablemente de la propia simulación:\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=7.5cm]{imagenes/cap4/26_comp_diff.png} +% \end{center} +% \caption[Comparativas (30x30), señales diferentes]{Comparativas (30x30), señales diferentes} +% \label{fig:comp_diff_30} +% \end{figure} + +% \subsection{Líneas a futuro - Experimentos con obstáculos} +% \label{subsec:experimentos_obstaculos} + +% El escenario planteado durante el \ac{TFG}, al fin y al cabo, es la aproximación más simple, es decir, en un \textbf{caso real} no es esperable un entorno vacío de perturbaciones y obstáculos. Por ello, el siguiente paso lógico es \textbf{implementar muros que distorsionen la señal} y ver como se comporta con Q-Learning.\\ + +% Para ello, la idea es conseguir modificar el módulo de Friis, para que pueda agregar de forma dinámica obstáculos al mapa, empleando un algoritmo que identifica si los puntos se encuentran dentro del polígono generado por las proyecciones de la señal, con los vértices del muro \cite{poly-info}. Posteriormente se degrada la señal usando un factor de pérdidas.\\ + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=6cm]{imagenes/cap4/27_points_poly.png} +% \end{center} +% \caption[Funcionamiento del algoritmo de puntos]{Funcionamiento del algoritmo de puntos} +% \label{fig:poly_algorithm} +% \end{figure} + +% Para las primeras pruebas, se estableciieron a mano los valores degradados de la señal, sobre un mapa con obstáculos.\\ + +% Además, la idea inicial era realizar el entrenamiento \textbf{sin obstáculos}, y ajustar los algoritmos para que fueran capaces de sortear los mismos.\\ +% \newpage +% De este modo, y cómo primera aproximación a este proceso, se distinguieron \textbf{dos casos}: + +% \begin{enumerate} +% \item \emph{El dron vuela por encima de la altura del obstáculo}: En cuyo caso se ve que es capaz de navegar satisfactoriamente hacia la señal, con las soluciones empleadas previamente. + +% \item \emph{El dron vuela a la misma altura que el obstáculo}: Donde se observa que la solución de Q-Learning queda insuficiente para resolver el problema, ya que el dron colisiona directamente con el obstáculo. Por ello, se plantea la idea de agregar un sistema de detección (o sensor) que permita al dron sortear los muros. Para el caso simulado simplemente se comprueba si la siguiente posición corresponde a un obstáculo en el mapa de calor y se actúa en consecuencia. Sin embargo, seguimos trabajando en este apartado. +% \end{enumerate} + +% \begin{figure} [H] +% \begin{center} +% \includegraphics[height=9cm]{imagenes/cap4/28_pseudosensor.png} +% \end{center} +% \caption[Simulación de sensor para obstáculo]{Simulación de sensor para obstáculo} +% \label{fig:pseudosensor} +% \end{figure} + +% -------------------------------------- +\newpage +\section{Comportamiento sigue señal basado en \ac{RF}} +\label{sec:signal_follow} -\subsection{Primeros pasos} -\label{subsec:primeros_pasos} +\subsection{Introducción al problema} +\label{subsec:intro_sf} -Inicialmente, se debía construir todo el entorno en base a lo anterior.\\ +El problema a resolver en este caso, es el de detectar y navegar hacia una señal, empleando diversos algoritmos, para compararlos posteriormente. Por consiguiente, se ha realizado una integración conjunta de todos los puntos mencionados anteriormente.\\ -Por ello, se diseñó una \textbf{aplicación servidor de datos}, que funciona como intermediaria con el módulo de Friis. Siendo concisos, dicha aplicación contiene \textbf{dos servidores} basados en \textbf{acciones \ac{ROS}}, que son especialmente útiles en este caso, dada su naturaleza asíncrona. Dichos servidores gestionan las peticiones para el dron y para rviz. A continuación detallamos cada caso: +Para ello, se ha diseñado una \textbf{aplicación servidor de datos}, que funciona como intermediaria con el módulo de Friis. Siendo concisos, dicha aplicación contiene \textbf{dos servidores} basados en \textbf{acciones \ac{ROS}}, que son especialmente útiles en este caso, dada su naturaleza asíncrona. Dichos servidores gestionan las peticiones para el dron y para rviz, tal y como se cuenta a continuación: \begin{enumerate} - \item \emph{Caso dron}: a groso modo, el dron envía su posición en coordenadas transformadas al sistema de referencia del \emph{``heatmap''}, y recibe el valor de la señal de dichas coordenadas. En un caso real, el dron tan solo accedería al valor de la señal a través de un sensor que se lo permitiera. A posteriori, se agregó la funcionalidad de enviar, en dicha petición, si se deseaba un mapa con obstáculos o no. + \item \emph{Caso dron}: en términos generales, el dron envía su posición en coordenadas transformadas al sistema de referencia del \emph{``heatmap''}, y recibe el valor de la señal de dichas coordenadas. En un caso real, el dron tan solo accedería al valor de la señal a través de un sensor que se lo permitiera. Además, se le ha agregado la funcionalidad de enviar, en dicha petición, si se deseaba un mapa con obstáculos o no, para compatibilizar el funcionamiento con entornos dinámicos. - \item \emph{Caso rviz}: recibe una petición donde se agregan todas las características de la señal para generar el \emph{``heatmap''} deseado, vease el origen y sus componentes. Esto, genera como respuesta un array de floats que contiene la información del mapa de calor, en un formato adecuado para su representación, es decir, para generar el mapa de forma gráfica, se emplea la biblioteca \textbf{grid\_map}, que a través de un topic de \ac{ROS}, permite enviar los datos a un plugin de rviz, el cual genera la representación visual buscada\footnote[2]{Toda la funcionalidad englobada en el directorio \textbf{heatmap\_util} del proyecto}. También se agregó la funcionalidad de los obstáculos para experimentación futura. + \item \emph{Caso rviz}: recibe una petición donde se agregan todas las características de la señal para generar el \emph{``heatmap''} deseado, vease el origen y sus componentes. Esto, genera como respuesta un array de floats que contienen la información del mapa de calor, en un formato adecuado para su representación, es decir, para generar el mapa de forma gráfica, se emplea la biblioteca \textbf{grid\_map}, que a través de un topic de \ac{ROS}, permite enviar los datos a un plugin de rviz, el cual genera la representación visual buscada\footnote[2]{Toda la funcionalidad englobada en el directorio \textbf{heatmap\_util} del proyecto}. También ha sido agregada la funcionalidad de los obstáculos para la experimentación futura. \end{enumerate} -\newpage + \subsection{Algoritmos} -\label{subsec:algoritmos} +\label{subsec:algoritmo_sf} -En esta sección, se resume el núcleo del proyecto. Es el lugar donde se mostrarán todas las soluciones implementadas para comandar al dron hacía la resolución del problema y se explicará, desde la estructura general de la aplicación, hasta la lógica empleada detrás de cada algoritmo.\\ +Antes de definir los algoritmos empleados, lo primero es determinar la base de la que se ha partido para desarrollarlos.\\ -Por ello, lo primero consistió en definir una \textbf{clase \emph{``Drone''}}, cuyo constructor se encargara de conectar los topics al controlador PX4 para comandar ordenes a la aeronave. Además, establece la comunicación con el servidor de datos (tanto para la potencia como para rviz) y se definen los diferentes atributos pertenecientes a la clase, que en este caso aluden a parámetros necesarios para los algoritmos y la extracción de resultados.\\ +Por ello, inicialmente se ha definido una \textbf{clase \emph{``Drone''}}, cuyo constructor se encarga de conectar los topics al controlador PX4 para comandar ordenes a la aeronave. Además, se encarga de establecer la comunicación con el servidor de datos (tanto para la potencia como para rviz) y define los diferentes atributos pertenecientes a la clase, que en este caso aluden a los parámetros necesarios para el funcionamiento de los algoritmos y la extracción de datos en los resultados.\\ -En general, la clase sigue una estructura basada en lo siguiente: +En general, la clase sigue la siguiente estructura: \begin{enumerate} - \item \emph{Métodos para comandar al dron}: o conjunto de funciones encargadas del movimiento del dispositivo (como despegar, aterrizar, desplazarse, entre otros). Mucha de esa funcionalidad fue adaptada del teleoperador realizado al inicio del \ac{TFG}. + \item \emph{Métodos para comandar al dron}: que se definen como el conjunto de funciones encargadas del movimiento del dispositivo (como despegar, aterrizar, desplazarse, entre otros). Mucha de esta funcionalidad ha sido adaptada del teleoperador comentado al de este capitulo. - \item \emph{Métodos de tolerancia}: encargados de establecer un margen aceptable entre la posición del dron y el objetivo deseado. Estos métodos sirven para controlar con precisión problemas que surgen de la deriva y de condiciones externas, como puede ser el viento. + \item \emph{Métodos de tolerancia}: encargados de establecer un margen aceptable entre la posición del dron y el objetivo deseado. Estos métodos permiten controlar con precisión problemas que surgen de la deriva y de condiciones externas, como puede ser el viento. - \item \emph{Métodos de conversión}: que en este caso nos permiten transformar las coordenadas entre los sistemas de referencia, tal y como se puede apreciar a continuación. + \item \emph{Métodos de conversión}: que permiten transformar las coordenadas entre los distintos sistemas de referencia presentes en el problema, tal y como se puede apreciar a continuación. - \item \emph{Algoritmos}: o las soluciones propiamente dichas, que en sí contienen el conjunto de métodos que cada cual necesita para llevarse a cabo. Podemos distinguir entre \textbf{manual, manual optimizado y Q-Learning}. + \item \emph{Algoritmos}: o las soluciones \emph{``sigue señal''} propiamente dichas, que en sí, contienen el conjunto de métodos que cada cual necesita para llevarse a cabo. Se puede distinguir entre \textbf{manual, manual optimizado y Q-Learning}. \end{enumerate} \begin{figure} [H] @@ -324,18 +639,18 @@ \subsection{Algoritmos} \label{fig:reference_sys} \end{figure} -En cuanto al desarrollo propiamente dicho de los algoritmos, se deben cumplir una serie de premisas de cara a la simulación.\\ +Por último y antes de entrar en los detalles de cada algoritmo, se deben cumplir una serie de premisas de cara a la simulación.\\ -Primero que, \textbf{todos los movimientos realizados por el dron deben estar contenidos en el mapa de calor generado}; además, \textbf{la medida de la señal} sólo podrá tomarse cuando el dron esté en el \textbf{centro de la celda}; los movimientos del dron deberán ser \textbf{de centro en centro} aunque esto abarque más celdas de distancia (problema resuelto y adaptado del teleoperador); y cada celda mide 1x1 metros. +Estas son que, \textbf{todos los movimientos realizados por el dron deben estar contenidos en el mapa de calor generado}; además, \textbf{la medida de la señal} sólo podrá tomarse cuando el dron esté en el \textbf{centro de la celda}; los movimientos del dron deberán ser \textbf{de centro en centro} aunque esto abarque más celdas de distancia (problema resuelto y adaptado del teleoperador); y que la métrica de cada celda es de 1x1 metros. \subsubsection{Algoritmo manual} \label{subsec:alg-manual} Es básicamente la primera aproximación, consiste en \textbf{visitar todos los vecinos más cercanos} y realizar el desplazamiento hacia las coordenadas del \textbf{vecino con mayor señal} medida.\\ -La \textbf{condición de parada} se basa en analizar si, las coordenadas objetivo de la iteración anterior son las mismas que las coordenadas objetivo de la iteración actual, además de que se cumpla que todos los vecinos colindantes tengan menor valor de señal mencionado.\\ +La \textbf{condición de parada} analiza si las coordenadas objetivo de la iteración anterior, son las mismas que las coordenadas objetivo de la iteración actual, además, se debe cumplir que todos los vecinos colindantes tengan un valor de la señal menor.\\ -En cuanto a los métodos que usa, se encuentra el de verificar movimientos válidos y comprobar si ha llegado al final, mediante la verificación de que todos los vecinos adyacentes, tienen potencias de señal inferior.\\ +En cuanto a los métodos que se usan, se encuentra el de verificar movimientos válidos y el de comprobar si ha llegado a la casilla final, mediante la verificación anterior (vecindad con menor señal).\\ \begin{figure} [H] \begin{center} @@ -348,9 +663,9 @@ \subsubsection{Algoritmo manual} \subsubsection{Algoritmo manual (optimizado)} \label{subsec:alg-manual-opt} -Tomando como referencia el algoritmo anterior, se buscó agregar ciertas mejoras y eficiencia. El principio es el mismo, obtener la información de los vecinos y navegar hacia el mejor candidato.\\ +Tomando como referencia el algoritmo anterior, se han agregado ciertas mejoras y eficiencia. El principio es el mismo, se obtiene la información de los vecinos y se navega hacia el mejor candidato.\\ -La diferencia radica en \textbf{no revisitar vecinos} cuya información se conozca. Para ello se implementa un array que almacena hasta 18 coordenadas de vecinos visitados, de modo que solo se navega hacia coordenadas no contenidas en el mismo, y que por supuesto cumplan las condiciones del problema (no salir del mapa de calor, mover de centro a centro, entre otras).\\ +La diferencia radica en \textbf{no revisitar vecinos} cuya información se conozce. Para ello, se ha implementado un array que almacena hasta 18 coordenadas de vecinos visitados, de modo que solo se navega hacia coordenadas nuevas, y que por supuesto cumplan las condiciones del problema (no salirse del mapa de calor, moverse de centro a centro, entre otras).\\ La condición de parada es idéntica a la anterior, y los métodos usados también.\\ @@ -365,25 +680,25 @@ \subsubsection{Algoritmo manual (optimizado)} \subsubsection{Algoritmo Q-Learning} \label{subsec:alg-q} -El último algoritmo planteado, se basó en técnicas de \textbf{aprendizaje por refuerzo}. Concretamente empleando Q-Learning, que tal y como comentamos al principio de la memoria, consiste en la obtención de una tabla Q, de estados y acciones, donde se asignan valores numéricos cada acción según su estado, de modo que la acción más favorable acaba teniendo mayor valor que el resto.\\ +Por último, se ha planteado un algoritmo basado en técnicas de \textbf{aprendizaje por refuerzo}. Concretamente empleando Q-Learning, que tal y como comentamos al principio de la memoria, consiste en la obtención de una tabla Q, de estados y acciones, donde se asignan valores numéricos cada acción según su estado, de modo que la acción más favorable acaba teniendo mayor valor numérico que el resto.\\ En nuestro caso, los \textbf{estados} son \textbf{las coordenadas del dron} en términos del mapa de calor, y las \textbf{acciones} son los \textbf{movimientos cardinales y diagonales}, de una o más celdas de distancia.\\ -Como todo algoritmo de esta naturaleza, posee dos fases bien diferenciadas, la \textbf{fase de entrenamiento}, cuyo objetivo es rellenar de forma eficaz la tabla Q, y la \textbf{fase de inferencia}, donde se prueban los resultados obtenidos del entrenamiento.\\ +Como todo algoritmo de esta naturaleza, se distinguen dos fases: la \textbf{fase de entrenamiento}, cuyo objetivo es rellenar de forma eficaz la tabla Q, y la \textbf{fase de inferencia}, donde se prueban los resultados obtenidos durante el entrenamiento.\\ -Dentro del entrenamiento, distinguimos los \textbf{episodios}, que en nuestro caso son las llegadas a la fuente, o las salidas del mapa de calor (adicionalmente se probó añadir otra condición que fuera basada en el número de malas acciones consecutivas, pero para nuestra solución se decidió obviar); y las \textbf{iteraciones}, que se definen como el desempeño de una acción literalmente.\\ +Dentro del entrenamiento, podemos encontrar \textbf{episodios}, que en nuestro caso son las llegadas a la casilla final, o a casillas fuera del mapa definido (adicionalmente se añadió otra condición basada en el número de malas acciones consecutivas, pero de cara a extraer el máximo número de datos posibles para la tabla Q, esta condición no era adecuada, por ello se obvió); y las \textbf{iteraciones}, que se definen literalmente como la realización de una acción.\\ -Además, para rellenar el contenido de la tabla, se definieron las pertinentes \textbf{recompensas y penalizaciones} basadas en la diferencia entre la medidas, antes y después de realizar una acción (agregando un pequeño multiplicador a las recompensas negativas), excepto si se sale del mapa, en cuyo caso se establece una recompensa fija negativa, calculada en proporción al resto de recompensas. Posteriormente se asignan valores en la tabla Q, usando la ecuación de Bellman: +Además, para rellenar el contenido de la tabla, se han definido las pertinentes \textbf{recompensas y penalizaciones} basadas en la diferencia entre la medidas, antes y después de realizar una acción (agregando un pequeño multiplicador a las recompensas negativas), contemplando casos extra, como cuando el dron se sale del mapa, donde se establece una recompensa fija negativa, calculada en proporción al resto de recompensas. Posteriormente, se asignan los valores obtenidos en la tabla Q, haciendo uso de la ecuación de Bellman: \begin{equation} Q(s, a) = (1 - \alpha) \cdot Q(s, a) + \alpha \cdot \left(r + \gamma \cdot \mathrm{max}_{a'} Q(s', a')\right) \end{equation} -Cabe destacar que, durante el entrenamiento, se especifican una serie de parámetros que fueron ajustados a través de la experimentación, entre los que se encuentran: el \textbf{número de episodios totales}, que repercute directamente en la \emph{fase de exploración} (detallado a continuación); el \textbf{parámetro $\alpha$}, o la tasa de aprendizaje, que afecta a la convergencia de las soluciones durante el aprendizaje; el \textbf{parámetro $\gamma$}, o factor de descuento, que atañe a la importancia de las acciones futuras con respecto a las inmediatas; y por último los valores de \textbf{epsilon ($\epsilon$)}, que determinan si la acción tomada será aleatoria o extraida de la tabla, esto está directamente asociado a la \emph{fase de exploración}, donde se prioriza la aleatoreidad con el fin de enriquecer con información la tabla Q.\\ +Cabe destacar que, durante el entrenamiento, se especifican una serie de parámetros que han sido ajustados a través de la experimentación, estos son: el \textbf{número de episodios totales}, que repercute directamente en la \emph{fase de exploración} (detallado a continuación); el \textbf{parámetro $\alpha$}, o la tasa de aprendizaje, que afecta a la convergencia de las soluciones durante el aprendizaje; el \textbf{parámetro $\gamma$}, o factor de descuento, que alude a la importancia de las acciones futuras con respecto a las inmediatas; y por último los valores de \textbf{epsilon ($\epsilon$)}, que determinan si la acción tomada será aleatoria o extraida de la tabla, esto está directamente asociado a la \emph{fase de exploración}, donde se prioriza la aleatoreidad con el fin de enriquecer con información la tabla Q.\\ En nuestro caso, esta fase ocupa un \textbf{20\% del número de episodios}, de forma lineal, es decir, que cada vez la prioridad se va decantando más del lado de la tabla y no de la aleatoreidad (durante el entrenamiento siempre se mantiene cierta posibilidad de tomar una acción arbitraria, para seguir actualizando los datos).\\ -Para poder entrenar de forma eficiente, se establecieron distintos puntos de entrenamiento repartidos de forma uniforme por el mapa, hablaremos en detalle de esto, en la sección de métricas empleadas.\\ +Para poder entrenar de forma eficiente, se han establecido distintos puntos de entrenamiento repartidos de forma uniforme por el mapa, tal y como se mencionará en la sección de métricas.\\ -Los métodos usados para Q-Learning, se basan en funcionalidades necesarias para desempeñar todo lo anterior, véase la generación de estados y acciones para la tabla, la extracción de índices dentro de la misma, el tratamiento del parámetro $\epsilon$, la obtención de coordenadas válidas, entre otros\footnote[3]{Todos los métodos están explicados dentro del código \url{https://github.com/RoboticsLabURJC/2022-tfg-cristian-sanchez/blob/main/src/teleop/scripts/algorithms.py}}.\\ +Los métodos usados para Q-Learning, se basan en las funcionalidades necesarias para desempeñar todo el proceso definido anteriormente, véase la generación de estados y acciones para la tabla, la extracción de índices dentro de la misma, el tratamiento del parámetro $\epsilon$, la obtención de coordenadas válidas, entre otros\footnote[3]{Todos los métodos están explicados dentro del código \url{https://github.com/RoboticsLabURJC/2022-tfg-cristian-sanchez/blob/main/src/teleop/scripts/algorithms.py}}.\\ \begin{figure} [H] \begin{center} @@ -393,59 +708,14 @@ \subsubsection{Algoritmo Q-Learning} \label{fig:training_phase} \end{figure} -Cabe resaltar que, si la acción tomada lleva al dron hacia una condición de final, este acaba el episodio, viaja hacia una nueva posición de entrenamiento y actualiza ciertos parámetros, como por ejemplo el parámetro $\epsilon$. La condición de final se aplica siempre tras actualizar los valores.\\ - -Por último, en la \emph{fase de inferencia}, el dron analiza su estado (o sus coordenadas dentro del mapa de calor), y observa la mejor acción disponible dentro de la tabla Q ya rellena. Esto lo realiza hasta que detecta la condición de parada, que se cumple cuando la medida anterior de señal es mayor que la actual y todos los vecinos adyacentes a la medida anterior poseen señal inferior. Para hacer un correcto análisis, se parte siempre de coordenadas distintas a las que se usaron para entrenar y rellenar la tabla Q.\\ -\newpage -\subsection{Métricas empleadas} -\label{subsec:metricas} - -He decidido comentar las métricas empleadas en una sección individual, debido a la importancia que poseen de cara al desarrollo y los resultados del proyecto.\\ - -En primer lugar se encuentra el \textbf{mapa de puntos}. Aquí se muestran las posiciones en el mapa de calor donde el dron entrenará, hará la inferencia (o desde donde partirá en los algoritmos manuales), además de la posición de la señal y propios los límites del mapa.\\ - -\begin{figure} [H] - \begin{center} - \includegraphics[height=7cm]{imagenes/cap4/12_puntos_30_esquina.png} - \end{center} - \caption[Mapa de puntos 30x30 con la señal en la esquina]{Mapa de puntos 30x30 con la señal en la esquina} - \label{fig:30_points} -\end{figure} - -El siguiente gráfico representa el \textbf{camino seguido} por el dron al aplicar cada algoritmo para unas mismas coordenadas.\\ +Cabe destacar que, si la acción tomada lleva al dron hacia una condición de final, este finaliza automáticamente el episodio, viajando hacia una nueva posición de entrenamiento y actualizando ciertos parámetros, como es el caso del parámetro $\epsilon$. La condición de final se aplica siempre tras actualizar los valores intrínsecos en la iteración.\\ -\begin{figure} [H] - \begin{center} - \includegraphics[height=5cm]{imagenes/cap4/13_trayectorias_12.png} - \end{center} - \caption[Trayectorias seguidas en mapa 12x12 con señal en el centro]{Trayectorias seguidas en mapa 12x12 con señal en el centro} - \label{fig:12_traj} -\end{figure} +Por último, en la \emph{fase de inferencia}, el dron analiza su estado (o sus coordenadas dentro del mapa de calor), y observa la mejor acción disponible dentro de la tabla Q ya rellena. Esto lo realiza hasta que detecta la condición de parada, que se cumple cuando la medida anterior de señal es mayor que la actual y todos los vecinos adyacentes a la mayor de las medidas, poseen señal inferior. Para hacer un correcto análisis, se parte siempre de coordenadas distintas a las que se usaron para entrenar y rellenar la tabla Q. -A continuación se presenta uno de los gráficos más relevantes, en este caso, un gráfico triple que nos permite \textbf{conocer en detalle como ha ido el entrenamiento}. En concreto, representa tres métricas: el valor de \textbf{epsilon} ($\epsilon$), en el que se distingue la fase de exploración; la \textbf{recompensa acumulada}, que nos permite analizar la convergencia del entrenamiento; y el \textbf{número de iteraciones}, donde se observa que conforme el algoritmo aprende, el número se reduce. Todo ello con respecto a cada episodio.\\ +\subsection{Experimentos} +\label{subsec:experimentos_sf} -\begin{figure} [H] - \begin{center} - \includegraphics[height=8cm]{imagenes/cap4/14_training_graph.png} - \end{center} - \caption[Gráfico de entrenamiento]{Gráfico de entrenamiento} - \label{fig:training_graph} -\end{figure} - -Por último, se muestran los gráficos comparativos que nos dan un aproximado del \textbf{rendimiento} de cada algoritmo. En este caso, también se analizan tres cosas: el \textbf{tiempo medio} en segundos que tarda el dron desde que despega hasta que vuelve a su posición de despegue; el \textbf{número medio de iteraciones} empleadas para alcanzar la señal; y el \textbf{número medio de movimientos} hacía coordenadas donde la señal es menor y no mayor\footnote[4]{Los datos arrojados han sido guardados en formato \emph{csv}.}.\\ - -\begin{figure} [H] - \begin{center} - \includegraphics[height=8cm]{imagenes/cap4/15_avg_graphs.png} - \end{center} - \caption[Gráficos comparativos]{Gráficos comparativos} - \label{fig:compare_graph} -\end{figure} - -\subsection{Experimentos y resultados} -\label{subsec:experimentos_resultados} - -Una vez sabemos que métricas se van a usar, queda ver que resultados arroja la experimentación. A excepción del último caso, las características de la señal siempre son los valores por defecto a excepción del tamaño del mapa, que se va modificando conforme el experimento. Además cabe destacar que la señal se toma como estática con respecto al dron, en posiciones diversas, también según el experimento a realizar.\\ +A excepción del último caso, las características de la señal siempre son los valores por defecto a excepción del tamaño del mapa, que se va modificando según el experimento. Además, cabe destacar que la señal se toma como un foco estático con respecto al dron, en posición centrada o cerca de una esquina, también en función del experimento.\\ \begin{figure} [H] \begin{center} @@ -455,9 +725,9 @@ \subsection{Experimentos y resultados} \label{fig:compare_graph} \end{figure} -Primero se probó sobre un escenario de tamaño \textbf{12x12 metros}, donde se distinguen dos posiciones de señal, una centrada y otra cerca de una esquina.\\ -\newpage -Para la \textbf{señal cerca del centro}, se dispuso en las coordenadas (5, 5) del \emph{``heatmap''}, siguiendo el siguiente mapa de puntos para los puntos de entrenamiento e inferencia:\\ +Primero se ha probado sobre un escenario de tamaño \textbf{12x12 metros}, con las dos posiciones de señal mencionadas:\\ + +Para la \textbf{señal cerca del centro}, situada en las coordenadas (5, 5) del \emph{``heatmap''}, se puede ver el siguiente mapa para los puntos de entrenamiento e inferencia:\\ \begin{figure} [H] \begin{center} @@ -467,7 +737,7 @@ \subsection{Experimentos y resultados} \label{fig:map_p_center_12} \end{figure} -Los resultados obtenidos arrojan que el algoritmo más eficiente es el de Q-Learning, ya que tarda menos tiempo, realiza menos iteraciones hasta llegar a la meta y tiene un porcentaje inferior de malas acciones, tal y como podemos ver a continuación:\\ +Los resultados obtenidos arrojan que el algoritmo más eficiente es el de Q-Learning, ya que tarda menos tiempo, realiza menos iteraciones hasta llegar a la meta y tiene un porcentaje inferior de malas acciones, tal y como se puede ver a continuación:\\ \begin{figure} [H] \begin{center} @@ -477,7 +747,7 @@ \subsection{Experimentos y resultados} \label{fig:comp_center_12} \end{figure} -En el caso de la \textbf{señal cerca de la esquina}, la señal se estableció en (3, 1) referente a las coordenadas del \emph{``heatmap''}, siendo su mapa de puntos el siguiente: +En el caso de la \textbf{señal cerca de la esquina}, la señal se sitúa en (3, 1) con respecto a las coordenadas del \emph{``heatmap''}, siendo su mapa de puntos el siguiente: \begin{figure} [H] \begin{center} @@ -487,7 +757,7 @@ \subsection{Experimentos y resultados} \label{fig:map_p_esq_12} \end{figure} -En este caso, se obtiene la misma conclusión que en el escenario anterior, tal y como se puede apreciar a continuación:\\ +En este caso, se obtiene la misma conclusión que en el escenario anterior, tal y como se ve a continuación:\\ \begin{figure} [H] \begin{center} @@ -497,9 +767,9 @@ \subsection{Experimentos y resultados} \label{fig:comp_esq_12} \end{figure} \newpage -En segundo lugar, se incrementó el tamaño del mapa hasta \textbf{30x30 metros}.\\ +En segundo lugar, se incrementa el tamaño del mapa hasta \textbf{30x30 metros}.\\ -Nuevamente, para la \textbf{señal cerca del centro} en (12, 12): +Nuevamente, para la \textbf{señal cerca del centro} situada en este caso en las coordenadas (12, 12), tenemos: \begin{figure} [H] \begin{center} @@ -509,7 +779,7 @@ \subsection{Experimentos y resultados} \label{fig:map_p_center_30} \end{figure} -En cuanto a los resultados, concluimos que Q-Learning vuelve a ser la mejor opción, que aunque se vea un incremento temporal y de iteraciones por el aumento de mapa, sigue superando al resto:\\ +En cuanto a los resultados, se concluye que el algoritmo de Q-Learning vuelve a ser la mejor opción, aunque se vea un incremento temporal y de iteraciones por el aumento del tamaño del mapa, sigue siendo superior en todo al resto:\\ \begin{figure} [H] \begin{center} @@ -519,7 +789,7 @@ \subsection{Experimentos y resultados} \label{fig:comp_center_30} \end{figure} -Continuando con la \textbf{señal cerca de la esquina}, en este caso se encuentra en las coordenadas (5, 3), y su mapa de puntos es:\\ +Continuando con la \textbf{señal cerca de la esquina}, que en este caso se encuentra en las coordenadas (5, 3), y donde su mapa de puntos es:\\ \begin{figure} [H] \begin{center} @@ -529,7 +799,7 @@ \subsection{Experimentos y resultados} \label{fig:map_p_esq_30} \end{figure} -De igual modo vemos que el resultado de aprendizaje por refuerzo es claramente superior:\\ +Vemos que el resultado de aprendizaje por refuerzo es claramente nuevamente mejor que el resto:\\ \begin{figure} [H] \begin{center} @@ -539,7 +809,7 @@ \subsection{Experimentos y resultados} \label{fig:comp_esq_30} \end{figure} \newpage -Por último, se planteó un problema sólo para Q-Learning, en el cual se \textbf{entrenaba al modelo con una señal}, y se \textbf{realizaba inferencia con otra señal con características distintas}, aumentando la potencia del transmisor al doble y cambiando la frecuencia para simular una señal 5G, situada en (5, 3):\\ +Finalmente, se ha realizado un experimento sólo para Q-Learning, en el cual se \textbf{entrena al modelo con una señal}, y se \textbf{realizaba inferencia con otra señal de características distintas}, aumentando la potencia del transmisor al doble y cambiando la frecuencia de Wi-Fi a 5G, pero manteniendo las coordenadas en las que se sitúa, que en este caso son (5, 3), lo que se ve en el siguiente mapa de puntos:\\ \begin{figure} [H] \begin{center} @@ -549,7 +819,7 @@ \subsection{Experimentos y resultados} \label{fig:map_p_diff_30} \end{figure} -Para este caso, el problema se resolvía de igual forma para ambos casos, con una cierta variación en el tiempo, derivada probablemente de la propia simulación:\\ +Para este caso, el problema se resuelve de igual forma para ambos casos, con una cierta variación irrelevante en la métrica temporal, derivada probablemente de la propia simulación:\\ \begin{figure} [H] \begin{center} @@ -559,37 +829,22 @@ \subsection{Experimentos y resultados} \label{fig:comp_diff_30} \end{figure} -\subsection{Líneas a futuro - Experimentos con obstáculos} -\label{subsec:experimentos_obstaculos} +\subsection{Resultados} +\label{subsec:resultados_sf} -El escenario planteado durante el \ac{TFG}, al fin y al cabo, es la aproximación más simple, es decir, en un \textbf{caso real} no es esperable un entorno vacío de perturbaciones y obstáculos. Por ello, el siguiente paso lógico es \textbf{implementar muros que distorsionen la señal} y ver como se comporta con Q-Learning.\\ +En conclusión, se puede ver que el algoritmo basado en aprendizaje por refuerzo es mejor en todos los casos, tal y como se pretendía demostrar, ya que toma un camino directo a la señal, lo que le hace más óptimo y eficiente en su labor.\\ -Para ello, la idea es conseguir modificar el módulo de Friis, para que pueda agregar de forma dinámica obstáculos al mapa, empleando un algoritmo que identifica si los puntos se encuentran dentro del polígono generado por las proyecciones de la señal, con los vértices del muro \cite{poly-info}. Posteriormente se degrada la señal usando un factor de pérdidas.\\ +\section{Comportamiento sigue señal basado en \ac{RF} en un entorno dinámico} +\label{sec:signal_follow_obs} -\begin{figure} [H] - \begin{center} - \includegraphics[height=6cm]{imagenes/cap4/27_points_poly.png} - \end{center} - \caption[Funcionamiento del algoritmo de puntos]{Funcionamiento del algoritmo de puntos} - \label{fig:poly_algorithm} -\end{figure} - -Para las primeras pruebas, se estableciieron a mano los valores degradados de la señal, sobre un mapa con obstáculos.\\ - -Además, la idea inicial era realizar el entrenamiento \textbf{sin obstáculos}, y ajustar los algoritmos para que fueran capaces de sortear los mismos.\\ -\newpage -De este modo, y cómo primera aproximación a este proceso, se distinguieron \textbf{dos casos}: +\subsection{Introducción al problema} +\label{subsec:intro_sfo} -\begin{enumerate} - \item \emph{El dron vuela por encima de la altura del obstáculo}: En cuyo caso se ve que es capaz de navegar satisfactoriamente hacia la señal, con las soluciones empleadas previamente. +\subsection{Algoritmo} +\label{subsec:algoritmo_sfo} - \item \emph{El dron vuela a la misma altura que el obstáculo}: Donde se observa que la solución de Q-Learning queda insuficiente para resolver el problema, ya que el dron colisiona directamente con el obstáculo. Por ello, se plantea la idea de agregar un sistema de detección (o sensor) que permita al dron sortear los muros. Para el caso simulado simplemente se comprueba si la siguiente posición corresponde a un obstáculo en el mapa de calor y se actúa en consecuencia. Sin embargo, seguimos trabajando en este apartado. -\end{enumerate} +\subsection{Experimentos} +\label{subsec:experimentos_sfo} -\begin{figure} [H] - \begin{center} - \includegraphics[height=9cm]{imagenes/cap4/28_pseudosensor.png} - \end{center} - \caption[Simulación de sensor para obstáculo]{Simulación de sensor para obstáculo} - \label{fig:pseudosensor} -\end{figure} \ No newline at end of file +\subsection{Resultados} +\label{subsec:resultados_sfo} \ No newline at end of file diff --git a/memoria/memoria.aux b/memoria/memoria.aux index 8b4c09c..43d8fb5 100644 --- a/memoria/memoria.aux +++ b/memoria/memoria.aux @@ -52,6 +52,8 @@ \AC@undonewlabel{acro:ROS} \newlabel{acro:ROS}{{}{\es@scroman {iv}}{\contentsname \@mkboth {\MakeUppercase \contentsname }{\MakeUppercase \contentsname }}{section*.8}{}} \acronymused{ROS} +\acronymused{RF} +\acronymused{RF} \AC@undonewlabel{acro:UAS} \newlabel{acro:UAS}{{}{\es@scroman {vi}}{\listfigurename }{section*.10}{}} \acronymused{UAS} @@ -268,17 +270,17 @@ \newlabel{cod:c2c_app}{{4.1}{25}{Main de center to center app}{code.caption.40}{}} \acronymused{ROS} \citation{basics-signals} -\@writefile{toc}{\contentsline {section}{\numberline {4.2}Señales}{26}{section.4.2}\protected@file@percent } -\newlabel{sec:signals}{{4.2}{26}{Señales}{section.4.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Modelo de propagación de señal}{26}{section.4.2}\protected@file@percent } +\newlabel{sec:signals}{{4.2}{26}{Modelo de propagación de señal}{section.4.2}{}} \acronymused{RF} \AC@undonewlabel{acro:ADC} -\newlabel{acro:ADC}{{4}{26}{Señales}{section*.41}{}} +\newlabel{acro:ADC}{{4}{26}{Modelo de propagación de señal}{section*.41}{}} \acronymused{ADC} \AC@undonewlabel{acro:RSSI} -\newlabel{acro:RSSI}{{5}{26}{Señales}{section*.42}{}} +\newlabel{acro:RSSI}{{5}{26}{Modelo de propagación de señal}{section*.42}{}} \acronymused{RSSI} \AC@undonewlabel{acro:SNR} -\newlabel{acro:SNR}{{6}{26}{Señales}{section*.43}{}} +\newlabel{acro:SNR}{{6}{26}{Modelo de propagación de señal}{section*.43}{}} \acronymused{SNR} \citation{friis-1} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Aproximación de Friis}{27}{subsection.4.2.1}\protected@file@percent } @@ -303,15 +305,15 @@ \@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces Versión final de la interfaz}}{32}{figure.caption.49}\protected@file@percent } \newlabel{fig:friis_end_app}{{4.7}{32}{Versión final de la interfaz}{figure.caption.49}{}} \acronymused{TFG} -\@writefile{toc}{\contentsline {section}{\numberline {4.3}Integración conjunta}{33}{section.4.3}\protected@file@percent } -\newlabel{sec:integration}{{4.3}{33}{Integración conjunta}{section.4.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Primeros pasos}{33}{subsection.4.3.1}\protected@file@percent } -\newlabel{subsec:primeros_pasos}{{4.3.1}{33}{Primeros pasos}{subsection.4.3.1}{}} +\acronymused{RF} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Comportamiento sigue señal basado en \ac {RF}}{33}{section.4.3}\protected@file@percent } +\newlabel{sec:signal_follow}{{4.3}{33}{Comportamiento sigue señal basado en \ac {RF}}{section.4.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Introducción al problema}{33}{subsection.4.3.1}\protected@file@percent } +\newlabel{subsec:intro_sf}{{4.3.1}{33}{Introducción al problema}{subsection.4.3.1}{}} \acronymused{ROS} \acronymused{ROS} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Algoritmos}{34}{subsection.4.3.2}\protected@file@percent } -\newlabel{subsec:algoritmos}{{4.3.2}{34}{Algoritmos}{subsection.4.3.2}{}} -\acronymused{TFG} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Algoritmos}{33}{subsection.4.3.2}\protected@file@percent } +\newlabel{subsec:algoritmo_sf}{{4.3.2}{33}{Algoritmos}{subsection.4.3.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.8}{\ignorespaces Sistemas de referencia}}{35}{figure.caption.50}\protected@file@percent } \newlabel{fig:reference_sys}{{4.8}{35}{Sistemas de referencia}{figure.caption.50}{}} \@writefile{toc}{\contentsline {subsubsection}{Algoritmo manual}{35}{subsubsection*.51}\protected@file@percent } @@ -326,72 +328,67 @@ \newlabel{subsec:alg-q}{{4.3.2}{37}{Algoritmo Q-Learning}{subsubsection*.55}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.11}{\ignorespaces Esquema episodio fase de entrenamiento}}{39}{figure.caption.56}\protected@file@percent } \newlabel{fig:training_phase}{{4.11}{39}{Esquema episodio fase de entrenamiento}{figure.caption.56}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Métricas empleadas}{40}{subsection.4.3.3}\protected@file@percent } -\newlabel{subsec:metricas}{{4.3.3}{40}{Métricas empleadas}{subsection.4.3.3}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.12}{\ignorespaces Mapa de puntos 30x30 con la señal en la esquina}}{40}{figure.caption.57}\protected@file@percent } -\newlabel{fig:30_points}{{4.12}{40}{Mapa de puntos 30x30 con la señal en la esquina}{figure.caption.57}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.13}{\ignorespaces Trayectorias seguidas en mapa 12x12 con señal en el centro}}{40}{figure.caption.58}\protected@file@percent } -\newlabel{fig:12_traj}{{4.13}{40}{Trayectorias seguidas en mapa 12x12 con señal en el centro}{figure.caption.58}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.14}{\ignorespaces Gráfico de entrenamiento}}{41}{figure.caption.59}\protected@file@percent } -\newlabel{fig:training_graph}{{4.14}{41}{Gráfico de entrenamiento}{figure.caption.59}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.15}{\ignorespaces Gráficos comparativos}}{42}{figure.caption.60}\protected@file@percent } -\newlabel{fig:compare_graph}{{4.15}{42}{Gráficos comparativos}{figure.caption.60}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}Experimentos y resultados}{42}{subsection.4.3.4}\protected@file@percent } -\newlabel{subsec:experimentos_resultados}{{4.3.4}{42}{Experimentos y resultados}{subsection.4.3.4}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.16}{\ignorespaces Características de la señal por defecto}}{42}{figure.caption.61}\protected@file@percent } -\newlabel{fig:compare_graph}{{4.16}{42}{Características de la señal por defecto}{figure.caption.61}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.17}{\ignorespaces Mapa de puntos (12x12), señal centrada}}{43}{figure.caption.62}\protected@file@percent } -\newlabel{fig:map_p_center_12}{{4.17}{43}{Mapa de puntos (12x12), señal centrada}{figure.caption.62}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.18}{\ignorespaces Comparativas (12x12), señal centrada}}{43}{figure.caption.63}\protected@file@percent } -\newlabel{fig:comp_center_12}{{4.18}{43}{Comparativas (12x12), señal centrada}{figure.caption.63}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.19}{\ignorespaces Mapa de puntos (12x12), señal en la esquina}}{44}{figure.caption.64}\protected@file@percent } -\newlabel{fig:map_p_esq_12}{{4.19}{44}{Mapa de puntos (12x12), señal en la esquina}{figure.caption.64}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.20}{\ignorespaces Comparativas (12x12), señal en la esquina}}{44}{figure.caption.65}\protected@file@percent } -\newlabel{fig:comp_esq_12}{{4.20}{44}{Comparativas (12x12), señal en la esquina}{figure.caption.65}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.21}{\ignorespaces Mapa de puntos (30x30), señal centrada}}{45}{figure.caption.66}\protected@file@percent } -\newlabel{fig:map_p_center_30}{{4.21}{45}{Mapa de puntos (30x30), señal centrada}{figure.caption.66}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.22}{\ignorespaces Comparativas (30x30), señal centrada}}{45}{figure.caption.67}\protected@file@percent } -\newlabel{fig:comp_center_30}{{4.22}{45}{Comparativas (30x30), señal centrada}{figure.caption.67}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.23}{\ignorespaces Mapa de puntos (30x30), señal en la esquina}}{46}{figure.caption.68}\protected@file@percent } -\newlabel{fig:map_p_esq_30}{{4.23}{46}{Mapa de puntos (30x30), señal en la esquina}{figure.caption.68}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.24}{\ignorespaces Comparativas (30x30), señal en la esquina}}{46}{figure.caption.69}\protected@file@percent } -\newlabel{fig:comp_esq_30}{{4.24}{46}{Comparativas (30x30), señal en la esquina}{figure.caption.69}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.25}{\ignorespaces Mapa de puntos (30x30), señales diferentes}}{47}{figure.caption.70}\protected@file@percent } -\newlabel{fig:map_p_diff_30}{{4.25}{47}{Mapa de puntos (30x30), señales diferentes}{figure.caption.70}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.26}{\ignorespaces Comparativas (30x30), señales diferentes}}{47}{figure.caption.71}\protected@file@percent } -\newlabel{fig:comp_diff_30}{{4.26}{47}{Comparativas (30x30), señales diferentes}{figure.caption.71}{}} -\citation{poly-info} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.5}Líneas a futuro - Experimentos con obstáculos}{48}{subsection.4.3.5}\protected@file@percent } -\newlabel{subsec:experimentos_obstaculos}{{4.3.5}{48}{Líneas a futuro - Experimentos con obstáculos}{subsection.4.3.5}{}} -\acronymused{TFG} -\@writefile{lof}{\contentsline {figure}{\numberline {4.27}{\ignorespaces Funcionamiento del algoritmo de puntos}}{48}{figure.caption.72}\protected@file@percent } -\newlabel{fig:poly_algorithm}{{4.27}{48}{Funcionamiento del algoritmo de puntos}{figure.caption.72}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.28}{\ignorespaces Simulación de sensor para obstáculo}}{49}{figure.caption.73}\protected@file@percent } -\newlabel{fig:pseudosensor}{{4.28}{49}{Simulación de sensor para obstáculo}{figure.caption.73}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusiones}{50}{chapter.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Experimentos}{40}{subsection.4.3.3}\protected@file@percent } +\newlabel{subsec:experimentos_sf}{{4.3.3}{40}{Experimentos}{subsection.4.3.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.12}{\ignorespaces Características de la señal por defecto}}{40}{figure.caption.57}\protected@file@percent } +\newlabel{fig:compare_graph}{{4.12}{40}{Características de la señal por defecto}{figure.caption.57}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.13}{\ignorespaces Mapa de puntos (12x12), señal centrada}}{40}{figure.caption.58}\protected@file@percent } +\newlabel{fig:map_p_center_12}{{4.13}{40}{Mapa de puntos (12x12), señal centrada}{figure.caption.58}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.14}{\ignorespaces Comparativas (12x12), señal centrada}}{41}{figure.caption.59}\protected@file@percent } +\newlabel{fig:comp_center_12}{{4.14}{41}{Comparativas (12x12), señal centrada}{figure.caption.59}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.15}{\ignorespaces Mapa de puntos (12x12), señal en la esquina}}{41}{figure.caption.60}\protected@file@percent } +\newlabel{fig:map_p_esq_12}{{4.15}{41}{Mapa de puntos (12x12), señal en la esquina}{figure.caption.60}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.16}{\ignorespaces Comparativas (12x12), señal en la esquina}}{42}{figure.caption.61}\protected@file@percent } +\newlabel{fig:comp_esq_12}{{4.16}{42}{Comparativas (12x12), señal en la esquina}{figure.caption.61}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.17}{\ignorespaces Mapa de puntos (30x30), señal centrada}}{43}{figure.caption.62}\protected@file@percent } +\newlabel{fig:map_p_center_30}{{4.17}{43}{Mapa de puntos (30x30), señal centrada}{figure.caption.62}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.18}{\ignorespaces Comparativas (30x30), señal centrada}}{44}{figure.caption.63}\protected@file@percent } +\newlabel{fig:comp_center_30}{{4.18}{44}{Comparativas (30x30), señal centrada}{figure.caption.63}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.19}{\ignorespaces Mapa de puntos (30x30), señal en la esquina}}{44}{figure.caption.64}\protected@file@percent } +\newlabel{fig:map_p_esq_30}{{4.19}{44}{Mapa de puntos (30x30), señal en la esquina}{figure.caption.64}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.20}{\ignorespaces Comparativas (30x30), señal en la esquina}}{45}{figure.caption.65}\protected@file@percent } +\newlabel{fig:comp_esq_30}{{4.20}{45}{Comparativas (30x30), señal en la esquina}{figure.caption.65}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.21}{\ignorespaces Mapa de puntos (30x30), señales diferentes}}{46}{figure.caption.66}\protected@file@percent } +\newlabel{fig:map_p_diff_30}{{4.21}{46}{Mapa de puntos (30x30), señales diferentes}{figure.caption.66}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.22}{\ignorespaces Comparativas (30x30), señales diferentes}}{47}{figure.caption.67}\protected@file@percent } +\newlabel{fig:comp_diff_30}{{4.22}{47}{Comparativas (30x30), señales diferentes}{figure.caption.67}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}Resultados}{47}{subsection.4.3.4}\protected@file@percent } +\newlabel{subsec:resultados_sf}{{4.3.4}{47}{Resultados}{subsection.4.3.4}{}} +\acronymused{RF} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Comportamiento sigue señal basado en \ac {RF} en un entorno dinámico}{47}{section.4.4}\protected@file@percent } +\newlabel{sec:signal_follow_obs}{{4.4}{47}{Comportamiento sigue señal basado en \ac {RF} en un entorno dinámico}{section.4.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}Introducción al problema}{47}{subsection.4.4.1}\protected@file@percent } +\newlabel{subsec:intro_sfo}{{4.4.1}{47}{Introducción al problema}{subsection.4.4.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}Algoritmo}{47}{subsection.4.4.2}\protected@file@percent } +\newlabel{subsec:algoritmo_sfo}{{4.4.2}{47}{Algoritmo}{subsection.4.4.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.3}Experimentos}{47}{subsection.4.4.3}\protected@file@percent } +\newlabel{subsec:experimentos_sfo}{{4.4.3}{47}{Experimentos}{subsection.4.4.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.4}Resultados}{47}{subsection.4.4.4}\protected@file@percent } +\newlabel{subsec:resultados_sfo}{{4.4.4}{47}{Resultados}{subsection.4.4.4}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusiones}{48}{chapter.5}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{locode}{\addvspace {10\p@ }} \@writefile{lomyequation}{\addvspace {10\p@ }} -\newlabel{cap:capitulo5}{{5}{50}{Conclusiones}{chapter.5}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{50}{section.5.1}\protected@file@percent } -\newlabel{sec:objetivos_cumplidos}{{5.1}{50}{Objetivos cumplidos}{section.5.1}{}} +\newlabel{cap:capitulo5}{{5}{48}{Conclusiones}{chapter.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{48}{section.5.1}\protected@file@percent } +\newlabel{sec:objetivos_cumplidos}{{5.1}{48}{Objetivos cumplidos}{section.5.1}{}} \acronymused{ROS} -\@writefile{toc}{\contentsline {section}{\numberline {5.2}Balance global y competencias adquiridas}{50}{section.5.2}\protected@file@percent } -\newlabel{sec:balance_global_competencias_adquiridas}{{5.2}{50}{Balance global y competencias adquiridas}{section.5.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.3}Líneas futuras}{51}{section.5.3}\protected@file@percent } -\newlabel{sec:lineas_futuras}{{5.3}{51}{Líneas futuras}{section.5.3}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {6}Anexo}{52}{chapter.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Balance global y competencias adquiridas}{48}{section.5.2}\protected@file@percent } +\newlabel{sec:balance_global_competencias_adquiridas}{{5.2}{48}{Balance global y competencias adquiridas}{section.5.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}Líneas futuras}{49}{section.5.3}\protected@file@percent } +\newlabel{sec:lineas_futuras}{{5.3}{49}{Líneas futuras}{section.5.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Anexo}{50}{chapter.6}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{locode}{\addvspace {10\p@ }} \@writefile{lomyequation}{\addvspace {10\p@ }} -\newlabel{cap:anexo}{{6}{52}{Anexo}{chapter.6}{}} +\newlabel{cap:anexo}{{6}{50}{Anexo}{chapter.6}{}} \citation{*} \bibstyle{unsrt} \bibdata{bibliografia} -\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }}{53}{table.caption.75}\protected@file@percent } -\newlabel{cuadro:anexo_imagenes_fuentes}{{6.1}{53}{Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }{table.caption.75}{}} +\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }}{51}{table.caption.69}\protected@file@percent } +\newlabel{cuadro:anexo_imagenes_fuentes}{{6.1}{51}{Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }{table.caption.69}{}} \bibcite{dworakowski2020robots}{{1}{}{{}}{{}}} \bibcite{Wang2022}{{2}{}{{}}{{}}} \bibcite{10.3389/fmech.2020.00011}{{3}{}{{}}{{}}} @@ -403,7 +400,7 @@ \bibcite{python-def}{{9}{}{{}}{{}}} \bibcite{compiled-vs-interpreted}{{10}{}{{}}{{}}} \bibcite{c-history}{{11}{}{{}}{{}}} -\@writefile{toc}{\contentsline {chapter}{Bibliograf\'{\i }a}{54}{appendix*.76}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{Bibliograf\'{\i }a}{52}{appendix*.70}\protected@file@percent } \bibcite{middleware-def}{{12}{}{{}}{{}}} \bibcite{ros-def}{{13}{}{{}}{{}}} \bibcite{rviz-def}{{14}{}{{}}{{}}} diff --git a/memoria/memoria.lof b/memoria/memoria.lof index b4aa214..dcaacd2 100644 --- a/memoria/memoria.lof +++ b/memoria/memoria.lof @@ -35,22 +35,16 @@ \contentsline {figure}{\numberline {4.9}{\ignorespaces Representación algoritmo manual}}{36}{figure.caption.52}% \contentsline {figure}{\numberline {4.10}{\ignorespaces Representación algoritmo manual optimizado}}{37}{figure.caption.54}% \contentsline {figure}{\numberline {4.11}{\ignorespaces Esquema episodio fase de entrenamiento}}{39}{figure.caption.56}% -\contentsline {figure}{\numberline {4.12}{\ignorespaces Mapa de puntos 30x30 con la señal en la esquina}}{40}{figure.caption.57}% -\contentsline {figure}{\numberline {4.13}{\ignorespaces Trayectorias seguidas en mapa 12x12 con señal en el centro}}{40}{figure.caption.58}% -\contentsline {figure}{\numberline {4.14}{\ignorespaces Gráfico de entrenamiento}}{41}{figure.caption.59}% -\contentsline {figure}{\numberline {4.15}{\ignorespaces Gráficos comparativos}}{42}{figure.caption.60}% -\contentsline {figure}{\numberline {4.16}{\ignorespaces Características de la señal por defecto}}{42}{figure.caption.61}% -\contentsline {figure}{\numberline {4.17}{\ignorespaces Mapa de puntos (12x12), señal centrada}}{43}{figure.caption.62}% -\contentsline {figure}{\numberline {4.18}{\ignorespaces Comparativas (12x12), señal centrada}}{43}{figure.caption.63}% -\contentsline {figure}{\numberline {4.19}{\ignorespaces Mapa de puntos (12x12), señal en la esquina}}{44}{figure.caption.64}% -\contentsline {figure}{\numberline {4.20}{\ignorespaces Comparativas (12x12), señal en la esquina}}{44}{figure.caption.65}% -\contentsline {figure}{\numberline {4.21}{\ignorespaces Mapa de puntos (30x30), señal centrada}}{45}{figure.caption.66}% -\contentsline {figure}{\numberline {4.22}{\ignorespaces Comparativas (30x30), señal centrada}}{45}{figure.caption.67}% -\contentsline {figure}{\numberline {4.23}{\ignorespaces Mapa de puntos (30x30), señal en la esquina}}{46}{figure.caption.68}% -\contentsline {figure}{\numberline {4.24}{\ignorespaces Comparativas (30x30), señal en la esquina}}{46}{figure.caption.69}% -\contentsline {figure}{\numberline {4.25}{\ignorespaces Mapa de puntos (30x30), señales diferentes}}{47}{figure.caption.70}% -\contentsline {figure}{\numberline {4.26}{\ignorespaces Comparativas (30x30), señales diferentes}}{47}{figure.caption.71}% -\contentsline {figure}{\numberline {4.27}{\ignorespaces Funcionamiento del algoritmo de puntos}}{48}{figure.caption.72}% -\contentsline {figure}{\numberline {4.28}{\ignorespaces Simulación de sensor para obstáculo}}{49}{figure.caption.73}% +\contentsline {figure}{\numberline {4.12}{\ignorespaces Características de la señal por defecto}}{40}{figure.caption.57}% +\contentsline {figure}{\numberline {4.13}{\ignorespaces Mapa de puntos (12x12), señal centrada}}{40}{figure.caption.58}% +\contentsline {figure}{\numberline {4.14}{\ignorespaces Comparativas (12x12), señal centrada}}{41}{figure.caption.59}% +\contentsline {figure}{\numberline {4.15}{\ignorespaces Mapa de puntos (12x12), señal en la esquina}}{41}{figure.caption.60}% +\contentsline {figure}{\numberline {4.16}{\ignorespaces Comparativas (12x12), señal en la esquina}}{42}{figure.caption.61}% +\contentsline {figure}{\numberline {4.17}{\ignorespaces Mapa de puntos (30x30), señal centrada}}{43}{figure.caption.62}% +\contentsline {figure}{\numberline {4.18}{\ignorespaces Comparativas (30x30), señal centrada}}{44}{figure.caption.63}% +\contentsline {figure}{\numberline {4.19}{\ignorespaces Mapa de puntos (30x30), señal en la esquina}}{44}{figure.caption.64}% +\contentsline {figure}{\numberline {4.20}{\ignorespaces Comparativas (30x30), señal en la esquina}}{45}{figure.caption.65}% +\contentsline {figure}{\numberline {4.21}{\ignorespaces Mapa de puntos (30x30), señales diferentes}}{46}{figure.caption.66}% +\contentsline {figure}{\numberline {4.22}{\ignorespaces Comparativas (30x30), señales diferentes}}{47}{figure.caption.67}% \addvspace {10\p@ } \addvspace {10\p@ } diff --git a/memoria/memoria.log b/memoria/memoria.log index 027b441..74cc2cc 100644 --- a/memoria/memoria.log +++ b/memoria/memoria.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2023.7.19) 25 SEP 2023 11:55 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2023.7.19) 26 SEP 2023 12:08 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -502,10 +502,6 @@ File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode (./memoria.aux LaTeX Info: Redefining \. on input line 25. LaTeX Info: Redefining \% on input line 25. - - -LaTeX Warning: Label `fig:compare_graph' multiply defined. - ) \openout1 = `memoria.aux'. @@ -623,7 +619,7 @@ LaTeX Info: Redefining \nameref on input line 26. Package newfloat Info: `float' package detected. (./portada/indice.tex (./portada/portada.tex - + File: imagenes/cap1/logo_urjc.jpg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/logo_urjc.jpg used on input line 7. @@ -754,7 +750,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 7--8 [] - + File: imagenes/cap1/1_industrial_robot.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/1_industrial_robot.jpeg used on input l @@ -765,13 +761,13 @@ Underfull \hbox (badness 10000) in paragraph at lines 19--19 []\T1/cmr/m/n/12 (a) Robot industrial [] - + File: imagenes/cap1/2_mobile_robot.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/2_mobile_robot.jpeg used on input line 21. (pdftex.def) Requested size: 151.72002pt x 85.35826pt. - + File: imagenes/cap1/1-5_real_drone.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/1-5_real_drone.jpeg used on input line @@ -796,7 +792,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 33--34 [] - + File: imagenes/cap1/3_robot.png Graphic file (type png) Package pdftex.def Info: imagenes/cap1/3_robot.png used on input line 37. @@ -841,19 +837,19 @@ Underfull \hbox (badness 10000) in paragraph at lines 50--51 LaTeX Info: Redefining \. on input line 51. LaTeX Info: Redefining \% on input line 51. [3 <./imagenes/cap1/3_robot.png>] - + File: imagenes/cap1/4_kettering_bug.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/4_kettering_bug.jpeg used on input line 54. (pdftex.def) Requested size: 94.83955pt x 71.13188pt. - + File: imagenes/cap1/5_queen_bee.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/5_queen_bee.jpeg used on input line 56. (pdftex.def) Requested size: 177.65408pt x 71.13188pt. - + File: imagenes/cap1/6_aphrodite.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/6_aphrodite.jpeg used on input line 58. @@ -861,7 +857,7 @@ Package pdftex.def Info: imagenes/cap1/6_aphrodite.jpeg used on input line 58. (pdftex.def) Requested size: 146.2568pt x 71.13188pt. Package acronym Info: Label `acro:GCS' newly defined as it shall be overridden although it is yet undefined on input line 66. - + File: imagenes/cap1/7_drone_components.jpeg Graphic file (type jpg) Package pdftex.def Info: imagenes/cap1/7_drone_components.jpeg used on input l @@ -897,7 +893,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 92--93 LaTeX Info: Redefining \. on input line 93. LaTeX Info: Redefining \% on input line 93. [5 <./imagenes/cap1/7_drone_components.jpeg>] - + File: imagenes/cap1/8_AI_types.png Graphic file (type png) Package pdftex.def Info: imagenes/cap1/8_AI_types.png used on input line 106. @@ -920,7 +916,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 117--118 [] - + File: imagenes/cap1/9_reinforcement.png Graphic file (type png) Package pdftex.def Info: imagenes/cap1/9_reinforcement.png used on input line @@ -1000,7 +996,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 38--39 [] - + File: imagenes/cap2/1_insights.png Graphic file (type png) Package pdftex.def Info: imagenes/cap2/1_insights.png used on input line 51. @@ -1063,7 +1059,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 56--57 [] - + File: imagenes/cap3/1_ros_esquema.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/1_ros_esquema.png used on input line 62 @@ -1079,7 +1075,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 73--74 [] - + File: imagenes/cap3/3_rviz_example.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/3_rviz_example.png used on input line 7 @@ -1099,7 +1095,7 @@ S \T1/cmr/m/n/12 15 [] [15 <./imagenes/cap3/1_ros_esquema.png> <./imagenes/cap3/3_rviz_example.png>] - + File: imagenes/cap3/2_gazebo_drone.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/2_gazebo_drone.png used on input line 9 @@ -1115,7 +1111,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 106--107 [] - + File: imagenes/cap3/4_vscode_logo.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/4_vscode_logo.png used on input line 11 @@ -1149,7 +1145,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 131--132 [] - + File: imagenes/cap3/5_opencv_example.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/5_opencv_example.png used on input line @@ -1168,7 +1164,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 146--147 [] - + File: imagenes/cap3/6_matplotlib_app.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/6_matplotlib_app.png used on input line @@ -1193,7 +1189,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 163--164 [] - + File: imagenes/cap3/7_px4_logo.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/7_px4_logo.png used on input line 167. @@ -1203,7 +1199,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 176--177 [] - + File: imagenes/cap3/8_iris_drone.png Graphic file (type png) Package pdftex.def Info: imagenes/cap3/8_iris_drone.png used on input line 180 @@ -1256,7 +1252,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 20--21 [] - + File: imagenes/cap4/1_px4_drone_gz.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/1_px4_drone_gz.png used on input line 2 @@ -1290,7 +1286,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 51--52 [] - + File: imagenes/cap4/2_axes_rc.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/2_axes_rc.png used on input line 55. @@ -1307,7 +1303,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 63--64 [] - + File: imagenes/cap4/3_c2c_gui.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/3_c2c_gui.png used on input line 67. @@ -1371,7 +1367,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 166--167 [] - + File: imagenes/cap4/4_PLE_table.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/4_PLE_table.png used on input line 170. @@ -1428,7 +1424,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 234--235 [] - + File: imagenes/cap4/5_interference.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/5_interference.png used on input line 2 @@ -1461,7 +1457,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 255--256 [] - + File: imagenes/cap4/6_Friss_firstGUI.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/6_Friss_firstGUI.png used on input line @@ -1479,425 +1475,314 @@ Underfull \hbox (badness 10000) in paragraph at lines 267--268 [] - + File: imagenes/cap4/7_Friss_endGUI.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/7_Friss_endGUI.png used on input line 2 71. (pdftex.def) Requested size: 404.63573pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 277--278 +Underfull \hbox (badness 10000) in paragraph at lines 277--282 [] -LaTeX Info: Redefining \. on input line 279. -LaTeX Info: Redefining \% on input line 279. +LaTeX Info: Redefining \. on input line 598. +LaTeX Info: Redefining \% on input line 598. [32 <./imagenes/cap4/7_Friss_endGUI.png>] -Underfull \hbox (badness 10000) in paragraph at lines 283--284 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 285--286 - - [] +Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): +(hyperref) removing `\@ac' on input line 599. -Underfull \hbox (badness 10000) in paragraph at lines 290--291 - [] - -LaTeX Info: Redefining \. on input line 299. -LaTeX Info: Redefining \% on input line 299. -[33] -Underfull \hbox (badness 10000) in paragraph at lines 303--304 +Underfull \hbox (badness 10000) in paragraph at lines 605--606 [] -Underfull \hbox (badness 10000) in paragraph at lines 305--306 +Underfull \hbox (badness 10000) in paragraph at lines 618--619 [] -Underfull \hbox (badness 1009) in paragraph at lines 310--311 -[]\T1/cmr/m/it/12 Métodos para comandar al dron\T1/cmr/m/n/12 : o conjunto de f -unciones encargadas del - [] +Underfull \hbox (badness 10000) in paragraph at lines 620--621 - -Underfull \hbox (badness 1960) in paragraph at lines 314--315 -[]\T1/cmr/m/it/12 Métodos de conversión\T1/cmr/m/n/12 : que en este caso nos pe -rmiten transformar las [] - +LaTeX Info: Redefining \. on input line 621. +LaTeX Info: Redefining \% on input line 621. +[33] + File: imagenes/cap4/8_reference_system.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/8_reference_system.png used on input li -ne 321. +ne 636. (pdftex.def) Requested size: 245.53058pt x 284.52756pt. -LaTeX Info: Redefining \. on input line 326. -LaTeX Info: Redefining \% on input line 326. -[34] -Underfull \hbox (badness 10000) in paragraph at lines 327--328 +LaTeX Info: Redefining \. on input line 641. +LaTeX Info: Redefining \% on input line 641. + [34] +Underfull \hbox (badness 10000) in paragraph at lines 642--643 [] -Underfull \hbox (badness 10000) in paragraph at lines 334--335 +Underfull \hbox (badness 10000) in paragraph at lines 649--650 [] -Underfull \hbox (badness 10000) in paragraph at lines 336--337 +Underfull \hbox (badness 10000) in paragraph at lines 651--652 [] -LaTeX Info: Redefining \. on input line 338. -LaTeX Info: Redefining \% on input line 338. +LaTeX Info: Redefining \. on input line 653. +LaTeX Info: Redefining \% on input line 653. [35 <./imagenes/cap4/8_reference_system.png>] -Underfull \hbox (badness 10000) in paragraph at lines 338--339 +Underfull \hbox (badness 10000) in paragraph at lines 653--654 [] - + File: imagenes/cap4/9_algoritmo_manual.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/9_algoritmo_manual.png used on input li -ne 342. +ne 657. (pdftex.def) Requested size: 374.41798pt x 284.52756pt. -Underfull \hbox (badness 10000) in paragraph at lines 351--352 +Underfull \hbox (badness 10000) in paragraph at lines 666--667 [] -Underfull \hbox (badness 10000) in paragraph at lines 353--354 +Underfull \hbox (badness 10000) in paragraph at lines 668--669 [] -Underfull \hbox (badness 10000) in paragraph at lines 355--356 +Underfull \hbox (badness 10000) in paragraph at lines 670--671 [] - + File: imagenes/cap4/10_algoritmo_optimizado.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/10_algoritmo_optimizado.png used on inp -ut line 359. +ut line 674. (pdftex.def) Requested size: 375.19965pt x 284.52756pt. -LaTeX Info: Redefining \. on input line 364. -LaTeX Info: Redefining \% on input line 364. +LaTeX Info: Redefining \. on input line 679. +LaTeX Info: Redefining \% on input line 679. [36 <./imagenes/cap4/9_algoritmo_manual.png>] -Underfull \hbox (badness 10000) in paragraph at lines 368--369 +Underfull \hbox (badness 10000) in paragraph at lines 683--684 [] -Underfull \hbox (badness 10000) in paragraph at lines 370--371 +Underfull \hbox (badness 10000) in paragraph at lines 685--686 [] -Underfull \hbox (badness 10000) in paragraph at lines 372--373 +Underfull \hbox (badness 10000) in paragraph at lines 687--688 [] -Underfull \hbox (badness 10000) in paragraph at lines 374--375 +Underfull \hbox (badness 10000) in paragraph at lines 689--690 [] -LaTeX Info: Redefining \. on input line 375. -LaTeX Info: Redefining \% on input line 375. +LaTeX Info: Redefining \. on input line 690. +LaTeX Info: Redefining \% on input line 690. [37 <./imagenes/cap4/10_algoritmo_optimizado.png>] -Underfull \hbox (badness 10000) in paragraph at lines 379--381 +Underfull \hbox (badness 10000) in paragraph at lines 694--696 [] -Underfull \hbox (badness 10000) in paragraph at lines 382--383 +Underfull \hbox (badness 10000) in paragraph at lines 697--698 [] -Underfull \hbox (badness 10000) in paragraph at lines 384--385 +Underfull \hbox (badness 10000) in paragraph at lines 699--700 [] -Underfull \hbox (badness 10000) in paragraph at lines 386--387 +Underfull \hbox (badness 10000) in paragraph at lines 701--702 [] - +LaTeX Info: Redefining \. on input line 702. +LaTeX Info: Redefining \% on input line 702. +[38] + File: imagenes/cap4/11_diagrama_training.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/11_diagrama_training.png used on input -line 390. +line 705. (pdftex.def) Requested size: 287.08496pt x 284.52756pt. -LaTeX Info: Redefining \. on input line 395. -LaTeX Info: Redefining \% on input line 395. -[38] -Underfull \hbox (badness 10000) in paragraph at lines 396--397 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 398--399 - - [] - -LaTeX Info: Redefining \. on input line 399. -LaTeX Info: Redefining \% on input line 399. -[39 <./imagenes/cap4/11_diagrama_training.png>] -Underfull \hbox (badness 10000) in paragraph at lines 403--404 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 405--406 - - [] - - -File: imagenes/cap4/12_puntos_30_esquina.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/12_puntos_30_esquina.png used on input -line 409. -(pdftex.def) Requested size: 355.35126pt x 199.16928pt. - -Underfull \hbox (badness 10000) in paragraph at lines 415--416 - - [] - -File: imagenes/cap4/13_trayectorias_12.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/13_trayectorias_12.png used on input li -ne 419. -(pdftex.def) Requested size: 406.60818pt x 142.26378pt. - -Underfull \hbox (badness 10000) in paragraph at lines 425--426 +Underfull \hbox (badness 10000) in paragraph at lines 711--712 [] -LaTeX Info: Redefining \. on input line 426. -LaTeX Info: Redefining \% on input line 426. -[40 <./imagenes/cap4/12_puntos_30_esquina.png> <./imagenes/cap4/13_trayectorias -_12.png>] - -File: imagenes/cap4/14_training_graph.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/14_training_graph.png used on input lin -e 429. -(pdftex.def) Requested size: 421.26198pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 435--436 +Underfull \hbox (badness 10000) in paragraph at lines 718--719 [] - -File: imagenes/cap4/15_avg_graphs.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/15_avg_graphs.png used on input line 43 -9. -(pdftex.def) Requested size: 413.79753pt x 227.62204pt. -LaTeX Info: Redefining \. on input line 444. -LaTeX Info: Redefining \% on input line 444. -[41 <./imagenes/cap4/14_training_graph.png>] -Underfull \hbox (badness 10000) in paragraph at lines 448--449 - - [] - - +LaTeX Info: Redefining \. on input line 719. +LaTeX Info: Redefining \% on input line 719. +[39 <./imagenes/cap4/11_diagrama_training.png>] + File: imagenes/cap4/16_default_values.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/16_default_values.png used on input lin -e 452. +e 722. (pdftex.def) Requested size: 257.25397pt x 28.45274pt. -Underfull \hbox (badness 10000) in paragraph at lines 458--459 +Underfull \hbox (badness 10000) in paragraph at lines 728--729 [] -LaTeX Info: Redefining \. on input line 459. -LaTeX Info: Redefining \% on input line 459. -[42 <./imagenes/cap4/15_avg_graphs.png> <./imagenes/cap4/16_default_values.png> -] -Underfull \hbox (badness 10000) in paragraph at lines 460--461 + +Underfull \hbox (badness 10000) in paragraph at lines 730--731 [] - + File: imagenes/cap4/17_mapa_p_centro_12.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/17_mapa_p_centro_12.png used on input l -ine 464. +ine 734. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 470--471 +Underfull \hbox (badness 10000) in paragraph at lines 740--741 [] - + File: imagenes/cap4/18_comp_centro_12.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/18_comp_centro_12.png used on input lin -e 474. +e 744. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -LaTeX Info: Redefining \. on input line 481. -LaTeX Info: Redefining \% on input line 481. -[43 <./imagenes/cap4/17_mapa_p_centro_12.png> <./imagenes/cap4/18_comp_centro_1 +LaTeX Info: Redefining \. on input line 749. +LaTeX Info: Redefining \% on input line 749. +[40 <./imagenes/cap4/16_default_values.png> <./imagenes/cap4/17_mapa_p_centro_1 2.png>] - + File: imagenes/cap4/19_mapa_p_esq_12.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/19_mapa_p_esq_12.png used on input line - 484. + 754. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 490--491 +Underfull \hbox (badness 10000) in paragraph at lines 760--761 [] - + File: imagenes/cap4/20_comp_esq_12.png Graphic file (type png) -Package pdftex.def Info: imagenes/cap4/20_comp_esq_12.png used on input line 4 -94. +Package pdftex.def Info: imagenes/cap4/20_comp_esq_12.png used on input line 7 +64. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -LaTeX Info: Redefining \. on input line 499. -LaTeX Info: Redefining \% on input line 499. -[44 <./imagenes/cap4/19_mapa_p_esq_12.png> <./imagenes/cap4/20_comp_esq_12.png> -] -Underfull \hbox (badness 10000) in paragraph at lines 500--501 +LaTeX Info: Redefining \. on input line 769. +LaTeX Info: Redefining \% on input line 769. +[41 <./imagenes/cap4/18_comp_centro_12.png> <./imagenes/cap4/19_mapa_p_esq_12.p +ng>] +LaTeX Info: Redefining \. on input line 769. +LaTeX Info: Redefining \% on input line 769. + [42 <./imagenes/cap4/20_comp_esq_12.png>] +Underfull \hbox (badness 10000) in paragraph at lines 770--771 [] - + File: imagenes/cap4/21_mapa_p_centro_30.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/21_mapa_p_centro_30.png used on input l -ine 506. +ine 776. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 512--513 +Underfull \hbox (badness 10000) in paragraph at lines 782--783 [] - + File: imagenes/cap4/22_comp_centro_30.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/22_comp_centro_30.png used on input lin -e 516. +e 786. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. - -Underfull \hbox (badness 10000) in paragraph at lines 522--523 +LaTeX Info: Redefining \. on input line 791. +LaTeX Info: Redefining \% on input line 791. +[43 <./imagenes/cap4/21_mapa_p_centro_30.png>] +Underfull \hbox (badness 10000) in paragraph at lines 792--793 [] -LaTeX Info: Redefining \. on input line 523. -LaTeX Info: Redefining \% on input line 523. -[45 <./imagenes/cap4/21_mapa_p_centro_30.png> <./imagenes/cap4/22_comp_centro_3 -0.png>] - + File: imagenes/cap4/23_mapa_p_esq_30.png Graphic file (type png) Package pdftex.def Info: imagenes/cap4/23_mapa_p_esq_30.png used on input line - 526. + 796. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 532--533 +Underfull \hbox (badness 10000) in paragraph at lines 802--803 [] - + File: imagenes/cap4/24_comp_esq_30.png Graphic file (type png) -Package pdftex.def Info: imagenes/cap4/24_comp_esq_30.png used on input line 5 -36. +Package pdftex.def Info: imagenes/cap4/24_comp_esq_30.png used on input line 8 +06. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -LaTeX Info: Redefining \. on input line 541. -LaTeX Info: Redefining \% on input line 541. -[46 <./imagenes/cap4/23_mapa_p_esq_30.png> <./imagenes/cap4/24_comp_esq_30.png> -] -Underfull \hbox (badness 1199) in paragraph at lines 542--543 -\T1/cmr/bx/n/12 características distintas\T1/cmr/m/n/12 , aumentando la potenci -a del transmisor al doble y - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 542--543 +LaTeX Info: Redefining \. on input line 811. +LaTeX Info: Redefining \% on input line 811. +[44 <./imagenes/cap4/22_comp_centro_30.png> <./imagenes/cap4/23_mapa_p_esq_30.p +ng>] +LaTeX Info: Redefining \. on input line 811. +LaTeX Info: Redefining \% on input line 811. + [45 <./imagenes/cap4/24_comp_esq_30.png>] +Underfull \hbox (badness 10000) in paragraph at lines 812--813 [] - + File: imagenes/cap4/25_mapa_p_diff.png Graphic file (type png) -Package pdftex.def Info: imagenes/cap4/25_mapa_p_diff.png used on input line 5 -46. +Package pdftex.def Info: imagenes/cap4/25_mapa_p_diff.png used on input line 8 +16. (pdftex.def) Requested size: 399.12045pt x 227.62204pt. -Underfull \hbox (badness 10000) in paragraph at lines 552--553 +Underfull \hbox (badness 10000) in paragraph at lines 822--823 [] - + File: imagenes/cap4/26_comp_diff.png Graphic file (type png) -Package pdftex.def Info: imagenes/cap4/26_comp_diff.png used on input line 556 +Package pdftex.def Info: imagenes/cap4/26_comp_diff.png used on input line 826 . (pdftex.def) Requested size: 374.18604pt x 213.39566pt. - -Underfull \hbox (badness 1077) in paragraph at lines 565--566 -\T1/cmr/m/n/12 y obstáculos. Por ello, el siguiente paso lógico es \T1/cmr/bx/n -/12 implementar muros que - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 565--566 - - [] - -LaTeX Info: Redefining \. on input line 566. -LaTeX Info: Redefining \% on input line 566. -[47 <./imagenes/cap4/25_mapa_p_diff.png> <./imagenes/cap4/26_comp_diff.png>] -Underfull \hbox (badness 10000) in paragraph at lines 567--568 +LaTeX Info: Redefining \. on input line 831. +LaTeX Info: Redefining \% on input line 831. +[46 <./imagenes/cap4/25_mapa_p_diff.png>] +Underfull \hbox (badness 10000) in paragraph at lines 835--836 [] - -File: imagenes/cap4/27_points_poly.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/27_points_poly.png used on input line 5 -71. -(pdftex.def) Requested size: 250.5051pt x 170.71652pt. -Underfull \hbox (badness 10000) in paragraph at lines 577--578 - - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 579--580 - - [] +Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding): +(hyperref) removing `\@ac' on input line 837. -LaTeX Info: Redefining \. on input line 580. -LaTeX Info: Redefining \% on input line 580. -[48 <./imagenes/cap4/27_points_poly.png>] - -File: imagenes/cap4/28_pseudosensor.png Graphic file (type png) - -Package pdftex.def Info: imagenes/cap4/28_pseudosensor.png used on input line -591. -(pdftex.def) Requested size: 400.98047pt x 256.0748pt. ) (./capitulos/capitulo5.tex LaTeX Info: Redefining \. on input line 1. LaTeX Info: Redefining \% on input line 1. - [49 <./imagenes/cap4/28_pseudosensor.png>] + [47 <./imagenes/cap4/26_comp_diff.png>] Cap\'{\i }tulo 5. Underfull \hbox (badness 3954) in paragraph at lines 37--38 @@ -1910,15 +1795,15 @@ Underfull \hbox (badness 10000) in paragraph at lines 43--44 [] -[50 +[48 ]) (./anexo.tex LaTeX Info: Redefining \. on input line 1. LaTeX Info: Redefining \% on input line 1. - [51] + [49] Cap\'{\i }tulo 6. -LaTeX Warning: Reference `fig:robots_autonomos' on page 52 undefined on input l +LaTeX Warning: Reference `fig:robots_autonomos' on page 50 undefined on input l ine 16. @@ -1946,7 +1831,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 24--25 [] -LaTeX Warning: Reference `fig:campos_robotica' on page 52 undefined on input li +LaTeX Warning: Reference `fig:campos_robotica' on page 50 undefined on input li ne 28. @@ -1977,7 +1862,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 34--35 [] -LaTeX Warning: Reference `fig:robotica-tacto-bolonia' on page 52 undefined on i +LaTeX Warning: Reference `fig:robotica-tacto-bolonia' on page 50 undefined on i nput line 38. @@ -1986,7 +1871,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 38--39 [] -LaTeX Warning: Reference `fig:AKROD' on page 52 undefined on input line 42. +LaTeX Warning: Reference `fig:AKROD' on page 50 undefined on input line 42. Underfull \hbox (badness 10000) in paragraph at lines 42--43 @@ -1994,7 +1879,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 42--43 [] -LaTeX Warning: Reference `fig:lokomat' on page 52 undefined on input line 46. +LaTeX Warning: Reference `fig:lokomat' on page 50 undefined on input line 46. Underfull \hbox (badness 10000) in paragraph at lines 46--47 @@ -2002,7 +1887,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 46--47 [] -LaTeX Warning: Reference `fig:exoesqueleto_atlas' on page 52 undefined on input +LaTeX Warning: Reference `fig:exoesqueleto_atlas' on page 50 undefined on input line 50. @@ -2017,7 +1902,7 @@ Overfull \hbox (25.19997pt too wide) in paragraph at lines 10--55 [] -LaTeX Warning: Reference `fig:aplicaciones-exoesqueletos' on page 52 undefined +LaTeX Warning: Reference `fig:aplicaciones-exoesqueletos' on page 50 undefined on input line 64. @@ -2043,7 +1928,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 68--69 [] -LaTeX Warning: Reference `fig:exos-flexibles-rigidos' on page 52 undefined on i +LaTeX Warning: Reference `fig:exos-flexibles-rigidos' on page 50 undefined on i nput line 74. @@ -2053,11 +1938,11 @@ Underfull \hbox (badness 10000) in paragraph at lines 74--75 [] -LaTeX Warning: Reference `fig:puntos-clave-imagen' on page 52 undefined on inpu +LaTeX Warning: Reference `fig:puntos-clave-imagen' on page 50 undefined on inpu t line 80. -LaTeX Warning: Reference `fig:logo_stm32cubeide' on page 52 undefined on input +LaTeX Warning: Reference `fig:logo_stm32cubeide' on page 50 undefined on input line 84. @@ -2066,7 +1951,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 84--85 [] -LaTeX Warning: Reference `fig:exos_activo_pasivo' on page 52 undefined on input +LaTeX Warning: Reference `fig:exos_activo_pasivo' on page 50 undefined on input line 88. @@ -2082,7 +1967,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 90--91 [] -LaTeX Warning: Reference `fig:esquema_redes_neuronales' on page 52 undefined on +LaTeX Warning: Reference `fig:esquema_redes_neuronales' on page 50 undefined on input line 94. @@ -2091,15 +1976,15 @@ Underfull \hbox (badness 10000) in paragraph at lines 94--95 [] -LaTeX Warning: Reference `fig:esquema_arbol_decision' on page 52 undefined on i +LaTeX Warning: Reference `fig:esquema_arbol_decision' on page 50 undefined on i nput line 98. -LaTeX Warning: Reference `fig:obtencion_fases_keypoints_movenet' on page 52 und +LaTeX Warning: Reference `fig:obtencion_fases_keypoints_movenet' on page 50 und efined on input line 102. -LaTeX Warning: Reference `fig:esquema_keypoints_mediapipe' on page 52 undefined +LaTeX Warning: Reference `fig:esquema_keypoints_mediapipe' on page 50 undefined on input line 106. @@ -2109,7 +1994,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 106--107 [] -LaTeX Warning: Reference `fig:ejemplos_vision_mediapipe' on page 52 undefined o +LaTeX Warning: Reference `fig:ejemplos_vision_mediapipe' on page 50 undefined o n input line 110. @@ -2123,14 +2008,14 @@ Overfull \hbox (25.19997pt too wide) in paragraph at lines 60--115 [] [] -[52 +[50 ]) No file memoria.ind. (./memoria.bbl LaTeX Info: Redefining \. on input line 1. LaTeX Info: Redefining \% on input line 1. - [53] + [51] Underfull \hbox (badness 1253) in paragraph at lines 4--7 []\T1/cmr/m/n/12 Daniel Dworakowski and Goldie Nejat. Robots understanding con textual @@ -2148,7 +2033,7 @@ Underfull \hbox (badness 2245) in paragraph at lines 60--63 . [][]$\T1/cmtt/m/n/12 https : / / www . geeksforgeeks . org / [] -[54 +[52 ] Underfull \hbox (badness 10000) in paragraph at lines 90--95 @@ -2169,7 +2054,7 @@ odel\T1/cmr/m/n/12 . [][]$\T1/cmtt/m/n/12 https : / / www . LaTeX Info: Redefining \. on input line 152. LaTeX Info: Redefining \% on input line 152. -[55] +[53] Underfull \hbox (badness 10000) in paragraph at lines 153--159 []\T1/cmr/m/n/12 geeksforgeeks. \T1/cmr/m/it/12 How to check if [] @@ -2232,7 +2117,7 @@ lamarlos? [][]$\T1/cmtt/m/n/12 https : / / LaTeX Info: Redefining \. on input line 229. LaTeX Info: Redefining \% on input line 229. -[56] +[54] Underfull \hbox (badness 10000) in paragraph at lines 250--256 []\T1/cmr/m/n/12 Sakshi Gupta. \T1/cmr/m/it/12 Regression vs. Classification i n Machine Learning: @@ -2257,11 +2142,11 @@ Overfull \hbox (116.64043pt too wide) in paragraph at lines 290--296 LaTeX Info: Redefining \. on input line 312. LaTeX Info: Redefining \% on input line 312. -[57]) +[55]) Package atveryend Info: Empty hook `BeforeClearDocument' on input line 60. LaTeX Info: Redefining \. on input line 60. LaTeX Info: Redefining \% on input line 60. - [58] + [56] Package atveryend Info: Empty hook `AfterLastShipout' on input line 60. (./memoria.aux LaTeX Info: Redefining \. on input line 25. @@ -2270,7 +2155,7 @@ LaTeX Info: Redefining \% on input line 25. Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 60. Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 60. Package rerunfilecheck Info: File `memoria.out' has not changed. -(rerunfilecheck) Checksum: C5B25C53D3274AAAD11FA4911CA7C5ED;3067. +(rerunfilecheck) Checksum: B02E3E496ACFDE28952BD3DBE168F5E7;3385. LaTeX Font Warning: Size substitutions with differences @@ -2279,52 +2164,48 @@ LaTeX Font Warning: Size substitutions with differences LaTeX Warning: There were undefined references. - -LaTeX Warning: There were multiply-defined labels. - Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 60. ) Here is how much of TeX's memory you used: - 14285 strings out of 483048 - 211120 string characters out of 5962772 + 14243 strings out of 483048 + 209810 string characters out of 5962772 664405 words of memory out of 5000000 - 28506 multiletter control sequences out of 15000+600000 - 567891 words of font info for 81 fonts, out of 8000000 for 9000 + 28478 multiletter control sequences out of 15000+600000 + 567205 words of font info for 80 fonts, out of 8000000 for 9000 91 hyphenation exceptions out of 8191 44i,12n,53p,1210b,1467s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texmf/fonts/en -c/dvips/lm/lm-ec.enc} -Output written on memoria.pdf (68 pages, 6659658 bytes). +00pk> {/usr/share/texmf/fonts/enc/d +vips/lm/lm-ec.enc} +Output written on memoria.pdf (66 pages, 6376431 bytes). PDF statistics: - 2192 PDF objects out of 2487 (max. 8388607) - 1296 compressed objects within 13 object streams - 425 named destinations out of 1000 (max. 500000) - 617 words of extra memory for PDF output out of 10000 (max. 10000000) + 2167 PDF objects out of 2487 (max. 8388607) + 1289 compressed objects within 13 object streams + 418 named destinations out of 1000 (max. 500000) + 619 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/memoria/memoria.lot b/memoria/memoria.lot index 10bdf97..f1aa44e 100644 --- a/memoria/memoria.lot +++ b/memoria/memoria.lot @@ -5,4 +5,4 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {table}{\numberline {6.1}{\ignorespaces Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }}{53}{table.caption.75}% +\contentsline {table}{\numberline {6.1}{\ignorespaces Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }}{51}{table.caption.69}% diff --git a/memoria/memoria.out b/memoria/memoria.out index b4f9b9d..28cd530 100644 --- a/memoria/memoria.out +++ b/memoria/memoria.out @@ -29,19 +29,23 @@ \BOOKMARK [1][-]{section.4.1}{Preparaci\363n del entorno}{chapter.4}% 29 \BOOKMARK [2][-]{subsection.4.1.1}{JdeRobot - drones}{section.4.1}% 30 \BOOKMARK [2][-]{subsection.4.1.2}{Teleoperador}{section.4.1}% 31 -\BOOKMARK [1][-]{section.4.2}{Se\361ales}{chapter.4}% 32 +\BOOKMARK [1][-]{section.4.2}{Modelo de propagaci\363n de se\361al}{chapter.4}% 32 \BOOKMARK [2][-]{subsection.4.2.1}{Aproximaci\363n de Friis}{section.4.2}% 33 \BOOKMARK [2][-]{subsection.4.2.2}{M\363dulo python de Friis}{section.4.2}% 34 \BOOKMARK [2][-]{subsection.4.2.3}{Aplicaci\363n de Friis}{section.4.2}% 35 -\BOOKMARK [1][-]{section.4.3}{Integraci\363n conjunta}{chapter.4}% 36 -\BOOKMARK [2][-]{subsection.4.3.1}{Primeros pasos}{section.4.3}% 37 +\BOOKMARK [1][-]{section.4.3}{Comportamiento sigue se\361al basado en RF}{chapter.4}% 36 +\BOOKMARK [2][-]{subsection.4.3.1}{Introducci\363n al problema}{section.4.3}% 37 \BOOKMARK [2][-]{subsection.4.3.2}{Algoritmos}{section.4.3}% 38 -\BOOKMARK [2][-]{subsection.4.3.3}{M\351tricas empleadas}{section.4.3}% 39 -\BOOKMARK [2][-]{subsection.4.3.4}{Experimentos y resultados}{section.4.3}% 40 -\BOOKMARK [2][-]{subsection.4.3.5}{L\355neas a futuro - Experimentos con obst\341culos}{section.4.3}% 41 -\BOOKMARK [0][-]{chapter.5}{Conclusiones}{}% 42 -\BOOKMARK [1][-]{section.5.1}{Objetivos cumplidos}{chapter.5}% 43 -\BOOKMARK [1][-]{section.5.2}{Balance global y competencias adquiridas}{chapter.5}% 44 -\BOOKMARK [1][-]{section.5.3}{L\355neas futuras}{chapter.5}% 45 -\BOOKMARK [0][-]{chapter.6}{Anexo}{}% 46 -\BOOKMARK [0][-]{appendix*.76}{Bibliograf\355a}{}% 47 +\BOOKMARK [2][-]{subsection.4.3.3}{Experimentos}{section.4.3}% 39 +\BOOKMARK [2][-]{subsection.4.3.4}{Resultados}{section.4.3}% 40 +\BOOKMARK [1][-]{section.4.4}{Comportamiento sigue se\361al basado en RF en un entorno din\341mico}{chapter.4}% 41 +\BOOKMARK [2][-]{subsection.4.4.1}{Introducci\363n al problema}{section.4.4}% 42 +\BOOKMARK [2][-]{subsection.4.4.2}{Algoritmo}{section.4.4}% 43 +\BOOKMARK [2][-]{subsection.4.4.3}{Experimentos}{section.4.4}% 44 +\BOOKMARK [2][-]{subsection.4.4.4}{Resultados}{section.4.4}% 45 +\BOOKMARK [0][-]{chapter.5}{Conclusiones}{}% 46 +\BOOKMARK [1][-]{section.5.1}{Objetivos cumplidos}{chapter.5}% 47 +\BOOKMARK [1][-]{section.5.2}{Balance global y competencias adquiridas}{chapter.5}% 48 +\BOOKMARK [1][-]{section.5.3}{L\355neas futuras}{chapter.5}% 49 +\BOOKMARK [0][-]{chapter.6}{Anexo}{}% 50 +\BOOKMARK [0][-]{appendix*.70}{Bibliograf\355a}{}% 51 diff --git a/memoria/memoria.pdf b/memoria/memoria.pdf index 1c9ff98..b0cf992 100644 Binary files a/memoria/memoria.pdf and b/memoria/memoria.pdf differ diff --git a/memoria/memoria.toc b/memoria/memoria.toc index 89eb3f8..af6e14c 100644 --- a/memoria/memoria.toc +++ b/memoria/memoria.toc @@ -30,22 +30,26 @@ \contentsline {section}{\numberline {4.1}Preparación del entorno}{21}{section.4.1}% \contentsline {subsection}{\numberline {4.1.1}JdeRobot - drones}{21}{subsection.4.1.1}% \contentsline {subsection}{\numberline {4.1.2}Teleoperador}{22}{subsection.4.1.2}% -\contentsline {section}{\numberline {4.2}Señales}{26}{section.4.2}% +\contentsline {section}{\numberline {4.2}Modelo de propagación de señal}{26}{section.4.2}% \contentsline {subsection}{\numberline {4.2.1}Aproximación de Friis}{27}{subsection.4.2.1}% \contentsline {subsection}{\numberline {4.2.2}Módulo python de Friis}{28}{subsection.4.2.2}% \contentsline {subsection}{\numberline {4.2.3}Aplicación de Friis}{31}{subsection.4.2.3}% -\contentsline {section}{\numberline {4.3}Integración conjunta}{33}{section.4.3}% -\contentsline {subsection}{\numberline {4.3.1}Primeros pasos}{33}{subsection.4.3.1}% -\contentsline {subsection}{\numberline {4.3.2}Algoritmos}{34}{subsection.4.3.2}% +\contentsline {section}{\numberline {4.3}Comportamiento sigue señal basado en \ac {RF}}{33}{section.4.3}% +\contentsline {subsection}{\numberline {4.3.1}Introducción al problema}{33}{subsection.4.3.1}% +\contentsline {subsection}{\numberline {4.3.2}Algoritmos}{33}{subsection.4.3.2}% \contentsline {subsubsection}{Algoritmo manual}{35}{subsubsection*.51}% \contentsline {subsubsection}{Algoritmo manual (optimizado)}{36}{subsubsection*.53}% \contentsline {subsubsection}{Algoritmo Q-Learning}{37}{subsubsection*.55}% -\contentsline {subsection}{\numberline {4.3.3}Métricas empleadas}{40}{subsection.4.3.3}% -\contentsline {subsection}{\numberline {4.3.4}Experimentos y resultados}{42}{subsection.4.3.4}% -\contentsline {subsection}{\numberline {4.3.5}Líneas a futuro - Experimentos con obstáculos}{48}{subsection.4.3.5}% -\contentsline {chapter}{\numberline {5}Conclusiones}{50}{chapter.5}% -\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{50}{section.5.1}% -\contentsline {section}{\numberline {5.2}Balance global y competencias adquiridas}{50}{section.5.2}% -\contentsline {section}{\numberline {5.3}Líneas futuras}{51}{section.5.3}% -\contentsline {chapter}{\numberline {6}Anexo}{52}{chapter.6}% -\contentsline {chapter}{Bibliograf\'{\i }a}{54}{appendix*.76}% +\contentsline {subsection}{\numberline {4.3.3}Experimentos}{40}{subsection.4.3.3}% +\contentsline {subsection}{\numberline {4.3.4}Resultados}{47}{subsection.4.3.4}% +\contentsline {section}{\numberline {4.4}Comportamiento sigue señal basado en \ac {RF} en un entorno dinámico}{47}{section.4.4}% +\contentsline {subsection}{\numberline {4.4.1}Introducción al problema}{47}{subsection.4.4.1}% +\contentsline {subsection}{\numberline {4.4.2}Algoritmo}{47}{subsection.4.4.2}% +\contentsline {subsection}{\numberline {4.4.3}Experimentos}{47}{subsection.4.4.3}% +\contentsline {subsection}{\numberline {4.4.4}Resultados}{47}{subsection.4.4.4}% +\contentsline {chapter}{\numberline {5}Conclusiones}{48}{chapter.5}% +\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{48}{section.5.1}% +\contentsline {section}{\numberline {5.2}Balance global y competencias adquiridas}{48}{section.5.2}% +\contentsline {section}{\numberline {5.3}Líneas futuras}{49}{section.5.3}% +\contentsline {chapter}{\numberline {6}Anexo}{50}{chapter.6}% +\contentsline {chapter}{Bibliograf\'{\i }a}{52}{appendix*.70}%