Talaan ng mga Nilalaman:

Robotic Hand Control Sa EMG: 7 Hakbang
Robotic Hand Control Sa EMG: 7 Hakbang

Video: Robotic Hand Control Sa EMG: 7 Hakbang

Video: Robotic Hand Control Sa EMG: 7 Hakbang
Video: how to make robot hand moving using muscle at your home 2024, Hulyo
Anonim
Image
Image
Pagkuha ng Signal
Pagkuha ng Signal

Ipinapakita ng proyektong ito ang kontrol ng robotic hand (gamit ang opensource hand inMoov) na may 3 mga aparato ng opensource uECG na ginamit para sa pagsukat at pagproseso ng aktibidad ng kalamnan (electromyogram, EMG). Ang aming koponan ay may mahabang kwento sa mga kamay at sa kanilang kontrol, at ito ay isang mahusay na hakbang sa isang tamang direksyon:)

Mga gamit

3x uECG aparato1x Arduino (Gumagamit ako ng Nano ngunit ang karamihan sa iba ay gagana) 1x nRF24 module (anumang generic na gagawin) 1x PCA9685 o katulad na servo driver1x inMoov hand5x malaking servos (tingnan ang mga tagubilin saMoov para sa mga katugmang uri) 1x 5V power supply na may kakayahang 5A o higit pang kasalukuyang

Hakbang 1: Pagkuha ng Signal

Ang kontrol ay batay sa EMG - aktibidad ng kuryente ng mga kalamnan. Ang signal ng EMG ay nakuha ng tatlong mga aparato ng uECG (alam ko, ito ay dapat na isang monitor ng ECG, ngunit dahil batay ito sa isang pangkaraniwang ADC, masusukat nito ang anumang mga biosignal - kabilang ang EMG). Para sa pagpoproseso ng EMG, ang uECG ay may isang espesyal na mode kung saan nagpapadala ito ng 32-bin spectrum data, at average na "window ng kalamnan" (average na spectral intensity sa pagitan ng 75 at 440 Hz). Ang mga imahe ng spectrum ay mukhang asul-berdeng mga pattern na nagbabago sa paglipas ng panahon. Narito ang dalas ay nasa isang patayong axis (sa bawat isa sa 3 mga lagay ng lupa, mababang dalas sa ilalim, mataas sa tuktok - mula 0 hanggang 488 Hz na may ~ 15 Hz na mga hakbang), ang oras ay nasa isang pahalang (lumang data sa kaliwa sa pangkalahatan dito ay tungkol sa 10 segundo sa screen). Ang intensidad ay naka-encode ng kulay: asul - mababa, berde - daluyan, dilaw - mataas, pula - kahit na mas mataas.

Hakbang 2: Pinasimple na Signal

Pinasimple na Signal
Pinasimple na Signal

Para sa isang maaasahang pagkilala sa kilos, kinakailangan ng tamang pagproseso ng PC ng mga spectral na imahe. Ngunit para sa simpleng pag-aktibo ng mga robotic na daliri ng kamay, sapat na itong gamitin lamang ang average na halaga sa 3 mga channel - maginhawang ibibigay ito ng uECG sa ilang mga byte ng packet upang ma-parse ito ng Arduino sketch. Ang mga halagang ito ay mukhang mas simple - Nag-attach ako ng isang tsart ng mga hilaw na halaga mula sa Serial Plotter ng Arduino. Ang pula, berde, asul na mga tsart ay hilaw na halaga mula sa 3 mga aparato ng uECG sa iba't ibang mga grupo ng kalamnan kapag pinipiga ko ang hinlalaki, singsing at gitnang mga daliri nang naaayon. Para sa aming mata ang mga kasong ito ay malinaw na magkakaiba, ngunit kailangan naming buksan ang mga halagang iyon sa "marka ng daliri" sa paanuman upang ang isang programa ay maaaring maglabas ng mga halaga sa mga servo ng kamay. Ang problema ay, ang mga signal mula sa mga pangkat ng kalamnan ay "halo-halong": sa ika-1 at ika-3 na kaso ang asul na signal intensity ay halos pareho - ngunit ang pula at berde ay magkakaiba. Sa ika-2 at ika-3 mga kaso ang mga berdeng signal ay pareho - ngunit ang asul at pula ay magkakaiba.

Hakbang 3: Pagpoproseso ng Signal

Pagpoproseso ng Signal
Pagpoproseso ng Signal

Upang "ma -mixmix" ang mga signal na ito, gumamit ako ng medyo simpleng formula:

S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), kung saan ang S0 - iskor para sa channel 0, V0, V1, V2 - mga hilaw na halaga para sa mga channel 0, 1, 2, at a, b, c, d - mga coefficients na kung saan ay inayos ko nang manu-mano (a at c ay mula sa 0.3 hanggang 2.0, b at d ay 15 at 20, kakailanganin mong baguhin ang mga ito upang maiayos para sa iyong partikular na pagkakalagay ng sensor). Ang parehong marka ay kinakalkula para sa mga channel 1 at 2. Pagkatapos nito, ang mga tsart ay halos perpektong pinaghiwalay. Para sa parehong mga galaw (oras na ito singsing daliri, gitna, at pagkatapos ay hinlalaki) mga signal ay malinaw at maaaring madaling isalin sa mga paggalaw ng servo sa pamamagitan lamang ng paghahambing sa threshold

Hakbang 4: Mga Skematika

Mga Skema
Mga Skema

Napakaliit ng schema, kailangan mo lamang ng nRF24 module, PCA9685 o katulad na I2C PWM controller, at mataas na suplay ng kuryente na 5V na sapat upang ilipat ang lahat ng mga servos na ito nang sabay-sabay (kaya nangangailangan ito ng hindi bababa sa 5A na na-rate na lakas para sa matatag na operasyon).

Listahan ng mga koneksyon: 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) - Ar12ino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GNN - + Arduino's GV - Arduino's Ang mga channel ng PCA 0-4, sa aking hinlalaki na notasyon - channel 0, hintuturo - channel 1 atbp.

Hakbang 5: Pagkalalagay ng Mga Sensor ng EMG

Pagkalalagay ng Mga Sensor ng EMG
Pagkalalagay ng Mga Sensor ng EMG
Pagkalalagay ng Mga Sensor ng EMG
Pagkalalagay ng Mga Sensor ng EMG

Upang makakuha ng makatuwirang pagbabasa, mahalagang maglagay ng mga uECG device, na nagtatala ng aktibidad ng kalamnan, sa mga tamang lugar. Habang maraming iba't ibang mga pagpipilian ang posible dito, ang bawat isa ay nangangailangan ng iba't ibang diskarte sa pagpoproseso ng signal - kaya sa aking code mas mainam na gumamit ng pagkakalagay na katulad ng aking mga larawan. Maaaring ito ay kontra-intuitive, ngunit ang signal ng thumb muscle ay mas nakikita sa tapat ng braso., kaya ang isa sa mga sensor ay inilalagay doon, at lahat ng mga ito ay inilalagay malapit sa siko (ang mga kalamnan ay may karamihan ng kanilang katawan sa lugar na iyon, ngunit nais mong suriin kung saan eksaktong lokasyon mo - mayroong isang malaking pagkakaiba-iba ng indibidwal)

Hakbang 6: Code

Bago patakbuhin ang pangunahing programa, kakailanganin mong malaman ang mga unit ID ng iyong partikular na mga aparato ng uECG (ginagawa ito sa pamamagitan ng pag-unsmenting linya 101 at pag-on isa-isang ang mga aparato, makikita mo ang ID ng kasalukuyang aparato bukod sa iba pang mga bagay) at punan ang mga ito unit_ids array (linya 37). Maliban dito, nais mong maglaro kasama ang mga coefficients ng pormula (mga linya 129-131) at suriin kung paano ito nakikita sa serial plotter bago ilakip ito sa robotic hand.

Hakbang 7: Mga Resulta

Sa ilang mga eksperimento na tumagal ng halos 2 oras, nakakuha ako ng lubos na maaasahang operasyon (nagpapakita ang video ng isang karaniwang kaso). Ito ay kumikilos na hindi perpekto at sa pagproseso na ito ay makikilala lamang ang bukas at sarado na mga daliri (at hindi kahit na ang bawat isa sa 5, nakakakita lamang ito ng 3 mga grupo ng kalamnan: hinlalaki, index at gitna na magkakasama, magkakasamang singsing at maliit na daliri). Ngunit ang "AI" na sumusuri sa signal ay tumatagal ng 3 mga linya ng code dito at gumagamit ng isang solong halaga mula sa bawat channel. Naniniwala ako na higit na magagawa sa pag-aaral ng 32-bin spectral na mga imahe sa PC o smartphone. Gayundin, ang bersyon na ito ay gumagamit lamang ng 3 mga uECG device (mga EMG channel). Sa maraming mga channel dapat posible na makilala ang talagang kumplikadong mga pattern - ngunit mabuti, iyon ang punto ng proyekto, upang magbigay ng ilang panimulang punto para sa sinumang interesado:) Ang kontrol sa kamay ay tiyak na hindi lamang ang application para sa naturang system.

Inirerekumendang: