\chapter{Introdução}

%\epigraph{\emph{`` É fazendo que se aprende a fazer aquilo que se deve aprender a fazer.''}}%
%         {Aristóteles}
%
%\epigraph{\emph{`` O único homem que nunca comete erros é aquele que nunca faz coisa alguma. Não tenha medo de errar, pois aprenderá a não cometer duas vezes o mesmo erro.''}}%
%         {Theodore Roosevelt}
%
%\epigraph{\emph{`` É durante as tempestades que o verdadeiro marinheiro aprende a velejar.''}}
%         {Ricardo Jordão Magalhães}

\epigraph{\emph{`` O único homem isento de erros, é aquele que não arrisca acertar.''}}
         {Albert Einstein}

\section{Objectivos}

O principal objectivo deste trabalho é projectar, desenvolver e construir dois pequenos robôs capacitados para aprendizagem em \textit{reinforcement learning}.

Pretende-se conceber robôs que se possam deslocar livremente num meio restrito e que possam interagir com esse meio. Interacção essa que será importante para a aprendizagem dos robôs, por esse motivo procurou-se projectar uma plataforma por forma a que os robôs possam retirar dados suficientes, dessa interacção, para aprender.

Uma vez que os robôs aprendem com os erros, a robustez dos mesmos é importante para que estes não se danifiquem. Por outro lado também convém que não danifiquem o meio onde se encontram, pelo que devem, também, possuir alguma flexibilidade.

O \textit{hardware} electrónico deve, para além de integrar os diversos dispositivos sensoriais e de actuação, possibilitar a utilização de software de aprendizagem. A modularidade do hardware é também um factor importante, pois possibilita a expansão de outros dispositivos que possam ser uma mais valia para aprendizagem dos robôs, ou até para que estes possam ter outro tipo de utilidade no futuro.

\pagebreak

\section{Enquadramento}

A inteligência artificial (IA) é, cada vez mais, uma área de interesse no ramo da robótica. A IA é uma área de pesquisa da ciência da computação que se dedica ao desenvolvimento de métodos ou dispositivos computacionais que tenham ou simulem capacidades Humanas, nomeadamente raciocinar, tomar opções e, até quem sabe, ter sentimentos. Existem vários sub-ramos da IA nos quais se destacam:

\begin{itemize}
\item Algoritmos genéticos;
\item \textit{Machine learning};
\item Busca combinatória;
\item \textit{Swarm intelligence};
\item Planeamento autónomo;
\item Processamento de linguagem;
\item Programação genética;
\item Raciocínio baseado em casos;
\item Redes neuronais;
\item Representação de conhecimento;
\item Robótica;
\item Visão computacional.
\end{itemize}

É possível verificar que muitos destes sub-ramos se podem complementar. Por exemplo, existem algoritmos de \textit{Machine learning} que recorrem a redes neuronais.
No caso deste trabalho, uma vez que se trata de robôs para aprendizagem, naturalmente que serão abordadas asa áreas de \textit{Machine learning} e, claro, robótica. Uma vez que se trata de robôs autónomos, poderia ser abordada, também, a área de planeamento autónomo, no entanto não é esse o objectivo deste trabalho, ainda assim pode ser uma área a ser abordada em trabalhos futuros.

De facto, o \textit{Machine learning} é uma área muito investigada nas últimas décadas, o facto de a máquina aprender as tarefas que tem de realizar em determinas situações é, no mínimo muito interessante. Mas porquê ensinar a maquina a realizar tarefas quando podemos apenas programa-la para realizar essas tarefas? Por exemplo, se tivermos um robô com muitos sensores que tenha de realizar múltiplas tarefas em vários tipos de ambientes, então temos um problema muito complexo que iria requerer uma abordagem para cada tipo de tarefa, para cada tipo de ambiente e para cada estado dos diversos sensores. Desenvolver um programa para o robô realizar essas tarefas seria uma enorme dor de cabeça! É aqui que se evidenciam as vantagens do \textit{Machine learning}. Em vez de, desenvolver um programa para o robô realizar determinadas tarefas, para vários tipos de situações, apenas seria necessário desenvolver um programa de aprendizagem que permitisse ao robô aprender que tipo de tarefas teria de realizar em determinados ambientes, poupando assim tempo e trabalho em contemplar todos os estados dos sensores.

Na área de \textit{Machine learning}, existe um tipo de aprendizagem denominado \textit{reinforcement learning}, no qual a máquina aprende através de uma aprendizagem não supervisionada. Isto é, em vez de ser uma pessoa a ensinar a máquina com exemplos, ou a julgar as acções que a máquina tomou, para aprender, é a própria máquina que vai julgar o resultado das acções que realiza.

Mas, será o facto de ser a máquina a julgar, ela própria, o resultado das suas acções assim tão interessante? Vejamos o caso de um ser Humano. Quando somos mais novos somos ensinados pelos nossos pais e/ou outras pessoas, nada mais nada menos do que aprendizagem supervisionada, no entanto nem todos os seres Humanos são iguais, uns, por exemplo, são mais altos que outros. Imaginemos, agora, que temos uma criança muito mais alta que qualquer outra pessoa. Será a experiência das outras pessoas significativamente suficiente para todas as acções que essa criança possa realizar, ou será mais significativa a experiência que essa criança possa retirar das suas acções?

De facto todos somos diferentes e temos maneiras diferentes de agir perante certo tipo de situações, isto devido, em parte, por aquilo que nos ensinaram, é certo, mas maioritariamente por aquilo que aprendemos. É a nossa capacidade para aprender que nos torna únicos. Mas também nos permite adaptar a outras situações fora do normal.

Se extrapolarmos isto para os robôs, torna-se claro as diversas aplicações que a aprendizagem pode ter: Um carro autónomo que aprende a conduzir nas estradas, um robô que aprende a socializar com as pessoas, uma casa que aprende os hábitos das pessoas que nela vivem e adapta-se a esses hábitos, comandando as luzes a temperatura etc..., entre outras aplicações.

Existem alguns, mas poucos, robôs autónomos pequenos para aprendizagem, e os que existem são demasiado dispendiosos. Na verdade qualquer robô que possua sensores e um sistema de locomoção e um sistema de processamento, pode integrar algoritmos de aprendizagem. No entanto, os sensores podem não ser suficientes, ou indicados, para estudar diversos tipos de aprendizagem.

\section{Estado da Arte}

\subsection{Robôs móveis autónomos}

Os robôs têm, cada vez mais, influência na nossa vida. Principalmente na indústria de produção, onde os robôs industriais representam cerca de 1.5 biliões de euros(!). Executando movimentos rápidos com  alta precisão, os robôs industriais podem realizar tarefas repetitivas numa linha de montagem, tais como pintar, soldar, manipular peças, etc\ldots Permitindo elevar a cadência e eficiência da linha de produção, e a qualidade do produto final. Para além dessas vantagens, liberta os operários da realização de tarefas monótonas, para realizarem outro tipo de tarefas. Porem este tipo de robôs têm uma desvantagem: a falta de mobilidade.

%Este parágrafo foi transcrito!!!!!!!!!!!!!!!!
A investigação de robôs móveis começou nos finais da década de 1960, com o projecto \textit{Shakey} desenvolvido no SRI (\textit{Stanford Research Institute}) pelo grupo de Charlie Rosen. O artigo \textit{``A Mobile Automation: An Application of Artificial Intelligence Techniques''} de N.J. Nilsson no IJCAI em 1969, já englobava percepção, mapeamento, planeamento de movimentos, e noções de arquitectura de controlo. Estes assuntos iriam, de facto, tornar-se o núcleo das investigações dos robôs móveis das décadas seguintes. A década de 1980 prosperou com projectos de robôs móveis, e tão cedo se sentiu a necessidade de lidar com a realidade do mundo físico, que apareceram problemas que estimularam novas direcções de pesquisa. Actualmente distanciando-se do conceito original, no qual o robô era apenas uma aplicação de técnicas de IA.\cite{Handbook}\footnote{Este parágrafo foi transcrito!}

Um robô móvel implica que este possua um sistema de locomoção, normalmente recorrendo a motores eléctricos ou outro tipo de actuadores. Ao contrário da maior parte dos manipuladores industriais, que estão fixos num determinado local, os robôs móveis têm a capacidade de se poderem movimentar pelo meio, em que se encontra, podendo executar as suas tarefas em vários locais.

A necessidade de utilização de dispositivos robóticos em ambientes hostis, como por exemplo Marte, impulsiona a implementação de sistemas de locomoção cada vez mais incomuns (ver figura \ref{fig:Mars}). Os robôs ``teleoperados''\footnote{não sei se esta palavra existe} têm ganho popularidade em terrenos perigosos e/ou inabitáveis (ver figuras \ref{fig:pioneer}, \ref{fig:uav}, \ref{fig:versatrax}, \ref{fig:Cutlass} e \ref{fig:auv}). Nestes casos, o baixo nível de complexidade do robô, impossibilita o controlo directo do sistema de locomoção por um operador humano.
Por exemplo, no caso do robô da Plustech (ver figura \ref{fig:plustech}), o operador apenas tem de indicar a direcção, para a qual ele quer que o robô ande, enquanto que o robô possui um controlo automático da coordenação das pernas. Na figura \ref{fig:auv} pode-se ver um robô aquático que, apesar de possuir motores que lhe permitem uma estabilização autónoma debaixo de água, um operador pode-lhe escolher o destino que o submarino deve alcançar. Robôs como os da figura \ref{fig:Cutlass} e \ref{fig:pioneer}, permitem a operador desactivar dispositivos explosivos ou executar outro tipo de tarefas em locais perigosos, sem pôr em risco vidas Humanas.

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.7\textwidth]{Mars_Explorer_Rover_Sojourner}
    \caption{Robôs exploradores de Marte: Spirit e Sojourner da NASA}
    \label{fig:Mars}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.4\textwidth]{Plustech}
    \caption{Robô da Plustech}
    \label{fig:plustech}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.6\textwidth]{Shadow_200_UAV}
    \caption{Robô UAV (\textit{Unmanned Air Vehicle}) Shadow 200 da Força Aérea Americana, este robô foi utilizado recentemente em missões no Iraque}
    \label{fig:uav}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.5\textwidth]{versatrax_150}
    \caption{Robô Versatrax 150 da Inuctun Services Ltd.}
    \label{fig:versatrax}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.6\textwidth]{Cutlass1_gr}
    \caption{Protótipo Cutlass da Rheinmetall, um robô que foi concebido para desactivar engenhos explosivos para substituir o robô do exército Britânico \textit{Wheelbarrow}}
    \label{fig:Cutlass}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.6\textwidth]{Pioneer2x2}
    \caption{Robô Pioneer, este robô foi utilizado para uma missão em Chernobyl}
    \label{fig:pioneer}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.7\textwidth]{Odyssey}
    \caption{Robô AUV (\textit{Autonomous Underwater Vehicle}) Odyssey do MIT}
    \label{fig:auv}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.5\textwidth]{robina}
    \caption{Robô protocolar Robina da Toyota}
    \label{fig:robina}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.4\textwidth]{Transbotics_Laser_Guided_Vehicle}
    \caption{Robô AGV (\textit{Autonomous Ground Vehicle}) da Transbotics, este robô utiliza feixes de laser para navegar autonomamente, obtendo um mapa bi-dimensional exacto do ambiente que o rodeia, podendo, assim, evitar os obstáculos.}
    \label{fig:agv}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.7\textwidth]{Robomaid}
    \caption{Robô doméstico que trata da lida da casa, concebido pela colaboração da Toyota com o IRT (\textit{Information and Robot Technology Research Initiative}) da Universidade de Tokyo.}
    \label{fig:maid}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.9\textwidth]{ASIMO_with_Carissa_sitting_on_couch}
    \caption{Robô ASIMO da Honda}
    \label{fig:asimo}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.7\textwidth]{qrio_aibo}
    \caption{Robôs Qrio e Aibo da Sony}
    \label{fig:qrio_aibo}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.4\textwidth]{irobot}
    \caption{Robô Roomba da iRobot}
    \label{fig:roomba}
\end{figure}

\begin{figure}[ht]
    \centering
    \includegraphics[width=0.4\textwidth]{Khepera_III_robot}
    \caption{Robô Khepera III da K-team}
    \label{fig:khepera}
\end{figure}


Mas não existem apenas robôs para serem operados em locais onde o Homem não pode ir, existem, também, robôs que partilham o mesmo espaço habitado pelos humanos (figuras \ref{fig:robina}, \ref{fig:asimo}, \ref{fig:maid}, \ref{fig:qrio_aibo} e \ref{fig:roomba}). Estes robôs não são úteis por causa da sua mobilidade, mas sim por causa da sua autonomia, de facto, a capacidade de localização e de navegação sem intervenção humana é superior nestes robôs.

Diz a definição que, um robô é autónomo quando é auto-suficiente, isto é, possui um controlador próprio, não dependendo de um computador central para ser comandado. Um robô autónomo, executa as suas tarefas por ele próprio.

Inicialmente a autonomia de um robô pode parecer uma grande vantagem, se um robô funciona por ele próprio num sistema, se outras partes do sistema falharem, o robô continua a funcionar. No entanto, num sistema com muitos robôs idênticos a autonomia pode não ser eficaz. Neste caso é melhor, economicamente, colocar um programa central a controlar todos os robôs, é assim que normalmente funcionam os robôs insecto.

Os robôs mais simples, como por exemplo os de uma linha de montagem, não são, normalmente, autónomos. Quanto mais complexas e diferentes forem as tarefas que um robô tiver de executar, maior poderá ser a autonomia deste. Os robôs autónomos mais avançados possuem IA.

Robôs AGV (\textit{Autonomous Ground Vehicle}), distribuem peças por vários pontos de uma linha de montagem autonomamente. Este tipo de robôs têm ganho uma enorme importância na industria de produção. Inicialmente era necessário preparar os pavimentos com fios eléctricos ou magnetos para que esses robôs se pudessem guiar. Hoje em dia, existem robôs AGV com sistema de navegação por laser (ver figura \ref{fig:agv}). Estes robôs recorrem à emissão de feixes lasers para navegarem autonomamente, para isso é, apenas, necessário colocar reflectores nas paredes, colunas ou máquinas da fábrica, para que, estes, reflictam os fixes laser de volta ao robô, dado-lhe, assim, a posição dos obstáculos.

Nos últimos anos, têm vindo a ser desenvolvidos, cada vez mais, robôs para ajudar os humanos nas tarefas domésticas (figuras \ref{fig:maid} e \ref{fig:roomba}). De facto o Roomba da iRobot tem sido um enorme sucesso de vendas, tendo sido vendidas mais de três milhões de unidades desde 2002, ano em que foi introduzido no mercado. Isto significa que, um em cada quinhentos lares já é limpo pelo Roomba. Este robô aspirador de vácuo, aspira o chão de uma casa autonomamente até quatro divisões por carga. O utilizador apenas tem de indicar a área que o robô tem de limpar por dia e o robô depois de limpar, ou quando precisa de recarregar as baterias, volta à sua base.

Robôs de estudo como o ASIMO (figura \ref{fig:asimo}), o Robomaid (figura   \ref{fig:maid}) ou a Robina (figura \ref{fig:robina}), dão uma ideia de como serão os robôs no futuro. Mas é também graças a estes, e outros, protótipos que a robótica vem evoluindo ao longo dos anos. De facto o ASIMO, actualmente o mais avançado robô humanoide do mundo, deu um ``passo'' enorme na área da robótica, ou não fosse o seu nome \textit{Advanced Step in Innovative mObility}. Isto porque foi o primeiro robô a andar dinamicamente como os humanos, caminhando para a frente e para trás, virando enquanto caminha e até subir e descer escadas. Alem disso possui avançadas tecnologias de inteligência, nomeadamente reconhecimento facial e vocal, mapeamento digital do ambiente que o rodeia, reconhecimento de postura e gestos e ainda ligação à internet.

Mas os robôs não servem só para executar tarefas quotidianas, industriais, ou perigosas, existem robôs autónomos, muito populares hoje em dia, que têm como função entreter miúdos e graúdos. Os robôs QRIO e AIBO da Sony (figura \ref{fig:qrio_aibo}), são um bom exemplo disso. O QRIO (lê-se [quiuriô] \textit{Quest for cuRIOsity}, originalmente designado de \textit{Sony Dream Robot} ou SDR) reconhece vozes e faces, permitindo-o recordar as pessoas como também os seus gostos. Alem de ser um robô humanoide bípede autónomo, o QRIO foi considerado, pelo \textit{Guinness World Records} (edição de 2005), como sendo o primeiro robô bípede com a capacidade de correr (que é definido como andar enquanto periodicamente ambas as pernas estão acima do chão simultaneamente), conseguindo correr a 0.83 Km/h. Foram ainda feitas várias experiências da interacção do QRIO com crianças, das quais se concluíram vários conclusões. A experiência conduzida por Fumihide Tanaka, Aaron Cicourel e Javier Movellan da Universidade da Califórnia San Diego, nos Estados Unidos, foi o primeiro estudo da interacção entre crianças e robôs de longo período\cite{qrio}. Esta experiência consistiu em colocar um QRIO numa sala com crianças, com idades entre os dezoito meses e os dois anos, durante cinco meses. Durante a experiência, esperava-se que o entusiasmo das crianças, com o robô, desaparecesse ao fim de poucas horas, que era o que se passava com outros robôs. Mas, o que se verificou, foi que as crianças se apegaram ao robô durante várias semanas, eventualmente, interagindo com o QRIO do mesmo modo que o faziam com as outras crianças. Um dos problemas com os robôs anteriores, era que as pessoas rapidamente se aborreciam com eles. E, como este estudo comprovou, o QRIO manteve o interesse das crianças, o que possibilita, a este robô ou outro com as mesmas características, vários tipos de aplicações, nomeadamente na ajuda com crianças autistas. Muito embora a Sony tenha parado o desenvolvimento do QRIO e descontinuado o AIBO, estes deixaram uma marca importantíssima para o desenvolvimento de robôs, para crianças, no futuro.

A investigação, na área da robótica, de questões de alto nível cognitivo, localização, navegação, entre outras, é feita recorrendo a robôs adaptados ao ambiente laboratorial. Robôs como o Khepera(figura \ref{fig:khepera})

Quanto à natureza dos robôs móveis, estes podem ser classificados por duas áreas distintas: ambiente de operação e tipo de locomoção.

Relativamente à classificação por ambiente de operação, estes podem ser:

\begin{itemize}
\item Terrestres;
\subitem Exteriores (figuras \ref{fig:Mars}, \ref{fig:plustech}, \ref{fig:versatrax}, \ref{fig:Cutlass} e \ref{fig:pioneer});
\subitem Interiores (figuras \ref{fig:robina}, \ref{fig:agv}, \ref{fig:asimo}, \ref{fig:maid}, \ref{fig:qrio_aibo}, \ref{fig:roomba} e \ref{fig:khepera});
\item Aéreos, também designados por UAV - \textit{Unmanned Aerial Vehicles} (figuras \ref{fig:uav});
\item Subaquáticos, também designados por AUV - \textit{Autonomous Underwater Vehicles} (figura \ref{fig:auv});
\end{itemize}

Em relação ao tipo de locomoção, no caso dos robôs terrestres, estes podem ser movidos por:

\begin{itemize}
\item Rodas (figuras \ref{fig:Mars}, \ref{fig:robina}, \ref{fig:agv}, \ref{fig:maid}, \ref{fig:roomba} e \ref{fig:khepera});
\item Pernas (figuras \ref{fig:plustech}, \ref{fig:asimo} e \ref{fig:qrio_aibo});
\item Lagartas (figuras \ref{fig:versatrax}, \ref{fig:Cutlass} e \ref{fig:pioneer});
\end{itemize}


\pagebreak

\subsection{\textit{Reinforcement learning}} 