INHOUDSOPGAWE:

Robotiese handbeheer met EMG: 7 stappe
Robotiese handbeheer met EMG: 7 stappe

Video: Robotiese handbeheer met EMG: 7 stappe

Video: Robotiese handbeheer met EMG: 7 stappe
Video: Robotics (Summer 2020) 2024, Julie
Anonim
Image
Image
Seinverkryging
Seinverkryging

Hierdie projek toon die beheer van robotiese hand (met behulp van open source hand inMoov) met 3 opensource uECG -toestelle wat gebruik word vir die meting en verwerking van spieraktiwiteit (elektromyogram, EMG). Ons span het 'n lang verhaal met hande en beheer, en dit is 'n goeie stap in die regte rigting:)

Voorrade

3x uECG -toestelle 1x Arduino (ek gebruik Nano, maar die meeste ander werk) 1x nRF24 -module (enige generiese een) 1x PCA9685 of soortgelyke servostuurder 1x inMov hand5x groot servo's (sien inMov instruksies vir versoenbare tipes) 1x 5V kragtoevoer 5A of meer stroom

Stap 1: Seinverkryging

Beheer is gebaseer op EMG - elektriese aktiwiteit van spiere. EMG -sein word verkry deur drie uECG -toestelle (ek weet, dit is veronderstel om 'n EKG -monitor te wees, maar aangesien dit gebaseer is op 'n generiese ADC, kan dit enige biosignale meet - insluitend EMG). Vir EMG-verwerking het uECG 'n spesiale modus waarin dit 32-bin spektrumdata en 'spiervenster'-gemiddelde stuur (gemiddelde spektrale intensiteit tussen 75 en 440 Hz). Spektrumbeelde lyk soos blougroen patrone wat mettertyd verander. Hier is die frekwensie op 'n vertikale as (op elk van 3 plotte, lae frekwensie onder, hoog aan die bokant - van 0 tot 488 Hz met stappe van ~ 15 Hz), die tyd is horisontaal (ou gegewens aan die linkerkant algeheel hier is ongeveer 10 sekondes op die skerm). Intensiteit word met kleur gekodeer: blou - laag, groen - medium, geel - hoog, rooi - selfs hoër.

Stap 2: Vereenvoudigde sein

Vereenvoudigde sein
Vereenvoudigde sein

Vir 'n betroubare gebaarherkenning is 'n behoorlike rekenaarverwerking van hierdie spektrale beelde nodig. Maar vir eenvoudige aktivering van robothandvingers is dit genoeg om slegs die gemiddelde waarde op 3 kanale te gebruik - uECG bied dit gerieflik by sekere pakkiegrepe, sodat Arduino -skets dit kan ontleed. Hierdie waardes lyk baie eenvoudiger - ek het 'n grafiek van rou waardes van Arduino se Serial Plotter aangeheg. Rooi, groen, blou kaarte is rou waardes van 3 uECG -toestelle op verskillende spiergroepe as ek ooreenstemmend met duim, ring en middelvingers druk. Vir ons oog is hierdie gevalle duidelik anders, maar ons moet die waardes op een of ander manier in 'finger score' verander, sodat 'n program waardes aan hand servo's kan lewer. Die probleem is dat seine van spiergroepe 'gemeng' is: in die eerste en derde geval is die blou seinintensiteit ongeveer dieselfde - maar rooi en groen verskil. In 2de en 3de gevalle is groen seine dieselfde - maar blou en rooi verskil.

Stap 3: Seinverwerking

Seinverwerking
Seinverwerking

Om hierdie seine te ontmeng, het ek 'n relatief eenvoudige formule gebruik:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), waar S0 - telling vir kanaal 0, V0, V1, V2 - rou waardes vir kanale 0, 1, 2 en a, b, c, d - koëffisiënte wat ek met die hand aangepas het (a en c was van 0,3 tot 2,0, b en d was 15 en 20, u moet dit in elk geval verander om aan te pas by u spesifieke sensorplasing). Dieselfde telling is bereken vir kanale 1 en 2. Hierna het kaarte byna perfek geskei. Vir dieselfde gebare (hierdie keer ringvinger, middel en dan duim) is seine duidelik en kan dit maklik in servobewegings vertaal word deur net met drempel te vergelyk

Stap 4: Skema's

Skemas
Skemas

Die skema is redelik eenvoudig; u benodig slegs nRF24 -module, PCA9685 of soortgelyke I2C PWM -kontroleerder en 'n hoë -amp -5V -kragtoevoer wat voldoende is om al hierdie servo's tegelyk te beweeg (dus benodig dit ten minste 5A nominale krag vir stabiele werking).

Lys met verbindings: nRF24 pen 1 (GND) - Arduino's GNDnRF24 pen 2 (Vcc) - Arduino se 3.3vnRF24 pen 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino's D13nRF24 pen 6 (SPI: MOSI) - Arduino's D11nRF24 pen 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GND - Ar68 PCA -kanale 0-4, in my notasie duim - kanaal 0, wysvinger - kanaal 1 ens.

Stap 5: Plasing van EMG -sensors

EMG Sensors Plasing
EMG Sensors Plasing
EMG Sensors Plasing
EMG Sensors Plasing

Om redelike lesings te kry, is dit belangrik om uECG -toestelle, wat spieraktiwiteit registreer, op die regte plekke te plaas. Alhoewel baie verskillende opsies hier moontlik is, benodig elkeen 'n ander seinverwerkingsbenadering - dus met my kode is dit die beste om 'n plasing soortgelyk aan my foto's te gebruik. Dit kan teen -intuïtief wees, maar die duimspiersein is beter sigbaar aan die teenoorgestelde kant van die arm, so een van die sensors word daar geplaas en almal is naby die elmboog geplaas (spiere het die grootste deel van hul liggaam in daardie gebied, maar u wil kyk waar presies die uwe is - daar is 'n groot individuele verskil)

Stap 6: Kode

Voordat u die hoofprogram uitvoer, moet u die eenheids -ID's van u spesifieke uECG -toestelle ontdek (dit word gedoen deur reël 101 nie te reageer nie en toestelle een vir een aan te skakel; u sal onder meer die ID van die huidige toestel sien) en dit invul unit_ids -skikking (reël 37). Anders as dit, wil u met formulekoëffisiënte (reëls 129-131) speel en kyk hoe dit op die seriële plotter lyk voordat u dit aan die robothand koppel.

Stap 7: Resultate

Met 'n paar eksperimente wat ongeveer 2 uur geneem het, kon ek redelik betroubaar werk (video toon 'n tipiese geval). Dit gedra hom nie perfek nie en met hierdie verwerking kan slegs oop en geslote vingers herken word (en selfs nie elkeen van die 5 nie, dit bespeur slegs 3 spiergroepe: duim, indeks en middel saam, ring en vingertjies saam). Maar 'AI' wat die sein ontleed, neem hier 3 reëls kode en gebruik 'n enkele waarde van elke kanaal. Ek glo baie meer kan gedoen word deur die analisering van 32-bin spektrale beelde op 'n rekenaar of slimfoon. Hierdie weergawe gebruik ook slegs 3 uECG -toestelle (EMG -kanale). Met meer kanale behoort dit moontlik te wees om werklik komplekse patrone te herken - maar wel, dit is die punt van die projek, om 'n beginpunt te bied vir almal wat belangstel:) Handbeheer is beslis nie die enigste toepassing vir so 'n stelsel nie.

Aanbeveel: