Skip to content

Commit

Permalink
ended first version for chapter 3 in the memory, images remaining...
Browse files Browse the repository at this point in the history
  • Loading branch information
csanrod committed Aug 7, 2023
1 parent cf0a5ce commit 580fe05
Show file tree
Hide file tree
Showing 10 changed files with 648 additions and 208 deletions.
133 changes: 133 additions & 0 deletions memoria/bibliografia.bib
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,137 @@ @misc{paper-ia-dron
eprint={1905.13406},
archivePrefix={arXiv},
primaryClass={eess.SP}
}

@Electronic{tiobe,
Title = {\textit{TIOBE Index for August 2023}},
howpublished= {\url{https://www.tiobe.com/tiobe-index/}},
author = {Tiobe},
year = {2023}
}

@Electronic{python-history,
Title = {\textit{History of Python}},
howpublished= {\url{https://www.geeksforgeeks.org/history-of-python/}},
author = {SohomPramanick},
year = {2022}
}

@Electronic{python-def,
Title = {\textit{What is Python? Executive Summary}},
howpublished= {\url{https://www.python.org/doc/essays/blurb/}},
author = {Python Source Fundation},
year = {2023}
}

@Electronic{compiled-vs-interpreted,
Title = {\textit{Compiled vs interpreted language: Basics for beginning devs}},
howpublished= {\url{https://www.educative.io/blog/compiled-vs-interpreted-language}},
author = {Bryce Limón},
year = {2022}
}

@Electronic{c-history,
Title = {\textit{History of C++}},
howpublished= {\url{https://www.geeksforgeeks.org/history-of-c/}},
author = {SohomPramanick},
year = {2022}
}

@Electronic{middleware-def,
Title = {\textit{What is middleware?}},
howpublished= {\url{https://www.ibm.com/topics/middleware}},
author = {IBM},
year = {2023}
}

@Electronic{ros-def,
Title = {\textit{ROS - Robot Operating System}},
howpublished= {\url{https://www.ros.org/}},
author = {ROS},
year = {2023}
}

@Electronic{ros-def,
Title = {\textit{ROS - Robot Operating System}},
howpublished= {\url{https://www.ros.org/}},
author = {ROS},
year = {2023}
}

@Electronic{gazebo-def,
Title = {\textit{About Gazebo}},
howpublished= {\url{https://gazebosim.org/about}},
author = {Gazebo},
year = {2023}
}

@Electronic{rviz-def,
Title = {\textit{RVIZ}},
howpublished= {\url{https://github.com/ros-visualization/rviz#readme}},
author = {ros-visualization},
year = {2023}
}

@Electronic{vscode-def,
Title = {\textit{Getting Started}},
howpublished= {\url{https://code.visualstudio.com/docs}},
author = {Visual Studio Code},
year = {2023}
}

@Electronic{github-def,
Title = {\textit{What Is GitHub, and What Is It Used For?}},
howpublished= {\url{https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what-do-geeks-use-it-for/}},
author = {HTG Stuff},
year = {2016}
}

@Electronic{opencv-def,
Title = {\textit{About}},
howpublished= {\url{https://opencv.org/about/}},
author = {OpenCV},
year = {2023}
}

@Electronic{matplotlib-def,
Title = {\textit{Python | Introduction to Matplotlib}},
howpublished= {\url{https://www.geeksforgeeks.org/python-introduction-matplotlib/}},
author = {KattamuriMeghna},
year = {2023}
}

@Electronic{flight-controller,
Title = {\textit{How Drone Controllers Work (Explained for Beginners)}},
howpublished= {\url{https://www.droneblog.com/drone-controller/}},
author = {Peter Karanja},
year = {2023}
}

@Electronic{px4-def,
Title = {\textit{PX4 Autopilot User Guide (main)}},
howpublished= {\url{https://docs.px4.io/main/en/}},
author = {PX4 User Guide},
year = {2023}
}

@Electronic{px4-mavlink,
Title = {\textit{MAVLink Messaging}},
howpublished= {\url{https://docs.px4.io/main/en/middleware/mavlink.html}},
author = {PX4 User Guide},
year = {2023}
}

@Electronic{px4-mavros,
Title = {\textit{ROS 1 with MAVROS}},
howpublished= {\url{https://docs.px4.io/main/en/ros/ros1.html}},
author = {PX4 User Guide},
year = {2023}
}

@Electronic{jderobot-ref,
Title = {\textit{JdeRobot}},
howpublished= {\url{https://jderobot.github.io/}},
author = {JdeRobot},
year = {2023}
}
51 changes: 30 additions & 21 deletions memoria/capitulos/capitulo3.tex
Original file line number Diff line number Diff line change
Expand Up @@ -9,73 +9,82 @@ \section{Lenguajes de programación}
\subsection{Python}
\label{subsec:python}

A día de hoy, considerado el lenguaje de programación más popular, se ideó en 1991 por Guido van Rossum y se desarrolló en la Python Software Foundation. Es interpretado, es decir, usa un programa que traduce las líneas de código para la máquina en tiempo de ejecución (lo cual lo hace más intuitivo pero menos eficiente). Además, permite la programación orientada a objetos en alto nivel, lo que ofrece gran dinamismo a la hora de usarlo.\\
A día de hoy, considerado el lenguaje de programación más popular \cite{tiobe}, se ideó en 1991 por Guido van Rossum y se desarrolló en la Python Software Foundation \cite{python-history}. Es interpretado, es decir, usa un programa que traduce las líneas de código para la máquina en tiempo de ejecución (lo cual lo hace más intuitivo pero menos eficiente). Además, permite la programación orientada a objetos en alto nivel, lo que ofrece gran dinamismo a la hora de usarlo \cite{python-def} \cite{compiled-vs-interpreted}.\\

Debido a su amplia popularidad, podemos acceder a una gran variedad de módulos y utilidades desarrollados por la comunidad, los cuales se integran perfectamente en la resolución de nuestro problema. Entraremos en más detalles en apartados posteriores.
Debido a su amplia popularidad, podemos acceder a una gran variedad de módulos y utilidades desarrollados por la comunidad, los cuales se integran perfectamente en la resolución de nuestro problema. Entraremos en más detalles en apartados posteriores.\\

\subsection{C++}
\label{subsec:cplusplus}

Seguido muy de cerca en fama, se encuentra el lenguaje de programación creado por Bjarne Stroustrup, en los laboratorios Bell en 1971. En este caso es compilado, lo que implica la traducción y enlazado previo a la ejecución. De corte más eficiente que Python, también permite la programación orientada a objetos. Se sitúa a medio camino entre un lenguaje de alto nivel y uno de bajo nivel.\\
Seguido muy de cerca en fama, se encuentra el lenguaje de programación creado por Bjarne Stroustrup, en los laboratorios Bell en 1971. En este caso es compilado, lo que implica la traducción y enlazado previo a la ejecución. De corte más eficiente que Python, también permite la programación orientada a objetos. Se sitúa a medio camino entre un lenguaje de alto nivel y uno de bajo nivel \cite{c-history}.\\

\section{\ac{ROS}}
\label{sec:ros}

Si se habla de robótica, se habla de \ac{ROS}, ya que es el medio predilecto para el desarrollo de soluciones de este ámbito, pero, ¿qué es exactamente \ac{ROS}?.\\

Se trata de un \emph{middleware}, es decir, una infraestructura software situada entre el sistema operativo y el desarrollador, que incluye una serie de módulos y funcionalidades enfocadas al desarrollo de aplicaciones robóticas. La idea detrás, busca estandarizar soluciones que no dependan de los drivers de cada sensor y actuador presentes. De forma general, se trata de una arquitectura basada en nodos que se comunican entre sí, transmitiendo una serie de mensajes propios, a través de canales compartidos llamados \emph{topics}.\\
Se trata de un \emph{middleware}, es decir, una infraestructura software situada entre el sistema operativo y el desarrollador, que incluye una serie de módulos y funcionalidades enfocadas al desarrollo de aplicaciones robóticas \cite{middleware-def} \cite{ros-def}. La idea detrás, busca estandarizar soluciones que no dependan de los drivers de cada sensor y actuador presentes. De forma general, se trata de una arquitectura basada en nodos que se comunican entre sí, transmitiendo una serie de mensajes propios, a través de canales compartidos llamados \emph{topics}.\\

Entre las herramientas usadas en este proyecto, se encuentran las siguientes.

\subsection{Gazebo 11}
\label{subsec:gazebo}

ToDo...
Se trata del simulador sobre el cual se desarrolla el proyecto. Concretamente consta de un conjunto de módulos optimizados para desarrollar aplicaciones robóticas, a través del previamente mencionado \ac{ROS} \cite{gazebo-def}.\\

Esta herramienta, nos permite visualizar en directo, el comportamiento del dron frente a los diversos escenarios que se planteen.

\subsection{Rviz}
\label{subsec:rviz}

ToDo...
Por el otro lado, se encuentra \emph{rviz}, que es un visualizador 3D diseñado para la depuración de aplicaciones \ac{ROS} \cite{rviz-def}.\\

En nuestro caso, nos permitirá ver como se dispersa la señal \ac{RF}, que trayectoria y orientación sigue el dron, que efecto tiene sobre la señal la presencia de obstáculos, y otras tantas opciones.\\

\section{Plataformas de programación}
\label{sec:plataformas_de_programacion}

\subsection{Visual Studio Code}
\label{subsec:visual_studio_code}

ToDo...
Entre las plataformas usadas para programar, \emph{Visual Studio Code}, o mejor conocido como \emph{VS code}, es un editor de código ligero, funcional tanto en Linux, Windows y macOS \cite{vscode-def}.\\

Su principal ventaja, es que es altamente personalizable a el tipo de desarrollo software que se desee realizar. Todo ello a través de las múltiples extensiones que ofrece, así como la conexión directa y fluida con plataformas como Github, que se detallarán a continuación.\\

\subsection{Github}
\label{subsec:github}

ToDo...
Github nace de la herramienta \textbf{git}, creada por Linus Torvalds (desarrollador de Linux), que es un sistema de control de versiones, que funciona a grandes rasgos a través de repositorios (o lugares donde se almacenan los sistemas de versiones de forma local), y commits (que permiten actualizar la version del código almacenado del repositorio) \cite{github-def}.\\

Sabiendo esto entonces, ¿qué es github?. Consiste en trasladar la idea de, en vez de tener repositorios locales, que estén distribuidos en una plataforma online, donde además se permita el desarrollo conjunto de aplicaciones de manera distribuida.\\

Por ello, el papel que toma en este proyecto es de vital importancia, ya que asegura un seguimiento y una seguridad, de cara a tener copias de seguridad, donde todo el que desee puede acceder a ver en que punto se encuentra el \ac{TFG} pueda hacerlo.\\

\section{Módulos}
\label{sec:modulos}

ToDo...

\subsection{OpenCV}
\label{subsec:opencv}

ToDo...
Es una biblioteca software de python, enfocada a visión artificial, que dispone de métodos para desarrollar interfaces gráficas de manera intuitiva \cite{opencv-def}.\\

Inicialmente se usó para esto último, por su sencillez y porque se implementó una cámara al dron, de cara a una posible extensión de su funcionalidad en algún punto del proyecto.\\

\subsection{Matplotlib}
\label{subsec:matplotlib}

ToDo...
Presentada por John Hunter en 2002, se usó como biblioteca python alternativa a la anterior mencionada. La gran diferencia radica en que está diseñada para trabajar con estructuras numéricas del tipo array (muy compatible con Numpy \footnote{\url{https://numpy.org/about/}}), lo que permite ofrecer una gran visualización y una interfaz responsiva \cite{matplotlib-def}.\\

\subsection{MavROS}
\label{subsec:mavros}
En el caso concreto del proyecto, se usó para desarrollar interfaz gráfica, que simula y muestra el comportamiento de una señal \ac{RF}, permitiendo modificar los parámetros de la ecuación en tiempo real.\\

ToDo...

\subsection{PX4}
\subsection{PX4 autopilot}
\label{subsec:px4}

ToDo...
Es la capa de software que permite hacer funcionar las aeronaves con sus componentes, esto es a través del controlador de vuelo, que a efectos prácticos se trata del cerebro del sistema, es decir, interconecta los sensores y actuadores, permitiendo comandar diversas acciones \cite{flight-controller} \cite{px4-def}.\\

Este sistema, usa un conocido protocolo de comunicaciones llamado \textbf{MAVLink}, que se encarga de gestionar la comunicación entre el controlador de vuelo y la \ac{GCS}. En nuestro caso, y como queremos desarrollar aplicaciones mediante \ac{ROS}, debemos añadir una capa más, que se encarga de traducir los mensajes ROS a mensajes compatibles con el protocolo MAVLink, y de esto se encarga \textbf{MAVROS} \cite{px4-mavlink} \cite{px4-mavros}.\\

\subsection{jderobot}
\label{subsec:jderobot}
\section{Iris}
\label{sec:iris}

ToDo...
Es el nombre de la aeronave usada para solucionar los problemas planteados. En síntesis, es un dron cuadracóptero provisto de una cámara y un sensor de \ac{RF} simulado. Dicha aeronave es cortesía de \textbf{JdeRobot}, que es un conjunto de herramientas pensadas para desarrollar aplicaciones robóticas \cite{jderobot-ref}.\\
Loading

0 comments on commit 580fe05

Please sign in to comment.