{{template>:doctable | name=UAV-Simulator | version=1.0 | accountable= Bruno Olivieri | depdency= [[ClientLib Gateway Hakke]] }} ====== UAV-Simulator ====== UAV simulator é um componente capaz de simular um UAV (Unmanned Aerial Vehicle) que é capaz das seguintes simulações: * Simular voos sobre um itinerário lido de um arquivo texto de coordenadas; * Receber mensagens com comandos remotos; * Interagir com o Hakke para visualização da simulação. ===== Architecture ===== Este projeto prove uma pool the threads cada qual é responsável por uma simulação de um UAV. Podem ser simulados tantos UAV quanto desejado. Cada UAV é capaz de voar por uma série de pontos pré-determinados em um arquivo texto como também receber mensagens com novos pontos os quais eles irão seguir. É importante ter em mente que cada UAV é considerado um cliente conectado ao domínio do SDDL. As integrações entre componentes externos e internos são como apresentadas na imagem abaixo: {{ :uavsim_para_o_wiki.png |}} As velocidades e demais grandezas físicas são respeitadas e configuráveis com exceção do tempo. ===== Usage ===== Para executar este simulador, é necessário executar o SDDL gateway e o Hakke. Após este passo, importe o projeto diretamente no eclipse e execute a classe ''launch_demo().java''. A classe ''launch_demo().java'' irá executar alguns UAV em apresentar cada tipo de trajetória que eles são capazes de executar. Cada UAV irá enviar ao Hakke a sua posição através de um JSON e aguardar por mensagens via SDDL. ===== Implementation Details ===== Este componente executa um pool de threads nas quais cada thread é um UAV simulado. Cada UAV envia mensagens para o SDDL core, formatadas em um JSON que será remontado pelo Hakke. Cada nó pode ainda receber mensagens de comandos remotos. Sem uma instância de um gateway e de um Hakke rodando perfeitamente, o simulador **não** irá funcionar. A seguir seguem todos os packages e suas atribuições. * ''main'': Simulador propriamente dito do UAV na classe UAV.java. Pura e simplesmente com essa classe já há a simulação de um UAV e diversos comandos. As demais classes proveem mecanismos para a configuração e execução de enxames de UAVs; * ''runners'': Dois exemplos de como executar uma simulação. A classe ''launcher_DEMO()''é o caminho mais rápido e fácil para entender o funcionamento de cada possibilidade de movimento; * ''remoteStuff'': Conjunto de classes para o controle remoto dos UAVs e tipos de comandos; * ''utils'': Classes para lidas com coordenadas geográficas e leitura de path a partir de arquivos; * ''groupDefiner'': Exemplo de uso do GroupDefiner, classificando UAV em grupos por seus IDs; * ''Configs'': Configurações específicas para testes de enxames; * ''ComplexEventProcessing'': Exemplo prático de aferição de movimentação via CEP. Este exemplo recebe cada movimento de cada UAV e compara segundo uma posição fictícia esperada. ===== References ===== Para efetuar o download do projeto completo clique neste link: http://www.lac.inf.puc-rio.br/dokuwiki/lib/exe/fetch.php?media=uavsim_2014.zip Este projeto foi alterado pela última vez em 2014.2. Link do bitbucket: https://bitbucket.org/endler/app-uavsimulator