Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Signaalin hankinta
- Vaihe 2: Yksinkertaistettu signaali
- Vaihe 3: Signaalin käsittely
- Vaihe 4: Kaaviot
- Vaihe 5: EMG -anturien sijoittaminen
- Vaihe 6: Koodi
- Vaihe 7: Tulokset
Video: Robottikäsiohjaus EMG: llä: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tämä projekti osoittaa robotin käden hallinnan (käyttäen avoimen lähdekäden inMoovia) kolmella avoimen lähdekoodin uECG -laitteella, joita käytetään lihasten toiminnan mittaamiseen ja käsittelyyn (elektromyogrammi, EMG). Tiimillämme on pitkä tarina käsillä ja heidän hallinnallaan, ja tämä on hyvä askel oikeaan suuntaan:)
Tarvikkeet
3x uECG -laitteet 1x Arduino (käytän Nanoa, mutta useimmat muut toimivat) 1x nRF24 -moduuli (mikä tahansa yleinen tekisi) 1x PCA9685 tai vastaava servo -ohjain 1x inMoov hand5x suuret servot (katso yhteensopivat tyypit inMoov -ohjeista) 5A tai enemmän virtaa
Vaihe 1: Signaalin hankinta
Hallinta perustuu EMG: hen - lihasten sähköiseen toimintaan. EMG -signaali saadaan kolmesta uECG -laitteesta (tiedän, että sen on tarkoitus olla EKG -näyttö, mutta koska se perustuu yleiseen ADC: hen, se voi mitata kaikki biosignaalit - mukaan lukien EMG). EMG-käsittelyä varten uECG: llä on erityinen tila, jossa se lähettää 32-bin-spektritietoja ja "lihas-ikkunan" keskiarvo (keskimääräinen spektrin intensiteetti 75-440 Hz). Spektrikuvat näyttävät sinivihreiltä kuvioilta, jotka muuttuvat ajan myötä. Täällä taajuus on pystysuoralla akselilla (jokaisessa 3 käyrässä, matala taajuus alhaalla, korkea ylhäällä - 0--488 Hz ~ 15 Hz: n askelin), aika on vaakasuorassa (vanha data vasemmalla kokonaisuudessaan tässä on noin 10 sekuntia näytössä). Intensiteetti on koodattu väreillä: sininen - matala, vihreä - keskikokoinen, keltainen - korkea, punainen - jopa suurempi.
Vaihe 2: Yksinkertaistettu signaali
Luotettavan eleiden tunnistamisen edellytyksenä on näiden spektrikuvien asianmukainen PC -käsittely. Mutta yksinkertaisten robottikäsi -sormien aktivoimiseksi riittää vain käyttää keskiarvoarvoa kolmella kanavalla - uECG tarjoaa sen kätevästi tietyillä pakettitavuilla, jotta Arduino -luonnos voi jäsentää sen. Nämä arvot näyttävät paljon yksinkertaisilta - olen liittänyt kaavion raaka -arvoista Arduinon sarjapiirturista. Punaiset, vihreät ja siniset kaaviot ovat raaka -arvoja 3 uECG -laitteesta eri lihasryhmissä, kun puristan peukaloa, rengasta ja keskisormia vastaavasti. Meidän silmämme kannalta nämä tapaukset ovat selvästi erilaisia, mutta meidän on muutettava nämä arvot jotenkin "sormipisteiksi", jotta ohjelma voi tulostaa arvot käsiservoille. Ongelmana on, että lihasryhmien signaalit ovat "sekoitettuja": ensimmäisessä ja kolmannessa tapauksessa sinisen signaalin voimakkuus on suunnilleen sama - mutta punainen ja vihreä ovat erilaisia. Toisessa ja kolmannessa tapauksessa vihreät signaalit ovat samat - mutta sininen ja punainen ovat erilaisia.
Vaihe 3: Signaalin käsittely
Näiden signaalien "sekoittamiseksi" olen käyttänyt suhteellisen yksinkertaista kaavaa:
S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), jossa S0 - pisteet kanavalla 0, V0, V1, V2 - raaka -arvot kanaville 0, 1, 2 ja a, b, c, d - kertoimet, jotka olen säätänyt manuaalisesti (a ja c olivat 0,3 - 2,0, b ja d olivat 15 ja 20, sinun on muutettava ne mukauttaaksesi tietyn anturin sijoittelun joka tapauksessa). Sama pisteet laskettiin kanaville 1 ja 2. Tämän jälkeen kaaviot erosivat lähes täydellisesti. Samat eleet (tällä kertaa nimetön sormi, keskimmäinen ja sitten peukalo) signaalit ovat selkeitä ja ne voidaan helposti muuntaa servoliikkeiksi vain vertaamalla kynnykseen
Vaihe 4: Kaaviot
Kaavio on melko yksinkertainen, tarvitset vain nRF24 -moduulin, PCA9685 tai vastaavan I2C PWM -ohjaimen ja korkean vahvistimen 5 V: n virtalähteen, joka riittää siirtämään kaikkia näitä servoja kerralla (joten se vaatii vähintään 5 A: n nimellistehon vakaaseen toimintaan).
Yhteysluettelo: nRF24 nasta 1 (GND) - Arduinon GNDnRF24 nasta 2 (Vcc) - Arduinon 3.3vnRF24 nasta 3 (Chip käytössä) - Arduinon D9nRF24 nasta 4 (SPI: CS) - Arduinon D8nRF24 nasta 5 (SPI: SCino) - Arduino D13nRF24 -nasta 6 (SPI: MOSI) - Arduinon D11nRF24 -nasta 7 (SPI: MISO) - Arduinon D12PCA9685 SDA - Arduinon A4PCA9685 SCL - Arduinon A5PCA9685 Vcc - Arduino's 5vPCA9685D -GG -vahvistin PCA -kanavat 0-4, notaationi peukalolla - kanava 0, etusormi - kanava 1 jne.
Vaihe 5: EMG -anturien sijoittaminen
Kohtuullisten lukemien saamiseksi on tärkeää sijoittaa lihasten toimintaa mittaavat uECG -laitteet oikeisiin paikkoihin. Vaikka monet eri vaihtoehdot ovat tässä mahdollisia, jokainen vaatii erilaisen signaalinkäsittelymenetelmän - joten koodillani on parasta käyttää valokuvien kaltaista sijoittelua. Se voi olla intuitiivista, mutta peukalon lihassignaali näkyy paremmin käsivarren vastakkaisella puolella, joten yksi antureista on sijoitettu sinne, ja ne kaikki on sijoitettu lähelle kyynärpäätä (lihaksilla on suurin osa kehostaan tällä alueella, mutta haluat tarkistaa missä tarkalleen omasi sijaitsevat - yksilölliset erot ovat melko suuret)
Vaihe 6: Koodi
Ennen pääohjelman suorittamista sinun on selvitettävä tiettyjen uECG -laitteidesi yksikötunnukset (se tehdään poistamalla linja 101 ja käynnistämällä laitteet yksitellen, näet muun muassa nykyisen laitteen tunnuksen) ja täytä ne unit_ids -matriisi (rivi 37). Muuten haluat pelata kaavakertoimilla (rivit 129-131) ja tarkistaa, miltä se näyttää sarjaplotterissa, ennen kuin kiinnität sen robottikäteen.
Vaihe 7: Tulokset
Joillakin kokeilla, jotka kestivät noin 2 tuntia, pystyin saamaan melko luotettavan toiminnan (video näyttää tyypillisen tapauksen). Se ei käyttäydy täydellisesti ja tällä käsittelyllä voi tunnistaa vain avoimet ja suljetut sormet (eikä edes jokainen viidestä, se havaitsee vain 3 lihasryhmää: peukalo, indeksi ja keskikohta yhdessä, rengas ja pienet sormet yhdessä). Mutta "AI", joka analysoi signaalin, ottaa tässä 3 riviä koodia ja käyttää yhtä arvoa jokaiselta kanavalta. Uskon, että voitaisiin tehdä paljon enemmän analysoimalla 32-bin-spektrikuvia tietokoneella tai älypuhelimella. Lisäksi tämä versio käyttää vain 3 uECG -laitetta (EMG -kanavaa). Useamman kanavan avulla pitäisi olla mahdollista tunnistaa todella monimutkaisia kuvioita - mutta no, se on projektin tarkoitus, tarjota lähtökohta kaikille kiinnostuneille:) Käsiohjaus ei todellakaan ole ainoa tällaisen järjestelmän sovellus.
Suositeltava:
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullinen: 5 vaihetta
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullista: Tein Bluetooth Arduino -auton, kuten tässä kuvattu, Ardumotive_com. Ongelmani olivat akut ja niiden paino sekä kustannukset. Sittemmin matkapuhelimien halvoista virtapankkeista on tullut erittäin edullisia. Kaikki mitä tarvitsen
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: lla, säädettävä asetuspiste: 3 vaihetta
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: llä, säädettävä asetuspiste: Olen rakentanut tämän projektin, koska sisäkasvieni on oltava terveitä, vaikka olen lomalla pitkään ja pidän ajatuksesta hallita tai ainakin seurata kaikkia mahdollisia asioita, joita kotona tapahtuu Internetin kautta
Älypuhelintelakka USB: llä ja HDMI: llä: 6 vaihetta
Älypuhelintelakka USB: llä ja HDMI: llä: Tämä on opas rakentaa älypuhelintelakka, jossa on neljä USB -tuloa, HDMI -lähtö ja USB C -läpivienti lataamista varten. monenlaisiin USB -laitteisiin, kuten näppäimistöihin, hiiriin
Levynvaihto PS1: llä (tai PSX: llä): 8 vaihetta
Levynvaihdon vaihtaminen PS1: llä (tai PSX: llä): Tämä näyttää sinulle vaihe vaiheelta kuinka vaihtaa levyt Ps1: lle (tai PSX: lle). Tämä on melko vaikeaa. jos sinulla on ongelmia, käy tällä sivustolla http://www.angelfire.com/ca/PlaystationHouse/SwapTrick.html