Grupo1-PJI2-2018-1: mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Maria.st (discussão | contribs)
Paulo.fs (discussão | contribs)
 
(35 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
=Apresentação inicial=
=Informações - Grupo 1=


{{Collapse top | Encontro 1 - Decisão de robô, montagem e instalação do Ev3Dev - 27/02}}
'''Maria Fernanda S. Tutui - tutuimf@gmail.com'''


==Decisão de robô==
'''Paulo F. Sell - sellpaulof@gmail.com'''
 
 
=Atividades realizadas durante o semestre=
 
{{Collapse top | Atividade 1 - Decisão de robô, montagem e instalação do Ev3Dev - 27/02}}
 
==Decisão de robô, montagem e instalação do Ev3Dev==
"Montagem:" Após a análise das peças disponíveis no box Lego Mindstorms Ev3 Education 45544, escolhemos o robô a ser montado, sendo o escolhido: [http://robotsquare.com/wp-content/uploads/2013/10/45544_puppy.pdf/ Puppy]
"Montagem:" Após a análise das peças disponíveis no box Lego Mindstorms Ev3 Education 45544, escolhemos o robô a ser montado, sendo o escolhido: [http://robotsquare.com/wp-content/uploads/2013/10/45544_puppy.pdf/ Puppy]


==Montagem==
 
[[imagem:PuppyEv3.jpeg|250px|center]]
[[imagem:PuppyEv3.jpeg|250px|center]]


==Instalação do Ev3Dev==
 
"Ev3Dev:" Instalação do Ev3Dev, um sistema operacional baseado em Debian que roda no bloco EV3, como num dual boot. A partir da utilização deste SO pode-se programar o robô utilizando linguagem de programação C, Python, por exemplo. A instalação foi feita com base no [http://www.ev3dev.org/docs/getting-started/ site do desenvolvedor].
"Ev3Dev:" Instalação do Ev3Dev, um sistema operacional baseado em Debian que roda no bloco EV3, como num dual boot. A partir da utilização deste SO pode-se programar o robô utilizando linguagem de programação C, Python, por exemplo. A instalação foi feita com base no [http://www.ev3dev.org/docs/getting-started/ site do desenvolvedor].


{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 2 - Conectividade WiFi e sensores - 01/03}}
{{Collapse top | Atividade 2 - Conectividade WiFi e sensores - 01/03}}


==Conectividade WiFi e sensores==
==Conectividade WiFi e sensores==
Linha 25: Linha 32:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 3 - Conhecendo robô - 02/03}}
{{Collapse top | Atividade 3 - Conhecendo robô - 02/03}}


==Conhecendo robô==
==Conhecendo robô==
Linha 35: Linha 42:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 4 - Escolha do modelo do sistema de localização e definição das regras - 03/03}}
{{Collapse top | Atividade 4 - Escolha do modelo do sistema de localização e definição das regras - 03/03}}


==Escolha do modelo do sistema de localização==
==Escolha do modelo do sistema de localização e definição das regras==
* Após a leitura e análise das condições atuais do robô (sensores já disponíveis) foi decidido que o modelo a ser utilizado será baseado em:
* Após a leitura e análise das condições atuais do robô (sensores já disponíveis) foi decidido que o modelo a ser utilizado será baseado em:
- [http://www.prppg.ufpr.br/siga/visitante/trabalhoConclusaoWS?idpessoal=38931&idprograma=40001016034P5&anobase=2016&idtc=1313 Odometria], por proporcionar altas taxas de amostragem, e basear-se no movimento da roda.
- [http://www.prppg.ufpr.br/siga/visitante/trabalhoConclusaoWS?idpessoal=38931&idprograma=40001016034P5&anobase=2016&idtc=1313 Odometria], por proporcionar altas taxas de amostragem, e basear-se no movimento da roda.
Linha 45: Linha 52:
- Navegação Landmark, pela possibilidade de usar marcos artificiais e termos disponível um sensor de cores.
- Navegação Landmark, pela possibilidade de usar marcos artificiais e termos disponível um sensor de cores.


==Regras==
*Regras


* Como definido pelos professores, a partir da orientação para  "tentar fazer regras mais simples possíveis" foi definido pelo grupo que:
** Como definido pelos professores, a partir da orientação para  "tentar fazer regras mais simples possíveis" foi definido pelo grupo que:


Objetivo: encontrar no tabuleiro as cores sorteadas na ordem correta e em menos tempo possível.
Objetivo: encontrar no tabuleiro as cores sorteadas na ordem correta e em menos tempo possível.
Linha 64: Linha 71:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 5 - Trabalhando com o robô - 05/03}}
{{Collapse top | Atividade 5 - Trabalhando com o robô - 05/03}}


==Trabalhando com o robô==
==Trabalhando com o robô==
Linha 73: Linha 80:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 6 - Sala de aula - 06/03}}
{{Collapse top | Atividade 6 - Sala de aula - 06/03}}


==Sala de aula==
==Sala de aula==
Linha 135: Linha 142:




==Demais questões==
 
'''Demais questões'''


- Alcance do ultrassônico: 1 a 250cm
- Alcance do ultrassônico: 1 a 250cm
Linha 153: Linha 161:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 7 - Sumário executivo - 07/03 - 12/03}}
{{Collapse top | Atividade 7 - Sumário executivo - 07/03 a 12/03}}


==Sumário executivo==
==Sumário executivo==
Linha 161: Linha 169:
{{Collapse bottom}}
{{Collapse bottom}}


{{Collapse top | Encontro 8 - Sala de aula - 13/03}}
{{Collapse top | Atividade 8 - Sala de aula e Novo documento no ShareLaTeX- 13/03}}


==Sala de aula==
==Sala de aula==
Linha 167: Linha 175:
* Apresentação do sumário executivo
* Apresentação do sumário executivo


'''Para a próxima aula 20/03'''
'''Levantamento de requisitos'''
Funcionais
Não funcionais
Restrições
'''Casos de uso''''
Atores (diagramas)
Lista do custo de uso detalhados
Regras de negócio
{{Collapse bottom}}
{{Collapse top | Atividade 9 - Levantamento de requisitos - 13/03 a 20/03}}
==Levantamento de requisitos versão 1==
O documento com a análise de requisitos e casos de uso encontra-se no ShareLaTeX.
{{Collapse bottom}}
{{Collapse top | Atividade 10 - Discussão sobre levantamento de requisitos - 20/03}}
==Sala de aula==
Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.
{{Collapse bottom}}
{{Collapse top | Atividade 11 - Levantamento de requisitos - 20/03 a 27/03}}
==Levantamento de requisitos versão 2==
A partir das considerações feitas em sala de aula o levantamento foi refeito.
O documento com nova análise de requisitos e casos de uso encontra-se no ShareLaTeX.
{{Collapse bottom}}
{{Collapse top | Atividade 12 - Discussão sobre levantamento de requisitos - 27/03}}
==Sala de Aula ==
Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.
Proposta para distribuição de cores no tabuleiro.
{{Collapse bottom}}
{{Collapse top | Atividade 13 - Discussão sobre levantamento de requisitos - 03/04}}
==Sala de Aula ==
Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.
De acordo com o email enviado pelo professor Eraldo devemos trazer para a prox aula:
*um texto bem definido do caso de uso jogar manual do SS e SA (penso que já temos);
*diagramas de sequência destes casos;
*diagrama de classe se for possível;
*uma cronograma com as iterações previstas;
{{Collapse bottom}}
{{Collapse top | Atividade 14 - Modo manual - 10/04}}
==Sala de Aula ==
Durante esta aula foram discutidos os prazos para entrega do mínimo requerido para o caso de uso "Modo manual" do robô.
Todas as questões discutidas, bem como suas datas, estão definidas no Trello, como pedido pelos professores.
{{Collapse bottom}}
{{Collapse top | Atividade 15 - Diagrama de sequência - 17/04}}
==Sala de Aula ==
:[[Arquivo:Button image.png | 800px]]
{{Collapse bottom}}
{{Collapse top | Atividade 16 - Documentação - Jogar manual - 24/04}}
==Jogar manual ==
* Diagrama de classe Sistema Supervisório
:[[Arquivo:Sistema robot.png | 800px]]
* Diagrama de classe Sistema Robô
:[[Arquivo:Supervisorio22.png | 800px]]
* Diagrama de sequẽncia - jogar manual
:[[Arquivo:Diagrama_sequencia_manual.png | 800px]]
== Recursos REST ==
{| border="1" cellpadding="5" cellspacing="0"
!Path
!Método
!Descrição
|-
||/frente || GET || Movimenta o robô para frente
|-
||/re || GET || Movimenta o robô para trás
|-
||/direita || GET || Movimenta o robô para direita
|-
||/esquerda || GET || Movimenta o robô para esquerda
|-
||/ || GET || Retorna uma string de "bem-vindo"
|-
|}
== Instalação do FLASK no ev3dev ==
Para instalar o ''framework'' Flask no ev3dev utilizando a versão 3 do Python foram necessários os seguintes passos:


==Para a próxima aula 20/03==
*sudo apt-get update
*sudo apt-get install python3-pip
*sudo pip3 install flask


** Levantamento de requisitos:
Faz-se necessário ter acesso à Internet para a instalação. Qualquer outra informação pode ser obtida no site oficial do Flask[http://flask.pocoo.org/]
    Funcionais
    Não funcionais
    Restrições


** Casos de uso
== Descrição da interface de comunicação Sistema Supervisório - Sistema Robô ==
    Atores (diagramas)
No Sistema Robô desenvolvemos um ''web service'' na linguagem de programação Python utilizando o ''framework'' Flask. O ''web service'' é baseado na arquitetura REST. Aproveitando os métodos do protocolo HTTP, podemos consumir os recursos do ''web service'', passando como parâmetros o caminho (''path'') do recurso e seu método (GET, POST, PUT, etc...). Uma vez que o ''web service'' esteja em execução é possível movimentar o robô por qualquer navegador de internet. Desenvolvemos também uma interface de usuário para que seja possível controlar o robô de uma maneira mais usual. Aproveitando das facilidades que a IDE ''Netbeans'' fornece, bastou criar uma classe em Java que, aproveitando da API JAX-RS, implementasse métodos que consumissem os recursos do ''web service''. Uma outra classe em Java foi desenvolvida para implementar a interface do usuário e esta mesma classe invoca métodos da classe que consome os recursos do ''web service''.
    Lista do custo de uso detalhados
    Regras de negócio

Edição atual tal como às 10h55min de 8 de maio de 2018

1 Informações - Grupo 1

Maria Fernanda S. Tutui - tutuimf@gmail.com

Paulo F. Sell - sellpaulof@gmail.com


2 Atividades realizadas durante o semestre

Atividade 1 - Decisão de robô, montagem e instalação do Ev3Dev - 27/02

2.1 Decisão de robô, montagem e instalação do Ev3Dev

"Montagem:" Após a análise das peças disponíveis no box Lego Mindstorms Ev3 Education 45544, escolhemos o robô a ser montado, sendo o escolhido: Puppy



"Ev3Dev:" Instalação do Ev3Dev, um sistema operacional baseado em Debian que roda no bloco EV3, como num dual boot. A partir da utilização deste SO pode-se programar o robô utilizando linguagem de programação C, Python, por exemplo. A instalação foi feita com base no site do desenvolvedor.

Atividade 2 - Conectividade WiFi e sensores - 01/03

2.2 Conectividade WiFi e sensores

  • A partir da página do Ev3Dev estabelecemos com sucesso as conexões via Bluetooh, Wi-Fi (usando um dongle e a rede de dados móveis) utilizando SSH.

- A conexão Wi-Fi através da rede do IFSC não foi possível por ser uma rede baseada em EAP (Protocolo de Autenticação Extensiva).

  • Neste encontro testamos os motores do robô, bem como o auto falante integrado.
Atividade 3 - Conhecendo robô - 02/03

2.3 Conhecendo robô

  • Definição da linguagem de programação que será utilizada e estudo da mesma: Python.
  • Foram feitos testes com o sensor de toque, LEDs embutidos na base do robô.
  • Estudo do artigo do Borenstein.
Atividade 4 - Escolha do modelo do sistema de localização e definição das regras - 03/03

2.4 Escolha do modelo do sistema de localização e definição das regras

  • Após a leitura e análise das condições atuais do robô (sensores já disponíveis) foi decidido que o modelo a ser utilizado será baseado em:

- Odometria, por proporcionar altas taxas de amostragem, e basear-se no movimento da roda.

- Navegação inercial, por já termos disponível um giroscópio.

- Navegação Landmark, pela possibilidade de usar marcos artificiais e termos disponível um sensor de cores.

  • Regras
    • Como definido pelos professores, a partir da orientação para "tentar fazer regras mais simples possíveis" foi definido pelo grupo que:

Objetivo: encontrar no tabuleiro as cores sorteadas na ordem correta e em menos tempo possível.

  • Encontrar cores no tabuleiro
    • Azul
    • Vermelho
    • Amarelo
    • Verde

(inicialmente)

  • Estando o robô na posição inicial é dado início ao jogo.
    • O sistema escolhe aleatoriamente as cores a serem procuradas e as envia para o robô.
    • Os robôs se movimentam sobre o tabuleiro a fim de encontrar as cores sorteadas.
Atividade 5 - Trabalhando com o robô - 05/03

2.5 Trabalhando com o robô

Durante o encontro desenvolvemos um código base para a apresentação do robô em sala. Nesta rotina usamos como atuadores dois motores e como sensores um ultrassônico, um sensor de cores e um sensor de toque. O código desenvolvido faz com que o robô, montado no formado te um cachorro ao ser tocado sente e levante, ao aproximar-se de algo, "lata", identifica as cores: vermelho, amarelo, azul e verde. Todo o código encontra-se no projeto "puppy.Ev3" no github.

Atividade 6 - Sala de aula - 06/03

2.6 Sala de aula

Perguntas


- Qual o tamanho do tablado? Quantos quadrados?

R: 2x2 metros. Provavelmente 20x20 cm. O tablado deve ter ter uma borda extra de aproximadamente 5 cm.


- Quantos quadrados?

R: 100 quadrados.


- Como as cores vão ser distribuídas?

R: Randomicamente.


- Quantos alvos (tesouros)? Serão comuns?

R: Cerca de 6 caças, serão comuns.


- Como as caças serão auditadas? Quem ganhará o tesouro?

R: A partir do monitoramento feio pela câmera infravermelho que captará os dados e transmitirá através de um Arduino para a auditoria. Quem ganhará será o robô que em menos tempo pegar o maior numero de caças.


- Como será o sistema de sinalização ao público?

R: Cada grupo terá que mostrar para o publico as informações correspondentes ao seu robô.


- Como será a central de controle?

R: Fica a critério de cada grupo.


- Sistema de localização auxiliar?

R: Fica a critério de cada grupo.


- Quantas cores podem ser reconhecidas?

R: 7 cores.


- As cores serão fixadas?

R: Sim. O tabuleiro será impresso já com as cores.


- Quem fará o sorteio das posições?

R: Um servidor será responsável.


Demais questões

- Alcance do ultrassônico: 1 a 250cm


- Memória: 16MB de memoria flash e 64MB de memoria RAM


- Capacidades dos motores: 1 grau de precisão


- Estimativa de bateria: 3 a 4h


- Ver a quantidade de cores: 7

Atividade 7 - Sumário executivo - 07/03 a 12/03

2.7 Sumário executivo

Durante o período indicado produzimos o sumário executivo. Ele encontra-se no ShareLaTeX.

Atividade 8 - Sala de aula e Novo documento no ShareLaTeX- 13/03

2.8 Sala de aula

  • Apresentação do sumário executivo

Para a próxima aula 20/03


Levantamento de requisitos

Funcionais

Não funcionais

Restrições

Casos de uso'

Atores (diagramas)

Lista do custo de uso detalhados

Regras de negócio

Atividade 9 - Levantamento de requisitos - 13/03 a 20/03

2.9 Levantamento de requisitos versão 1

O documento com a análise de requisitos e casos de uso encontra-se no ShareLaTeX.

Atividade 10 - Discussão sobre levantamento de requisitos - 20/03

2.10 Sala de aula

Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.

Atividade 11 - Levantamento de requisitos - 20/03 a 27/03

2.11 Levantamento de requisitos versão 2

A partir das considerações feitas em sala de aula o levantamento foi refeito. O documento com nova análise de requisitos e casos de uso encontra-se no ShareLaTeX.

Atividade 12 - Discussão sobre levantamento de requisitos - 27/03

2.12 Sala de Aula

Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.

Proposta para distribuição de cores no tabuleiro.

Atividade 13 - Discussão sobre levantamento de requisitos - 03/04

2.13 Sala de Aula

Durante este encontro lemos os levantamentos de ambas as equipes e discutimos. Todas as observações feitas pelo professor foram anotadas e serão aplicadas a nova versão do levantamento.

De acordo com o email enviado pelo professor Eraldo devemos trazer para a prox aula:

  • um texto bem definido do caso de uso jogar manual do SS e SA (penso que já temos);
  • diagramas de sequência destes casos;
  • diagrama de classe se for possível;
  • uma cronograma com as iterações previstas;


Atividade 14 - Modo manual - 10/04

2.14 Sala de Aula

Durante esta aula foram discutidos os prazos para entrega do mínimo requerido para o caso de uso "Modo manual" do robô.

Todas as questões discutidas, bem como suas datas, estão definidas no Trello, como pedido pelos professores.

Atividade 15 - Diagrama de sequência - 17/04

2.15 Sala de Aula


Atividade 16 - Documentação - Jogar manual - 24/04

2.16 Jogar manual

  • Diagrama de classe Sistema Supervisório
  • Diagrama de classe Sistema Robô
  • Diagrama de sequẽncia - jogar manual


2.17 Recursos REST

Path Método Descrição
/frente GET Movimenta o robô para frente
/re GET Movimenta o robô para trás
/direita GET Movimenta o robô para direita
/esquerda GET Movimenta o robô para esquerda
/ GET Retorna uma string de "bem-vindo"

2.18 Instalação do FLASK no ev3dev

Para instalar o framework Flask no ev3dev utilizando a versão 3 do Python foram necessários os seguintes passos:

  • sudo apt-get update
  • sudo apt-get install python3-pip
  • sudo pip3 install flask

Faz-se necessário ter acesso à Internet para a instalação. Qualquer outra informação pode ser obtida no site oficial do Flask[1]

2.19 Descrição da interface de comunicação Sistema Supervisório - Sistema Robô

No Sistema Robô desenvolvemos um web service na linguagem de programação Python utilizando o framework Flask. O web service é baseado na arquitetura REST. Aproveitando os métodos do protocolo HTTP, podemos consumir os recursos do web service, passando como parâmetros o caminho (path) do recurso e seu método (GET, POST, PUT, etc...). Uma vez que o web service esteja em execução é possível movimentar o robô por qualquer navegador de internet. Desenvolvemos também uma interface de usuário para que seja possível controlar o robô de uma maneira mais usual. Aproveitando das facilidades que a IDE Netbeans fornece, bastou criar uma classe em Java que, aproveitando da API JAX-RS, implementasse métodos que consumissem os recursos do web service. Uma outra classe em Java foi desenvolvida para implementar a interface do usuário e esta mesma classe invoca métodos da classe que consome os recursos do web service.