%---------------------------------------------------------------------
%
%                          Capítulo 2 Estado del arte
%
%---------------------------------------------------------------------

\chapter{Conceptos Generales}%TFM_JOSE_LUIS_Samper

\begin{FraseCelebre}
\begin{Frase}
Grandes descubrimientos y mejoras implican invariablemente la cooperación de muchas mentes.
\end{Frase}
\begin{Fuente}
Alexander Graham Bell.
\end{Fuente}
\end{FraseCelebre}


%-------------------------------------------------------------------
\section{Robótica}  %http://www.profesormolina.com.ar/tecnologia/robotica/historia.htm
\label{cap5:sec:robotica}
%-------------------------------------------------------------------
 La robótica es un concepto de dominio p\'ublico y la mayor parte de la gente tiene una idea de lo que és, sabe sus aplicaciones y el potencial que tienen. El desarrollo de tecnología, donde se incluyen las poderosas computadoras electrónicas, los actuadores de control retroalimentados, transmisión de potencia a través de engranes, y la tecnología en sensores, han contribuido al desarrollo amplio de la robótica en ámbitos industriales, domiciliarios y agricultura (\citet{Robotica}).

%-------------------------------------------------------------------
\section{Robótica de enjambre}
\label{cap5:sec:robotica-de-enjambre}
%-------------------------------------------------------------------
La robótica de enjamnre es una aproximación a la coordinación de un alto número de robots relativamente simples. De manera que en conjunto lleven a cabo tareas colectivas que sobrepasan las capacidades de un único robot (\citet{SR04}). Utilizar este comportamiento no es casual, es inspirado en el estudio de la manera de actuar de insectos sociales, como hormigas, termitas, avispas o abejas, que son un gran ejemplo de colaboración de individuos simples que interactuan para crear sistemas inteligentes colectivos. Estos conjuntos de insectos demuestran tres características importantes para la robótica: robustez, flexibilidad y escalabilidad. Por lo tanto, la robótica de enjambre se basa en la metáfora de las colonias de insectos sociales para enfatizar aspectos como el control descentralizado, la comunicación limitada entre agentes, el uso de información local, la aparición de un comportamiento global y la robustez (\citet{SR05}). En (\citet{SR06}) se propone la siguiente definición para este término:"La robótica de enjambre es el estudio de cómo un gran número de agentes relativamente simples pueden ser diseñados de manera que el comportamiento colectivo deseado emerja a partir de las interacciones locales entre los agentes y entre los agentes y el entorno". Para el caso particular de exploración de un ambiente desconocido (Zonas de desastres naturales, misiones militares, exploraci\'on planetaria, etc), una forma de explorarlo es mediante el uso de un enjambre de \RAEs , estos, generalmente, se encuentran con varios obst\'aculos de distinta \'indole, pero uno de ellos considerado importante es el mantener comunicaci\'on confiable con la estaci\'on base, esto es debido a la falta de repetidores en el area inexplorada y limitado al alcance de la señal de los mismos robots, la estaci\'on base o por la geograf\'ia que impiden la propagaci\'on de la señal.

%-------------------------------------------------------------------
\section{Inteligencia Artificial}
\label{cap5:sec:inteligencia-artificial}
%-------------------------------------------------------------------
Desde hace un poco más de medio siglo nació una ciencia denominada "\IA", la cual busca simular el proceso cognitivo que realiza la naturaleza, persona o ser vivo para la resolución de problemas o, dicho de una manera más formal, \verb|"Conjunto de técnicas que se aplican a la computadora con el objeto de desarrollar su capacidad para realizar funciones de aprendizaje y auto-corrección"|. Sus objetivos principales son:
\begin{itemize}
\item Realizar investigaciones sobre el comportamiento humano para desarrollar herramientas de apoyo que ayuden a mejorar las actividades del hombre.
\item Desarrollar y aplicar técnicas para representar un gran volumen de conocimientos, para resolver problemas complejos de una manera rápida y confiable.
\item Lograr \verb|"crear pensamiento"| y poder desarrollar sistemas diferentes a los convencionales que no toman decisiones propias.
\end{itemize} 
A través de los años esta ciencias se fue dividiendo en varias ramas, tales como:
\begin{itemize}
\item Algoritmos genéticos.
\item Redes Neuronales.
\item \SVM
\item Lógica Difusa.
\item Machine Learning o Aprendizaje Automático.
\item DeepLearning.
\end{itemize}
%-------------------------------------------------------------------
\subsection{Machine Learning}%http://cleverdata.io/que-es-machine-learning-big-data/ y mi informe
%-------------------------------------------------------------------
Machine Learning o Aprendizaje automático es una disciplina científica del ámbito de la \IA que crea sistemas que aprenden autonomamente. Todos los seres vivos exhiben algún tipo de comportamiento, en el sentido que realizan alguna acción como respuesta a un estímulo percibido por el ambiente en que se desenvuelven. Algunos de ellos, además, modifican su comportamiento a lo largo del tiempo, de forma que ante estimulos equivalentes se comportan de forma distinta con el paso del tiempo, es por esto que decimos que estos seres vivos han aprendido un comportamiento adecuado para interactuar con su entorno en su beneficio. Esto se puede ejemplificar en la enseñanza de un perro para hacer algún truco que nosotros deseamos.
Para un mayor entendimiento de este tema se dividió en tres aéreas:
\begin{itemize}
\item Aprendizaje Supervisado: Técnica para deducir una función a partir de datos de entrenamiento catalogados en correctos e incorrectos.
\item Aprendizaje No Supervisado: Modelo ajustado a las observaciones, es decir no se tiene conocimiento a priori de los datos de entrenamiento.
\item Aprendizaje por Refuerzo: Algoritmo de aprendizaje que recibe algún tipo de valoración acerca de la idoneidad de la respuesta dada. Es similar al aprendizaje supervisado, en lo referente a recibir información acerca de lo que es apropiado, pero la gran diferencia es su enfrentamiento con las respuestas erróneas, cuando el aprendiz responde de forma inadecuada el aprendizaje supervisado le dice exactamente qué hacer en ese caso, por otro lado, el aprendizaje por refuerzo solo le informa acerca de que el comportamiento ha sido inapropiado y cuanto error se ha cometido.
\end{itemize}
\medskip
En (\citet{ML}) se habla sobre el proceso de simular el aprendizaje de sistemas biológicos reales y algunas suposiciones que simplifican el comportamiento de los agentes (aprendices). Esto permitirá tener un sistema flexible para proyectar diversas situaciones con el mismo sistema, y así poder extraer conclusiones generales acerca de las propiedades de los algoritmos que implementen estos sistemas de aprendizaje. En general se debe suponer que los aprendices siguen en su decisión un Proceso de Decisión de Markov, es decir:
\begin{itemize} 
\item El agente percibe un conjunto finito, S, de estados distintos en su entorno, y dispone de un conjunto finito, A, de acciones para interactuar con él.
\item El tiempo avanza de forma discreta, y en cada instante de tiempo, t, el agente percibe un estado concreto, $s_{(t)}$ , selecciona una acción posible, $a_{(t)}$ , y la ejecuta, obteniendo un
nuevo estado, $s_{t+1} = a_t (s_t)$. 
\item El entorno responde a la acción del agente por medio de una recompensa, o castigo, $r(s_t , a_t )$ el cual se representara por un número, de forma que cuando mayor es, mayor es el beneficio.
\item Tanto la recompensa como el estado siguiente obtenido no tienen por qué ser conocidos a priori por el agente y dependen únicamente del estado actual y de la acción tomada. Es decir, antes de aprender, el agente no sabe qué pasará cuando toma una acción determinada en un estado particular. Precisamente, un buen aprendizaje es aquel que permite adelantarse al agente en las consecuencias de las acciones tomadas, reconociendo las acciones que sobre estados concretos le llevan a conseguir con más eficacia y mayores recompensas, sus objetivos.
\end{itemize}

%-------------------------------------------------------------------
\section{Simulación y Software}
\label{cap5:sec:simulacion-y-software}
%-------------------------------------------------------------------
Hoy en día cuando se habla de simulación de cualquier tipo de eventos se piensa en un computador, sin embargo existen varios software dedicados a simular lo que la imaginación permita y, para llevar a cabo esto, se necesita un sistema operativo capaz de soportar dicho software es por esto que se analizarán algunas de las posibles herramientas informáticas que disponibles en la actualidad.
%-------------------------------------------------------------------
\subsection{Sistemas Operativos}
%-------------------------------------------------------------------
Un sistema operativo es un programa que controla otras partes del oredenador tanto hardware como software y permite además al usuario acceder a las facilidades que ofrece el sistema. Es por esto que para poder desarrollar una aplicación computacional de robótica se requiere algunos requisitos especificos para lograr un buen resultado, debido a esto que la elección del sistema operativo a utilizar tanto para programar como para ejecutar es de suma importancia.
%-------------------------------------------------------------------
\subsubsection{Windows}%http://conceptodefinicion.de/windows/
%-------------------------------------------------------------------
Es un sistema operativo mundialmente reconocido y utilizado por usuarios y profesionales de las distintas areas, sin embargo a nivel de desarrollador tiene algunas limitancias en relación a los permisos a los cuales se puede acceder. Por otra parte tiene una gran variedad de softwares que se pueden utilizar y el mercado cibernético está echo para cubrir cualquier necesidad a cambio de dinero.
Windows es un sistema operativo desarrollado por la empresa de software Microsoft Corporation, el cual se encuentra dotado de una interfaz gráfica de usuario basada en el prototipo de ventanas (su nombre en inglés). Una ventana representa una tarea ejecutada o en ejecución, cada una puede contener su propio menú u otros controles, y el usuario puede ampliarla o reducirla mediante un dispositivo señalador como el ratón o mouse.
%-------------------------------------------------------------------
\subsubsection{Linux}%https://bioinf.comav.upv.es/courses/linux/unix/introduccion.html
%-------------------------------------------------------------------
Linux es una familia de sistemas operativos de tipo Unix que utilizan el kernel Linux. Es multiplataforma desde teléfonos móviles hasta supercomputadores. Se compone de un gran número de piezas que son desarrolladas de forma independiente por miles de programadores y proyectos. Normalmente estas piezas son integradas por un distribuidor y Linux es suministrado como una distribución Linux. Su licencia GPL \footnote{General Public License} y actualmente hay mas de  distribuciones Linux de las cuales aproximadamente la mitad tienen un desarrollo activo. Estas distribuciones están adaptadas para usuarios o tareas específicas. Algunas de estas distribuciones están desarrolladas o apoyadas por empresas como Fedora \footnote{Red Hat} , openSUSE \footnote{Novel} y Ubuntu \footnote{Canonical}, mientras que otras son mantenidas por la propia comunidad de usuarios \footnote{Debian}.
Algunas de las distribuciones más conocidas son:
\begin{itemize}
\item Ubuntu
\item Kubuntu
\item Linux mint
\item Debian
\end{itemize}
%-------------------------------------------------------------------
\subsubsection{ROS}
%-------------------------------------------------------------------
Este middleware (buscar sinonimo español), cuyas siglas derivan de la nomenclatura anglosajona "Robot Operating System", tiene como propósito aportar un marco de trabajo común sobre el que articular una plataforma para robótica. De analizar sus principales características, se extrae que ROS puede aportar un gran número de ventajas:
\begin{itemize}
\item abstracción del hardware.
\item gestión de las comunicaciones de forma transparente al usuario.
\item gran número de herramientas(simuladores, Visualizadores de datos, depuradores,etc).
\item librerías para robótica(matemáticas, geométricas, integración con visión por comutador,etc).
\end{itemize}
Por último, señalar que existe una versión Industrial que se comenzo a trabajar desde el 2013.

%-------------------------------------------------------------------
\subsection{Gazebo, V-rep, Blender, Inventor, Meshlab}
%-------------------------------------------------------------------
\begin{itemize}
\item \verb|Gazebo|: Software de simulación Open-Source, que ofrece la posibilidad de simular con precisión y eficiencia una grna cantidad de robots en entornos complejos. Incluye una funcionalidad en el motor de física que permite simular, entre otros, entornos acuáticos en los que los robots son influidos por corrientes y demás propiedades fluiodo-mecánicas. Una característica relevante de este simulador es que tiene la capacidad de otorgar al desarrollador añadir plugins de físicas que afecten a una parte focalizada del entorno simulado, como puede ser un robot modificiando su comportamiento ante ciertos eventos ( a modo de ejemplo, podría recrearse un mundo con gravedad en el que un robot no esté afectado por ella).
\item \verb|V-rep|: Software con licencia gratuita y una comercial este simulador de robots tiene un entorno de desarrollo integrado basado en una arquitetura de control distribuido : cada objeto/modelo puede controlarse individualmente a través de un script incrustado, un complemento, un nodo ROS o Bluezero, un cliente API remoto o un sistema personalizado. Esto hace que sea muy versátil e ideal para aplicaciones multi-*robot. Los controladores se puden escribir en C/C++, Python, Java, Lua, Matlab u Octave.
\item \verb|Blender|: Software Open-Source destinado, en primera instancia, al modelado 3D de objetos. Incorpora la posibilidad de dar texturas, definir materiales, iluminar la escena, crear simulaciones. Destaca por sus capacidades para la creación de mallas y animaciones.
\medskip
Más aún, despunta al permitir que la comunidad de usuarios amplíe sus funcionalidades y características mediante scripts y plugins, desarrolladores principalmente en Python. En segundo término, Blender maneja una gran cantidad de formatos de entrada y salida, entre los que se encuentra el conocido DAE o COLLADA con el que se definen las geometrías de Gazebo. Por último, mencionar que permite generar, simplificar, combinar y modificar Point Clouds de forma relativamente sencilla.
\item \verb|Inventor|: Software privado que proporciona un conjunto de herramientas profesionales para diseño mecánico, documentación y simulación de productos en 3D. Al igual que toda la familia de productos AutoDesk dispone de licencias educacionales fáciles de adquirir por estudiantes y entidades dedicadas a la enseñanza.
\item \verb|Meshlab|:Programa avanzado para trabajar con mallas tridimensionales, ampliamente conocido en el campo técnico del desarrollo 3D y manejo de datos. Esta herramienta destaca por su capacidad multiplataforma y su carácter Open Source, amparado bajo la licencia GNU (General Public License). 
En contraste con Blender, Meshlab entrega una gran cantidad de información estructural acerca de la malla cargada: número de vértices y aristas, conjunto de componentes normales a superficies, vértices... Además, posee una gran cantidad de herramientas y filtros con los que simplificar las mallas, reconstruir superficies, modificar el número de puntos que las conforman, sin alterar su estructura, y un largo etcétera.
\end{itemize}
%-------------------------------------------------------------------
\section{Conclusión parcial}
%-------------------------------------------------------------------
En esta sección se dará a conocer las explicaciones técnicas por las cuales se escojieron los Sistemas Operativos y Software utilizados en este Trabajo de Título.
%-------------------------------------------------------------------
\subsection{Ubuntu}
%-----------------------+--------------------------------------------
Como sistema Operativo principal de programación y ejecución del código se utilizará la distribución Ubuntu(basado en Debian) debido a la compatibilidad que ofrece para los softwares de código abierto, ya que, es una de las más utilizadas y se actualiza constantemente. En resumen a través de dos motivos:
\begin{itemize}
\item Comodidad para la programación e integración de proyectos de investigación aplicada.
\item ROS se articula y construye en torno al núcleo de Ubuntu.
\end{itemize}

%-------------------------------------------------------------------
\subsection{ROS}
%------------------------------------------------------------------
Debido a que la aplicación es especificamente para Robots y para facilitar el manejo en el mismo agente se utilizará ROS a traves del lenguaje de programacion c++ debido a su exactitud a bajo nivel en comparación con python que es de alto nivel. Cabe mencionar que gran parte de la Comunidad Investigadora acepta este SO. Además es escalable a la industria con su version ROS-Industrial\footnote{https://rosindustrial.org/}.
%-------------------------------------------------------------------
\subsection{Gazebo}
%-------------------------------------------------------------------
Se utilizará este software libre debido a su nulo gasto de inversión( en comparación a los otros mencionados) y la compatibilidad excelente con ROS y Ubuntu, ademas tiene las siguientes cualidades:
\begin{itemize}
\item Todas sus funcionalidades y características se centran y dedican únicamente al sector de la robótica permitiendo desde la sintonización de controladores hasta la detección de colisiones.
\item Es multiplataforma, pudiendo ser utilizados por otros investigadores que prefieren utilizar otros sistemas operativos.
\item Dispone de un motor de fícias renovado con el que simular incluso comportamientos fluido-mecánicos. En este aspeto, es sencillo encontrar simulaciones con drones(insertar referencia, submarinos(insertar referencia) e incluso estrategias de despegue de aviones(insertar referencia).
\item Contempla la comunicación con un amplio espectro de interfaces como:
\begin{itemize}
\item \verb|Matlab|
\item \verb|Octave|
\item \verb|C++|
\item \verb|C#|
\item Programas de realimentación de fuerzas para telemanipulación como Open Haptrix (Insertar referencia).
\end{itemize}
Tanto es así, que ofrece la posibilidad de crear la simulación como si de un servidor se tratase y conectarlo al IoT("internet of Things")(insertar referencia) mediante esquemas basados en Javascript, como NodeJs y WebGL.(Insertar referencias)
\end{itemize}
%-------------------------------------------------------------------
\subsection{Machine Learning}
%-------------------------------------------------------------------
Como la aplicación para la cual se utilizará \IA  es de caracter de exploración, es decir, no se conoce el lugar, se debe utilizar un algoritmo en el cual el agente(robot) esté en constante aprendizaje, y especificamente se utilizará un código probado por un estudiante de la Universidad del Bio Bio (\citet{TesisPalma}), por su simplesa y efectividad demostrada en Matlab.
%-------------------------------------------------------------------



% Variable local para emacs, para  que encuentre el fichero maestro de
% compilación y funcionen mejor algunas teclas rápidas de AucTeX
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../Tesis.tex"
%%% End:
