Blog

RESULTADOS DA PROVA DE CONCEITO

Testes iniciais com Site Survey

Para verificar a veracidade dos níveis de interferência causados pelos diferentes materiais mostrados anteriormente no blog, foram feitos testes com o software Ekahau heatmapper em um cenário onde o roteador era selado com os diferentes materiais.

Como saída o software desenha um mapa de calor da força do sinal wifi em torno do roteador assim como a posição do roteador no mapa.

Os resultados obtidos são mostrados nas Figuras de 1 a 3.

WhatsApp Image 2017-06-21 at 10.32.09.jpeg
Figura 1: Selagem com madeira.
WhatsApp Image 2017-06-21 at 10.31.45
Figura 2: Selagem com papelão molhado.

WhatsApp Image 2017-06-21 at 10.31.26
Figura 3: Selagem com metal.

Como se pode observar, existe uma incoerência entre a teoria e a prática nas Figuras 2 e 3: o papelão molhado prejudicou muito mais que o metal, que supostamente é o principal vilão para sinais deste tipo.

Para confirmar esses resultados, os testes foram massificados na próxima etapa, a fim de avaliar o resultado médio e evitar dados contaminados.

Prova de conceito

A prova de conceito se dividiu na realização de testes com três tipos de materiais diferentes:  madeira, papelão com água e metal, que possuem níveis de interferência: baixo,  médio e muito alto, respectivamente.  

Os testes foram feitos selando o Raspberry com diferentes materiais como mostra a Figura 4 e o posicionado a uma distância de 10m do roteador TP-LINK TL-WR841ND sem obstáculos intermediários.

 A rede operadora utilizada para os testes foi a COPEL com taxa de Download e Upload de 50Mbit/s. Todos os testes foram realizados com o servidor da COPEL (cerca de 2 quilômetros de distância) de 40 em 40 segundos durante 20 minutos, o que totalizou 30 testes para cada situação.

Assim, utilizando um código em Python para executar inúmeras vezes o teste de performance da internet, também foi possível verificar através do programa Wavemon como o sinal foi atenuado pela presença dos diferentes materiais.

Screenshot from 2017-07-05 09-37-02
Figura 4: Situações de teste sem interferência e com interferência de madeira,
papelão com água e metal, respectivamente.

Os resultados obtidos pelo Wavemon podem ser vistos na Tabela 1 abaixo, onde é possível notar que o papelão molhado gerou uma interferência menor no sinal do que a madeira, o que não condiz com a referência utilizada.  Isso pode ter ocorrido devido a forma que a selagem foi realizada, onde o objetivo era criar uma envoltória de água em torno do Raspberry, mas o método de molhar o papelão não garante uma camada uniforme de água.

Screenshot from 2017-07-05 09-37-49
Tabela 1: Resultados do software Wavemon

Na Tabela 2 é possível ver a qualidade da internet em cada situação em que o projeto foi colocado.

Screenshot from 2017-07-05 09-38-04
Tabela 2: Resultados dos testes com diferentes materiais

Com os dados dos testes citados anteriormente foram feitos vários gráficos  dos quais três são discutidos a seguir.

Primeiramente o gráfico de latência suavizado é mostrado na Figura 5.

WhatsApp Image 2017-06-14 at 11.59.52
Figura 5: Gráfico de latência suavizado com médias

A partir deste gráfico conclui-se que não há uma interferência significativa do material na latência e nem um padrão nos dados, ainda que utilizando médias para suavizar os resultados da rede sem fio.  Já a rede cabeada se destaca dos demais mantendo uma média de latência de 8 ms.  Essa performance extra da rede cabeada não impacta no resultado final, já que existem outros gargalos de atraso de informação em pontos do projeto, como o streaming.

Na Figura 6 são relacionados os dados das taxas de Upload obtidos nos testes.

WhatsApp Image 2017-06-14 at 13.12.46
Figura 6: Gráfico de Taxa de Upload suavizado com médias

  Como  se  pode  observar,  os  materiais  apresentaram  resultados  coerentes como o previsto na teoria, com exceção da madeira que em vários testes apresentou  a  anomalia  de  ter  um  desempenho  superior  ao  da  rede  sem  obstáculos. Também pode se observar que o único material que causaria problemas no streaming em 1080p e em uma rede de 50Mbit/s seria o metal, que mantêm-se muito próximo do mínimo necessário para um desempenho satisfatório.

WhatsApp Image 2017-06-14 at 13.32.02
Figura 7: Gráfico de perda de taxa de upload em relação ao contratado pelo provedor

Na Figura 7 é possível observar o impacto de cada material no desempenho da  rede:  o  metal,  por  exemplo,  causa  uma  perda  média  de  67%  da  taxa  provida pela rede a 10m de distância do roteador, isso significa que para que atingir a taxa mínima para um streaming a 720p (5Mbit/s) seria necessário contratar uma banda de 15Mbit/s contra 8.7Mbit/s do Wi-Fi sem obstáculos e 5Mbit/s da rede cabeada.  Também é possível observar que parte da oscilação das taxas no gráfico é decorrente da própria fornecedora, uma vez que existem pontos com taxas superiores à contratada.

 

OpenCV

OpenCV

Como backup da câmera pixy foi implementado um substituto baseado na biblioteca OpenCV que consiste um um compilado de funções que facilitam a implementação  de visão computacional.

Para reproduzir o papel da pixy, a imagem da RaspCam vai ser utilizada como entrada do algoritmo explicado a seguir. A princípio o algoritmo pode ser rodado no raspberry pi, porém as implicações de desempenho ainda estão para ser testadas.

O Algoritmo

O algoritmo é dividido em 6 etapas:

 

  • Adquirir o input de vídeo : Esta etapa consiste em detectar o input de vídeo através da função VideoCapture.cap(); , caso não exista um, o programa é abortado. Aqui também é feita uma conversão de tamanho e de tipo de imagem: caso seja RGB é convertida para HSV.   A imagem abaixo mostra o frame de input ja convertido para HSV.                                                                                                                   Original  
  • Criar janela de controle : Nesta etapa é criada a janela de controle que serve para mudar os critérios do filtro  de cor que aplicado a cada frame para separar a cor desejada.  Na imagem abaixo os controles estão filtrando a cor vermelha.                   Controle 
  • Loop principal : Essa etapa é responsável por adquirir um frame do input que vai ser utilizado nas próximas etapas.                                                                                            
  • Aplicação do filtro : Aqui é aplicado o filtro com os parâmetros retirados da janela de controle em tempo real. O filtro consiste em gerar uma matriz booleana onde as posições em True são os pixels que estavam dentro do critério de cor, saturação e valor.  A imagem abaixo mostra o resultado da aplicação do filtro no frame de input mostrado anteriormente.    Filtro
  • Inferir contornos : Nesta etapa é aplicado a função findContours() sobre a matriz booleana, como saída é obtido um vetor com os polígonos encontrados. A imagem abaixo mostra o resultado do processo.                            Contorno 
  • Inferir centro de massa : Para inferir o centro de massa dos polígonos retornados da etapa anterior é utilizada a função moments() a partir da qual são retiradas informações como área e posição do centro de massa. A imagem abaixo mostra o centro de massa encontrado para o polígono.                                                            Centro

 

 

Esse algoritmo já está implementado para receber várias cores assim como a pixy e tem condições de substitui-la em caso de falha sem alterar o fluxo normal do projeto.

 

 

 

Dificuldades Encaradas – Entrega 2

Na etapa 2 do desenvolvimento do projeto não se encararam dificuldades grandes, a integração do projeto de seu com sucesso, e o início de todas etapas esperadas foram realizadas com sucesso no prazo esperado.

Um detalhe  a ser chamado atenção, entretanto, é a dependência de tarefas entre os integrantes do grupo, que algumas vezes chegou a deixar pendente o trabalho de um integrante com a finalização de uma outra tarefa, uma coisa que já era esperada, mas causou algum atraso intermediário, nada grave.

Dificuldades Encaradas

 

Esteira

●Motores

     No processo de construção da esteira a maior dificuldade encontrada foi conseguir uma configuração correta para os motores, com relação a torque e velocidade.

     Após a conclusão do desenho do projeto já percebeu-se que a configuração correta dos motores seria de vital importância para a conclusão correta da construção da esteira. Infelizmente os motores já adquiridos não foram suficientes para a movimentação da esteira, até o presente momento, e a aquisição de novos motores com alto torque já está em processo.

Sensores

●Problema de processamento

     Não houveram grandes dificuldades encontradas na parte dos sensores mas sim um problema futuro que pode ser encontrado no processamento dos dados obtidos: Como pode se observar na imagem abaixo, a pixy detecta retângulos em frames  sem atribuir um “id” para cada um, dessa forma o processamento vai ter que relacionar os retângulos entre um frame e outro determinando se é o mesmo objeto.

helloWorld2

Embarcado

●Alimentação do Embarcado

     O Raspberry Pi 3 tem como especificações uma fonte de 5V/2.5A. De início, utilizou-se uma fonte caseira de 5V/2A. Com isso processo de instalação do sistema operacional não foi concluído com sucesso, um símbolo mostrando que a corrente sendo fornecida era insuficiente aparecia e com isso o Raspberry reiniciava. O problema foi resolvido adquirindo-se uma nova fonte de 2.1A e um cabo de maior qualidade.

Servidor TCP / Processamento Local

     Com o servidor não houveram muitas dificuldades para receber os dados. As maiores dificuldade estarão nas atividades futuras, que são a interpretação desses dados recebidos pela Pixy para identificar a trajetória dos objetos e reconhecer quando novos objetos entraram na esteira.