Arquitetura de Software » Histórico » Revisão 49
Revisão 48 (Antonio de Souza Gomes Pereira, 07/03/2020 23:09 h) → Revisão 49/56 (Antonio de Souza Gomes Pereira, 07/03/2020 23:13 h)
# Arquitetura de Software O Software é basicamente subdividido em cinco estágios, conforme fluxo de informação: Leitura, Pré-Processamento, Tomada de Decisão (Inteligência Artificial), Controle e Transmissão. Os módulos que compõem estes estágios estão descritos a seguir: 1. Leitura : SSL-Vision e Ref Box 2. Pré-Processamento: Game State e Judge State 3. Tomada de Decisão: Role Set e Tactics 4. Controle : Obstacle Avoidance e Path Planning 5. Transmissão : Transmission --- ## Leitura Os módulos SSL-Vision e Ref Box são responsáveis por receber os pacotes, respectivamente, do SSLVision e do RefBox, softwares padronizados da liga. As informações coletadas são então enviadas para os módulos Game State e Judge State, responsáveis por processar estas informações. Há a opção também de se rodar um log, seja de partida ou um treinamento. Mais informações de como a leitura do log funciona [aqui](http://redmine.roboime.com.br/projects/inteligencia/wiki/Log). --- ## Pré-Processamento * Game State : Neste módulo é estimado um estado de jogo confiável, ou seja, é neste módulo em que ocorrem filtragens, com objetivo de mitigar erros de observação das câmeras. O principal algoritmo utilizado para filtragem é um [Filtro de Kalman](http://robotsforroboticists.com/kalman-filtering/) . É possível escolher entre métodos de filtragem na interface gráfica (GUI) principal e observar as diferenças em tempo real entre os métodos. * Ref Box : Com base em comandos atuais e anteriores, é possível obter uma relação entre os comandos enviados pelo Juiz e estados da partida, como Meio de Campo, Tiro Direto e Pênalti. Neste módulo, são tratados os modos do Juiz a fim de gerar informações mais "amigáveis" para o desenvolvimento de algoritmos de tomada de decisão. --- ## Orientação a objeto em labVIEW Antes de mais nada, é importante que se leia: https://zone.ni.com/reference/en-XX/help/371361P-01/lvconcepts/creating_classes/ Para efeito de exemplo, criaremos uma classe chamada RoboUni (robô que só anda sobre o eixo x) e uma classe herdada RoboBid (robô que anda sobre o plano xy). ### [[Instalação do UML no LabVIEW]] ### [[Encapsulamento]] ### [[Criar uma classe]] ### [[Adicionando atributos a uma classe]] ### [[Adicionando métodos a uma classe]] ### [[Encapsulamento dos métodos da classe]] ### [[Criar uma classe por herança]] ### [[Aplicando as classes criadas numa função main]] ### [[Utilizando passagem de parâmetros por referência em classes]] --- ## Inteligência Artificial ### [[Decisão de Personalidades (Role Set)]] Neste módulo é definido o papel de cada robô consoante estado de jogo. ### [[Personalidades]] Neste módulo é definido o comportamento de cada personalidade de acordo com o estado do jogo. ### [[Gerador de eventos]] Descreve os eventos usados para a inteligência interpretar situações como chute, passe, posse de bola, etc. ### [[Módulo de Testes para o GrSim]] Descreve rotinas de testes autônomos das personalidades. --- ## Implementação da Arquitetura STP A partir do início de 2019 a Inteligência passou a utilizar Arquitetura STP, baseando-se nos documentos adicionados [aqui] (http://redmine.roboime.com.br/documents/33). Esta parte da wiki tem o objetivo de descrever diretamente como foi feita a implementação da arquitetura no código, explicando cada etapa. ### [[Escolha das Plays]] ### [[Escolha dos Robôs]] ### [[Execução das Plays]] --- ## Planejamento de trajetória ### [[Algoritmo A*]] --- ## Controle Responsável pelo controle do robô em campo. Neste módulo é feito o cálculo de trajetória dos robôs, de modo a atingir o objetivo de maneira ótima e evitar colisão com outros robôs, além de gerar o perfil de velocidade otimizado (bang-bang) para essa trajetória e garantir que o robô assuma esse perfil durante sua movimentação. ### [[Planejamento de Tragetória]] ### [[Planejamento de Trajetória(A*)]] ### [[Perfil de Velocidade]] ### [[Controle de Velocidade]] --- ## Transmissão Responsável pelo envio de informação para o robô ou para o simulador.