Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Reconhecimento de gestos usando acelerômetro e ESP

Componentes e suprimentos

Arduino 101
Inclui um acelerômetro integrado, portanto, nenhum componente ou circuito adicional é necessário.
× 1
Arduino UNO
Você pode usar um Arduino Uno (ou outro Arduino) em vez do Arduino 101, mas você precisa de um acelerômetro também.
× 1
Adafruit Analog Accelerometer:ADXL335
Use isto (ou o equivalente SparkFun) se estiver usando um Arduino diferente do Arduino 101 ( que tem um acelerômetro integrado).
× 1
SparkFun Triple Axis Accelerometer Breakout - ADXL335
Use isto (ou o equivalente Adafruit) se estiver usando um Arduino diferente do Arduino 101 ( que tem um acelerômetro integrado).
× 1

Sobre este projeto





Visão geral


Este tutorial mostra como incorporar reconhecimento de gesto básico em seus projetos Arduino usando o sistema ESP. Por exemplo, você pode reconhecer diferentes gestos de tênis, como forehand, backhand e saque; elementos de uma rotina de dança; gestos de levantamento de peso; etc. Os gestos são detectados por meio de um acelerômetro e enviados para o aplicativo ESP em execução no computador. O ESP usa um algoritmo de aprendizado de máquina simples para combinar os dados do acelerômetro ao vivo com exemplos gravados de diferentes gestos, enviando uma mensagem de volta ao Arduino quando ele reconhece um gesto semelhante a um dos exemplos. O sistema só reconhece ocorrências individuais de gestos discretos; não fornece informações sobre como o gesto é executado. Ainda assim, ele pode ser usado para uma ampla gama de aplicativos interativos.

Baixe o aplicativo de reconhecimento de gestos ESP:
  • Mac:ESP-Gestures-Mac-20161028.zip
  • Windows:ESP-Gestures-Win-20161028.zip. Você também pode precisar do Visual C ++ Redistributable (Atualização 3) da Microsoft.
  • Ubuntu:ESP-Gestures-Ubuntu-20161028.tar.gz
  • Exemplo de gestos:ForehandBackhandServe.grt





Etapa 1. Conecte seu acelerômetro.


Se estiver usando o Arduino 101, que possui um acelerômetro integrado, você pode pular esta etapa. Caso contrário, você precisará conectar seu acelerômetro. Para fazer isso, primeiro solde os pinos coletores machos na placa de breakout, se ainda não tiver feito isso. Em seguida, você conectará o acelerômetro ao Arduino.

Como um atalho, você pode conectar o breakout do acelerômetro diretamente nos pinos de entrada analógica do Arduino Uno (ou outro Arduino com o mesmo formato). Em seguida, no código do Arduino, você pode configurar os pinos apropriados para fornecer energia e aterramento para o acelerômetro.

Como alternativa, você pode conectar seu acelerômetro a uma placa de ensaio e conectá-lo ao Arduino, conectando seus pinos de alimentação e aterramento aos pinos 5V e GND do Arduino e seus pinos dos eixos X, Y e Z a três entradas analógicas da placa Arduino.





Etapa 2. Faça upload do código do Arduino.


Você pode usar um dos programas Arduino abaixo para ler dados do acelerômetro e enviá-los via serial (USB) para o computador. Primeiro, verifique se os pinos especificados no programa Arduino correspondem à forma como você conectou seu acelerômetro (por exemplo, que xpin corresponde ao pino de entrada analógica que está conectado ao pino do eixo X de seu acelerômetro). (Isso não se aplica se você estiver usando o Arduino 101, onde o acelerômetro está conectado internamente.) Em seguida, selecione a placa apropriada e a porta serial no menu de ferramentas do Arduino e carregue o esboço do Arduino.





Etapa 3. Verifique os dados no monitor serial.


Abra o monitor serial do Arduino, configure-o para 9600 baud e verifique se você está obtendo dados do acelerômetro de seu Arduino. Você deve ver três colunas de números que mudam ao mover o acelerômetro. Use o plotter serial Arduino para ver um gráfico desses números.

Certifique-se de fechar o monitor serial e a plotadora serial antes de continuar, caso contrário, eles bloquearão o aplicativo ESP de falar com seu Arduino.





Etapa 4. Execute o aplicativo de reconhecimento de gestos ESP e selecione sua porta serial.


Baixe o aplicativo de reconhecimento de gestos ESP:
  • Mac:ESP-Gestures-Mac-20160812.zip
  • Windows:ESP-Gestures-Win-20160812.zip

Selecione a porta serial correspondente à sua placa Arduino no menu de configuração. (Clique no título "Selecionar uma porta serial" para abrir a lista de portas.)

Você deve ver o fluxo de dados ao vivo no gráfico "Dados brutos". As três linhas no gráfico correspondem aos três eixos do seu acelerômetro:a linha vermelha corresponde ao eixo X, a verde ao eixo Y e a azul ao eixo Z.





Etapa 5. Registre as amostras de calibração.


Para permitir que o aplicativo ESP entenda qual faixa de valores esperar de seu acelerômetro e Arduino, você precisará registrar uma amostra de calibração. Coloque o acelerômetro em uma superfície plana, com o eixo Z voltado para cima. Pressione e segure a tecla "1" por um segundo ou mais para registrar a amostra de calibração "Vertical". Você deve ver um gráfico da amostra aparecer. Em seguida, vire o acelerômetro de cabeça para baixo e, mantendo-o plano e imóvel, segure a tecla "2" para registrar a amostra de calibração de cabeça para baixo. O sistema ESP usa esses dados para descobrir quais valores numéricos correspondem a 0g de aceleração (nos eixos X e Y) e quais correspondem a 1g de aceleração (no eixo Z).





Etapa 6. Grave exemplos de gestos.


Vá para a guia "Treinamento" do aplicativo ESP clicando nele ou digitando um "T" maiúsculo. Esta guia permite gravar ou carregar exemplos dos gestos que você deseja que o sistema ESP reconheça. Você pode gravar exemplos de até nove gestos diferentes.

Para gravar um exemplo de gesto, faça o gesto enquanto pressiona a tecla correspondente ao rótulo que deseja associar ao gesto. Por exemplo, para gravar um gesto com a etiqueta 1, segure a tecla "1" no teclado enquanto faz o gesto. (Como alternativa, você pode carregar os exemplos de gestos de tênis em ForehandBackhandServe.grt.)

Certifique-se de registrar os gestos de exemplo com o acelerômetro na mesma configuração que será depois, quando quiser que o sistema reconheça os gestos. Por exemplo, você pode segurar o acelerômetro em sua mão com uma orientação específica ou anexá-lo a um objeto que irá segurar com uma orientação específica.

Uma boa amostra contém os dados correspondentes a todo o gesto, mas sem muitos dados de linha de base adicionais no início ou no final. Ou seja, a amostra deve começar e terminar com um período curto de linhas relativamente planas, nem muito longas nem ausentes. Além disso, se o seu gesto termina em um lugar diferente do que começa, certifique-se de não para registrar o tempo em que você está trazendo o acelerômetro de volta à posição inicial. Por exemplo, se você estava gravando um gesto de deslizar para a direita, gostaria de registrar apenas a parte do gesto quando sua mão se move da esquerda para a direita, não o momento em que sua mão está retornando à posição inicial.

Cada exemplo adicional que você registra é outro exemplo que o algoritmo de aprendizado de máquina pode comparar ao reconhecer gestos. Isso significa que, se você quiser que o sistema reconheça diferentes variações de um gesto (por exemplo, as diferentes maneiras em que é feito por pessoas diferentes), pode ajudar a registrar amostras de cada variação. Por outro lado, se você tiver amostras ruins, elas podem confundir o sistema; mais amostras não é necessariamente melhor. Em geral, tivemos sorte ao gravar algo em torno de 5 a 10 amostras para cada gesto, embora, novamente, a qualidade das amostras individuais seja mais importante do que sua quantidade.

Se você não gostar de uma amostra (por exemplo, porque você pressionou a tecla na hora errada e perdeu os dados correspondentes a parte do gesto), você pode excluí-la clicando na caixa ao lado da palavra "excluir" abaixo da amostra . Você pode cortar uma amostra clicando e arrastando no gráfico da amostra para selecionar a parte da amostra que deseja manter e, em seguida, clicando na caixa "cortar". Você pode navegar entre as diferentes amostras em uma classe clicando nos ícones de seta abaixo do gráfico da amostra. Se você gravou uma amostra na classe errada, você pode movê-la clicando no botão "renomear" e pressionando a tecla correspondente ao rótulo ao qual deseja atribuir a amostra. Para nomear um gesto, clique no botão "renomear", digite o nome e pressione Enter.





Etapa 7. Treine o sistema para reconhecer gestos.


Depois de registrar alguns gestos de exemplo, você pode treinar o sistema ESP para reconhecer esses gestos de seus exemplos. Pressione a tecla "t" no teclado para treinar o sistema. Você deverá ver a mensagem "treinamento bem-sucedido" na parte inferior da janela. Agora, quando você faz um gesto semelhante a um dos seus exemplos gravados, você deve ver seu nome aparecer no gráfico de dados do sensor ao vivo.

O sistema pode não funcionar bem na primeira vez que você o treinar. É útil treinar e testar o sistema com frequência enquanto grava seus gestos de exemplo, para que você possa ter uma noção de como ele se comporta.

Em particular, se o sistema não está reconhecendo gestos que você acha que deveria, você pode gravar exemplos adicionais desse gesto. Se o sistema está reconhecendo gestos quando não deveria, você pode querer excluir ou aparar exemplos que parecem diferentes dos outros, ou que contêm longos períodos de linhas relativamente planas. Certifique-se de pressionar "t" após modificar seus exemplos para treinar novamente o sistema.





Etapa 8. Ajuste a configuração do sistema conforme necessário.


Embora modificar seus exemplos de treinamento seja provavelmente o meio mais importante de ajudar o sistema a funcionar corretamente, o ESP também permite que você configure alguns parâmetros de sistema subjacentes. Para fazer isso, clique no rótulo "clique para abrir a configuração". Você deve ver dois parâmetros:variabilidade e tempo limite. Observe que após alterar esses parâmetros, você precisa treinar novamente o sistema pressionando "t".

O parâmetro de variabilidade controla o quão diferente um gesto pode ser de um dos exemplos registrados e ainda ser reconhecido. Quanto maior o número, mais diferente pode ser. Se o sistema parece exigir que seus gestos sejam muito semelhantes aos exemplos gravados, você pode tentar aumentar esse número. (Você também pode tentar gravar exemplos adicionais.) Se o sistema reconhecer gestos espúrios, você pode tentar diminuir esse número, embora também possa tentar excluir qualquer exemplo de treinamento que pareça ruim.

O parâmetro de tempo limite controla quanto tempo depois de reconhecer um gesto o sistema espera antes de reconhecer um novo. É medido em milissegundos (milésimos de segundo). Se o sistema parecer estar faltando gestos feitos em sucessão próxima a outro gesto, tente diminuir esse número. Porém, tenha cuidado, porque se você deixar esse número muito baixo, o sistema pode reconhecer um único gesto várias vezes. Se o sistema parece estar reconhecendo vários gestos quando você faz apenas um gesto (por exemplo, se ele vir um forehand seguido por um backhand quando você apenas fez um forehand), você pode tentar aumentar este parâmetro.





Etapa 9. Incorpore o reconhecimento de gestos em seu projeto Arduino.


Quando o sistema ESP faz uma previsão, ele envia uma mensagem ao seu Arduino com o número do gesto que ele reconheceu (como texto ASCII seguido por uma nova linha, por exemplo, "1 \ n"). Ao ler essas previsões na porta serial, você pode fazer seu Arduino responder ao gesto de várias maneiras.

As previsões também são enviadas por TCP para um servidor em execução na porta localhost 5204 (no mesmo formato do Arduino). Por exemplo, pode ser um jogo escrito em Processing ou outro software. Certifique-se de que o servidor TCP esteja em execução antes de iniciar o aplicativo ESP.





Como funciona


Este aplicativo ESP específico usa um algoritmo chamado Dynamic Time Warping (ou DTW). Esse algoritmo distorce o sinal do sensor ao vivo eliminando ou duplicando leituras individuais, gerando uma série de variações e verificando se são semelhantes às amostras registradas. O algoritmo procura a amostra de treinamento mais próxima dos dados do sensor em tempo real. Se a diferença entre os dois for menor que um determinado limite, ele considera uma correspondência e emite uma previsão correspondente à classe de treinamento que contém aquela amostra. Você pode ajustar a distância necessária usando o parâmetro "variabilidade" no menu suspenso de configuração.

O reconhecimento de gestos é apenas um domínio ao qual o sistema ESP pode ser aplicado. O ESP é construído com base no Gesture Recognition Toolkit (GRT), que, apesar do nome, na verdade contém uma ampla gama de algoritmos de aprendizado de máquina que podem ser aplicados a uma ampla gama de aplicativos de detecção em tempo real. O ESP pega o código de um aplicativo específico e o converte em uma interface de usuário personalizada para trabalhar com esse pipeline de aprendizado de máquina. Esses programas específicos de aplicativo incluem um pipeline de aprendizado de máquina GRT, especificação de entradas de sensor, definição do processo de calibração e especificações para os parâmetros ajustáveis. Construímos exemplos ESP para detecção de cores, detecção de pose usando acelerômetros e reconhecimento de áudio simples. Veja o ESP GitHub para mais informações.

Código

Código Arduino ADXL335
Este código é lido de um ADXL335 conectado a um Arduino:o pino do eixo X do acelerômetro deve ser conectado ao pino A5 do Arduino, o eixo Y ao A4 e o eixo Z ao A3. As leituras são enviadas pela porta serial (USB) a 9600 baud, como dados ASCII separados por tabulação e terminados em nova linha.
Código do acelerômetro Arduino 101
Lê dados do acelerômetro do acelerômetro embutido em um Arduino 101. As leituras são enviadas pela porta serial (USB) em 9600 como dados ASCII separados por tabulação terminados em nova linha.

Processo de manufatura

  1. Sistema de atendimento usando Arduino e RFID com Python
  2. Controle remoto universal usando Arduino, 1Sheeld e Android
  3. Faça você mesmo voltímetro usando Arduino e Smartphone
  4. IOT - Jar inteligente usando ESP8266, Arduino e sensor ultrassônico
  5. Medição de frequência e ciclo de trabalho usando Arduino
  6. Controle o Arduino Rover usando Firmata e o controlador do Xbox One
  7. Sonar usando arduino e exibição no IDE de processamento
  8. Controle de brilho do LED usando Bolt e Arduino
  9. Braço robótico simples e inteligente usando Arduino
  10. Como fazer uma bússola usando Arduino e IDE de processamento