Sisällysluettelo:

Robottikäsiohjaus EMG: llä: 7 vaihetta
Robottikäsiohjaus EMG: llä: 7 vaihetta

Video: Robottikäsiohjaus EMG: llä: 7 vaihetta

Video: Robottikäsiohjaus EMG: llä: 7 vaihetta
Video: Kuinka tehdä Robot Hand? | Arduino | Langaton valvottu käsineen nRF24L01 2024, Marraskuu
Anonim
Image
Image
Signaalin hankinta
Signaalin hankinta

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

Yksinkertaistettu signaali
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

Signaalinkäsittely
Signaalinkä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

Kaaviot
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

EMG -anturien sijoittaminen
EMG -anturien sijoittaminen
EMG -anturien sijoittaminen
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: