\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 pequenos robôs orientados para aprendizagem de comportamentos de locomoção.

Pretende-se implementar robôs que se possam deslocar livremente num meio confinado e que com ele possam interagir. Essa interacção será importante para a aprendizagem e, por esse motivo, procurou-se projectar uma plataforma de modo a que os robôs possam obter dados suficientes dessa interacção para desenvolver aprendizagem de forma autónoma.

Uma vez que se pretende que os robôs aprendam com os resultados de todas as suas acções, a sua robustez é importante para que não se danifiquem em caso de colisão. Por outro lado, também convém que não danifiquem o meio onde se encontram, pelo que devem possuir alguma flexibilidade.

Para além de integrar os diversos dispositivos sensoriais e de actuação, o \textit{hardware} deve possibilitar a utilização de \textit{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 aplicação 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, como, por exemplo, raciocinar, tomar opções. Existem vários sub-domínios da IA, e é muito comum, em pesquisas na área da robótica, interligar alguns desses sub-domínios. Por exemplo, existem algoritmos de \textit{Machine learning} (aprendizagem de máquina) que recorrem a redes neuronais.

No caso deste trabalho, sendo um dos objectivos desenvolver robôs para aprendizagem, naturalmente que serão abordadas as áreas de \textit{Machine learning}. Embora se pretenda conceber robôs autónomos móveis, não se pretende nem fará qualquer planeamento de movimento.

Nas últimas décadas, o \textit{Machine learning} tem sido uma área muito investigada. Talvez pelo facto de a máquina aprender as tarefas que tem de realizar em determinadas situações poder ser uma vantagem. Por exemplo, um robô com muitos sensores que tenha de realizar múltiplas tarefas em vários tipos de ambientes implica um problema muito complexo que requer 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 é um trabalho árduo. Nesta situação são evidentes 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 é necessário desenvolver um programa de aprendizagem que permita um robô aprender o tipo de tarefas que tem 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 de \textit{reinforcement learning}, no qual a máquina aprende através de uma aprendizagem não supervisionada. Isto é, em vez de se fornecer exemplos à máquina, ou avaliar as acções que a máquina tomou, para aprender, é a própria máquina que avalia o resultado das acções que realiza.

O facto de ser a máquina a avaliar, por ela própria, o resultado das suas acções pode ser vantajoso. Um ser humano, enquanto criança, é ensinado pelos pais e/ou outras pessoas (aprendizagem supervisionada), no entanto, nem todos os seres humanos são iguais, uns, por exemplo, são mais altos que outros. Se uma criança fosse muito diferente de todos os outros seres humanos, a experiência desses não seria significativa, comparada com a experiência adquirida por essa criança, em relação a uma qualquer situação.

De facto, os seres humanos são diferentes e têm maneiras diferentes de agir perante certo tipo de situações; devido, em parte, pelo que lhes é ensinado, mas em grande parte, por aquilo que aprendem por eles próprios. A capacidade para aprender torna cada ser humano único, permitindo-lhes assim adaptarem-se a diferentes situações.

Extrapolando isto para os robôs, são claras 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.

Um robô móvel autónomo, orientado para a aprendizagem, deve possuir um sistema de processamento de algoritmos de aprendizagem, uma unidade de armazenamento de dados para guardar dados da aprendizagem, múltiplos sensores, um sistema de locomoção e uma fonte de energia. Embora todos estes requisitos sejam importantes, os sensores requerem uma atenção especial. Isto porque, é através dos sensores que um robô obtém uma representação do meio que o rodeia, sem eles não seria possível um robô aprender, nem sequer movimentar-se autonomamente.

Os projectos de investigação na área da robótica, de questões de alto nível cognitivo, localização, navegação, entre outras, são realizados recorrendo a robôs de plataforma standard que são adaptados ao ambiente laboratorial. No entanto, apesar de existirem alguns pequenos robôs móveis autónomos para aprendizagem, os que existem, são demasiado dispendiosos, ou não possuem uma plataforma suficientemente modular, que permita a adaptação de mais sensores, ou outro tipo de dispositivos, para permitir realizar estudos de aprendizagem.

\pagebreak

\section{Estado da Arte}

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

Os robôs têm cada vez mais influência na vida dos seres humanos. Principalmente na indústria de produção, onde actualmente, estima-se que os robôs industriais representem cerca de um bilião e meio 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, os robôs permitem libertar os operários da realização de tarefas monótonas, podendo, assim, realizar tipo de tarefas. Porem, este tipo de robôs têm a limitação obvia da falta de mobilidade.

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

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 de robôs móveis das décadas seguintes. A década de 1980 prosperou com projectos de robôs móveis. E dado que cedo se sentiu a necessidade de lidar com a realidade do mundo físico, apareceram problemas que estimularam novas direcções de pesquisa, distanciando-se actualmente 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 o mesmo 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 poder movimentar pelo meio em que se encontram, podendo executar as suas tarefas em vários locais.

A necessidade da utilização de dispositivos robóticos em ambientes hostis, como por exemplo em Marte, impulsiona a implementação de sistemas de locomoção cada vez mais incomuns (ver figura \ref{fig:Mars}). Os robôs teleoperados 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}). Nalguns casos, o elevado nível de complexidade do sistema de locomoção do robô impossibilita o controlo directo 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ô se desloque, enquanto que o robô possui um controlo automático da coordenação das pernas. Na figura \ref{fig:auv} pode ver-se um robô aquático que, apesar de possuir motores que lhe permitem uma estabilização autónoma debaixo de água, um operador pode escolher o destino que o submarino deve alcançar. Robôs como os da figura \ref{fig:Cutlass} e \ref{fig:pioneer}, permitem desactivar dispositivos explosivos ou executar outro tipo de tarefas em locais perigosos, sem pôr em risco vidas Humanas.

%\begin{figure}[htp]
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=0.8\textwidth]{Plustech}
%    \caption{Robô da Plustech}
%    \label{fig:plustech}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=1\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{minipage}
%\hfill
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{Odyssey}
%    \caption{Robô AUV (\textit{Autonomous Underwater Vehicle}) Odyssey do MIT}
%    \label{fig:auv}
%\end{minipage}
%\end{figure}

\begin{figure}[htp]
    \centering
    \begin{minipage}[t]{1\linewidth}
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{Plustech}
            \label{fig:plustech}}
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{Shadow_200_UAV}
            \label{fig:uav}}
    \end{minipage}
    \begin{minipage}[t]{1\linewidth}
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{Odyssey}
            \label{fig:auv}}
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{versatrax_150}
            \label{fig:versatrax}}
    \end{minipage}
    \caption{(a) Robô da Plustech; (b) Robô UAV (\textit{Unmanned Air Vehicle}) Shadow 200 da Força Aérea Americana, este robô foi utilizado recentemente em missões no Iraque; (c) Robô AUV (\textit{Autonomous Underwater Vehicle}) Odyssey do MIT; (d) Robô Versatrax 150 da Inuctun Services Ltd.}
    \label{figs:air_water_land}
\end{figure}

Não existem, no entanto, apenas robôs para serem operados em locais onde o Homem não pode ir. Existem outros 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, nestes robôs, a capacidade de localização e de navegação sem intervenção humana é superior nestes robôs.

%\begin{wrapfigure}{R}{0.5\textwidth}
%    \vspace{-20pt}
%    \begin{center}
%    \includegraphics[width=0.3\textwidth]{versatrax_150}
%    \end{center}
%    \vspace{-20pt}
%    \caption{Robô Versatrax 150 da Inuctun Services Ltd.}
%    \label{fig:versatrax}
%    \vspace{-10pt}
%\end{wrapfigure}

Segundo a definição, 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. Quanto mais complexas forem as tarefas que um robô tenha que executar, maior pode ser a sua autonomia e, normalmente, recorrem ao uso de inteligência artificial para a execução das mesmas.

A autonomia de um robô pode ser uma grande vantagem; se um robô executar as tarefas por ele próprio num sistema e se outras partes do sistema falharem, o robô continuará a executar as suas tarefas. 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. É desta forma que, normalmente, funcionam os robôs insecto.\cite{RoboticsEncyclopedia}

%\begin{figure}[h!]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{Cutlass1_gr}
%    \caption{Protótipo Cutlass da Rheinmetall AG, um robô que foi concebido para desactivar engenhos explosivos para substituir o robô do exército Britânico \textit{Wheelbarrow}}
%    \label{fig:Cutlass}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=0.8\textwidth]{Pioneer2x2}
%    \caption{Robô Pioneer, este robô foi utilizado para uma missão em Chernobyl}
%    \label{fig:pioneer}
%\end{minipage}
%\end{figure}

\begin{figure}[h!]
    \centering
    \subfloat[]{
        \includegraphics[width=0.47\textwidth]{Cutlass1_gr}
        \label{fig:Cutlass}}
    \hfill
    \subfloat[]{
        \includegraphics[width=0.36\textwidth]{Pioneer2x2}
        \label{fig:pioneer}}
    \caption{(a) Protótipo Cutlass da Rheinmetall AG, um robô que foi concebido para desactivar engenhos explosivos para substituir o robô do exército Britânico \textit{Wheelbarrow}; (b) Robô Pioneer, este robô foi utilizado para uma missão em Chernobyl.}
    \label{figs:danger}
\end{figure}

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 tem ganho uma enorme importância na industria de produção. Inicialmente era necessário preparar os pavimentos com fios eléctricos ou magnetos, sobre os quais se guiavam esses robôs. Hoje em dia, existem robôs AGV com sistema de navegação por laser (ver figura \ref{fig:agv}). Tais robôs recorrem à emissão de feixes laser para navegarem autonomamente, para isso, é apenas necessário colocar reflectores nas paredes, colunas ou máquinas da fábrica, para que reflictam os fixes laser de volta ao robô, dando-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\textsuperscript{\scriptsize{\textregistered}} da iRobot\textsuperscript{\scriptsize{\textregistered}} 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\textsuperscript{\scriptsize{\textregistered}}. Este robô aspirador por 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.

%\begin{figure}[ht]
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{robina}
%    \caption{Robô protocolar Robina da Toyota}
%    \label{fig:robina}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=1\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{minipage}
%\hfill
%\begin{minipage}[t]{0.3\linewidth}
%    \centering
%    \includegraphics[width=1\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{minipage}
%\end{figure}

\begin{figure}[ht]
    \centering
    \subfloat[]{
        \includegraphics[width=0.325\textwidth]{robina}
        \label{fig:robina}}
    \subfloat[]{
        \includegraphics[width=0.275\textwidth]{Transbotics_Laser_Guided_Vehicle}
        \label{fig:agv}}
    \subfloat[]{
        \includegraphics[width=0.33\textwidth]{Robomaid}
        \label{fig:maid}}
    \caption{(a) Robô protocolar Robina da Toyota; (b) 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; (c) 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{figs:autonomous}
\end{figure}

%\begin{figure}[ht]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{ASIMO_with_Carissa_sitting_on_couch}
%    \caption{Robô ASIMO da Honda}
%    \label{fig:asimo}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{qrio_aibo}
%    \caption{Robôs QRIO e AIBO da Sony}
%    \label{fig:qrio_aibo}
%\end{minipage}
%\end{figure}
%
%\begin{figure}[ht]
%    \centering
%    \includegraphics[width=0.3\textwidth]{irobot}
%    \caption{Robô Roomba\textsuperscript{\scriptsize{\textregistered}} da iRobot\textsuperscript{\scriptsize{\textregistered}}}
%    \label{fig:roomba}
%\end{figure}

\begin{figure}[ht]
    \centering
    \begin{minipage}[t]{1\linewidth}
        \subfloat[]{
            \includegraphics[width=0.45\textwidth]{ASIMO_with_Carissa_sitting_on_couch}
            \label{fig:asimo}}
        \hfill
        \subfloat[]{
            \includegraphics[width=0.45\textwidth]{qrio_aibo}
            \label{fig:qrio_aibo}}
    \end{minipage}
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{irobot}
        \label{fig:roomba}}
    \caption{(a) Robô ASIMO da Honda; (b) Robôs QRIO e AIBO da Sony; (c) Robô Roomba\textsuperscript{\scriptsize{\textregistered}} da iRobot\textsuperscript{\scriptsize{\textregistered}}.}
    \label{figs:human_interaction}
\end{figure}

%\begin{figure}[ht]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{cb2}
%    \caption{Robô CB$^2$}
%    \label{fig:cb2}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.5\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{icub}
%    \caption{Robô icub}
%    \label{fig:icub}
%\end{minipage}
%\end{figure}

\begin{figure}[ht]
    \centering
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{cb2}
        \label{fig:cb2}}
    \hfill
    \subfloat[]{
        \includegraphics[width=0.5\textwidth]{icub}
        \label{fig:icub}}
    \caption{(a) Robô CB$^2$; (b) Robô icub.}
    \label{figs:human_like}
\end{figure}

Mas os robôs não servem só para executar tarefas quer 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. Além 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 (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 obteram várias 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.

Robôs como o CB$^2$ (figura \ref{fig:cb2}),  iCub (figura \ref{fig:icub}),  e outros que serão abordados na secção seguinte, são muito utilizados para pesquisa na robótica em áreas de alto nível como aprendizagem, navegação autónoma, entre outras. O CB$^2$ é um robô de investigação desenvolvido pelo \textit{Socially-Synergistic Intelligence} (liderado pelo professor Hiroshi Ishiguro da Universidade de Osaka), um grupo do projecto \textit{JST ERATO Asada}. O objectivo do projecto \textit{Asada} é compreender o processo de desenvolvimento humano de funções cognitivas, através do \textit{feedback} mútuo entre aproximações científicas e sintéticas, construindo um robô humanoide que possui um modelo de desenvolvimento computacional\cite{CB2}. O CB$^2$ (Child-Robot with Biomimetic Body) foi concebido com o fim de estabelecer, e manter, uma interacção entre o ser humano e o robô. Além de reconhecer caras, expressões e gestos, nos últimos dois anos o CB$^2$ tem vindo a aprender, com ajuda de humanos, a andar e falar. O CB$^2$ está dotado de 51 actuadores pneumáticos, 5 motores eléctricos e está coberto por uma pele de silicone que contém 197 sensores tácteis. A característica mais relevante é a sua pele de silicone, pois para além dos múltiplos sensores que lhe permitem saber exactamente onde está a ser tocado, permite também, a protecção às pessoas que interajam com ele. Ainda na área de investigação do desenvolvimento cognitivo, o RobotCub, um consórcio de diversas universidades europeias, desenvolveu o iCub\cite{ICub}. Este projecto teve inicio em 2004 com o objectivo de ajudar os investigadores a entenderem como os humanos aprendem e evoluem. Com um peso de 23 Kg e uma altura de 90 cm, o iCub tal como o CB$^2$ também reconhece faces, expressões e objectos, mas a sua maior vantagem é a multiplicidade de  movimentos que lhe permite replicar o processo de aprendizagem de uma criança, embora os seus graus de liberdade (30 dof) estejam um pouco abaixo dos do CB$^2$, o iCub possui mãos com cinco dedos, ao contrário do CB$^2$ que possui mão de apenas três dedos. E uma criança para aprender precisa, sobretudo, de tocar e manipular.

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}, \ref{fig:cb2}, \ref{fig:icub} 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}, \ref{fig:qrio_aibo}, \ref{fig:cb2} e \ref{fig:icub});
\item Lagartas (figuras \ref{fig:versatrax}, \ref{fig:Cutlass} e \ref{fig:pioneer});
\end{itemize}


\pagebreak

\subsection{Pequenos Robôs móveis para aprendizagem}

Não sendo tão avançados, a nível de \textit{hardware}, como os tipos de robôs da área da aprendizagem anteriormente mencionados, os pequenos robôs para aprendizagem serão sempre utilizados para investigação nesta área. Pois, não sendo estes robôs tão complexos como os outros, é mais fácil testar e validar algoritmos de aprendizagem, que depois poderão ser utilizados em robôs mais complexos. Além disso, é possível trabalhar com eles em cima de bancadas laboratoriais ou em espaços mais reduzidos, devido às suas reduzidas dimensões.

Existem várias plataformas \textit{standard} deste tipo de robôs prontas para programar que, normalmente, são adquiridas para investigação na área. Como por exemplo o Khepera (figura \ref{fig:khepera}), o Alice (figura \ref{fig:Alice}), o e-puck (figura \ref{fig:e_puck}), o Miabot Pro (figura \ref{fig:Miabot}), o AmigoBot\textsuperscript{\scriptsize{\texttrademark}} (figura \ref{fig:amigobot}) e o pioneer 3-DX (figura \ref{fig:Pioneer_}). Os dois últimos, significativamente maiores que os primeiros, não podendo embora, ser utilizados em cima de bancadas, podem, ainda assim, ser utilizados em ambientes pequenos. Estas plataformas \textit{standard} são muitas vezes alteradas, para que os robôs estejam mais adaptados e capacitados para o tipo de estudo em causa.

%\begin{figure}[ht]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=0.7\textwidth]{Khepera_III_robot}
%    \caption{Robô Khepera III da K-team Corporation}
%    \label{fig:khepera}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=0.7\textwidth]{alice_1}
%    \caption{Robô Alice desenvolvido na EPFL}
%    \label{fig:Alice}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=0.7\textwidth]{e-puck}
%    \caption{Robô e-puck também desenvolvido na EPFL}
%    \label{fig:e_puck}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=0.7\textwidth]{MiaBot}
%    \caption{Robô Miabot Pro da Merlin Systems Corp. Ltd}
%    \label{fig:Miabot}
%\end{minipage}
%\end{figure}

\begin{figure}[ht]
    \centering
    \begin{minipage}[t]{1\linewidth}
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{Khepera_III_robot}
            \label{fig:khepera}}
    \hfill
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{alice_1}
            \label{fig:Alice}}
    \end{minipage}
    \begin{minipage}[t]{1\linewidth}
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{e-puck}
            \label{fig:e_puck}}
    \hfill
        \centering
        \subfloat[]{
            \includegraphics[width=0.4\textwidth]{MiaBot}
            \label{fig:Miabot}}
    \end{minipage}
    \caption{(a) Robô Khepera III da K-team Corporation; (b) Robô Alice desenvolvido na EPFL; (c) Robô e-puck também desenvolvido na EPFL; (d) Robô Miabot Pro da Merlin Systems Corp. Ltd.}
    \label{figs:smal_learning}
\end{figure}

O Khepera é dos mais conhecidos desta categoria de robôs. Foi desenvolvido em 1992 no LAMI (\textit{Laboratoire de Microinformatique}) da EPFL (\textit{École Polytechnic Fédérale de Lausane}) e lançado em 1995. Entre 1995 e 1999, venderam-se cerca de 700 Khepera da primeira geração\cite{The_khepera}.

Hoje já vai na terceira geração, com maior poder de processamento e mais sensores. O Khepera III (figura \ref{fig:khepera}) possui um microcontrolador dsPIC30F5011 da Microchip, com 4 KB de memória RAM (\textit{Random Access Memory}) e 66 KB de memória \textit{flash}, dois servo-motores, controlados por dois microcontroladores PIC18F4431 da Microchip com dois \textit{encoders} incrementais acoplados ao veio dos servos. A nível de sensores, está equipado com onze sensores de infra-vermelhos, nove de proximidade e dois para detectar linhas no chão, e cinco sensores de ultra-sons. Mede à volta de 130 mm de diâmetro, 70 mm de altura e pesa 690 g. Além disso, podem-se acopular módulos de expansão Korebot ao Khepera, permitindo que este tenha maior capacidade de processamento, mais e variados tipos de sensores, maior capacidade de armazenamento de dados, entre outras características.

O Alice (figura \ref{fig:Alice}) é o robô mais pequeno deste tipo de robôs. Desenvolvido no ASL (\textit{Autonomous Systems Lab}) da EPFL mede 22 mm de comprimento, 21 mm de largura e 20 mm de altura. Está equipado com um microcontrolador PIC16LF877 da Microchip, dois motores Swatch e quatro sensores infra-vermelhos de proximidade. Tem vários módulos de expansão, nomeadamente, uma câmara digital linear de 102 pixels, sensores tácteis, ZigBee\textsuperscript{\scriptsize{\textregistered}}, uma garra e um painel solar.

%\begin{figure}[ht]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{Amigobot}
%    \caption{Robô AmigoBot\textsuperscript{\scriptsize{\texttrademark}} da Mobile Robots$_{\scriptscriptstyle{INC}}$}
%    \label{fig:amigobot}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{familia_pioneer}
%    \caption{Robôs Pioneer 3-AT e 3-DX da Mobile Robots$_{\scriptscriptstyle{INC}}$}
%    \label{fig:Pioneer_}
%\end{minipage}
%\end{figure}

\begin{figure}[ht]
    \centering
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{Amigobot}
        \label{fig:amigobot}}
\hfill
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{familia_pioneer}
        \label{fig:Pioneer_}}
    \caption{(a) Robô AmigoBot\textsuperscript{\scriptsize{\texttrademark}} da Mobile Robots$_{\scriptscriptstyle{INC}}$; (b) Robôs Pioneer 3-AT e 3-DX da Mobile Robots$_{\scriptscriptstyle{INC}}$.}
    \label{figs:mobile_robots}
\end{figure}

Criado em 2004 no ASL da EPFL, pelos mesmos criadores do Khepera, o e-puck (figura \ref{fig:e_puck}) foi desenvolvido para poder operar em cima de uma bancada de laboratório, medindo apenas 70 mm de diâmetro por 50 mm de altura (sem módulos de expansão), em diversas áreas de desenvolvimento.\cite{e-puck} O e-puck está equipado com um microcontrolador dsPIC30F6014A da Microchip, com 8 KB de memória RAM e 144 KB de memória \textit{flash}, dois motores passo-a-passo com uma resolução de 1000 passos por revolução, oito sensores de proximidade de infra-vermelhos, um acelerómetro de três eixos, três microfones, uma câmara digital CMOS a cores com uma resolução de 640 x 480 \textit{pixels}, um altifalante conectado a um descodificador audio, e vários LEDs verdes e vermelhos para interface visual. Possui ainda um receptor de infra-vermelhos, uma interface RS232 e um dispositivo de interface Bluetooth\textsuperscript{\scriptsize{\textregistered}} com que se pode comunicar com um PC ou com outros e-puck até um máximo de sete.

A estes dispositivos, podem-se juntar outros através dos módulos de expansão, como por exemplo interface ZigBee\textsuperscript{\scriptsize{\textregistered}}, um sistema de visão omnidireccional, um anel de LEDs, entre outros. Estes módulos de expansão podem ser montados uns em cima dos outros, o que proporciona ao e-puck uma maior flexibilidade em relação às possíveis áreas de desenvolvimento.

O Miabot Pro (figura \ref{fig:Miabot}) criado pela Merlin Systems Corp. Ltd é um robô com um formato cúbico, medindo 75 mm x 75 mm x 75 mm, está equipado com um microprocessador ATMega64 da Atmel, com 4 KB de memória RAM, 64 KB de memória \textit{flash} e 2 KB de memória EEPROM (\textit{Electrically-Erasable Programmable Read-Only Memory}), dois servo-motores com \textit{encoders} e uma interface de comunicações por Bluetooth\textsuperscript{\scriptsize{\textregistered}}.\cite{Miabot}

Embora tenha uma porta de expansão de oito pinos I/O ou analógicos de 10 \textit{bits}, permitindo que seja possível a introdução de sensores para aprendizagem, o Miabot é muito inferior ao nível de \textit{hardware} em relação aos outros. No entanto, o Miabot possui um algoritmo de um controlador PID \textit{onboard}, possibilitando movimentos rápidos e livres de derrapagens ou deslizamentos, e uma função de auto-programação, que é uma vantagem em relação aos outros robôs.

A Mobile Robots$_{\scriptscriptstyle{INC}}$ é uma empresa especializada em desenvolver e comercializar robôs móveis autónomos, muitos dos quais para pesquisa e desenvolvimento para Universidades. Desde que lançou o primeiro robô Pioneer, em 1995, que a Mobile Robots tem vindo a crescer no ramo da robótica, acumulando cada vez mais conhecimentos na área de navegação autónoma de robôs.\cite{Active_robots} Isto implica que os seus robôs estejam equipados com bons materiais e \textit{hardware} apropriado para a navegação autónoma. Os robôs mais pequenos que esta empresa disponibiliza são o AmigoBot\textsuperscript{\scriptsize{\texttrademark}} e o Pioneer 3-DX. Como já foi referido anteriormente, estes robôs são significativamente de maiores dimensões, comparativamente aos restantes já descritos, no entanto não deixam de ser uma referência para esta área de pesquisa já que possuem dimensões suficientes para se poderem operar em espaços como o de um laboratório de pesquisa robótica.

%\begin{figure}[ht]
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{Lipsons_2}
%    \caption{Robô em forma de estrela da Universidade de Cornell}
%    \label{fig:starfish_robot}
%\end{minipage}
%\hfill
%\begin{minipage}[t]{0.45\linewidth}
%    \centering
%    \includegraphics[width=1\textwidth]{CyberRodents}
%    \caption{Robôs Cyber Rodent da ATR \textit{International}}
%    \label{fig:Cyber_Rodent}
%\end{minipage}
%\end{figure}

\begin{figure}[ht]
    \centering
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{Lipsons_2}
        \label{fig:starfish_robot}}
\hfill
    \subfloat[]{
        \includegraphics[width=0.45\textwidth]{CyberRodents}
        \label{fig:Cyber_Rodent}}
    \caption{(a) Robô em forma de estrela da Universidade de Cornell; (b) Robôs Cyber Rodent da ATR \textit{International}.}
    \label{figs:investigation_learning}
\end{figure}

O AmigoBot\textsuperscript{\scriptsize{\texttrademark}} (figura \ref{fig:amigobot}) está equipado com um microprocessador de 32 \textit{bits} SH7144 da Renesas, com 16 KB de memória RAM interna, 1 MB de memória RAM externa e 64 KB de memória\textit{flash}, dois servo-motores com \textit{encoders} com uma resolução de $5 \times 10^{-5} \,^{\circ}$, um altifalante, oito sensores de ultra-sons (seis para a frente e dois para trás) e duas portas de comunicação série. Mede 330 mm de comprimento, 280 mm de largura e 150 mm de altura. Este robô apresenta uma fraca expansibilidade pois, embora o microcontrolador possua um barramento de oito pinos I/O e um pino analógico de 10 \textit{bits}, só tem capacidade para receber dados de mais oito dispositivos, uma vez que já estão integrados os oito sensores de ultra-sons. A grande desvantagem deste robô, para além do seu tamanho e da sua pouca expansibilidade, é o facto de ter sido concebido para ser comandado à distância, sendo necessário conectá-lo a um computador externo pela porta série (por cabo ou \textit{wireless}) para o tornar autónomo, impossibilitando-o de ser completamente autónomo.

Um pouco maior ainda, o Pioneer 3-DX (figura \ref{fig:Pioneer_}), que mede 440 mm de comprimento, 380 mm de largura e 220 mm de altura, possui um microprocessador SH2 RISC (\textit{Reduced Instruction Set Computer}) de 32 \textit{bits} da Renesas, com 32 KB de memória RAM interna, 1 MB de memória externa e 128 KB de memória \textit{flash}, dois servo-motores com \textit{encoders} com uma resolução de $5 \times 10^{-5} \,^{\circ}$, dois conjuntos de sensores de ultra-sons compostos por oito sensores cada um, um orientado para a frente do robô e outro, opcional, orientado para trás do robô, que lhe confere uma percepção de 360$\,^{\circ}$. Possui ainda a possibilidade de integrar um computador, o que torna o Pioneer 3-DX completamente autónomo. A maior vantagem deste robô é a sua capacidade de carga, até 25 kg, podendo ser equipado com sensores mais sofisticados, como por exemplo um sensor de laser industrial ou câmaras de video digitais de maior resolução.

No entanto, existem alguns robôs que são concebidos de raiz para certos estudos. Como é o caso do Cyber Rodents (figura \ref{fig:Cyber_Rodent}) concebido para o \textit{Cyber Rodent Project} da ATR (\textit{Advanced Telecommunications Research Institute International}), e do robô em forma de estrela (figura \ref{fig:starfish_robot}) do CCSL (\textit{Cornell Computational Synthesis Laboratory}) da Universidade de Cornell. Estes robôs, embora não sejam muito flexíveis, relativamente às áreas de desenvolvimento, possuem as características mais indicadas para a área para a qual foram desenvolvidos. O que proporciona aos investigadores, um desenvolvimento mais profundo dessa área.

Como já foi dito anteriormente, o Cyber Rodent foi desenvolvido no âmbito do \textit{Cyber Rodent Project} da ATR dirigido por Mitsuo Kawato. O principal objectivo deste projecto é compreender os mecanismos adaptativos necessários para agentes artificiais, que contêm as mesmas restrições que agentes biológicos: a auto-preservação e a auto-reprodução. Para isso, houve a necessidade de desenvolver uma colónia de robôs que tivesse a capacidade para procurar uma fonte de geração de energia, para recarregarem as suas baterias, e um meio de comunicação \textit{wireless} que possibilite a cópia de programas entre robôs.\cite{Cyber_rodent_2}

O Cyber Rodent é um robô, movido por duas rodas, com um comprimento de 250 mm e está equipado com um processador SH-4 da Hitashi com 32 MB de memória, uma câmara digital CCD omnidireccional, um processador gráfico FPGA (\textit{Field-Programmable Gate Array}) para captura de video e processamento de imagem a 30 Hz, um sensor de ultra-sons, sete sensores de infra-vermelhos (cinco orientados para a frente, um para a retaguarda e outro orientado para o chão), um acelerómetro de três eixos, um giroscópio de dois eixos, três LEDs para interface visual (verde, vermelho e azul), um altifalante e dois microfones para comunicação acústica, uma porta de comunicações por infra-vermelhos, para a comunicação entre dois robôs próximos, uma interface \textit{wireless LAN} e uma porta USB para comunicar com um computador.\cite{Cyber_rodent}

No âmbito da pesquisa na área de auto-modelação robótica na Universidade de Cornell, um grupo de investigadores necessitou de um robô para validar algoritmos que ainda só tinham sido testados computacionalmente. A pesquisa consiste no desenvolvimento de algoritmos que permitem a um robô criar um modelo da sua própria topologia, através da sua interacção com o meio que o rodeia, para depois aprender a movimentar-se nesse meio, através da exploração de comportamentos de movimento do seu próprio modelo.\cite{Lipsons_2}

O \textit{starfish robot} é um robô quadrúpede, que mede 140 mm de largura por 140 mm de comprimento e 85 mm de altura (na sua posição normal), equipado com um computador PC-104 \textit{onboard} com um módulo A/D DMM-32X-AT, com trinta e duas entradas de 16 \textit{bits}, e um módulo de controlo de servos SV-203B, comandado por porta série. O robô consiste num corpo rectangular, onde está posicionado o computador, e quatro pernas articuladas por dois servos Airtronics 94359 que lhe conferem oito graus de liberdade. Além disso o robô está também equipado com uma variedade de sensores, entre os quais: um acelerómetro \textit{onboard}, extensómetros colocados na parte distal das pernas e um sensor de distância óptico na parte inferior do robô.

Não existe uma definição concreta do que é um pequeno robô móvel para aprendizagem, no entanto, existem algumas características necessárias para este tipo de robôs. Nomeadamente: o robô deve possuir vários sensores que lhe forneçam dados relativos ao ambiente que o rodeia, pelo menos um sistema de locomoção e um sistema de alimentação do circuito electrónico; um controlador (microcontrolador ou computador) para processar os dados recebidos dos sensores e comandar o robô; e memória, quer volátil (como  por exemplo RAM) para o armazenamento de dados durante o processamento da aprendizagem, e não volátil (como por exemplo EEPROM ou \textit{flash}) para guardar os dados da aprendizagem.

\newpage

\subsection{\textit{Reinforcement learning}}

O \textit{Reinforcement Learning} estuda o modo como os sistemas naturais e artificiais aprendem a prever as consequências  das suas acções e optimizar os seus comportamentos em ambientes, cujas acções transportam esses sistemas de uma situação para outra distinta, levando a recompensas ou castigos.\cite{RL_GBU}

Genericamente, no \textit{Reinforcement Learning} um agente observa, repetidamente, o estado do ambiente que o rodeia, e depois escolhe uma acção para executar através de uma política de aprendizagem. Uma vez executada a acção, o estado do ambiente muda e o agente recebe uma recompensa pela acção executada. Estas recompensas podem ser positivas, boas recompensas, ou negativas, castigos. Assim, o agente aprende a escolher acções por forma a maximizar a soma das recompensas que irá receber no futuro.\cite{RL2}

O \textit{Reinforcement Learning} é, de todas as abordagens de \textit{Machine Learning}, a que mais se foca na aprendizagem por objectivos, a partir da interacção com o meio. Ao invés de ser dito a um agente qual a acção que deve executar, tal como na maioria de formas de \textit{Machine Learning}, é o próprio agente que deve ``descobrir'' quais as acções, que em determinados estados, garantem maiores recompensas, executando-as e explorando o meio que o rodeia. As acções, não só afectam as recompensas imediatas, como também os próximos estados e, consequentemente, as recompensas seguintes. De facto, as características mais evidentes que distinguem o \textit{Reinforcement Learning} de outras formas de aprendizagem são a tentativa-erro e a recompensa retardada.\cite{RL_introduction}

Um dos maiores desafios que aparecem no \textit{Reinforcement Learning}, que não existe noutros tipos de aprendizagem, é a decisão entre explorar novas acções (\textit{exploration}) e promover acções que já realizou no passado (\textit{exploitation}). De facto, um agente, para maximizar as recompensas, deve executar acções que executou no passado e que descobriu serem as que maior recompensas dão. Por outro lado, para descobrir tais acções o agente tem de executar acções que ainda não tenham sido escolhidas. O agente tem de promover o que já conhece, por forma a obter a melhor recompensa, mas também tem de explorar, para poder escolher melhores acções no futuro.\cite{RL_introduction}

Existem dois tipos distintos de métodos de \textit{Reinforcement Learning}: os baseados em modelos (\textit{model-based}) e os livres de modelos (\textit{model-free}). O método \textit{model-based} usa a experiência para construir um modelo interno das transições entre os estados e as consequências imediatas. Depois, é escolhida uma acção, através da procura ou planeamento, a partir desse modelo interno. Por outro lado, o método \textit{model-free} usa a experiência para aprender directamente politicas ou valores de estado-acção, sem recorrer a estimativas ou modelos de ambientes.\cite{RL_GBU}

Em anexo estão descritos alguns métodos de \textit{Reinforcement Learning} mais conhecidos.
