Entregável do dia 25 de maio, integração de todas as partes do projeto.
1 - Integração entre imagem da câmera RGBD e identificação de imagens
Nesse tópico, será demonstrado o envio da imagem que é capturada pela câmera RGBD e enviada para o software de identificação de imagens. Os dois foram executados de forma concorrente e será demonstrado os resultados obtidos no teste.
Vale ressaltar que, a projeção inicial dessa parte é que a imagem, que é gerada pelo software em C++, o qual interage com a câmera, enviasse por conexão TCP/IP os dados da imagem para o software em Java que interage com as APIs para identificação da imagem.
Contudo, foi obtido problemas na transferência de dados pelo socket, em que não é enviado todos os dados, logo, com os dados incompletos da imagem, não era possível identificar os objetos presentes nela.
Porém, um modo paliativo para resolver o problema, é que ao ter feito uma captura da imagem da câmera RGBD, é gravado um arquivo da imagem em um diretório do software de identificação e esse software consulta o diretório, enviando tal imagem para API. O software de identificação consulta o diretório quando o software em C++ notifica que foi salvo a imagem, essa notificação se manteve por conexão TCP/IP.
Desse modo, para salvar a imagem capturada pela câmera Realsense, foi utilizada a seguinte função, o qual foi direcionado o path desejado.
Figura 1 - Função para salvar a imagem.
Abaixo, podemos ver que ela foi salva no path desejado.
Figura 2 - Demonstração da existência do arquivo.
A imagem capturada no teste foi a imagem abaixo :
Figura 3 - Imagem captura nos testes pela câmera RGBD
Sendo assim, ao receber a notificação da imagem salva, a execução da identificação dos objetos teve o seguinte resultado.
Figura 4 - Resultado da identificação de objetos pela API
É possível verificar que nesse caso, não foi identificado todos os objetos presentes na imagem, identificando apenas a guitarra.
2 - Integração entre o sensor LIDAR-Lite v3 e o software de controle de vibração da pulseira
O sensor presente na pulseira de controle do sistema foi configurado para operar a curtas distâncias (20 cm - 1 m). Com isso, temos que à 20 cm a vibração deve ser máxima e a 1 m ou mais não deve haver vibração. Para fazer o controle da vibração nos motores em função da distância, foi utilizada a técnica de PWM (Pulse Width Modulation). O valor da intensidade é então mapeado no intervalo de 0 até 255, onde o 255 representa a vibração máxima.
A função da intensidade em função da distância medida pelo LIDAR que é utilizada para determinar a vibração dos motores está descrita na Figura 5 abaixo.
Figura 5 - Função da intensidade pela distância para a vibração do motor da pulseira.
Com isso, integrando a parte do software que calcula a intensidade do motor com base na função da Figura 5 com o circuito da pulseira que contém o motor, obtemos o resultado do vídeo abaixo.
No vídeo acima é possível perceber que a intensidade varia de forma inversamente proporcional à distância da mão até chegar nos extremos, onde o valor passa a ser constante. Vale ressaltar que o teste do vídeo foi feito utilizando as distâncias de operação de 20 cm até 80 cm.
3 - Integração entre o aplicativo (software) e o sistema (hardware)
O aplicativo desenvolvido para o sistema permite realizar o controle das configurações que o sistema irá obedecer. Assim, a configuração de usuário é composta por três parâmetros: Altura da câmera RBGD em relação ao chão, comprimento do braço do usuário e profundidade máxima de operação do sistema.
A detecção de obstáculos depende destes parâmetros, uma vez que passa a detectar obstáculos que estão a uma distância maior que o comprimento do braço do usuário (forma simples de evitar detecção falsa de obstáculos devido a partes do corpo do usuário), além de detectar somente até a profundidade máxima determinada. Além disso, a altura da câmera RGBD em relação ao chão é utilizada pelo algoritmo de detecção de obstáculos para evitar pegar pontos do chão como obstáculos.
A Figura 6 mostra um teste realizado para a passagem de configuração para o sistema. Do lado esquerdo está o aplicativo e a configuração passada, já do lado direito estão sendo impressas as configurações que o sistema está obedecendo no momento. Observamos que na iteração 19 e 20 o sistema contém uma configuração diferente do aplicativo, no entanto, com a ação do usuário de enviar as configurações, a partir da iteração 21 já podemos observar que as configurações foram alteradas de acordo com as escolhidas pelo usuário no aplicativo.
4 - Integração entre a câmera RGBD e o software de controle de vibração dos motores nas alças da mochila.
Como visto no tópico 3, o sistema passa a detectar objetos a uma distância que depende do comprimento do braço do usuário (evitando detecção falsa de obstáculos devido a partes do corpo) e termina de detectar obstáculos a uma certa distância (profundidade máxima). Para realizar testes de integração, fornecemos a seguinte configuração:
- Comprimento do braço: 10 cm
- Profundidade máxima: 40 cm
Assim, temos um intervalo de 30 cm (começando à 10 cm de distância e terminando à 40 cm de distância da câmera RGBD) onde podemos colocar um obstáculo em cada quadrante da imagem e conferir se o software está detectando pontos do obstáculo no quadrante observado, definindo por fim (de acordo com a distância do obstáculo), a intensidade de vibração do motor relacionado com o respectivo quadrante.
O vídeo abaixo mostra o teste de detecção de obstáculo, onde observa-se que os quadrantes que contém a mão retornam pontos de obstáculo e intensidade de vibração de acordo com a distância da mão.
5 - Demonstração de funcionamento (Configurando o sistema)
O vídeo abaixo demonstra a interface do usuário com o sistema por meio do aplicativo, onde o usuário estabelece as configurações que a detecção de obstáculos irá obedecer (Altura da câmera RGBD, comprimento do braço do usuário e profundidade máxima de operação).
6 - Demonstração de funcionamento (Detecção de obstáculos em local fechado)
O vídeo abaixo ilustra o funcionamento do sistema em local fechado.
Comentários
Postar um comentário