Skip to content

Commit

Permalink
(memory) almost ended signal part (remaining obstacles code), added i…
Browse files Browse the repository at this point in the history
…ntro for integration part
  • Loading branch information
csanrod committed Sep 1, 2023
1 parent 5287d7c commit 5e7fc99
Show file tree
Hide file tree
Showing 11 changed files with 335 additions and 107 deletions.
95 changes: 84 additions & 11 deletions memoria/capitulos/capitulo4.tex
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,11 @@ \subsection{Aproximación de Friis}
\subsection{Módulo python de Friis}
\label{subsec:friis-module}

Una vez realizadas las pruebas iniciales, se buscó compactar todo en un lugar accesible para cada aplicación que lo necesitase.\\
Una vez realizadas las pruebas iniciales, se buscó compactar todo, de forma que fuera accesible para cada aplicación que lo necesitase.\\

De este modo, surgió la idea de crear un \textbf{módulo python} que se encargará de modelizar un mapa de señales. Para ello, se diseño una clase cuyo constructor se encargara de recibir por parámetros las variables implicadas en las ecuaciones de Friis, además de las dimensiones del mapa y su resolución (que afecta al tamaño de celda).\\
Por ello, surgió la idea de crear un \textbf{módulo python} que se encargará de modelizar las ecuaciones previamente mencionadas. Para ello, se diseño una clase cuyo constructor se encargara de recibir, por parámetros, las variables implicadas en las ecuaciones de Friis, además de las dimensiones del mapa y su resolución (la cual afecta al tamaño de celda).\\

Básicamente, el \textbf{proceso} es el siguiente, primero se crea un objeto de la clase Friis donde se especifican las características de la señal y el mapa, el cual genera un mapa sin información. Luego, se selecciona el tipo de modelo que se quiera usar (propagación o pérdidas, este último no está testeado), pasando las coordenadas de la señal por parámetros, el cual retornará el mapa relleno con los valores asociados a las ecuaciones de Friis.\\
Básicamente, el \textbf{proceso} seguido para usar este módulo es el siguiente, primero se crea un objeto de la clase Friis donde se especifican las características de la señal y las variables relacionadas con el mapa, lo que genera internamente un array 2D vacío, que será rellenado en función del modelo seleccionado. Posteriormente, se selecciona el modelo deseado (propagación o pérdidas, este último no está testeado), pasando las coordenadas del origen de la señal por parámetros. Esto, retornará el mapa relleno con los valores asociados a las ecuaciones del modelo de Friis seleccionado.\\

A continuación se mostrará un ejemplo sencillo de uso, donde se obtendrá un mapa de propagación de señal, en forma de Numpy array 2D:

Expand All @@ -215,7 +215,7 @@ \subsection{Módulo python de Friis}
\label{cod:friis_basics}
\end{code}

Concretamente, se puede ver que se está generando un mapa 10x10 con resolución 1 (es decir, cada celdilla es de 1x1), de una señal WIFI, donde el transmisor emite a 10 W, con una ganancia de 1.5, el receptor posee una ganancia de 2, un factor de pérdidas (L) de 1, es decir, sin pérdidas, y por último, el exponente n (\ac{PLE}) con un valor de 2, que representa el espacio vacío. Luego se genera el mapa de propagación de la señal, indicando que la fuente se encuentra en las coordenadas (5,3).\\
Yendo al detalle, se puede ver que se genera un mapa 10x10 con resolución 1 (es decir, cada celdilla es de 1x1 unidades), de una señal WIFI, donde el transmisor emite a 10 W, con una ganancia de 1.5, el receptor posee una ganancia de 2, un factor de pérdidas (L) de 1, es decir, sin pérdidas, y por último, el exponente n (\ac{PLE}) con un valor de 2, que representa el espacio vacío. Luego se genera el mapa de propagación de la señal, indicando que la fuente se encuentra en las coordenadas (5,3).\\

No obstante, este módulo posee \textbf{otras funcionalidades} útiles para trabajar con él, como son:

Expand Down Expand Up @@ -243,24 +243,97 @@ \subsection{Módulo python de Friis}

La idea fue abrir puertas a nuevos entornos más complejos y realistas, sobre los que poder probar diversas soluciones, en nuestro caso, para testear el efecto de un muro en el camino del dron a la señal.\\

(código ejemplo obstáculos)\\
(CÓDIGO EJEMPLO OBSTACULOS !!!!!!!!!!!!!)\\

\subsection{Aplicación de Friis}
\label{subsec:friis-app}

La última sección relacionada con las señales se centro en integrar el módulo previo, en una interfaz gráfica amigable para el usuario. La idea era estudiar, en tiempo real, como evolucionaba la señal cuando alguno de sus parametros, en la ecuación de Friis, era modificado.\\
La última sección relacionada con las señales se centro en integrar el módulo previo, en una \textbf{interfaz gráfica intuitiva para el usuario}. La idea era estudiar, en tiempo real, como evolucionaba la señal cuando alguno de sus parametros, en la ecuación de Friis, era modificado.\\

Para llevarlo a cabo, se empleó la librería \textbf{matplotlib}, debido a la enorme cantidad de herramientas de las que dispone, así como de su sencillez a la hora de crear nuevas aplicaciones. Funciona de manera que se generan eventos que son gestionados en \emph{``callbacks''}, es decir, se generan bucles asociados a dichos eventos, que reaccionan a cambios en la interfaz generada. En nuestro caso, la estructura base consta de una figura, sobre la que se agregan todos los elementos, entre los que encontramos los mapas de calor o \emph{``heatmap''} en forma de plots, las barras de acción o \emph{``sliders''}, botones, entre otros elementos que se explicarán más adelante.\\
Para llevarlo a cabo, se empleó la librería \textbf{matplotlib}, debido a la enorme cantidad de herramientas de las que dispone, así como de su sencillez a la hora de crear nuevas aplicaciones. Funciona de manera que se generan eventos que son gestionados en \emph{``callbacks''}, es decir, se generan bucles asociados a dichos eventos, que reaccionan a cambios en la interfaz generada.\\

En nuestro caso, la \textbf{estructura base} consta de una figura, sobre la que se agregan todos los elementos, entre los que encontramos los mapas de calor o \emph{``heatmap''} en forma de plots, las barras de acción o \emph{``sliders''}, botones, entre otros elementos que se explicarán más adelante.\\

Inicialmente, se optó por representar un mapa de calor con una barra de color asociada a los distintos valores de la señal. Además, se integraron sliders correspondientes a cada valor presente en la ecuación de Friis, tal y como se muestra a continuación:\\

(imagen app inicial)\\
\begin{figure} [H]
\begin{center}
\includegraphics[height=8cm]{imagenes/cap4/6_Friss_firstGUI.png}
\end{center}
\caption[Primera versión de la interfaz]{Primera versión de la interfaz}
\label{fig:friis_init_app}
\end{figure}
\newpage
El problema fue, que al actualizar los valores, también lo hacía la representación, por lo que no se apreciaba el efecto de los cambios en el plot.\\

Por ello, se agregaron dos mapas de calor, uno con el máximo y el mínimo fijados a mano (donde sí se aprecian los cambios), y el anterior mencionado. Para elegir cual usar, se agregó una casilla marcable. Además, se incluyeron dos variables relevantes a la hora de modelar, el \textbf{tamaño del mapa} y la \textbf{resolución}, manejadas a través de \emph{``sliders''}, los cuales a su vez se activan al pulsar un botón de \textbf{SET}, que recarga la interfaz. Además, se ajustó los saltos de valores para que fueran coherentes en el resto de barras de acción, tal y como se puede apreciar a continuación:\\

El problema fue, que al actualizar los valores, también lo hacía la representación, por lo que no se apreciaba el efecto de los cambios en el plot. Por ello, se agregaron dos mapas de calor, uno con el máximo y el mínimo fijados a mano (donde sí se aprecian los cambios), y el anterior mencionado. Para elegir cual usar, se agregó una casilla marcable. Además, se incluyeron dos variables relevantes a la hora de modelar, el \textbf{tamaño del mapa} y la \textbf{resolución}, manejadas a través de \emph{``sliders''}, los cuales a su vez se activan al pulsar un botón de \textbf{SET}, que recarga la interfaz. Además, se ajustó los saltos de valores para que fueran coherentes en el resto de barras de acción, tal y como se puede apreciar a continuación:\\
\begin{figure} [H]
\begin{center}
\includegraphics[height=8cm]{imagenes/cap4/7_Friss_endGUI.png}
\end{center}
\caption[Versión final de la interfaz]{Versión final de la interfaz}
\label{fig:friis_end_app}
\end{figure}

(imagen app final)\\
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}

ToDo...
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, comprobar y comparar los distintos algoritmos entre sí, a través de diversas métricas de rendimiento.\\

\subsection{Primeros pasos}
\label{subsec:primeros_pasos}

(intro)\\

(servidor de datos)\\

(heatmap en rviz)\\

\subsection{Algoritmos}
\label{subsec:algoritmos}

(intro)\\

(manual)\\

(manual optimizado)\\

(Q-Learning)\\

\subsection{Métricas empleadas}
\label{subsec:metricas}

(intro)\\

(mapa de posiciones)\\

(mapa de trayectorias)\\

(plots de entrenamiento)\\

(plots comparativos)\\

\subsection{Experimentos y resultados}
\label{subsec:experimentos_resultados}

(intro y señal estática)\\

(12x12)\\

(30x30)\\

(mismo mapa distinta señal)\\

\subsection{Experimentos con obstáculos}
\label{subsec:experimentos_obstaculos}

(intro)\\

(resultados)\\

Binary file added memoria/imagenes/cap4/6_Friss_firstGUI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added memoria/imagenes/cap4/7_Friss_endGUI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 32 additions & 17 deletions memoria/memoria.aux
Original file line number Diff line number Diff line change
Expand Up @@ -306,33 +306,48 @@
\newlabel{fig:interference_algorithm}{{4.5}{26}{Representación del algoritmo}{figure.caption.44}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Aplicación de Friis}{26}{subsection.4.2.3}\protected@file@percent }
\newlabel{subsec:friis-app}{{4.2.3}{26}{Aplicación de Friis}{subsection.4.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Integración conjunta}{27}{section.4.3}\protected@file@percent }
\newlabel{sec:integration}{{4.3}{27}{Integración conjunta}{section.4.3}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusiones}{28}{chapter.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {4.6}{\ignorespaces Primera versión de la interfaz}}{27}{figure.caption.45}\protected@file@percent }
\newlabel{fig:friis_init_app}{{4.6}{27}{Primera versión de la interfaz}{figure.caption.45}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces Versión final de la interfaz}}{28}{figure.caption.46}\protected@file@percent }
\newlabel{fig:friis_end_app}{{4.7}{28}{Versión final de la interfaz}{figure.caption.46}{}}
\acronymused{TFG}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Integración conjunta}{29}{section.4.3}\protected@file@percent }
\newlabel{sec:integration}{{4.3}{29}{Integración conjunta}{section.4.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Primeros pasos}{29}{subsection.4.3.1}\protected@file@percent }
\newlabel{subsec:primeros_pasos}{{4.3.1}{29}{Primeros pasos}{subsection.4.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Algoritmos}{29}{subsection.4.3.2}\protected@file@percent }
\newlabel{subsec:algoritmos}{{4.3.2}{29}{Algoritmos}{subsection.4.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Métricas empleadas}{29}{subsection.4.3.3}\protected@file@percent }
\newlabel{subsec:metricas}{{4.3.3}{29}{Métricas empleadas}{subsection.4.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}Experimentos y resultados}{30}{subsection.4.3.4}\protected@file@percent }
\newlabel{subsec:experimentos_resultados}{{4.3.4}{30}{Experimentos y resultados}{subsection.4.3.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.5}Experimentos con obstáculos}{30}{subsection.4.3.5}\protected@file@percent }
\newlabel{subsec:experimentos_obstaculos}{{4.3.5}{30}{Experimentos con obstáculos}{subsection.4.3.5}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusiones}{31}{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}{28}{Conclusiones}{chapter.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{28}{section.5.1}\protected@file@percent }
\newlabel{sec:objetivos_cumplidos}{{5.1}{28}{Objetivos cumplidos}{section.5.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Requisitos satisfechos}{28}{section.5.2}\protected@file@percent }
\newlabel{sec:requisitos_satisfechos}{{5.2}{28}{Requisitos satisfechos}{section.5.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}Balance global y competencias adquiridas}{28}{section.5.3}\protected@file@percent }
\newlabel{sec:balance_global_competencias_adquiridas}{{5.3}{28}{Balance global y competencias adquiridas}{section.5.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}Líneas futuras}{28}{section.5.4}\protected@file@percent }
\newlabel{sec:lineas_futuras}{{5.4}{28}{Líneas futuras}{section.5.4}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Anexo}{29}{chapter.6}\protected@file@percent }
\newlabel{cap:capitulo5}{{5}{31}{Conclusiones}{chapter.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Objetivos cumplidos}{31}{section.5.1}\protected@file@percent }
\newlabel{sec:objetivos_cumplidos}{{5.1}{31}{Objetivos cumplidos}{section.5.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Requisitos satisfechos}{31}{section.5.2}\protected@file@percent }
\newlabel{sec:requisitos_satisfechos}{{5.2}{31}{Requisitos satisfechos}{section.5.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}Balance global y competencias adquiridas}{31}{section.5.3}\protected@file@percent }
\newlabel{sec:balance_global_competencias_adquiridas}{{5.3}{31}{Balance global y competencias adquiridas}{section.5.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}Líneas futuras}{31}{section.5.4}\protected@file@percent }
\newlabel{sec:lineas_futuras}{{5.4}{31}{Líneas futuras}{section.5.4}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Anexo}{32}{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}{29}{Anexo}{chapter.6}{}}
\newlabel{cap:anexo}{{6}{32}{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 }}{30}{table.caption.46}\protected@file@percent }
\newlabel{cuadro:anexo_imagenes_fuentes}{{6.1}{30}{Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }{table.caption.46}{}}
\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }}{33}{table.caption.48}\protected@file@percent }
\newlabel{cuadro:anexo_imagenes_fuentes}{{6.1}{33}{Anexo con las fuentes de donde se han obtenido las imágenes para este proyecto\relax }{table.caption.48}{}}
\bibcite{rae-robotica}{{1}{}{{}}{{}}}
\bibcite{revista-de-robots}{{2}{}{{}}{{}}}
\bibcite{industrial-robot}{{3}{}{{}}{{}}}
Expand All @@ -343,7 +358,7 @@
\bibcite{kettering-bug}{{8}{}{{}}{{}}}
\bibcite{queen-bee}{{9}{}{{}}{{}}}
\bibcite{operation-aphrodite}{{10}{}{{}}{{}}}
\@writefile{toc}{\contentsline {chapter}{Bibliograf\'{\i }a}{31}{appendix*.47}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{Bibliograf\'{\i }a}{34}{appendix*.49}\protected@file@percent }
\bibcite{uas-definicion}{{11}{}{{}}{{}}}
\bibcite{gcs-definicion}{{12}{}{{}}{{}}}
\bibcite{data-link-definicion}{{13}{}{{}}{{}}}
Expand Down
2 changes: 2 additions & 0 deletions memoria/memoria.lof
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,7 @@
\contentsline {figure}{\numberline {4.3}{\ignorespaces Versión final del teleoperador}}{20}{figure.caption.36}%
\contentsline {figure}{\numberline {4.4}{\ignorespaces Tabla ejemplos exponente n}}{23}{figure.caption.42}%
\contentsline {figure}{\numberline {4.5}{\ignorespaces Representación del algoritmo}}{26}{figure.caption.44}%
\contentsline {figure}{\numberline {4.6}{\ignorespaces Primera versión de la interfaz}}{27}{figure.caption.45}%
\contentsline {figure}{\numberline {4.7}{\ignorespaces Versión final de la interfaz}}{28}{figure.caption.46}%
\addvspace {10\p@ }
\addvspace {10\p@ }
Loading

0 comments on commit 5e7fc99

Please sign in to comment.