[Dispositivo 02] Considerações sobre a interface do usuário no Firefly

Com o entendimento do funcionamento das partes já adquirido – ou seja, com o conhecimento básico sobre como funcionam os sub-sistemas com Kinect e Firefly; Firefly, motores e Arduinos; e articulação das peças da estrutura – faz-se necessário pensar com mais detalhe no sistema que terá que ser montado no Firefly para que os dados capturados pelo Kinect sejam traduzidos em movimentos coordenados do robô.

Captura de dados

Como já averiguei que a captura do esqueleto não é tão confiável [CITAR OUTRO POST QUANDO ESTIVER PRONTO], principalmente quando as articulações estão fora da pose esquemática, ou seja, quando um dos membros do corpo está perpendicular à câmera de profundidade gerando sobreposição de articulações (ver primeiro vídeo abaixo). O esqueleto é estimado por um algoritmo de reconhecimento que usa um pós-processamento dos dados primários de profundidade, nativos da tecnologia.

Por essa e outras razões citadas na entrada original, decidi usar a câmera de profundidade como base para criação da interface do usuário, já que fornece um tipo de dado mais direto e consistente, demonstrado no vídeo abaixo.

Algoritmos de cinemática inversa

estudo dispositivo 02

O desenho acima mostra um estudo feito para compreender como funciona a cinemática reversa nas articulações da estrutura adquirida (ir até o final da entrada).

Encontrei a definição de um sistema para controle de cinemática inversa chamado Lobster (ver também o vídeo ao lado) na comunidade digital do Grasshopper. Infelizmente é um sistema de 2011 e já não funciona com os componentes de versões mais recentes, mas é um bom sistema e vale a pena estudá-lo para aproveitar os caminhos já desbravados por alguém com mais experiência.

Interface

A relação entre o gesto do usuário e os movimentos do robô tem que ser a mais intuitiva e direta possível – e esse foi um dos princípios orientadores do formato de controle criado para a interface -, já que este dispositivo ferramenta pretende ser um instrumento de criação e, portanto, deve permitir que o usuário expresse sua intenção através do robô, com o menor numero de barreiras possível.

Usando os dados de profundidade, controlar o robô com apenas uma mão é impossível, porque são necessários dois pontos no espaço para determinar a inclinação da ferramenta. Por essa razão, idealmente o sistema de captura de esqueleto seria muito mais simples de implementar.

A solução a ser adotada – ilustrada na animação abaixo – implementa um sistema de controle que leva em consideração todas as necessidades descritas acima:

  • com a mão direita, o usuário controla a posição da base da ferramenta, que se deslocará no espaço graças ao algoritmo de cinemática inversa criado no Grasshopper. Também é determinado o primeiro ponto para traçar o vetor que determinará a inclinação da ferramenta.
  • com a mão esquerda, a direção da ponta da ferramenta é determinada em relação à base da ferramenta, completando o vetor de inclinação com o segundo ponto necessário.

dispositivo02_interface

This entry was posted in Uncategorized. Bookmark the permalink.