Inhoudsopgave:
- Benodigdheden
- Stap 1: Signaalacquisitie
- Stap 2: Vereenvoudigd signaal
- Stap 3: Signaalverwerking
- Stap 4: Schema's
- Stap 5: plaatsing van EMG-sensoren
- Stap 6: Coderen
- Stap 7: Resultaten
Video: Robothandbediening met EMG - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dit project toont de besturing van een robothand (met behulp van opensourcehand inMoov) met 3 opensource uECG-apparaten die worden gebruikt voor het meten en verwerken van spieractiviteit (elektromyogram, EMG). Ons team heeft een lang verhaal met handen en hun controle, en dit is een goede stap in de goede richting:)
Benodigdheden
3x uECG-apparaten1x Arduino (ik gebruik Nano, maar de meeste anderen zouden werken)1x nRF24-module (elke generieke module zou doen)1x PCA9685 of vergelijkbare servodriver1x inMoov-hand5x grote servo's (zie inMoov-instructies voor compatibele typen)1x 5V-voeding die geschikt is voor 5A of meer stroom
Stap 1: Signaalacquisitie
De controle is gebaseerd op EMG - elektrische activiteit van spieren. Het EMG-signaal wordt verkregen door drie uECG-apparaten (ik weet het, het is de bedoeling dat het een ECG-monitor is, maar aangezien het is gebaseerd op een generieke ADC, kan het alle biosignalen meten, inclusief EMG). Voor EMG-verwerking heeft uECG een speciale modus waarin het 32-bin spectrumgegevens en het "spiervenster"-gemiddelde (gemiddelde spectrale intensiteit tussen 75 en 440 Hz) verzendt. Spectrumafbeeldingen zien eruit als blauwgroene patronen die in de loop van de tijd veranderen. Hier staat de frequentie op een verticale as (op elk van de 3 plots, lage frequentie onderaan, hoog bovenaan - van 0 tot 488 Hz met stappen van ~15 Hz), de tijd staat op een horizontale (oude gegevens links in het algemeen hier is ongeveer 10 seconden op het scherm). Intensiteit wordt gecodeerd met kleur: blauw - laag, groen - gemiddeld, geel - hoog, rood - zelfs hoger.
Stap 2: Vereenvoudigd signaal
Voor een betrouwbare gebarenherkenning is een goede pc-verwerking van deze spectrale beelden vereist. Maar voor eenvoudige activering van robothandvingers is het voldoende om gewoon de gemiddelde waarde op 3 kanalen te gebruiken - uECG levert het gemakkelijk op bepaalde pakketbytes, zodat Arduino-schets het kan ontleden. Deze waarden zien er veel eenvoudiger uit - ik heb een grafiek met onbewerkte waarden van Arduino's Serial Plotter bijgevoegd. Rode, groene en blauwe grafieken zijn ruwe waarden van 3 uECG-apparaten op verschillende spiergroepen wanneer ik dienovereenkomstig in duim, ring en middelvinger knijp. Voor ons oog zijn deze gevallen duidelijk anders, maar we moeten die waarden op de een of andere manier in "vingerscore" veranderen, zodat een programma waarden kan uitvoeren naar handservo's. Het probleem is dat signalen van spiergroepen "gemengd" zijn: in het 1e en 3e geval is de intensiteit van het blauwe signaal ongeveer hetzelfde - maar rood en groen zijn verschillend. In het 2e en 3e geval zijn groene seinen hetzelfde, maar blauw en rood zijn verschillend.
Stap 3: Signaalverwerking
Om deze signalen te "ontmengen", heb ik een relatief eenvoudige formule gebruikt:
S0=V0^2 / ((V1 *a0 +b0)(V2 * c0+d0)), waarbij S0 - score voor kanaal 0, V0, V1, V2 - onbewerkte waarden voor kanalen 0, 1, 2 en a, b, c, d - coëfficiënten die ik handmatig heb aangepast (a en c waren van 0,3 tot 2,0, b en d waren 15 en 20, je zou ze toch moeten veranderen om ze aan te passen aan je specifieke sensorplaatsing). Dezelfde score werd berekend voor kanaal 1 en 2. Hierna werden grafieken bijna perfect gescheiden. Voor dezelfde gebaren (dit keer ringvinger, middel en dan duim) zijn de signalen duidelijk en kunnen ze eenvoudig worden vertaald in servobewegingen, gewoon door te vergelijken met de drempel
Stap 4: Schema's
Schema's zijn vrij eenvoudig, je hebt alleen een nRF24-module, PCA9685 of vergelijkbare I2C PWM-controller en een 5V-voeding met hoge ampère nodig die voldoende zou zijn om al deze servo's tegelijk te verplaatsen (dus het vereist minimaal 5A nominaal vermogen voor een stabiele werking).
Lijst met aansluitingen:nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino's 3.3vnRF24 pin 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI:CS) - Arduino's D8nRF24 pin 5 (SPI:SCK) - Arduino's D13nRF24 pin 6 (SPI:MOSI) - Arduino's D11nRF24 pin 7 (SPI:MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GND - Arduino's GNDPCA9685 V+96 - hoge versterker PCA kanalen 0-4, in mijn notatie duim - kanaal 0, wijsvinger - kanaal 1 etc.
Stap 5: plaatsing van EMG-sensoren
Om redelijke metingen te krijgen, is het belangrijk om uECG-apparaten, die spieractiviteit registreren, op de juiste plaatsen te plaatsen. Hoewel hier veel verschillende opties mogelijk zijn, vereist elk een andere benadering van signaalverwerking - dus met mijn code is het het beste om een plaatsing te gebruiken die vergelijkbaar is met mijn foto's. Het kan contra-intuïtief zijn, maar het signaal van de duimspier is beter zichtbaar aan de andere kant van de arm, dus een van de sensoren is daar geplaatst en ze zijn allemaal dicht bij de elleboog geplaatst (spieren hebben het grootste deel van hun lichaam in dat gebied, maar je wilt controleren waar die van jou zich precies bevinden - er is nogal een groot individueel verschil)
Stap 6: Coderen
Voordat u het hoofdprogramma uitvoert, moet u de unit-ID's van uw specifieke uECG-apparaten achterhalen (dit wordt gedaan door regel 101 te verwijderen en apparaten één voor één in te schakelen, u zult onder andere de ID van het huidige apparaat zien) en deze invullen in unit_ids array (regel 37). Anders dan dit, wil je spelen met formulecoëfficiënten (regels 129-131) en controleren hoe het eruit ziet op de seriële plotter voordat je het aan de robothand bevestigt.
Stap 7: Resultaten
Met enkele experimenten die ongeveer 2 uur duurden, kon ik een redelijk betrouwbare werking krijgen (video toont een typisch geval). Het gedraagt zich niet perfect en kan met deze verwerking alleen open en gesloten vingers herkennen (en zelfs niet elk van de 5, het detecteert slechts 3 spiergroepen: duim, wijs- en middelvinger samen, ringvinger en pink samen). Maar "AI" die het signaal analyseert, heeft hier 3 regels code en gebruikt een enkele waarde van elk kanaal. Ik geloof dat er veel meer zou kunnen worden gedaan door spectrale beelden met 32 bins op pc of smartphone te analyseren. Ook gebruikt deze versie slechts 3 uECG-apparaten (EMG-kanalen). Met meer kanalen zou het mogelijk moeten zijn om echt complexe patronen te herkennen - maar goed, dat is het punt van het project, om een startpunt te bieden voor iedereen die geïnteresseerd is:) Handbediening is zeker niet de enige toepassing voor een dergelijk systeem.
Aanbevolen:
EMG-biofeedback: 18 stappen (met afbeeldingen)
EMG-biofeedback: deze biofeedback-opstelling maakt gebruik van een EMG-sensor om spierspanning weer te geven als een reeks pieptonen en stelt u in staat uw lichaam te trainen om de spierspanning naar believen aan te passen. Kortom, hoe gespannener je bent, hoe sneller de piepjes gaan, en hoe relaxter, hoe
[EMG] Spier geactiveerde schakelaar: 3 stappen
[EMG] Muscle Activated Switch: dit prototype demonstreert het potentieel van goedkope en open-source hardware/software om computercontrole mogelijk te maken door middel van elektrische spieractiviteit. kan b
IoT: bedien de HoloLens met uw wenkbrauwen (EMG): 5 stappen
IoT: Control the HoloLens Using Your Eyebrows (EMG): Dit project maakte deel uit van het NASA SUITS-project van de University of Colorado Boulder dat in april 2019 werd gepresenteerd en getest bij NASA JSC. Voor het project van dat jaar was ik de projectleider van hardware ontwikkeling en dit was een van mijn bijdragen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Typen met EMG met MyoWare: 8 stappen
Typen met EMG met MyoWare: Auteurs:L. Elizabeth Crawford & Dylan T. VavraIntroductie:In deze tutorial laten we je zien hoe je een eenvoudig thuiselektromyografie (EMG)-systeem maakt - voor ongeveer $ 100 - dat spieractivering vanaf het oppervlak van