Índice:
- Suprimentos
- Etapa 1: Aquisição de sinal
- Etapa 2: Sinal Simplificado
- Etapa 3: Processamento de Sinal
- Etapa 4: esquemas
- Etapa 5: Colocação dos Sensores EMG
- Etapa 6: Código
- Etapa 7: Resultados
Vídeo: Controle de mão robótico com EMG: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Este projeto mostra o controle da mão robótica (usando a mão de código aberto no Moov) com 3 dispositivos uECG de código aberto usados para medir e processar a atividade muscular (eletromiograma, EMG). Nossa equipe tem uma longa história com as mãos e seu controle, e este é um bom passo na direção certa:)
Suprimentos
3 dispositivos uECG 1x Arduino (estou usando Nano, mas a maioria dos outros funcionaria) 1 módulo nRF24 (qualquer um faria) 1x PCA9685 ou driver de servo semelhante 1x inMoov hand5x servos grandes (consulte as instruções inMoov para tipos compatíveis) 1x fonte de alimentação 5V capaz de 5A ou mais corrente
Etapa 1: Aquisição de sinal
O controle é baseado na EMG - atividade elétrica dos músculos. O sinal EMG é obtido por três dispositivos uECG (eu sei, é suposto ser um monitor de ECG, mas como é baseado em um ADC genérico, pode medir qualquer biossinal - incluindo EMG). Para o processamento EMG, o uECG tem um modo especial no qual envia dados do espectro de 32 bin e média da "janela muscular" (intensidade espectral média entre 75 e 440 Hz). As imagens de espectro parecem padrões azul-esverdeados que mudam com o tempo. Aqui, a frequência está no eixo vertical (em cada um dos 3 gráficos, baixa frequência na parte inferior, alta no topo - de 0 a 488 Hz com passos de ~ 15 Hz), o tempo está na horizontal (dados antigos à esquerda aqui é cerca de 10 segundos na tela). A intensidade é codificada com as cores: azul - baixo, verde - médio, amarelo - alto, vermelho - ainda mais alto.
Etapa 2: Sinal Simplificado
Para um reconhecimento confiável de gestos, é necessário um processamento adequado de PC dessas imagens espectrais. Mas para a ativação simples dos dedos robóticos da mão, é suficiente apenas usar o valor médio em 3 canais - o uECG fornece convenientemente em determinados bytes de pacote para que o esboço do Arduino possa analisá-lo. Esses valores parecem muito mais simples - anexei um gráfico de valores brutos do Serial Plotter do Arduino. Os gráficos vermelhos, verdes e azuis são valores brutos de 3 dispositivos uECG em diferentes grupos musculares quando estou apertando o polegar, o anelar e os dedos médios de forma correspondente. Para o nosso olho, esses casos são claramente diferentes, mas precisamos transformar esses valores em "pontuação do dedo" de alguma forma para que um programa possa enviar valores para servos manuais. O problema é que os sinais dos grupos musculares são "mistos": no primeiro e no terceiro caso, a intensidade do sinal azul é quase a mesma - mas o vermelho e o verde são diferentes. No segundo e terceiro casos, os sinais verdes são iguais - mas o azul e o vermelho são diferentes.
Etapa 3: Processamento de Sinal
Para "desmisturar" esses sinais, usei uma fórmula relativamente simples:
S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), onde S0 - pontuação para o canal 0, V0, V1, V2 - valores brutos para os canais 0, 1, 2 e a, b, c, d - coeficientes que eu ajustei manualmente (a e c foram de 0,3 a 2,0, b e d foram 15 e 20, você precisaria alterá-los para ajustar o seu posicionamento específico do sensor de qualquer maneira). A mesma pontuação foi calculada para os canais 1 e 2. Depois disso, os gráficos ficaram quase perfeitamente separados. Para os mesmos gestos (desta vez, dedo anular, médio e polegar), os sinais são claros e podem ser facilmente traduzidos em movimentos servo apenas comparando com o limiar
Etapa 4: esquemas
Os esquemas são bastante simples, você precisa apenas do módulo nRF24, PCA9685 ou controlador I2C PWM semelhante e fonte de alimentação de 5V de alto amp que seria suficiente para mover todos esses servos de uma vez (portanto, requer pelo menos 5A de potência nominal para operação estável).
Lista de conexões: nRF24 pino 1 (GND) - GNDnRF24 pino 2 (Vcc) do Arduino - 3.3vnRF24 pino 3 do Arduino (habilitar chip) - D9nRF24 pino 4 do Arduino (SPI: CS) - D8nRF24 pino 5 do Arduino (SPI: SCK) - Arduino D13nRF24 pino 6 (SPI: MOSI) - D11nRF24 pino 7 do Arduino (SPI: MISO) - D12PCA9685 SDA do Arduino - A4PCA9685 SCL do Arduino - A5PCA9685 Vcc do Arduino - 5vPCA9685 GDP do Arduino 5vPCA9685 GND + alto - amp GDP9685 GND alto - amp9 VND do Arduino 5vPCA9685 GDP alto - amp GDP9685 VND alto - amp9 VND do Arduino 5 - GDPCA alto 5vPCA9685 - VND do Arduino 5vPCA9685 alto - amp9 GDPCA 5 VND alto Canais PCA 0-4, na minha notação polegar - canal 0, dedo indicador - canal 1 etc.
Etapa 5: Colocação dos Sensores EMG
Para obter leituras razoáveis, é importante colocar os dispositivos uECG, que registram a atividade muscular, nos lugares certos. Embora muitas opções diferentes sejam possíveis aqui, cada uma requer uma abordagem de processamento de sinal diferente - então, com meu código, é melhor usar um posicionamento semelhante ao das minhas fotos. Pode ser contra-intuitivo, mas o sinal do músculo do polegar é melhor visível no lado oposto do braço, então um dos sensores é colocado lá, e todos eles são colocados perto do cotovelo (os músculos têm a maior parte de seu corpo nessa área, mas você deseja verificar onde exatamente o seu está localizado - há uma grande diferença individual)
Etapa 6: Código
Antes de executar o programa principal, você precisará descobrir IDs de unidade de seus dispositivos uECG específicos (isso é feito removendo o comentário da linha 101 e ligando os dispositivos um por um, você verá o ID do dispositivo atual, entre outras coisas) e preencha-os em matriz unit_ids (linha 37). Além disso, você deseja brincar com os coeficientes da fórmula (linhas 129-131) e verificar como fica na plotadora serial antes de anexá-la à mão robótica.
Etapa 7: Resultados
Com alguns experimentos que duraram cerca de 2 horas, consegui obter uma operação bastante confiável (o vídeo mostra um caso típico). Não se comporta perfeitamente e com este processamento só consegue reconhecer dedos abertos e fechados (e nem mesmo cada um dos 5, detecta apenas 3 grupos musculares: polegar, indicador e médio juntos, anular e mindinho juntos). Mas o "AI" que analisa o sinal leva 3 linhas de código aqui e usa um único valor de cada canal. Acredito que muito mais poderia ser feito analisando imagens espectrais de 32 bin no PC ou smartphone. Além disso, esta versão usa apenas 3 dispositivos uECG (canais EMG). Com mais canais, deve ser possível reconhecer padrões realmente complexos - mas bem, esse é o objetivo do projeto, fornecer algum ponto de partida para qualquer pessoa interessada:) O controle manual definitivamente não é a única aplicação para tal sistema.
Recomendado:
Velocidade e direção de controle de gesto de mão DC MOTOR usando Arduino: 8 etapas
DC MOTOR Controle de gesto de mão com velocidade e direção usando Arduino: neste tutorial, aprenderemos como controlar um motor DC com gestos de mão usando arduino e Visuino. Assista ao vídeo! Confira também: Tutorial de gestos de mão
Mão robótica com controle de voz: 4 etapas
Mão robótica de controle de voz: Eu criei um braço robótico que funcionará com o seu comando de voz. O braço do robô é controlado com entrada de fala conectada naturalmente. A entrada de idioma permite que um usuário interaja com o robô em termos que são familiares para a maioria das pessoas. O advan
Acene com a mão para controlar o braço robótico OWI Sem cordas anexadas: 10 etapas (com imagens)
Acene com a mão para controlar o braço robótico OWI … Sem cordas anexadas: A IDÉIA: Existem pelo menos 4 outros projetos em Instructables.com (em 13 de maio de 2015) para modificar ou controlar o braço robótico OWI. Não é de surpreender, já que é um kit robótico ótimo e barato para brincar. Este projeto é semelhante em s
Um braço robótico simples controlado pelo movimento real da mão: 7 etapas (com imagens)
Um braço robótico simples controlado pelo movimento real da mão: Este é um braço robótico DOF muito simples para iniciantes. O braço é controlado pelo Arduino. Ele é conectado a um sensor que é colocado na mão do operador. Portanto, o operador pode controlar o cotovelo do braço dobrando o próprio movimento do cotovelo
Terceira mão ++: uma mão amiga multiuso para eletrônicos e outros trabalhos delicados: 14 etapas (com fotos)
Terceira mão ++: uma mão amiga multiuso para eletrônicos e outros trabalhos delicados .: No passado, usei as terceiras mãos / ajudas disponíveis em cadeias de lojas de eletrônicos e fiquei frustrado com sua usabilidade. Nunca conseguia colocar os clipes exatamente onde queria ou demorava mais tempo do que deveria para configurá-los