Skip to content

Commit

Permalink
vff not tuned ready
Browse files Browse the repository at this point in the history
  • Loading branch information
csanrod committed Sep 19, 2023
1 parent 74a9880 commit b4963be
Show file tree
Hide file tree
Showing 14 changed files with 812 additions and 644 deletions.
48 changes: 36 additions & 12 deletions memoria/bibliografia.bib
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,17 @@ @Electronic{history-ai
}

@Electronic{reg-class,
Title = {\textit{Classification in Machine Learning: An Introduction}},
howpublished= {\url{https://www.datacamp.com/blog/classification-machine-learning}},
author = {datacamp},
year = {2022}
Title = {\textit{Regression vs. Classification in Machine Learning: What's the Difference?}},
howpublished= {\url{https://www.springboard.com/blog/data-science/regression-vs-classification/}},
author = {Sakshi Gupta},
year = {2021}
}

@Electronic{chess,
Title = {\textit{About}},
howpublished= {\url{https://stockfishchess.org/about/}},
author = {Stockfish},
year = {2023}
}

@Electronic{learn,
Expand All @@ -176,6 +183,13 @@ @Electronic{learn
year = {2023}
}

@Electronic{props-learn,
Title = {\textit{Aprendizaje por refuerzo - Ejemplo práctico y marco}},
howpublished= {\url{https://www.alexanderthamm.com/es/blog/refuerzo-aprendizaje-marco-y-ejemplo-de-aplicacion/}},
author = {Brijesh Modasara},
year = {2023}
}

@Electronic{psicologia-aprendizaje,
Title = {\textit{Reinforcement and Punishment}},
howpublished= {\url{https://pressbooks.online.ucf.edu/lumenpsychology/chapter/operant-conditioning/}},
Expand All @@ -190,21 +204,31 @@ @Electronic{skinner
year = {2023}
}

@inbook{data-link-definicion,
author = {R. K. Nichols; H.C. Mumm; W.D. Lonstein; C. M. Carter; and J.P. Hood},
title = {Chapter 13: Data Links Functions, Attributes and Latency},
booktitle = {Unmanned Aircraft Systems in the Cyber Domain},
publisher = {New Prairie Press},
year = {2018}
}

@Electronic{q-learning,
Title = {\textit{Reinforcement Learning Explained Visually (Part 4): Q Learning, step-by-step}},
howpublished= {\url{https://towardsdatascience.com/reinforcement-learning-explained-visually-part-4-q-learning-step-by-step-b65efb731d3e}},
author = {OpenStax and Lumen Learning},
year = {2023}
}

@ARTICLE{q-learning-app,
author={Jang, Beakcheol and Kim, Myeonghwi and Harerimana, Gaspard and Kim, Jong Wook},
journal={IEEE Access},
title={Q-Learning Algorithms: A Comprehensive Classification and Applications},
year={2019},
volume={7},
number={},
pages={133653-133667},
doi={10.1109/ACCESS.2019.2941229}
}

@Electronic{bandw,
Title = {\textit{FM broadcast band}},
howpublished= {\url{https://www.wikiwand.com/en/FM_broadcast_band}},
author = {Wikiwand},
year = {2023}
}

@Electronic{friis-1,
Title = {\textit{Friis Free Space Propagation Model}},
howpublished= {\url{https://www.gaussianwaves.com/2013/09/friss-free-space-propagation-model/}},
Expand Down
31 changes: 19 additions & 12 deletions memoria/capitulos/capitulo1.tex
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@ \section{Inteligencia artificial}
En general, la \ac{IA} es capaz de abordar los siguientes problemas:

\begin{enumerate}
\item \textbf{Predicción}: que busca adelantar una respuesta precisa, con ciertos datos de entrada. Por ejemplo, predecir el precio de una vivienda en función de sus metros cuadrados.
\item \textbf{Regresión}: se trata de aprendizaje supervisado, es decir, para construir el modelo, se emplea un conjunto de datos del que se conocen las salidas cómo las entradas a las que pertenecen. La idea es conseguir obtener una salida precisa dada una entrada concreta. Por ejemplo, dados los metros cuadrados de una vivienda (entrada), obtener su precio estimado (salida).

\item \textbf{Clasificación}: que engloba datos en grupos según sus características. Como puede ser, detectar rostros de personas en imágenes.
\item \textbf{Clasificación}: se encarga de distribuir un conjunto de datos en sets con características comunes. Un ejemplo común es la segmentación de imagenes, donde se clasifica cada elemento de la imagen según su naturaleza.

\item \textbf{Aprendizaje}: Que busca resolver un problema a base de prueba y error, mediante un sistema de recompensas. Como por ejemplo, el juego del ajedrez, donde se busque ganar en el menor número de movimientos posibles.
\end{enumerate} \cite{reg-class}
\item \textbf{Aprendizaje}: resuelve un problema a base de prueba y error, mediante un sistema de recompensas. Como por ejemplo \emph{``Stockfish''}, que es un modelo entrenado para ganar una partida de ajedrez en el menor número de movimientos posible, superando incluso a grandes maestros de la actualidad.
\end{enumerate} \cite{reg-class} \cite{chess}

\begin{figure} [H]
\begin{center}
Expand All @@ -112,7 +112,9 @@ \section{Inteligencia artificial}
\subsection{Aprendizaje por refuerzo}
\label{subsec:aprendizaje_por_refuerzo}

Dada la naturaleza de nuestro problema, el enfoque se basará en el aprendizaje por refuerzo, donde se planteará un sistema de \textbf{recompensas y penalizaciones}, que enseñará al robot a tomar las mejores acciones posibles \cite{learn}.\\
Tal y como se comentó previamente, el aprendizaje por refuerzo, se basa en un sistema de \textbf{recompensas y penalizaciones}, que permite entrenar a un modelo para tomar buenas decisiones. Este enfoque se basa en los llamados \textbf{procesos de Markov}, que se definen como aquellos que, para un instante dado, contienen toda la información relevante sin depender de todos los procesos anteriores. \cite{learn}\\

En particular, hablamos de \textbf{agente}, o modelo encargado de tomar decisiones en un \textbf{entorno} (que es el medio en el que interactúa dicho agente, y está regido por una serie de reglas); \textbf{estados}, o circunstancias en la que se sitúa el agente en un determinado instante temporal; y \textbf{acciones}, o decisiones que toma el agente y que le permiten cambiar de estado. En términos de Markov, decimos que el estado actual no depende de todos los estados previos. \cite{props-learn}\\

\begin{figure} [H]
\begin{center}
Expand All @@ -124,15 +126,20 @@ \subsection{Aprendizaje por refuerzo}

Cabe destacar que, este enfoque está directamente extraido de la \textbf{psicología} y el estudio del comportamiento, donde en función de recompensas y castigos se induce al aprendizaje en distintas tareas, como por ejemplo, enseñar a jugar al ping pong a dos palomas \cite{psicologia-aprendizaje} \cite{skinner}.\\

Concretamente, se hará uso de la metodología \textbf{Q-Learning}, que busca generar una tabla numérica donde cada fila se interprete como un estado del robot, que puede ser su posición; y cada columna sea una determinada acción, como puede ser moverse hacia algún lugar. De este modo, y una vez construida la tabla (que se rellena con números en función de las recompensas y penalizaciones), el robot solo tiene que identificar en que estado se encuentra y elegir la columna con mayor valor numérico, lo que se traducirá en la mejor acción para dicho estado \cite{q-learning}.
Concretamente, se hará uso de la metodología \textbf{Q-Learning}, que busca generar una tabla numérica donde cada fila se interprete como un estado del robot, que puede ser su posición; y cada columna sea una determinada acción, como puede ser moverse hacia algún lugar. De este modo, y una vez construida la tabla (que se rellena con números en función de las recompensas y penalizaciones), el robot solo tiene que identificar en que estado se encuentra y elegir la columna con mayor valor numérico, lo que se traducirá en la mejor acción para dicho estado. \cite{q-learning}\\

Existen múltiples ejemplos de aplicación de esta metodología a casos reales, vease para controlar de forma adaptativa una señal de tráfico; para jugar a la Atari 2600; o para realizar un control híbrido sobre la navegación de un robot, entre otros. \cite{q-learning-app}\\

\newpage
\section{Señales}
\section{Vigilancia del espectro electromagnético}
\label{subsec:señales}

Es el último elemento presente en el problema, que es la fuente de datos que se empleará para construir la inteligencia del robot. En este caso, hablamos de las señales, concretamente de señales \textbf{\ac{RF}}, como son por ejemplo Wi-Fi, radio FM, 4G, 5G, entre otros tipos de señales.\\
Es el último elemento presente en el problema, que es la fuente de datos que se empleará para construir la inteligencia del robot. En este caso, hablamos de las señales, concretamente de señales \textbf{\ac{RF}}, como son por ejemplo Wi-Fi, radio FM, 4G, 5G, entre otros tipos de señales distribuidas a lo largo del espectro electromagnético.\\

Dicho espectro se divide por bandas de frecuencia, que se reparten para diversos uso. El ejemplo más claro es la banda FM de radio, que se reparte entre los 87-108 Mhz para España, donde cada emisora tiene un ancho asignado para emitir. \cite{bandw}\\

De este modo, se pueden encontrar soluciones a problemas como el rastreo de una señal de móvil para una persona perdida en la montaña, o seguir emisores concretos, como pueden ser convoys, entre otros. Lo único que hay que establecer, es la banda de frecuencia adecuada y establecer un dispositivo capaz de navegar hasta ella de manera autónoma, es por esto que la robótica es adecuada para resolver cuestiones de esta naturaleza.\\

En particular, se usará la aproximación de \textbf{Friis}, que ofrece un método para calcular la potencia de la señal de un receptor, en función de la potencia del transmisor, las ganancias del transmisor y el receptor, la longitud de onda (que determina el tipo de señal que es), la distancia entre ambos, el medio en el que se encuentren y un factor de pérdidas asociado al sistema empleado \cite{friis-1} \cite{friis-2} \cite{friis-3}.\\
Más adelante, se detallarán los parámetros relevantes de cara a trabajar con señales.

\begin{figure} [H]
\begin{center}
Expand All @@ -145,6 +152,6 @@ \section{Señales}
\section{Síntesis}
\label{subsec:sintesis}

Como conclusión de este capítulo, queda unir las piezas que conforman este puzzle, pero no sin antes mencionar algunos proyectos relacionados, donde se destaca el uso conjunto de drones y robótica para la creación de un módulo ROS, en el que se engloban las comunicaciones para programar un sigue-persona \cite{tfm-pedro}, junto con el uso de estas aeronaves en síntesis con la \ac{IA}, para lograr la navegación en interiores de la misma \cite{paper-ia-dron}\\
Para finalizar, cabe destacar algunos proyectos relacionados, donde se puede ver el uso conjunto de drones y robótica para la creación de un módulo ROS, en el que se engloban las comunicaciones para programar un sigue-persona \cite{tfm-pedro}, junto con el uso de estas aeronaves en síntesis con la \ac{IA}, para lograr la navegación en interiores de la misma \cite{paper-ia-dron}\\

En nuestro caso, se usará el mencionado dispositivo del tipo \ac{SUAV}, provisto de un receptor \ac{RF} como sensor, y los motores propios como actuadores. Se le agregarán algoritmos sistemáticos para compararlos con soluciones Q-Learning, en la tarea de resolver la detección y posterior navegación al origen de una señal \ac{RF}, la cual será simulada mediante la aproximación de Friis.
En nuestro caso, se usará el mencionado dispositivo del tipo \ac{SUAV}, provisto de un receptor \ac{RF} como sensor, y los motores propios como actuadores. Se le agregarán algoritmos sistemáticos para compararlos con soluciones Q-Learning, en la tarea de resolver la detección y posterior navegación al origen de una señal \ac{RF}.
41 changes: 27 additions & 14 deletions memoria/capitulos/capitulo2.tex
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
\chapter{Objetivos}
\label{cap:capitulo2}

Una vez presentado el contexto y el punto de partida del problema, el siguiente paso es definir el fin y los pasos a seguir para su resolución.\\
Una vez presentado el contexto y el punto de partida del problema, el siguiente paso es definir los objetivos y los pasos a seguir para su resolución.\\

\section{Descripción del problema}
\label{sec:descripcion_problema}

Tal y como se comentó previamente, los drones son una herramienta tremendamente versátil, ya que permiten solventar los inconvenientes orográficos de forma sencilla, y pueden ser provistos de múltiples sensores, lo que incrementa su adaptabilidad para solucionar un gran abanico de retos ingenieriles.\\
Como se comentó en el capítulo anterior, los drones son una herramienta tremendamente versátil, ya que permiten solventar los inconvenientes orográficos de forma sencilla, y pueden ser provistos de múltiples sensores, lo que incrementa su adaptabilidad para solucionar un gran abanico de retos ingenieriles.\\

Dicho esto, el foco de este \ac{TFG} consistirá en adaptar el funcionamiento de un dron, mediante los medios que nos proporciona la robótica, para detectar una señal \ac{RF} estática y navegar hasta ella. Todo ello, con el uso exclusivo de un sensor capaz de detectar la intensidad de la señal, lo que permite al dispositivo navegar tanto en exteriores como en interiores. Además, se realizará una comparativa a cerca del rendimiento de diversos algoritmos, donde se incluirán algoritmos de \ac{IA}, con el fin de determinar el método más óptimo para resolver el problema. Esto puede ser especialmente útil en labores de rastreo e identificación de objetivos.\\
Por tanto, el foco de este \ac{TFG} consistirá en adaptar el funcionamiento de un dron, mediante los medios que nos proporciona la robótica, para detectar una señal \ac{RF} emitida por un transmisor estático y navegar hasta ella. Todo ello, con el uso exclusivo de un sensor capaz de detectar la intensidad de la señal, lo que permite al dispositivo navegar tanto en exteriores como en interiores. Esto puede ser especialmente útil en labores de rastreo e identificación de objetivos, tales como en casos de escenarios catastróficos donde se deben localizar personas perdidas.\\

Para ello, se establecen los siguientes objetivos:

\begin{enumerate}
\item Uso y comprensión de la herramienta de simulación Gazebo 11, para estudiar el comportamiento de un cuadracóptero. Todo ello a través de \ac{ROS} Noetic, mediante el paquete MavROS, que permite la comunicación con el dron mediante \ac{ROS}.
\item Desarrollo de una aplicación OpenCV, enfocada a teleoperar el dispositivo, empleando RVIZ para la visualización y el tratamiento del código.
\item Estudio de la propagación de señales y los diferentes parámetros involucrados, con el fin de desarrollar una aplicación responsiva (usando el módulo matplotlib), que simule el comportamiento de una señal, modificando sus características en tiempo real. Todo ello, a través del desarrollo de un módulo personalizado de Python, capaz de generar mapas de señales que siguen la aproximación de Friis.
\item Uso y comprensión de herramientas de simulación, para estudiar el comportamiento de un cuadracóptero. Todo ello a través de comunicación software.
\item Desarrollo de una aplicación, enfocada a teleoperar el dispositivo, empleando herramientas para la visualización y el tratamiento del código.
\item Estudio de la propagación de señales y los diferentes parámetros involucrados, con el fin de desarrollar una aplicación responsiva, que simule el comportamiento de una señal, modificando sus características en tiempo real.
\item Implementación conjunta de los puntos tratados previamente, con el fin de crear escenarios personalizados, sobre los que probar diversos algoritmos.
\item Desarrollo y testeo de diferentes algoritmos, con el fin de realizar comparativas y concluir que aproximación resuelve mejor.
\item Generación de un comportamiento autónomo empleando técnicas de aprendizaje por refuerzo.
\end{enumerate}

\section{Requisitos}
\label{sec:requisitos}

Las especificaciones que se deben cumplir son las siguientes:

\begin{enumerate}
\item Determinar qué algoritmo rinde mejor y por qué.
\item Conseguir un funcionamiento autónomo capaz de resolver el problema planteado.
\end{enumerate}

\section{Metodología}
Expand All @@ -39,15 +50,17 @@ \section{Plan de trabajo}
Para concluir este capítulo, los pasos seguidos han sido:

\begin{enumerate}
\item Etapa inicial, donde tras establecer los objetivos del proyecto, se empezó por investigar el estado del arte del uso de drones para aplicaciones robóticas. Posteriormente, se realizó una instalación del modelo del dron, para que funcionará mediante ROS y sus herramientas.
\item Primeros pasos en el \ac{TFG}. Una vez establecidos los objetivos y teniendo el dron funcional en ROS, lo primero fue realizar una serie de aplicaciones sencillas, que permitieran teleoperar al dron. El punto era realizar movimientos que posteriormente se transladarían a los algoritmos finales del proyecto, como por ejemplo, desplazarse entre centros de celdas. Para ello:
\item Etapa inicial, donde tras establecer los objetivos del proyecto, se empezó por investigar el estado del arte del uso de drones para aplicaciones robóticas. Posteriormente, se realizó una instalación del modelo del dron, para que funcionará mediante \ac{ROS} y sus herramientas.
\item Primeros pasos en el \ac{TFG}. Una vez establecidos los objetivos y teniendo el dron funcional vía software, lo primero fue realizar una serie de aplicaciones sencillas, que permitieran teleoperar al dron. El punto era realizar movimientos que posteriormente se transladarían a los algoritmos finales del proyecto, como por ejemplo, desplazarse entre centros de celdas. Para ello:
\begin{itemize}
\item Se estudió la comunicación MavROS, y se desarrolló un controlador compatible para enviar ordenes al dron.
\item Se empleó openCV para el desarrollo de una interfaz gráfica intuitiva con la que controlar el dispositivo.
\item Se agregó una cámara al modelo SDF para previsualizar desde la aplicación.
\item Se desarrolló una serie de funciones para observar el funcionamiento del programa, mediante la herramienta RVIZ.
\item Se estudió la comunicación, y se desarrolló un controlador compatible para enviar ordenes al dron.
\item Se desarrolló una interfaz gráfica sencilla e intuitiva con la que controlar el dispositivo.
\item Se agregó una cámara al modelo para poder previsualizar imágenes desde la aplicación.
\item Se desarrolló una serie de funciones para observar el funcionamiento del programa y poder depurarlo.
\end{itemize}
\item El siguiente punto consistió en el estudio de las señales \ac{RF} a través de la ecuación de Friis, el desarrollo de un módulo python que aplicase la teoría, y la creación de otra aplicación de previsualización mediante matplotlib.
\item El siguiente punto consistió en el estudio de las señales \ac{RF}; el desarrollo de un módulo python que aplicase la teoría; y la creación de otra aplicación de previsualización mediante matplotlib.
\item El último punto relacionado con el desarrollo, fué la síntesis de los dos pasos previos, donde a través de \ac{ROS} y sus herramientas, se desarrollaron diferentes algoritmos que se apoyaban en el módulo previo, para poder resolver el problema de detectar y navegar hasta una señal mediante un dron. Todo ello realizando diversas comparativas para poder extraer conclusiones.
\item Finalmente, se realizó la redacción de la memoria.
\end{enumerate}
\end{enumerate}

Cabe destacar que, todo el proceso ha sido trabajado usando Github, de manera que se fueran guardando y almacenando las distintas versiones del proyecto, a modo de copia de seguridad y para mantener la trazabilidad completa.
Loading

0 comments on commit b4963be

Please sign in to comment.