Grupo2-PJI2-2018-2

De MediaWiki do Campus São José
Revisão de 00h23min de 1 de outubro de 2018 por Ameliza.s (discussão | contribs)
Ir para navegação Ir para pesquisar

1 Membros do grupo

  • Ameliza Souza Corrêa
  • Marcone Augusto P. Louzada
  • Yan Lucas Martins

2 Repositório git

https://github.com/yanmartins/ProjetoIntegradorII.git

3 Cronograma

Cronograma do projeto

4 Diário do projeto

06/08/2018 - Montagem e conexão
Durante a primeira aula que tivemos contato com o LEGO Mindstorms EV3, nos ocupamos em realizar a sua montagem, bem como a conexão por Bluetooth via SSH com o robô. Conforme a seguinte documentação: Getting Started with ev3dev
08/08/2018 - Primeiros testes com a classe Motor
Foram testadas algumas funções da classe para o uso dos motores, obtendo o sucesso esperado deste teste inicial.
13/08/2018 - Implementação do laboratório virtual
Visando a simplificação para elaborar as estratégias que serão tomadas pelo robô, resolvemos montar um laboratório de simulação em Java, onde realizaremos todos os testes.
  • OBJETIVOS
    • Analisa o tabuleiro e verifica quais caças estão mais próximas [OK]
    • Verifica a posição das caças a cada movimento [OK]
    • Quando encontra a fronteira (linha vermelha) ele não a ultrapassa [OK]
    • Orientar seu eixo na direção correta [NOK]
    • Modo autônomo [NOK]


  • REVISAR
    • Quando acha uma intersecção, o robô não se importa com a orientação de seu eixo.
    • Não possui estratégias de caça.
17/08/2018 - Testes com todos os sensores
Nesta etapa, realizamos testes com as demais classes que serão utilizadas no projeto: sensor de cor, sensor ultrassônico, LEDs e novos usos da classe motor.
  • OBJETIVOS
    • Seguir uma linha preta [OK]
    • Parar a 10 cm de distância de um obstáculo [OK]
    • Mudar cores dos LEDs [OK]
    • Ao sair da linha preta, procurar por outra linha preta [NOK]


  • REVISAR
    • Verificar montagem da estrutura de locomoção. As rodas não estão bem alinhadas.
    • O robô para quando encontra um obstáculo e sinaliza interrupção com um LED amarelo, porém não toma uma "atitude" sobre isso. Fica aguardando o obstáculo ser removido.
    • O robô ainda não possui uma forma eficaz de buscar novas linhas pretas quando sai da mesma.
30/08/2018 - Teste com algoritmos PID seguidor de linha
Tendo acesso ao tabuleiro, foi possível iniciar os testes de movimentação do robô.
  • OBJETIVOS
    • Testar comportamento do robô submetido à vários algoritmos [OK]
    • Pausa quando detecta intersecção (cor verde) [NOK]


  • MELHORIA
    • Alterada a posição do sensor de cor para melhor calibragem.


  • REVISAR
    • Verificar montagem da estrutura de locomoção. As rodas não estão bem alinhadas.
    • Identificar range da cor verde para o sensor de cor.
05/09/2018 - Ajustes de montagem e implementação da classe Movimento
Foi remontada a estrutura de suporte dos sensores e motores, a fim de garantir melhor estabilidade.
  • OBJETIVOS
    • Verificar montagem da estrutura de locomoção [OK]
    • Tomar decisão quando detecta intersecção (cor verde) [NOK]


  • MELHORIA
    • Alteração do posicionamento do sensor ultrassônico.
    • Ajuste na base dos motores para maior estabilidade de movimentação.


  • REVISAR
    • Não entra no looping de seguidor de linha adequadamente.
    • Aperfeiçoar algoritmo seguidor de linha.
10/09/2018 - Implementação da classe Movimento (modo manual) - GITHUB
Com a nova estrutura do robô definida, reduziu-se as dificuldades encontradas nos testes iniciais com os algoritmos PID seguidor de linha. A primeira versão da classe Movimento está disponível no repositório git: https://github.com/yanmartins/ProjetoIntegradorII
  • OBJETIVOS
    • Tomar decisão quando detecta intersecção (cor verde) [OK]
    • Voltar para a posição anterior quando detecta um obstáculo [NOK]
    • Obedecer os comandos direita(), esquerda(), frente(), re() [NOK]


  • REVISAR
    • Devemos reavaliar a forma que será dado o retorno à posição anterior.
    • O algoritmo move o robô para a esquerda, porém não desempenha o mesmo papel para a direita.
11/09/2018 - Implementação das classes Movimento e Posicionamento - GITHUB
Robô já possui uma movimentação funcional pelo tabuleiro, se movendo para as 4 direções possíveis e retornando para a posição anterior assim que detecta um obstáculo. Essa nova versão está disponível no repositório git do projeto.
  • OBJETIVOS
    • Voltar para a posição anterior quando detecta um obstáculo [OK]
    • Obedecer os comandos direita(), esquerda(), frente(), re() [OK]
    • Criar função move() [OK]


  • REVISAR
    • Revisar algoritmo seguidor de linha, robô se perde em poucas ocasiões.
    • Talvez seja necessário reimplementar a função re()
12/09/2018 - Implementação das classes Manual, Comunicação e Inicialização - GITHUB
O sistema do robô tem a base para realizar trocas de mensagens com o SS a partir da classe Comunicação (stub). Essa nova versão está disponível no repositório git do projeto.
  • OBJETIVOS
    • Criar classe Comunicação (stub) [OK]


  • REVISAR
    • Revisar funções booleanas na classe Movimento.
21/09/2018 - Implementação das classes Posicionamento e Autônomo - GITHUB
No momento em que o robô recebe uma direção, localiza para qual coordenada e sentido (norte, sul, leste e oeste) está indo. Houve alterações também na classe Movimento. Essa nova versão está disponível no repositório git do projeto.
  • OBJETIVOS
    • Terminar classe Posicionamento [OK]

5 Levantamento de Requisitos

Requisitos Funcionais e Não funcionais

5.1 Requisitos Funcionais

RF01 O sistema deve permitir criação e gerência de cadastro de um robô.

RF02 O sistema de deve manter um histórico das partidas realizadas.

RF03 O sistema deve ser capaz de fazer a autenticação dos robôs cadastrados.

RF04 Os robôs devem ser capazes de operar nos modos manual e autônomo.

RF05 O sistema deve validar e contabilizar as caças já encontradas pelo robô.

RF06 O sistema deve dar início a partida, sortear os locais das caças e informá-los aos robôs.

RF07 O sistema deve prover uma interface de monitoramento para o robô em modo autônomo.

RF08 O sistema deve prover uma interface de controle e monitoramento para o robôs em modo manual.

RF09 O sistema deve permitir que, quando em modo autônomo, o robô execute os movimentos programados a partir do algoritmo implementado.

RF010 O sistema deve permitir pausa e reset da partida.

RF011 O sistema deve permitir que os resultados do jogo sejam vistos pelos espectadores em tempo real.

RF012 O sistema não deve permitir que os robôs se choquem.

RF013 O sistema deve declarar um vencedor assim que todas as caças forem encontradas.

RF014 Os robôs devem ser capazes de informar suas coordenadas a cada movimento.




5.2 Requisitos Não Funcionais

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

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

RNF03 O tabuleiro terá as dimensões definidas (2m x 2m).

RNF04 O tabuleiro será composto por 100 quadrados de dimensões: 20cm x 20cm.

RNF05 O tabuleiro será limitado por uma borda vermelha.

RNF06 O placar mostrado aos usuários deve ser de fácil identificação.

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

RNF08 Os robôs devem ser posicionados nos dois extremos do tabuleiro no início da partida.

6 Sistema do Robô

Os casos de uso foram modelados de acordo com essa página, que é baseada no livro Princípios de Análise e projetos de sistemas com UML do Eduardo Bezerra.

Modelagem
Diagrama de classe
Atores dos casos de uso

Sensor ultrassônico

  • Identificador: SU
  • Descrição: Responsável por detectar obstáculos que possam interferir na trajetória do robô.


Sensor de cor

  • Identificador: SC
  • Descrição: Responsável por detectar variações de cor no tabuleiro. Sendo usado para seguir as linhas pretas e identificar regiões de caça (intersecções).


Sistema Supervisório

  • Identificador: SS
  • Descrição: Responsável por exibir a interface de controle, e por intermediar a comunicação entre SR e SA.
Descrição dos casos de uso

Caso de uso: Tratar obstáculos

Ator Primário: Sensor ultrassônico

Identificador: CSR 01

Sumário: Evitar colisões com outros robôs analisando obstáculos.

Pré condições: Obstáculo estar no campo de visão do sensor ultrassônico

Fluxo Principal:

  • Sensor ultrassônico detecta um obstáculo.
  • Sensor ultrassônico solicita ao SR o travamento dos motores.

Pós-condições: SS envia a ordem para o robô se deslocar até a coordenada anterior a detecção do obstáculo.




Caso de uso: Encontrar intersecção

Ator Primário: Sensor de cor

Identificador: CSR 02

Sumário: Detecta uma outra cor que não seja preto, branco ou vermelho e define como zona de intersecção.

Pré condições: Robô deve estar se movimentando pelo tabuleiro.

Fluxo Principal:

  • Sensor de cor detecta variação de cor.
  • Sensor de cor informa ao SS que encontrou uma zona de intersecção.

Pós-condições: SS analisa e define qual será a próxima ação que o robô deve tomar.




Caso de uso: Informar ID

Ator Primário: SS

Identificador: CSR 03

Sumário: O SS solicita o identificador do robô.

Pré condições: SS estar conectado ao robô.

Fluxo Principal:

  • SS solicita o endereço MAC Bluetooth do robô.
  • e depois???

Pós-condições: O SS envia ao SA o ID do robô.




Caso de uso: Mover

Ator Primário: SS

Identificador: CSR 04

Sumário: Recebe as ordens de deslocamento do SS.

Pré condições: SS estar conectado ao robô.

Fluxo Principal:

  • SS envia os comandos “seguir em frente”, “virar para a direita” e “virar para a esquerda”

Pós-condições: O robô irá executar o comando solicitado.




Caso de uso: Modo de jogo

Ator Primário: SS

Identificador: CSR 05

Sumário: SS informa ao robô se está operando em modo manual ou em modo autônomo.

Pré condições: SS estar conectado ao robô.

Fluxo Principal:

  • SS envia ao robô os comandos “modo manual” e “modo autônomo”

Pós-condições: Robô entrará no modo solicitado e aguardará instruções do SS

Diagrama de casos de uso
Casos de uso do SR
Diagrama de classe
Diagrama de classe
Diagrama de classe - IMPLEMENTADO
Diagrama de classe - IMPLEMENTADO
Diagramas de sequência

Inicialização

Diagrama de sequência - Inicialização

Autônomo

Diagrama de sequência - Autônomo
Tabelas de mapeamento
Tabelas de mapeamento