Interface – MediaPipe hands e Arduino

O MediaPipe oferece soluções de Machine Learning personalizáveis. Com esse framework é possível implementar rapidamente uma ML para identificação de rostos, segmentação de objetos, rastreamento de mãos e poses, identificação de íris, segmentação de cabelos, entre outras infinidades de aplicações. 

Falaremos do rastreamento de mãos e dedos de alta fidelidade. Embora seja natural para as pessoas, a percepção robusta das mãos em tempo real é uma tarefa decididamente desafiadora na visão computacional, pois a mão é um membro único de cada pessoa, sendo assim não apresenta padrões de alto contraste. O MediaPipe Hands aplica um aprendizado de máquina profundo, sendo possível identificar até 21 pontos em uma mão a partir de um único quadro de imagem.

Aplicação com o MediaPipe

Neste post utilizaremos a biblioteca do MediaPipe em Python para identificar o espaçamento entre os dedos indicador e polegar por meio de uma webcam. Também criaremos uma interface para controlar o fade de um LED em tempo real através deste distanciamento dos dedos.

Materiais e montagem

Para conclusão de todo o projeto será necessário termos em mãos os seguintes materiais:

  • Arduino UNO
  • LED
  • Jumpers Macho-Macho
  • Protoboard
image 1

Bibliotecas MediaPipe e Arduino

Abra o ‘“Prompt de Comandos” do Windows, com o PIP e o Python instalados digite os seguintes comandos:

Caso tenha algum problema com a instalação do MediaPipe, clique aqui para acompanhar o passo a passo de instalação do framework. Para acesso a documentação da biblioteca arduno-python3: clique aqui.

Arduino

Com a IDE do Arduino aberta faça upload da sketch que possibilita o arduino ser programado através do dispositivo que estiver conectado a ele via USB. Com este algoritmo o microcontrolador se comportará como escravo, possibilitando o controlarmos através do código em Python que será executado no computador. Para download do algoritmo clique aqui.

Python

Nesta etapa iremos criar uma interface entre o framework, o Arduino e a webcam do nosso computador. Para isso é necessário importar as bibliotecas e criar o setup inicial. É extremamente importante que o parâmetro “port” contenha a porta em que o seu Arduino está conectado. Então para que seu algoritmo seja executado de maneira adequada faça a alteração da porta de acordo com a sua opção.

Criamos uma função para remapear um número de um intervalo para outro. Isto é, valores dentro de uma faixa para valores dentro de outra faixa.

Em seguida é feita toda a configuração para execução do framework com a webcam. Para mais informações sobre funções, parâmetros e acesso a documentação do MediaPipe Hands, clique aqui.

Agora é necessário fazer toda manipulação para reconhecer a distância entre o dedo polegar e o indicador. Para isso rastreamos a posição do ponto 4. THUMB_TIP e do ponto 8. INDEX_FINGER_TIP. Em seguida criamos um vetor que contém o distanciamento destes os pontos representados em coordenadas (x,y).

image 2

Para manipular o fade do Led consideramos necessário trabalhar apenas com a coordenada x, pois ela imprime a distância no eixo das abcissas entre o polegar e o indicador. O fade do Led é controlado através de PWM, sendo assim é necessário adequar os valores da escala da coordenada x para a escala de duty cycle do PWM do Arduino, para isto utilizamos a função _map criada no início do algoritmo. Por fim, este valor é impresso no pino 9 do arduino onde está o LED.   

Para finalizar, abriremos uma janela de visualização no computador. Para download do algoritmo completo clique aqui. Crie um arquivo “hands.py” e cole o código baixado, feito isso abra o terminal de comando e execute o arquivo com o Arduino conectado através da porta USB.

image 3

Conclusão

Se todos os procedimentos foram executados de maneira correta ao aproximarmos o polegar do indicador o Led apagará e quanto maior for a distância entre os dois dedos, maior será a intensidade luminosa do LED. Neste post foi apresentado apenas uma interface de comunicação entre o framework de aprendizado de máquina MediaPipe e o microcontrolador Arduino. Fique a vontade para fazer aplicações com novas funcionalidades. O MediaPipe oferece uma vasta gama de ferramentas de aprendizado de máquina.

Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
HEITTOR FELIPE COSTA
HEITTOR FELIPE COSTA
11/05/2021 16:15

Muito top, parabéns !

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H