Mudanças entre as edições de "Grupo1-PJI2-2018-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 202: Linha 202:
 
{{Collapse top |Casos de uso}}
 
{{Collapse top |Casos de uso}}
  
[[Imagem:UDSRv2.png|center|legenda]]
+
'''Caso de uso:''' Identidade <br\>
 +
'''Ator Primário:''' SS <br\>
 +
'''Identificador:''' UCID <br\>
 +
'''Sumário:''' O SS fornece ao robô uma cor de identificação<br\>
 +
'''Pré condições:''' Iniciar o Sistema robô <br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1] SS informa ao SR qual sua cor <br/>
 +
'''Pós-condições:''' SR <br\>
 +
 
 +
 
 +
'''Caso de uso:''' Monitoramento <br\>
 +
'''Ator Primário:''' SS <br\>
 +
'''Identificador:''' UCMNT <br\>
 +
'''Sumário:''' Obter a localização do robô<br\>
 +
'''Pré condições:''' Robô estar no tabuleiro <br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1] SS solicita ao SR que deseja informações de localização <br/>
 +
[2] SR responde informando as coordenadas<br/>
 +
 
 +
 
 +
'''Caso de uso:''' Iniciar busca <br\>
 +
'''Ator Primário:''' SS <br\>
 +
'''Identificador:''' UCIBA <br\>
 +
'''Sumário:''' Robô começa a realizar as buscas<br\>
 +
'''Pré condições:''' Robô estar posicionado no inicio do tabuleiro em modo autônomo<br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1] SS informa ao SR para iniciar as buscas<br/>
 +
[2] Robô verifica sua posição através do monitoramento<br/>
 +
[3] Robô toma decisão para qual coordenada seguir<br/>
 +
''' Exceção''': Robô é impedido de prosseguir pelo sensor ultrassom<br/>
 +
[1] Sensor ultrassom identifica a presença de outro robô<br/>
 +
[2] Sensor ultrassom bloqueia a movimentação do robô para determinada coordenada<br/>
 +
'''Pós-condições:''' Robô inicia a movimentação<br\>
 +
 
 +
'''Caso de uso:''' Iniciar busca <br\>
 +
'''Ator Primário:''' SS <br\>
 +
'''Identificador:''' UCIBM <br\>
 +
'''Sumário:''' Robô começa a realizar as buscas<br\>
 +
'''Pré condições:''' Robô estar posicionado no inicio do tabuleiro em modo manual<br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1] SS informa ao SR para iniciar as buscas<br/>
 +
[2] Robô verifica sua posição através do monitoramento<br/>
 +
[3] Aguarda informações de direção<br/>
 +
''' Exceção''': Robô é impedido de prosseguir pelo sensor ultrassom<br/>
 +
[1] Sensor ultrassom identifica a presença de outro robô<br/>
 +
[2] Sensor ultrassom bloqueia a movimentação do robô para determinada coordenada<br/>
 +
''' Exceção''': Robô é impedido de prosseguir pelo sensor de Luz<br/>
 +
[1] Sensor de Luz verifica que não há caminho a ser percorrido<br/>
 +
[2] Sensor Luz bloqueia a movimentação do robô para determinada direção<br/>
 +
'''Pós-condições:''' Robô inicia a movimentação<br\>
 +
 
 +
'''Caso de uso:'''  <br\>
 +
'''Ator Primário:''' <br\>
 +
'''Identificador:''' <br\>
 +
'''Sumário:''' <br\>
 +
'''Pré condições:''' <br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1]  <br/>
 +
'''Pós-condições:'''  <br\>
 +
 
 +
 
 +
'''Caso de uso:'''  <br\>
 +
'''Ator Primário:''' <br\>
 +
'''Identificador:''' <br\>
 +
'''Sumário:''' <br\>
 +
'''Pré condições:''' <br\>
 +
'''Fluxo Principal:''' <br\>
 +
[1]  <br/>
 +
'''Pós-condições:'''  <br\>
 +
 
 +
[[Imagem:UDSRv2.1.png|frame|center|Imagem 1: Diagrama de Casos de uso - Sistema Robô]]
  
 
{{Collapse bottom}}
 
{{Collapse bottom}}

Edição das 22h33min de 19 de agosto de 2018

Responsáveis pelo projeto

  • Douglas Amorim dos Santos
  • Allex Magno
  • Filipe Kuhnen
Diário de bordo

Data estelar 3 4 do 3 do 2 do 1

Detalhes iniciais

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.

Diagramas de Classe

Classe sensor

D class motor.jpg

Classe motor

D class motor real.jpg

Requisitos

Requisitos funcionais e não Funcionais

Requisitos funcionais

RF01 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, endereço MAC? IP?

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. 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.

Quem irá definir, o S.R ou o S.A.? Será necessário criar 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 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.

Terá que implementar um algoritmo de procura para o S.R.. Ir para caça mais próxima? Ir para onde tem mais caças?

RF010 O sistema deve permitir pausa e reset da partida.

Quem pausa? Se jogadores poderem requisitar pausa terá que ser enviado um comando para S.A.para o S.A enviar aos S.R. uma requisição de pausa.Com isso todos movimentos que estão organizados na fila serão pausados aguardando o retorno. Quando o S.A enviar um comando de reset ele mandará o robô para posição inicial e irá zerar o score. E 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)

Requisitos não funcionais

RNF01 A interface do sistema de comunicação com o usuário deve ser intuitiva.

Terminal? interface web?

RNF02 O tabuleiro será composto por linhas pretas e todos com cor.

Não entendi, o caminho será na cor preta e outras cores será o que?

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 de monitoramento.

RNF07 O robô deve ter uma cor para identificação.

Essa cor será sorteada? ou o robô designa no cadastro, junto com outros dados?

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.

  • Movimentação para frente:

  1. !/usr/bin/env python3

from ev3dev.ev3 import * from time import sleep m = LargeMotor('outD') m1 = LargeMotor('outA')

m.run_forever(speed_sp=900) m1.run_forever(speed_sp=900) sleep(5)

m.stop(stop_action="hold") m1.stop(stop_action="hold") sleep(5) </syntaxhighlight>

  • Dobrar para direita ou esquerda:

  1. !/usr/bin/env python3

from ev3dev.ev3 import * from time import sleep

m.run_timed(time_sp=5, speed_sp=500) sleep(5)

m.stop(stop_action="hold") sleep(5) </syntaxhighlight>

Teste dos Sensores

Sistema Robo

Atores do Sitema robo
  • SS: Sistema supervisor responsável por indicar ações que serão realizados no robô, coletar informações de localização e validar ou não as caças.
  • Sensor de Luz: É responsável por informar ao robô o caminho que deve ser seguido e onde exite pontos de intersecções.
  • Sensor ultrassom: Responsável por verificar e avisar o robô a existência da presença de um outro robô no tabuleiro.
Casos de uso

Caso de uso: Identidade <br\> Ator Primário: SS <br\> Identificador: UCID <br\> Sumário: O SS fornece ao robô uma cor de identificação<br\> Pré condições: Iniciar o Sistema robô <br\> Fluxo Principal: <br\> [1] SS informa ao SR qual sua cor
Pós-condições: SR <br\>


Caso de uso: Monitoramento <br\> Ator Primário: SS <br\> Identificador: UCMNT <br\> Sumário: Obter a localização do robô<br\> Pré condições: Robô estar no tabuleiro <br\> Fluxo Principal: <br\> [1] SS solicita ao SR que deseja informações de localização
[2] SR responde informando as coordenadas


Caso de uso: Iniciar busca <br\> Ator Primário: SS <br\> Identificador: UCIBA <br\> Sumário: Robô começa a realizar as buscas<br\> Pré condições: Robô estar posicionado no inicio do tabuleiro em modo autônomo<br\> Fluxo Principal: <br\> [1] SS informa ao SR para iniciar as buscas
[2] Robô verifica sua posição através do monitoramento
[3] Robô toma decisão para qual coordenada seguir
Exceção: Robô é impedido de prosseguir pelo sensor ultrassom
[1] Sensor ultrassom identifica a presença de outro robô
[2] Sensor ultrassom bloqueia a movimentação do robô para determinada coordenada
Pós-condições: Robô inicia a movimentação<br\>

Caso de uso: Iniciar busca <br\> Ator Primário: SS <br\> Identificador: UCIBM <br\> Sumário: Robô começa a realizar as buscas<br\> Pré condições: Robô estar posicionado no inicio do tabuleiro em modo manual<br\> Fluxo Principal: <br\> [1] SS informa ao SR para iniciar as buscas
[2] Robô verifica sua posição através do monitoramento
[3] Aguarda informações de direção
Exceção: Robô é impedido de prosseguir pelo sensor ultrassom
[1] Sensor ultrassom identifica a presença de outro robô
[2] Sensor ultrassom bloqueia a movimentação do robô para determinada coordenada
Exceção: Robô é impedido de prosseguir pelo sensor de Luz
[1] Sensor de Luz verifica que não há caminho a ser percorrido
[2] Sensor Luz bloqueia a movimentação do robô para determinada direção
Pós-condições: Robô inicia a movimentação<br\>

Caso de uso: <br\> Ator Primário: <br\> Identificador: <br\> Sumário: <br\> Pré condições: <br\> Fluxo Principal: <br\> [1]
Pós-condições: <br\>


Caso de uso: <br\> Ator Primário: <br\> Identificador: <br\> Sumário: <br\> Pré condições: <br\> Fluxo Principal: <br\> [1]
Pós-condições: <br\>

Imagem 1: Diagrama de Casos de uso - Sistema Robô