Programas a instalar: ROS-Melodic Arduino IDE MATLAB Editor de C/C++ (Usei o Virtual Studio) Bibliotecas a instalar(Arduino): Alphabot2-AR - https://www.waveshare.com/wiki/AlphaBot2-Ar SoftwareSerial Timer1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Mundo Real: Como configurar o ROS: Adicionar na .bashrc os seguintes alias: alias cc='catkin_make --directory ~/catkin_ws -j4' alias sc='cd ~/catkin_ws && source devel/setup.bash && rospack profile && rospack profile && rospack profile' Nota: catkin_ws é o nome do workspace criado, este comendo depende do nome criado aquando da instalação do ROS-Melodic Como testar os nós ROS: 1º-Abrir três janelas de terminal; 2º- Na primeira janela compilar os programas e abrir o ROS Master: >> cc && roscore Na segunda janela ligar o nó de comunicação: >> sc >> rosrun mazeNavigation publish_data Na segunda janela ligar o nó de apredizagem online ou de transfer learning: >> sc >> cd src/mazeNavigation/src >> rosrun mazeNavigation after_learning (ou data_subscriber) Notas: mazeNavigation é o nome do projeto criado inicialmente No nó publish_data é utilizado protocolo de comunicação UDP, caso se mantenha esta comunicação por WiFi é necessário colocar o IP de ligação do PC, tanto neste nó como no código do Arduino onde tambem é necessário especificar o ssid e a password Para que os nós oferecam algum input nop terminal é necessário que a ligação UDP esteja estabelecida, logo o robot tem que estar ligado e com o programa a executar Arduino IDE: Abrir o programa Alphabot2.ino Ao compilar e enviar o programa para o Arduino é necessário realizar 10 segundos de calibração dos sensores de seguimento de linha. Para isso colocar o robot em cima de um checkpoint e movimentá-lo por cima do checkpoint para calibrar. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Simulador Matlab - MobileRobotMazeSimulator O programa IniParams é parametrizavel, podendo se alterar todas as variaveis Os programas principais onde decorrem todas as simulaçãoes são os MazeSimulator(xxx) dependendo de qual a sub-tarefa a treinar. Para cada uma das sub-tarefas é necessário fazer load da respetiva rewardFunction.mat. Em cada uma das sub-tarefas, há três mapas distintos de aprendizagem que são alterados através dos vetores A e B. Dentro destes vetores existem segmentos de reta que controem um mapa com as respetivas coordenadas. Ao terminar a aprendizagem utilizar a função matlab2opencv.m para guardar as tabelas de learning e se necessário a função de reward, por exemplo: matlab2opencv(variable,'filename.yml','w'); Simulador Matlab - RewardSimulation Abrir o programa MazeSimulation.m onde inicialmente se gera a função de reward para o Corredor e de seguida se executa aprendizagem. Por fim tem o código correspondente ao mesmo processo mas no caso de um canto. Ao terminar a aprendizagem utilizar a função matlab2opencv.m para guardar as tabelas de learning e se necessário a função de reward, por exemplo: matlab2opencv(variable,'filename.yml','w'); Simulador Matlab - HierarchicalRL Abrir o programa MazeSimulation.m onde é realizada a aprendizagem do nivel hierárquico superior usando o labirinto. A função MovementProperty é onde se encontra a máquina de estados que é posteriormente utilizada no programa HRLQLearning.m onde é realizada a aprendizagem do nivel hierárquico superior. Ao terminar a aprendizagem utilizar a função matlab2opencv.m para guardar as tabelas de learning e se necessário a função de reward, por exemplo: matlab2opencv(variable,'filename.yml','w');