Grupo3-PJI2-2018-2

De MediaWiki do Campus São José
Revisão de 22h42min de 19 de agosto de 2018 por Joao.lm (discussão | contribs) (→‎13/8/18)
Ir para navegação Ir para pesquisar

Projeto Integrador II

Alunos: João Leonardo Martins (joao.lm@aluno.ifsc.edu.br) e Vinícius Luz (vinicius.ls@aluno.ifsc.edu.br)

Objetivo Geral

Implantar tradicional caça de robôs para buscar determinados itens através de coordenadas.

Bibliografia

  • BEZERRA, Eduardo. Princípios de análise e projetos de sistemas com UML, 2002. Rio de Janeiro. Editora Campus LTDA.

Diário das Aulas

30/7/18
Aula 1

- Definição do grupo;

- Aula expositiva;

- Organização das tarefas através da ferramenta Trello;

6/8/18
Aula 2

- Efetuada a leitura da documentação do EV3-Python: apesar do bot já possuir o linux instalado, estudamos como seria a implementação do mesmo;

- Início da montagem do robô: encontramos algumas dificuldades pois o equipamento estava completamente desmontado, com isso, até entendermos que a montagem seria basicamente livre, sofremos um pouco na idealização do EV3;

- Alinhamento sobre comunicação com o robô: ficou definido que vamos utilizar um adaptador wi-fi no mesmo, sendo assim, um terceiro equipamento se fez necessário, uma vez que a o EV3 não conecta na rede do Instituto;

- Alguns exemplos de implementação foram observados na documentação do EV3, conforme pode ser obtido através destes links: Exemplos Motor e Exemplos Sensor

- Diagrama Geral do Projeto:

Diagrama Geral do Projeto
Classe Motor
Diagrama de Classe - Motor
Classe Sensor
Diagrama de Classe - Sensor
Requisitos Funcionais


RF01 O sistema deve permitir criação e gerência de cadastro de um robô.
[SA] - O que deve ter neste cadastro? Como deve ser feito o cadastro, web?
Sugestão: usuário, senha, nome. Cadastro via Web.
RF02 O sistema de deve manter um histórico das partidas realizadas.
[SA] - Qual tamanho do histórico?
Sugestão: O histórico deve manter o resultado das últimas com o nome dos robôs participantes.
Sugestão: 100 últimas partidas.
RF03 O sistema deve ser capaz de fazer a autenticação dos robôs cadastrados.
[SA] - Em que momento é feita a autenticação?
Sugestão: a autenticação será ao iniciar uma partida. Antes de iniciar, solicitar partida.
RF04 Os robôs devem ser capazes de operar nos modos manual e autônomo.
[SR] - Existe algum requisito sobre o modo manual? Por onde o robo deve ser guiado?
Sugestão: interface onde se possa utilizar as setas direcionais do teclado.
RF05 O sistema deve validar e contabilizar as caças já encontradas pelo robô.
[SA] - Afinal, o que será a caça? Como validar?
RF06 O sistema deve dar início a partida, sortear os locais das caças e informá-los aos robôs.
[SA] - Sortear os locais e informar, ou fazer tudo junto? Isso pode mudar a estratégia do robô. Onde será o início?
Sugestão: primeiro sortear a informar os locais das caças. Depois iniciar.
Sugestão: início no canto do tabuleiro.
RF07 O sistema deve prover uma interface de monitoramento para o robô em modo autônomo.
[SR] - Há algum requisito para a interface de monitoramento?
Sugestao: o sistema deve conter o número de caças encontradas e o trajeto realizado. Poderá ser feito via mensagens na tela.
RF08 O sistema deve prover uma interface de controle e monitoramento para o robôs em modo manual.
[SR] - Existe algum requisito sobre o modo manual? Por onde o robo deve ser guiado?
Sugestão: interface onde se possa utilizar as setas direcionais do teclado.
RF09 O sistema deve permitir que, quando em modo autônomo, o robô execute os movimentos programados a partir do algoritmo implementado.
[SR] - OK
RF010 O sistema deve permitir pausa e reset da partida.
[SA] - No reset, os robôs devem voltar ao início ou fazemos manualmente?
Sugestão: Fazer manualmente.
RF011 O sistema deve permitir que os resultados do jogo sejam vistos pelos espectadores em tempo real.
[SA] - Há algum requisito para esta visualização?
Sugestão: Interface web simples, com o placar do jogo.
RF012 O sistema não deve permitir que os robôs se choquem.
[SR] - OK
RF013 O sistema deve declarar um vencedor assim que todas as caças forem encontradas.
[SA] - OK, e os robôs devem parar as suas buscas.
RF014 Antes de iniciar a partida, o sistema deve verificar a posição atual dos robôs.
[SA] - Este requisito será necessário caso o ponto de partida seja sempre o mesmo (RF006).
RF015 Após capturar uma caça, o robô deve avisar o SS, que por sua vez, deve avisar o SA para validação da caça. Esta validação deve retornar ::ao SR, confirmando-a ou não.
Requisitos Não Funcionais
RNF01 A interface do sistema de comunicação com o usuário deve ser intuitiva.
[SA] - Como será essa interface, afinal? Web?
RNF02 O tabuleiro será composto por linhas pretas e todos com cor.
[SR] - Como assim? Não entendi.
Pelo que entendi, as linhas pretas (algo como uma fita isolante), serão utilizadas para limitar os quadrados coloridos, que terão diversas ::cores e somente uma ou outra será considerada caça.
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
RNF06 O placar mostrado aos usuários deve ser de fácil identificação.
OK, web?
RNF07 O robô deve ter uma cor para identificação.
Cada robô possui uma cor pré-definida ou o SA define no momento da partida?
O robô deve ter uma etiqueta de identificação.
Papéis dos Atores
Ator Papel
Usuário Iniciar partida em modo autônomo
Usuário Iniciar partida em modo manual
Usuário Controlar robô em busca de caças no modo manual
Usuário Monitorar robô em modo autônomo
Usuário Posicionar o robô para o início da partida
SS Informar ao robô onde estão as caças
SS Informar ao robô se a caça encontrada foi validada
SS Informar ao robô sobre o início da partida
SS Informar ao robô sobre o término da partida
SS Informar ao robô se a autenticação foi validada
SS Informar ao robô sobre pausas na partida
Onde: SS - sistema supervisório; Usuário - jogador
Casos de Uso

- Construção diagramasr.png de diagrama UML conforme bibliografia:

Imagem 1: diagramas de casos de uso para o SR
13/8/18
Aula 3

Levantamentos sobre discussões em sala



Alteração da definição do diagrama geral do projeto.

Diagrama Geral do Projeto
Diagrama Geral do Projeto


Pontos levantados a respeito dos requisitos de projeto.

Considerações sobre requisitos do projeto

Sistema Robô [SR]

Deve ter um ID para validação e será baseado no MAC do Bluetooth do robô;
A posição inicial sempre será (0,0) ou (20,20);
A cor do robô será definida no momento do cadastro no SA.

Sistema Supervisório [SS]

Modo manual: movimentações para direita, esquerda, cima e baixo;
Não há requisitos para a interface com usuário, poderá ser web, desktop, etc;
A caça será uma coordenada, que varia de (0,0) a (20,20);
No modo automático, o monitoramento do robô deverá exibir informações sobre as caças encontradas e a sequência de movimentações;
Para reinício da partida, o jogador deverá reposicionar manualmente o robô nas posições iniciais;
SS deverá informar ao SA que está pronto para iniciar uma partida;
O robô deverá parar enquanto aguarda a validação da caça.

Sistema Auditoria [SA]

A validação da caça deverá ser manual;
O SA deverá informar o SS do início da partida, já com a localização das caças.


Códigos executados para testes no robô.

Código teste motor

  1. !/usr/bin/env python3

from ev3dev.ev3 import * import time

m_l = Motor(OUTPUT_B)#left motor m_r = Motor(OUTPUT_C) #right motor

  1. run forward for tree seconds:

m_l.run_timed(time_sp=3000, speed_sp=500) m_r.run_timed(time_sp=3000, speed_sp=500)

time.sleep(2)

  1. run "forever"

for x in range(0,500): x=x+1 m_l.run_forever(speed_sp=50) m_r.run_forever(speed_sp=50) if x ==500: m_l.stop(stop_action='brake') m_r.stop(stop_action='brake')

  1. turn back

m_l.run_timed(time_sp=3000, speed_sp=-500) m_r.run_timed(time_sp=3000, speed_sp=-500)

time.sleep(2)

for y in range(0,500):

       y=y+1
       m_l.run_forever(speed_sp=-50)
       m_r.run_forever(speed_sp=-50)
       if y ==500:
               m_l.stop(stop_action='brake')
               m_r.stop(stop_action='brake')
  1. rotate

m_l.run_timed(time_sp=3000, speed_sp=500) time.sleep(3) m_r.run_timed(time_sp=3000, speed_sp=500) </syntaxhighlight>

Código teste luminosidade

  1. !/usr/bin/env python3

from ev3dev.ev3 import * from time import sleep

  1. Connect EV3 color sensor and check connected.

cl = ColorSensor() assert cl.connected, "Connect a color sensor to any sensor port"

  1. Put the color sensor into COL-REFLECT mode
  2. to measure reflected light intensity.
  3. In this mode the sensor will return a value between 0 and 100

cl.mode='COL-REFLECT'

while True:

   print(cl.value())
   sleep(1)

</syntaxhighlight>


Ajustes no Diagrama UC do SR.

Diagrama UC do SR
Diagrama Geral do Projeto2

Detalhamento do Diagrama UC do SR.

Diagrama UC do SR - descrição

Jogar Automático (CSU-SR03)

Sumário: O Sistema do Robô joga em modo automático. Ator Primário: Sistema Supervisor. Precondições: Receber a operação modo automático do Sistema Supervisor. Fluxo Principal:

   O Sistema Supervisor informa ao Sistema do Robô o modo de operação automático;
   O Sistema do Robô joga em modo automático.