\chapter{Conclusões e trabalhos futuros}

%\epigraph{\emph{``Não é o trabalho, mas o saber trabalhar, que é o segredo do êxito no trabalho. Saber trabalhar quer dizer: não fazer um esforço inútil, persistir no esforço até ao fim, e saber reconstruir uma orientação quando se verificou que ela era, ou se tornou, errada.''}}
%         {Fernando Pessoa}

%\epigraph{\emph{``Nada está feito enquanto resta alguma coisa para fazer.''}}
%         {Romain Rolland}

%\epigraph{\emph{``Aquele que se analisou a si mesmo, está deveras adiantado no conhecimento dos outros.''}}
%         {Denis Diderot}

\epigraph{\emph{``A experiência nunca falha, apenas as nossas opiniões falham, ao esperar da experiência aquilo que ela não é capaz de oferecer.''}}
         {Leonardo da Vinci}

\section{Conclusões}

%Embora as investigações de aprendizagem robótica, recorram a plataformas robóticas \textit{standard} prontas a programar, a maioria dos robôs disponíveis no mercado são muto dispendiosos ou são muito limitados no que diz respeito ao \textit{hardware} e à sua capacidade de expansão. Pelo que, sentiu-se a necessidade de conceber e desenvolver pequenos robôs para aprendizagem, de baixo custo, com o \textit{hardware} necessário e capacidade de expansão do mesmo. Existem vários tipos de aprendizagem de máquinas mas, embora os robôs desenvolvidos possam ser utilizados em investigações de qualquer um desses tipos de aprendizagem, escolheu-se a aprendizagem por \textit{reinforcement learning} como base de desenvolvimento dos SALbot.
Dos diferentes tipos de aprendizagem de máquina existentes, escolheu-se o \textit{reinforcement learning} como base para a concepção e desenvolvimento dos SALbot. Ainda assim, é possível configurar o SALbot, para se utilizar qualquer tipo de aprendizagem de máquina. Foram instalados sensores de distância por infra-vermelhos e ultra-sons e sensores de contacto para aquisição de informação do ambiente, um sistema de locomoção, um controlador, um sistema de comunicação sem fios e unidades de bateria, que, em conjunto, garantem a autonomia dos robôs. Além disso, os SALbot foram concebidos numa plataforma modular, permitindo assim a implementação de novos dispositivos no futuro, quer para o melhoramento na área de aprendizagem, quer para possibilitar a sua utilização para outras áreas da robótica.

O chassi e o sistema de pára-choques dos SALbot foram concebidos para serem robustos e fiáveis, relativamente à funcionalidade dos robôs. Além disso, o sistema de pára-choques foi concebido para detectar colisões em oito zonas distintas, e, assim, permitir ao SALbot distinguir com maior precisão a zona de contacto. Após a realização dos testes, o chassi e o sistema de pára-choques provaram ser fiáveis e robustos para a função dos robôs. O chassi suportou eficazmente todos os componentes do SALbot durante, e após, os testes efectuados e o sistema de pára-choques cumpriu o objectivo desejado.

O chassi e o sistema de pára-choques foram construídos, em grande parte, recorrendo a processos artesanais. Apesar de grande parte da construção depender da precisão do trabalho manual, a robustez e fiabilidade dos componentes do robô nunca ficaram comprometidas.

Foram também desenvolvidas placas de circuito impresso, uma principal e uma auxiliar para cada SALbot, e uma para as comunicações por \textit{wireless} entre um computador remoto e os SALbot. Na placa de circuito impresso principal estão integrados e são ligados os componentes necessários para a autonomia do SALbot, destacando-se: um microcontrolador; os servos; os sensores de distância; e as baterias de alimentação da placa e dos servos. Além disso, a placa de circuito impresso principal possui ainda uma porta de expansão, que garante a referida modularidade do sistema, permitindo a integração da placa auxiliar, que integra o sistema de comunicações  por \textit{wireless} e onde são ligados os sensores de contacto do sistema de pára-choques.

Em geral, os componentes electrónicos cumpriram a sua função sem grandes problemas. No entanto, os servos ficaram um pouco aquém do que seria desejável, esperava-se que fossem mais precisos e que tivessem todos o mesmo comportamento para um comando. O facto de a actuação dos servos variar de uns para os outros faz com que, por exemplo, seja impossível o robô realizar uma trajectória perfeitamente rectilínea. Outro dos problemas verificados no \textit{hardware} electrónico, tem a ver com os módulos XBee, onde se verificou que, por vezes, falhava a comunicação entre os robôs e o computador remoto a uma distância de aproximadamente dois metros. Isso pode-se ter devido a alguma interferência com as redes Wi-Fi (protocolo IEEE 802.11 a,b,g,n) existentes no laboratório de robótica. Este problema pode ser resolvido através de \textit{software}, implementado no protocolo de comunicação, entre o robô e um computador remoto, uma mensagem de aviso de recepção, isto é, comunicação com confirmação de recepção. Ou então, também pode ser resolvido implementando módulos XBee-PRO, que possuem uma potência de transmissão e sensibilidade de recepção maiores.

A memória não volátil, existente nos SALbot para armazenamento de dados da aprendizagem, foi suficiente para o tipo aprendizagem utilizada nos testes efectuados. No entanto, para aprendizagens mais complexas (com mais estados e acções) é possível que, mesmo com a implementação de mais três unidades de EEPROM externa (através do barramento I$^{2}$C\textsuperscript{\scriptsize{\texttrademark}}), não seja suficiente para armazenar dados da aprendizagem. Uma solução possível é implementar uma unidade para armazenamento e leitura de dados para um cartão SD (\textit{Secure Digital}), onde é possível armazenar até um máximo de 4 GB de dados. Para isso, apenas seria necessário implementar um microcontrolador que tratasse da interface com o cartão SD e, através do barramento I$^{2}$C\textsuperscript{\scriptsize{\texttrademark}}, comunicasse, com o mesmo protocolo das unidades EEPROM, com o microcontrolador do SALbot.

Outra limitação constatada, tem a ver com a capacidade de carga das baterias de alimentação das placas, que é apenas de $250\ mAh$. Verificou-se que uma bateria com carga máxima permite alimentar o SALbot, sensivelmente, durante apenas uma hora e quinze minutos, pelo que, na realização dos testes de aprendizagem, foi necessário mudar três a quatro vezes as baterias. A implementação de baterias com maior capacidade de carga resolverá este problema, recorrendo, por exemplo, a baterias de iões de lítio.

O protocolo de comunicações, implementado para comunicação entre os SALbot e um computador remoto, mostrou-se bastante eficaz não admitindo mensagens corrompidas ou outro tipo de mensagens inválidas. Faltando apenas, como já foi referido, implementar uma mensagem para aviso de recepção de uma mensagem, reduzindo assim a perda de dados.

Da análise realizada às tabelas de aprendizagem, obtidas a partir dos testes de aprendizagem efectuados, são de destacar algumas considerações. A primeira é o facto de, um mesmo estado de percepção do SALbot poder corresponder a várias situações do ambiente que o rodeia, o que pode retardar ou inviabilizar a aprendizagem de acções nesses estados ambíguos. Outra consideração, provém do facto de o SALbot ter visitado estados improváveis de serem visitados, como o estado 8800 (\ref{fig:8800_state_rep}) em que existe uma grande diferença entre as leituras dos sensores de distância frontais. A resolução e/ou minimização destes problemas passa por integrar mais sensores de distância possibilitando ao SALbot a obtenção de mais informação do ambiente e pela criação de mais estados (aumentando o número de níveis dos sensores de distância e as zonas de contacto).

Apesar das questões atrás referidas, os testes de aprendizagem realizados permitiram provar um dos principais objectivos deste trabalho: a capacidade de aprendizagem dos SALbot. Embora o resultado da aprendizagem possa não ter sido o esperado para todos os casos, da análise realizada às tabelas de aprendizagem concluiu-se que existe uma evolução dos valores de $Q$ para os pares de estado-acção experimentados pelo robô. O que traduz efectivamente a aprendizagem do SALbot em navegar num ambiente sem colidir. Além disso, os resultados dos testes realizados para a execução do SALbot, no modo autónomo, indicam claramente a evolução da aprendizagem do SALbot. Nos quais se verifica que o SALbot diminui o número de colisões com o aumento do número de iterações de aprendizagem.

%Os resultados obtidos com este trabalho, além do que já foi referido, permitem também retirar dados para aperfeiçoar o algoritmo de aprendizagem. Por exemplo, apenas cerca de $10 \%$ dos estados da tabela de aprendizagem forma visitados nos testes de aprendizagem realizados. Sabendo isto, seria possível implementar no algoritmo de aprendizagem um método de eliminação de estados da tabela de aprendizagem

\section{Trabalhos futuros}

A realização deste trabalho abriu um amplo leque de trabalhos futuros na área de aprendizagem robótica, dos quais se destacam: comparar diversas configurações do método de aprendizagem implementado neste trabalho; testar e comparar novos métodos de aprendizagem; fazer a comparação entre um algoritmo de navegação autónoma com um algoritmo de aprendizagem; Integrar novos dispositivos (sensores, microcontroladores, unidades de memória, etc...) no SALbot para testar aprendizagens mais complexas.

Apesar de terem sido concebidos para a área de aprendizagem robótica, os SALbot podem integrar projectos de outras áreas da robótica envolvendo robôs móveis autónomos.

Independentemente da área da robótica que possa ser abordada em projectos futuros, seria uma mais valia fazer algumas alterações no \textit{hardware} dos SALbot. Como as alterações já referidas anteriormente: substituição dos servos e baterias, da implementação de um maior número de sensores de distância e uma unidade de armazenamento de dados superior. Mas também seria uma mais valia integrar no sistema mais um microcontrolador, permitindo assim que um deles ficasse responsável pela actuação dos servos e aquisição dos dados dos sensores, e o outro ficasse responsável pelo processamento dos dados e algoritmo de aprendizagem (entre outros). A implementação de um dispositivo de relógio de tempo real seria também uma melhoria significativa, visto que permitiria ao microcontrolador ter o controlo exacto do tempo que é importante para gerar números aleatórios. Para isso, seria também interessante a concepção de uma nova placa de circuito impresso, que integrasse não só esse novo microcontrolador, como duas portas de expansão (para permitir ser integrada na placa de circuito principal e a integração da placa de circuito auxiliar do SALbot) e outros dispositivos necessários, como o relógio de tempo real.

Espera-se, com a realização deste projecto, permitir futuras investigações na área da aprendizagem robótica, testando e validando algoritmos de aprendizagem que possam ser implementados noutros sistemas robóticos, com a finalidade de melhorar o desempenho funcional desses sistemas. 