Grupo1-PJI2-2018-2
Responsáveis pelo projeto
- Douglas Amorim dos Santos
- Allex Magno
- Filipe Kuhnen
Diário de bordo |
---|
Aula 4 - 20/08
|
Aula 4 - 20/08
- Discussão para modelar os diagramas de classes do controle, modo autônomo e modo manual.
- Foi realizado teste com a classe sensor usando o seguinte código como exemplo, retirado do site Using Sensors
- !/usr/bin/env python3
- so that script can be run from Brickman
from ev3dev.ev3 import *
- Connect ultrasonic and touch sensors to any sensor port
- and check they are connected.
us = UltrasonicSensor()
assert us.connected, "Connect a single US sensor to any sensor port"
ts = TouchSensor(); assert ts.connected, "Connect a touch sensor to any port"
- can have 2 statements on same line if use semi colon
- Put the US sensor into distance mode.
us.mode='US-DIST-CM'
units = us.units
- reports 'cm' even though the sensor measures 'mm'
- US sensor will measure distance to the closest
- object in front of it.
distance = us.value()/10 # convert mm to cm
print(str(distance) + " " + units)
if distance < 60: #This is an inconveniently large distance
Leds.set_color(Leds.LEFT, Leds.RED)
else:
Leds.set_color(Leds.LEFT, Leds.GREEN)
Leds.set_color(Leds.LEFT, Leds.GREEN) #set left led green before exiting
</syntaxhighlight>
- 2ª apresentação com as correções requisitadas na aula anterior e algumas correções dos casos de uso:
Aula 3 - 13/08
1ª apresentação das atividades passadas na aula 2 (06/08) e pontos a serem corrigidos foram requisitados.
Aula 2 - 06/08
Os robôs foram entregues. Como o grupo recebeu o robô montado, estudamos como instalar o linux e as bibliotecas do Ev3.
Estudamos a implementação do motor
Aula 1 - 30/07
Foi Apresentado a disciplina bem como seus objetivos.
O projeto consistirá em um robô caçador seguidor de linhas.
Os grupos foram formados. E para as atividades do projeto será foi definido o Trello como plataforma de tarefas e o whatsapp para comunicação.
|}
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
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.
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)
Requisitos não funcionais
RNF01 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.
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:
- !/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:
- !/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: Controle Autônomo<br\>
Ator Primário: SS<br\>
Identificador: UCATN <br\>
Sumário: Informar ao SR em que modo de operação ele vai atuar<br\>
Pré condições: Robô estar conectado e estar no ponto inicial do tabuleiro<br\>
Fluxo Principal: <br\>
[1] SS informa ao SR modo autônomo
Caso de uso: Controle Manual<br\>
Ator Primário: SS<br\>
Identificador: UCMNL <br\>
Sumário: Informar ao SR em que modo de operação ele vai atuar<br\>
Pré condições: Robô estar conectado e estar ligado no ponto inicial do tabuleiro<br\>
Fluxo Principal: <br\>
[1] SS informa ao SR modo manual
Caso de uso: Iniciar busca Autônoma<br\>
Ator Primário: SS <br\>
Identificador: UCBA <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 Manual <br\>
Ator Primário: SS <br\>
Identificador: UCBM <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: Encontrar Caça <br\>
Ator Primário: Sensor de Luz<br\>
Identificador: UCEC<br\>
Sumário: O sensor de luz, ao chegar em algum ponto, informa que encontrou a caça<br\>
Pré condições: Robô estar no tabuleiro<br\>
Fluxo Principal: <br\>
[1] Sensor de Luz indica que encontrou a caça
[2] SR aguarda pela verificação
Caso de uso: Verificação <br\>
Ator Primário: SS <br\>
Identificador: UCVC<br\>
Sumário: A caça é validada ou não <br\>
Pré condições: O robô informar que encontrou a caça <br\>
Fluxo Principal: <br\>
[1] SS verifica a caça
Exceção: Caça é inválida
[1] SS informa que a caça não é válida
[2] Verifica as coordenadas do robô através do monitoramento
[3] Robô ao SS a coordenada atual
[4] Robô corrige sua posição
Pós-condições: Robô inicia a busca<br\>