Projeto

Geral

Perfil

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.