top of page
Search
Writer's pictureAlan Jun

Entrega 4: Projeto do software com UML

Nesta entrega será demonstrado o funcionamento do software que compõe o projeto Choose Your Tomate. O software pode ser dividido em 3 partes principais: Firmware da esteira, Processamento de imagem dos tomates e Interface com o usuário. Primeiro, esta apresentação introduz o funcionamento geral do sistema, apresentando os diagramas UML. Por fim, explica-se o funcionamento específico de cada parte e escolhas feitas durante o desenvolvimento.


Funcionamento geral

A proposta do projeto Choose Your Tomato é permitir o usuário selecionar tomates com base em parâmetros relacionados a cor e ao diametro de cada tomate. Para tanto, o sistema deve permitir que o usuário configure como ele quer os tomates selecionados, para que quando ele colocar os tomates na esteira, o sistema automaticamente os separe. O diagrama de casos de uso a seguir explica a relação usuário-sistema.


Desta maneira, o usuário possui duas opções: abrir o menu de configuração ou colocar/retirar os tomates na esteira. O menu apresenta 4 opções para o usuário:

  • Register new parameters: permite o usuário criar uma nova seleção, registrando o diametro e cor de separação.

  • Edit current selection parameters: permite o usuário editar os parâmetros sem apagar os dados da seleção já feita até então.

  • Save selection log: Permite o usuário salvar os dados de seleção em um arquivo .txt.

  • Close menu: Fecha o menu e mostra os dados da seleção que a esteira está configurada a fazer. Também mostra as quantidades de tomates que foram colocadas em cada saída até o momento.

Uma vez que os parâmetros estejam configurados ou o usuário opte por utilizar os valores padrões, a esteira está pronta para ser utilizada. Basta o usuário colocar os tomates nela, que o processo será automático.

Para que fosse possível o usuário interagir com a interface, ao mesmo tempo que uma seleção estiver ocorrendo, foi necessário fazer um sistema de multithreading entre a interface e firmware. O diagrama de classes a seguir demonstra a relação entre cada parte do sistema.

Selection Data é a recurso compartilhado de comunicação entre a interface e a esteira. De um lado, a interface registra os valores dos parâmetros, mas também mostra ao usuário como a seleção está progredindo, por meio da quantidade de tomate em cada saída. Por outro lado, o sistema da esteira necessita dos parâmetros de seleção para o processmanto de imagens pelo ImageProcessor, além disso, o sistema atualiza as saídas de cada tomate quando for detectado pelos sensores.

Os diagramas de sequência a seguir demonstram como cada caso de uso é tratado:




Tendo em vista este funcionamento geral do sistema, as próximas seções desta apresentação especificam cada parte deste sistema.


Interface

A interface do projeto é toda feita através da linha de comando, está característica foi definida durante a revisão do plano de projeto. Basicamente, a interface está sempre alternando entre dois estados: usuário utilizando menu e usuário visualizando os dados. O diagrama de estados a seguir demonstra esta relação:


As próximas figuras mostrar as telas de menu e de dados, respectivamente:


A figura seguinte mostra como registrar parâmetros:

Este valor para a cor de seleção será explicada na seção de Processamento de Imagens.


Sistema do Conveyor Belt


O sistema do conveyor belt é "gerenciamento" de todos os componentes eletrônicos conectados ao Raspberry. Grande parte do programa já tinha sido feito em entregas anteriores. O diagrama a seguir mostra os estados do sistema.

Como pode-se perceber, os estados dependem da posição detectada dos tomates, por isso o sistema deve estar sempre verificando os sensores. O estado Stop Conveyor Belt é ativado quando um tomate é detectado saindo por um entrada errada, ou qualquer tipo de acidente que possa ter ocorrido durante o transporte do tomate. No estado de Image processing, a esteira tira uma foto do tomate quando o sensor detecta um objeto a frente da câmera e pede para a classe ImageProcessor, qual a saída que o objeto deve ir.


Processamento de Imagens


A classe ImageProcessor recebe a imagem e precisa retornar para a esteira por qual saída o objeto detectado precisa ir. O fluxograma a seguir demonstra o algoritmo:


Identify object color and diameter

Esta é a parte mais crítica do algoritmo, onde é feita o tratamento de uma imagem para se retirar os valores de seleção. Ela ocorre em 3 partes: identificação de um tomate, retirar a cor média e medir o diâmetro.

A identificação do tomate é feita por uma binarização da imagem, onde separa-se o tomate da esteira. Os exemplos a seguir mostram o processo:


A imagem recebida foi este tomate verde.


Primeiramente, borra-se a imagem para diminuir as imperfeições e homogenizar o valor dos pixels.

Utiliza-se os valores de cada pixel para gerar uma máscara da imagem, que indica quão região da imagem é o tomate.


E pronto, tudo que não for preto é a região de um tomate.


Seleção dos tomates

A seleção dos tomates é feita com base em dois parâmetros: cor e diâmetro. Para a cor optou-se por utilizar a representação HSV em vez do clássico RGB. Esta representação tem por objetivo tornar a visualização mais parecida com a percebida pelas pessoas, o valor que o usuário coloca nos parâmetros é o ângulo de desvio máximo do vermelho, ângulo 0.






Representações das cores em HSV.


Ou seja, para selecionar tomates pela cor, calcula-se a média de cor na imagem binarizada e observa-se quão discrepante ela é do zero.


A seleção por diametro é mais simples, calcula-se quantos pixels por cm a imagem possui e conta-se os pixels do tomate.


No caso do tomate verde mostrado de exemplo, o HSV teve média de 200 e o diâmetro médio foi de 6 cm.


19 views0 comments

Recent Posts

See All

Comentarios


bottom of page