Grupo1-PJI2-2018-2: mudanças entre as edições
Sem resumo de edição |
|||
(26 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
Linha 7: | Linha 7: | ||
{{Collapse top |Diário de bordo}} | {{Collapse top |Diário de bordo}} | ||
==TODO próxima semana== | |||
'''Terminar SR:''' movimentação automatica (validar a cada novo passo se pode fazer o proximo; <br/> | |||
Configurar comunicação com o SS (fazer a classe que comunica e testa-la)<br/> | |||
''' Fazer SS''' Criar classe que comunica com SR <br/> | |||
Criar classe que mostra informações ao usuario (automatico) <br/> | |||
Criar classe para o usuario interegir(manual) <br/> | |||
==17/09== | ==17/09== | ||
Linha 67: | Linha 75: | ||
==Detalhes iniciais== | ==Detalhes iniciais== | ||
===Desenvolvimento=== | |||
A implementação estará disponível no repositório [https://github.com/allexmagno/dev github do projeto] | |||
===Conexão ao EV3=== | ===Conexão ao EV3=== | ||
Efetuamos a conexão ao ev3 por meio do bluetooth, seguindo as instruções descritas em https://www.ev3dev.org/docs/tutorials/using-bluetooth-tethering/. Após conectarmos via bluetooth acessamos o ev3 via ssh utilizando o putty. | Efetuamos a conexão ao ev3 por meio do bluetooth, seguindo as instruções descritas em https://www.ev3dev.org/docs/tutorials/using-bluetooth-tethering/. Após conectarmos via bluetooth acessamos o ev3 via ssh utilizando o putty. | ||
===CRONOGRAMA DE ATIVIDADES FUTURAS=== | ===CRONOGRAMA DE ATIVIDADES FUTURAS=== | ||
{{Collapse top | Cronograma}} | {{Collapse top | Cronograma}} | ||
[[Arquivo: | [[Arquivo:cronogramag12.jpg]] | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
= | ===Requisitos=== | ||
{{Collapse top |Requisitos funcionais e não Funcionais}} | {{Collapse top |Requisitos funcionais e não Funcionais}} | ||
Linha 317: | Linha 202: | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
==Testes Funcionais== | ===Testes Funcionais=== | ||
{{Collapse top |Teste dos Motores}} | {{Collapse top |Teste dos Motores}} | ||
Linha 395: | Linha 280: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Collapse bottom}} | |||
==Sistema Auditor - SA== | |||
{{Collapse top |Atores do Sitema Auditor}} | |||
SS: responsável por informar ID do robô e solicitar validação de caça | |||
Arbitro: | |||
{{Collapse bottom}} | |||
{{Collapse top |Casos de uso}} | |||
'''Caso de Uso:''' Configurar jogo <br/> | |||
'''Caso de Uso:''' Verificar ID <br/> | |||
'''Caso de Uso:''' Lista de caça <br/> | |||
'''Ator Primário:''' SS <br/> | |||
'''Identificador:''' UCLC <br/> | |||
'''Sumário:''' Configuração das listas de caças <br/> | |||
'''Pré-Condições:''' Comunicação ativa com ambos SS <br/> | |||
'''Fluxo Principal:''' <br/> | |||
[1] SA sorteia posição das caças <br/> | |||
[2] SA envia para os SS lista de caças <br/> | |||
'''Caso de Uso:''' Modo de Jogo <br/> | |||
'''Ator Primário:''' SS <br/> | |||
'''Identificador:''' UCMJ <br/> | |||
'''Sumário:''' Configuração do modo de Jogo <br/> | |||
'''Pré-Condições:''' Comunicação ativa com ambos SS <br/> | |||
'''Fluxo Principal:''' <br/> | |||
[1] SA define o modo de jogo <br/> | |||
[2] SA envia modo de jogo para os SS <br/> | |||
'''Caso de Uso:''' Cadastro de robô <br/> | |||
'''Ator Primário:''' SS <br/> | |||
'''Identificador:''' UCCR <br/> | |||
'''Sumário:''' Configuração dos robôs <br/> | |||
'''Pré-Condições:''' Comunicação ativa com ambos SS <br/> | |||
'''Fluxo Principal:''' <br/> | |||
[1] SA solicita aos SS IDs dos robôs <br/> | |||
[2] SA recebe os IDs <br/> | |||
[3] SA verifica se não possui duplicidade de ID <br/> | |||
'''Exceção:''' Duplicidade de ID <br/> | |||
[1] SA solicita uma nova ID <br/> | |||
'''Caso de Uso:''' Validar Caça <br/> | |||
'''Ator Primário:''' SS <br/> | |||
'''Identificador:''' UCVC <br/> | |||
'''Sumário:''' Validação de caças <br/> | |||
'''Pré-Condições:''' Comunicação ativa com ambos SS <br/> | |||
'''Fluxo Principal:''' <br/> | |||
[1] SA aguarda receber a coordenada das caças <br/> | |||
[2] SA Verifica as coordenadas <br/> | |||
[3] SA valida a caça e acrescenta a pontuação do robô <br/> | |||
[4] SA envia para SS a validação <br/> | |||
'''Exceção:''' Caça inválida <br/> | |||
[1] SA envia caça inválida para SS <br/> | |||
[[Imagem:UC_SAv1.jpeg|frame|center|Imagem 1: Diagrama de Classe v1 - Sistema Auditor]] | |||
{{Collapse bottom}} | |||
{{Collapse top |Diagrama de Classe}} | |||
[[Imagem:DC_SAv1.jpeg|frame|center|Imagem 1: Diagrama de Classe v1 - Sistema Auditor]] | |||
{{Collapse bottom}} | |||
==Sistema Supervisor - SS== | |||
{{Collapse top |Atores do Sitema Supervisor}} | |||
Usuário - Responsável por informar a direção de deslocamento e solicitar para validar as caças. <br/> | |||
SA - Responsável por informar modo de jogo, enviar a lista, validar caças, começar e terminar o jogo.<br/> | |||
SR - Responsável enviar o ID, informar deslocamento e solicitar para validar caça<br/> | |||
{{Collapse bottom}} | |||
{{Collapse top |Casos de uso}} | |||
Caso de Uso: Manual <br/> | |||
Ator Primário: <br/> | |||
Identificador: UCMA <br/> | |||
Sumário: Modo de Jogo Manual <br/> | |||
Pré-Condições: Comunicação ativa entre SS e SR, SS e SA <br/> | |||
Fluxo Principal: <br/> | |||
[1] Recebe do SA o modo de Jogo <br/> | |||
[2] SS solicita lista de caças <br/> | |||
[3] SS informa as caças para o usuário <br/> | |||
[4] SS aguarda instruções do usuário <br/> | |||
Caso de Uso: Automático <br/> | |||
Ator Primário: <br/> | |||
Identificador: UCAU <br/> | |||
Sumário: Modo de Jogo Automático <br/> | |||
Pré-Condições: Comunicação ativa entre SS e SR, SS e SA <br/> | |||
Fluxo Principal: <br/> | |||
[1] Recebe do SA o modo de Jogo <br/> | |||
[2] SS solicita lista de caças <br/> | |||
[3] SS envia lista de caças para SR <br/> | |||
[4] SS mantém as informações de cada movimentação para o usuário <br/> | |||
[[Imagem:UC_SSv2_2.jpeg|frame|center|Imagem 1: Diagrama de Casos de uso v1 - Sistema Supervisor]] | |||
{{Collapse bottom}} | |||
{{Collapse top |Diagrama de Classe}} | |||
[[Arquivo:CD-Stub.png]] | |||
{{Collapse bottom}} | {{Collapse bottom}} | ||
Linha 516: | Linha 501: | ||
[[Imagem:UDSRv2.1.png|frame|center|Imagem 1: Diagrama de Casos de uso - Sistema Robô]] | [[Imagem:UDSRv2.1.png|frame|center|Imagem 1: Diagrama de Casos de uso - Sistema Robô]] | ||
[[Imagem:DURv2.jpg|frame|center|Imagem 1: Diagrama de Casos de uso V2- Sistema Robô]] | [[Imagem:DURv2.jpg|frame|center|Imagem 1: Diagrama de Casos de uso V2- Sistema Robô]] | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
{{Collapse top|Mensagens Trafegadas}} | |||
* Modo Autônomo: | |||
SS solicita para a Classe Controle o MAC do robô; | |||
Classe Controle encaminha ao SS o MAC do robô; | |||
Classe Controle encaminha ao SS o próximo movimento a ser feito pelo robô, que foi calculado pela classe Autônomo; | |||
Classe Controle encaminha ao SS a posição atual do robô, que fora lhe informado pela classe Autônomo; | |||
SS envia para a Classe Controle a lista atual de caças, o controle por sua vez repassa a informação para Autônomo; | |||
SS envia para a Classe Controle a coordenada atual do Adversário, o controle por sua vez repassa a informação para Autônomo; | |||
Classe Controle encaminha ao SS uma solicitação de validação de caça, que fora lhe informado pela classe Autônomo; | |||
SS envia para a Classe Controle a confirmação de que a caça foi validada, o controle por sua vez repassa a informação para Autônomo; | |||
SS envia para a Classe Controle um aviso de Pausa/Retomada da Partida; | |||
SS envia para a Classe Controle um aviso de final de Partida; | |||
* Modo Manual: | |||
SS solicita para a Classe Controle o MAC do robô; | |||
Classe Controle encaminha ao SS o MAC do robô; | |||
SS envia para a classe Controle o próximo movimento a ser feito, o controle por sua vez repassa a informação para Manual; | |||
SS envia para a Classe Controle um aviso de Pausa/Retomada da Partida; | |||
SS envia para a Classe Controle um aviso de final de Partida; | |||
{{Collapse bottom}} | |||
{{Collapse top|Diagrama de Sequencia}} | |||
*Diagrama de Sequencia Autônomo | |||
[[Arquivo:Diagrama_sequencia_autonomo_at.jpg]] | |||
*Diagrama de Sequencia Manual | |||
[[Arquivo:Diagrama_Sequencia_Manual.jpg]] | |||
[ | |||
[ | |||
{{Collapse bottom}} | |||
{{Collapse top |Diagrama de classes}} | |||
[[Imagem:CDv2_2_2.png|miniatura|Class Diagram|alt=Diagrama de classes para controle do robô|esquerda|x1080px|link=https://wiki.sj.ifsc.edu.br/images/5/52/Controlev1.1.1.png]] | |||
{{Collapse top |Descrição das Classes}} | |||
==Classe controle== | |||
===Atibutos=== | |||
''' | * '''- posicao:''' Coordenadas atuais | ||
''' | * '''- destino:''' Próxima coordenada | ||
* '''- velociodadeMax:''' velocidade máxíma do robô | |||
''' | |||
===Metodos:=== | |||
* '''+ seguirLinha():''' | |||
* '''+ frente():''' Após encontrar um ponto de intersecção ele deve ir até a próxima linha para virar. | |||
* '''+ esquerda():''' rotacionar de 0º a 180º | |||
* '''+ direita():''' rotacionar de 0º a -180º | |||
* '''+ retorna():''' rotacionar 180º | |||
==Classe Autônomo== | |||
===Atibutos=== | |||
* '''- listaMovAtualizada:''' Inicialmente contém os movimentos iniciais e atualiza a cada nova estratégia | |||
* '''- coordXAtual:''' Posição X atualizada a cada movimento | |||
* '''- coordYAtual:''' Posição Y atualizada a cada movimento | |||
* '''- coordXInicial:''' Posição X onde o robô irá iniciar no tabuleiro | |||
* '''- coordYIncial:''' Posição Y onde o robô irá iniciar no tabuleiro | |||
* '''- listaSequencia:''' Estratégias de movimento | |||
* '''- coordenadaAdv:''' Guarda a coordenada do adversário a cada movimento | |||
===Metodos=== | |||
* '''+ calcularMovimentos():''' | |||
* '''+ getPosicao():''' Informa a posicao atual | |||
* '''+ getListaSeq():''' carregar as estratégias | |||
* '''+ getPosAdversario():''' capturar a posicao do adversário | |||
* '''+ setPosicao():''' Atualizar a coordenada caso tenha ocorrido algum erro | |||
==Classe Manual== | |||
===Atibutos=== | |||
* '''- coordXAtual:''' Posição X atualizada a cada movimento | |||
* '''- coordYAtual:''' Posição Y atualizada a cada movimento | |||
* '''- coordInicial:''' Posição onde o robô começará no tabuleiro | |||
===Metodos=== | |||
* '''+ executaComando():''' Informa se quer seguir linha, esq, dir, retornar | |||
* '''+ getPosicao():''' Informa a posição aual | |||
* '''+ serPosicao():''' Atualiza posicao atual do robô | |||
==Classe template== | |||
===Atibutos=== | |||
* '''+ publico:''' descricao | |||
* '''- privado:''' descricao | |||
* '''# protegido:''' descricao | |||
===Metodos=== | |||
* '''+ met1():''' descricao | |||
* '''+ met2():''' descricao | |||
* '''+ met3():''' descricao | |||
{{Collapse bottom}} | {{Collapse bottom}} | ||
{{Collapse top | | {{Collapse top |Classe sensor}} | ||
[[Arquivo:D_class_motor.jpg ]] | |||
[ | |||
[ | |||
{{Collapse bottom}} | {{Collapse bottom}} | ||
{{Collapse top |Classe motor}} | |||
[[Arquivo:D_class_motor_real.jpg]] | |||
{{Collapse top | | |||
{{Collapse bottom}} | {{Collapse bottom}} | ||
{{Collapse bottom}} | {{Collapse bottom}} |
Edição atual tal como às 17h48min de 21 de outubro de 2018
1 Responsáveis pelo projeto
- Douglas Amorim dos Santos
- Allex Magno
- Filipe Kuhnen
Diário de bordo |
---|
2 TODO próxima semanaTerminar SR: movimentação automatica (validar a cada novo passo se pode fazer o proximo; Fazer SS Criar classe que comunica com SR 3 17/09Testes para execução da Classe autônomo e manual realizados. Código está disponível em repositório git. 4 Aula 4 - 20/08
|
8 Detalhes iniciais
8.1 Desenvolvimento
A implementação estará disponível no repositório github do projeto
8.2 Conexão ao EV3
Efetuamos a conexão ao ev3 por meio do bluetooth, seguindo as instruções descritas em https://www.ev3dev.org/docs/tutorials/using-bluetooth-tethering/. Após conectarmos via bluetooth acessamos o ev3 via ssh utilizando o putty.
8.3 CRONOGRAMA DE ATIVIDADES FUTURAS
8.4 Requisitos
Requisitos funcionais e não Funcionais |
---|
8.5 Requisitos funcionaisRF01 O sistema deve permitir criação e gerência de cadastro de um robô. Cadastrar no S.A dados do robô via interface de controle: Nome, Usuário, Cor para identificação. RF02 O sistema de deve manter um histórico das partidas realizadas. Quando a partida encerrar, o S.A. irá armazenar nome dos participantes e pontuação. Irá armazenar as 10 últimas partidas. RF03 O sistema deve ser capaz de fazer a autenticação dos robôs cadastrados. Quando a partida for "cadastrada" o S.A. irá autenticar os dados antes de iniciar a partida. Também irá registrar a posição inicial e zerar o score. RF04 Os robôs devem ser capazes de operar nos modos manual e autônomo. O SA vai definir se a partida será modo manual ou mono autônomo. O SS irá configurar o modo no SR. O SR terá uma interface comandos de deslocamento. RF05 O sistema deve validar e contabilizar as caças já encontradas pelo robô. O S.R enviará a localização ao S.A que irá validar a “captura da caça”/chegada primeiro ao ponto. Quando validada a captura, irá incrementar a pontuação. RF06 O sistema deve dar início a partida, sortear os locais das caças e informá-los aos robôs. Quando os robôs estiverem posicionados (ficaram em vértices opostos), o S.A. irá sortear a posição das caças e enviar aos robôs. Após isso se dará o início da partida. RF07 O sistema deve prover uma interface de monitoramento para o robô em modo autônomo. O S.A irá enviar a pontuação das caças validadas para o S.R. O S.R. irá também descrever em sua tela os movimentos do robô e as coordenadas. RF08 O sistema deve prover uma interface de controle e monitoramento para o robôs em modo manual. Será necessário criar para o S.R. uma interface comandos de deslocamento e o monitoramento pode aproveitar a estrutura descrita no RF07. RF09 O sistema deve permitir que, quando em modo autônomo, o robô execute os movimentos programados a partir do algoritmo implementado. Será implementado um algoritmo que irá fazer uso dos sensores de luz e ultrassom para o S.R que será executado quando o modo da partida for autônomo. RF010 O sistema deve permitir pausa e reset da partida. Os jogadores ao requisitar pausa, enviará um comando para S.A, o qual enviará aos S.R. uma requisição de pausa.Com isso todos movimentos que estão organizados na fila serão pausados aguardando uma mensagem para retorno. Quando o S.A enviar um comando de reset ele mandará o robô para posição inicial e irá zerar o score. Após nova autenticação, dará o comando para iniciar novamente. RF011 O sistema deve permitir que os resultados do jogo sejam vistos pelos espectadores em tempo real. Contemplado no RF07 e RF08, através do monitoramento. RF012 O sistema não deve permitir que os robôs se choquem. O S.R. usará o sensor ultrasônico do robô para detectar a presença de outro robô e obstáculos. Ao detectar impedimento ou possibilidade de choque, o S.R. para o deslocamento em curso e manda retornar para a posição imediatamente anterior. RF013 O sistema deve declarar um vencedor assim que todas as caças forem encontradas. Quando todas as caças forem validadas/capturadas, o S.A irá comparar a pontuação e definir o vencedor. Após isso irá registrar a partida na memória (nomes e pontuações dos jogadores) 8.6 Requisitos não funcionaisRNF01 A interface do sistema de comunicação com o usuário deve ser intuitiva. Será via interface web. RNF02 O tabuleiro será composto por linhas pretas e todos com cor. O tabuleiro será com linhas pretas e os pontos de intersecção será de cor verde. RNF03 O tabuleiro terá as dimensões definidas (2m x 2m). OK RNF04 O tabuleiro será composto por 100 quadrados de dimensões: 20cm x 20cm. OK RNF05 O tabuleiro será limitado por uma borda vermelha. OK, linha vermelha não pode ser tratada como obstáculo, mas robô não pode transpo-la. RNF06 O placar mostrado aos usuários deve ser de fácil identificação. Será implementado na interface web. RNF07 O robô deve ter uma cor para identificação. Contemplado no RF01. |
8.7 Testes Funcionais
Teste dos Motores |
---|
Em primeiro momento fizemos um teste básico da movimentação do robô, testamos primeiro a movimentação para frente, e em seguida fizemos um esboço de como o robô faria sua movimentação para virar a esquerda ou direita.
|
Teste dos Sensores |
---|
|
9 Sistema Auditor - SA
Atores do Sitema Auditor |
---|
SS: responsável por informar ID do robô e solicitar validação de caça Arbitro: |
10 Sistema Supervisor - SS
Atores do Sitema Supervisor |
---|
Usuário - Responsável por informar a direção de deslocamento e solicitar para validar as caças. |
11 Sistema Robo - SR
Atores do Sitema robo |
---|
|
Mensagens Trafegadas |
---|
SS solicita para a Classe Controle o MAC do robô; Classe Controle encaminha ao SS o MAC do robô; Classe Controle encaminha ao SS o próximo movimento a ser feito pelo robô, que foi calculado pela classe Autônomo; Classe Controle encaminha ao SS a posição atual do robô, que fora lhe informado pela classe Autônomo; SS envia para a Classe Controle a lista atual de caças, o controle por sua vez repassa a informação para Autônomo; SS envia para a Classe Controle a coordenada atual do Adversário, o controle por sua vez repassa a informação para Autônomo; Classe Controle encaminha ao SS uma solicitação de validação de caça, que fora lhe informado pela classe Autônomo; SS envia para a Classe Controle a confirmação de que a caça foi validada, o controle por sua vez repassa a informação para Autônomo; SS envia para a Classe Controle um aviso de Pausa/Retomada da Partida; SS envia para a Classe Controle um aviso de final de Partida;
SS solicita para a Classe Controle o MAC do robô; Classe Controle encaminha ao SS o MAC do robô; SS envia para a classe Controle o próximo movimento a ser feito, o controle por sua vez repassa a informação para Manual; SS envia para a Classe Controle um aviso de Pausa/Retomada da Partida; SS envia para a Classe Controle um aviso de final de Partida; |