Arquitetura de Software » Histórico » Versão 1
João Victor Pariz, 17/05/2025 17:48 h
1 | 1 | João Victor Pariz | h1. Arquitetura de Software |
---|---|---|---|
2 | |||
3 | |||
4 | ## Pré-Processamento |
||
5 | |||
6 | * 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. |
||
7 | * 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. |
||
8 | |||
9 | --- |
||
10 | |||
11 | ## Protobuf - Codificação e decodificação de pacotes |
||
12 | |||
13 | Módulo destinado a explicar como realizar a codificação/decodificação de pacotes protobuf enviados pela rede para ler dados da visão e enviar comandos aos simuladores. |
||
14 | |||
15 | ### [[Protobuf]] |
||
16 | |||
17 | --- |
||
18 | |||
19 | ## Orientação a objeto em labVIEW |
||
20 | |||
21 | Antes de mais nada, é importante que se leia: https://zone.ni.com/reference/en-XX/help/371361P-01/lvconcepts/creating_classes/ |
||
22 | |||
23 | 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). |
||
24 | |||
25 | ### [[Instalação do UML no LabVIEW]] |
||
26 | |||
27 | ### [[Encapsulamento]] |
||
28 | |||
29 | ### [[Criar uma classe]] |
||
30 | |||
31 | |||
32 | ### [[Adicionando atributos a uma classe]] |
||
33 | |||
34 | |||
35 | ### [[Adicionando métodos a uma classe]] |
||
36 | |||
37 | ### [[Encapsulamento dos métodos da classe]] |
||
38 | |||
39 | |||
40 | ### [[Criar uma classe por herança]] |
||
41 | |||
42 | |||
43 | |||
44 | ### [[Aplicando as classes criadas numa função main]] |
||
45 | |||
46 | |||
47 | ### [[Utilizando passagem de parâmetros por referência em classes]] |
||
48 | --- |
||
49 | |||
50 | ## Inteligência Artificial |
||
51 | |||
52 | |||
53 | ### [[Decisão de Personalidades (Role Set)]] |
||
54 | |||
55 | Neste módulo é definido o papel de cada robô consoante estado de jogo. |
||
56 | |||
57 | ### [[Personalidades]] |
||
58 | |||
59 | Neste módulo é definido o comportamento de cada personalidade de acordo com o estado do jogo. |
||
60 | |||
61 | ### [[Gerador de eventos]] |
||
62 | |||
63 | Descreve os eventos usados para a inteligência interpretar situações como chute, passe, posse de bola, etc. |
||
64 | |||
65 | ### [[Módulo de Testes para o GrSim]] |
||
66 | |||
67 | Descreve rotinas de testes autônomos das personalidades. |
||
68 | |||
69 | --- |
||
70 | |||
71 | ## Implementação da Arquitetura STP |
||
72 | |||
73 | 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). |
||
74 | |||
75 | Esta parte da wiki tem o objetivo de descrever diretamente como foi feita a implementação da arquitetura no código, explicando cada etapa. |
||
76 | |||
77 | ### [[Plays]] |
||
78 | ### [[Tactics]] |
||
79 | ### [[Skills]] |
||
80 | |||
81 | |||
82 | |||
83 | |||
84 | |||
85 | --- |
||
86 | |||
87 | ## Planejamento de trajetória |
||
88 | |||
89 | ### [[Algoritmo A*]] |
||
90 | ### [RRT](http://redmine.roboime.com.br/projects/inteligencia/wiki/Planejamento_de_Traget%C3%B3ria) |
||
91 | |||
92 | --- |
||
93 | |||
94 | ## Controle |
||
95 | |||
96 | 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. |
||
97 | |||
98 | ### [[Planejamento de Tragetória]] |
||
99 | ### [[Perfil de Velocidade]] |
||
100 | ### [[Controle de Velocidade]] |
||
101 | |||
102 | --- |
||
103 | |||
104 | ## Transmissão |
||
105 | |||
106 | Responsável pelo envio de informação para o robô ou para o simulador. |