Isi kandungan:

Kawalan Tangan Robotik Dengan EMG: 7 Langkah
Kawalan Tangan Robotik Dengan EMG: 7 Langkah

Video: Kawalan Tangan Robotik Dengan EMG: 7 Langkah

Video: Kawalan Tangan Robotik Dengan EMG: 7 Langkah
Video: How To Make a Robotic Hand | DIY Paper Robot Hand | Science Project 2024, Julai
Anonim
Image
Image
Pemerolehan Isyarat
Pemerolehan Isyarat

Projek ini menunjukkan kawalan tangan robot (menggunakan handsource opens inMoov) dengan 3 peranti uECG opensource yang digunakan untuk mengukur dan memproses aktiviti otot (elektromioogram, EMG). Pasukan kami mempunyai kisah panjang dengan tangan dan kawalan mereka, dan ini adalah langkah yang baik ke arah yang betul:)

Bekalan

3x peranti UECG 1x Arduino (saya menggunakan Nano tetapi kebanyakan yang lain berfungsi) modul 1x nRF24 (mana-mana generik yang akan dilakukan) 1x PCA9685 atau pemacu servo yang serupa1x inMoov hand5x servo besar (lihat arahan inMoov untuk jenis yang serasi) 1x 5V power supply mampu 5A atau lebih semasa

Langkah 1: Pemerolehan Isyarat

Kawalan dibuat berdasarkan EMG - aktiviti elektrik otot. Isyarat EMG diperoleh oleh tiga peranti uECG (saya tahu, ia semestinya monitor ECG, tetapi kerana berdasarkan pada ADC generik, ia dapat mengukur sebarang biosignal - termasuk EMG). Untuk pemprosesan EMG, uECG mempunyai mod khas di mana ia mengirimkan data spektrum 32-bin, dan rata-rata "tetingkap otot" (intensiti spektrum rata-rata antara 75 dan 440 Hz). Imej spektrum kelihatan seperti corak biru-hijau yang berubah dari masa ke masa. Di sini frekuensi berada pada paksi menegak (pada setiap 3 petak, frekuensi rendah di bahagian bawah, tinggi di bahagian atas - dari 0 hingga 488 Hz dengan langkah ~ 15 Hz), masa berada pada arah mendatar (data lama di sebelah kiri keseluruhan di sini kira-kira 10 saat di skrin). Intensiti dikodkan dengan warna: biru - rendah, hijau - sederhana, kuning - tinggi, merah - bahkan lebih tinggi.

Langkah 2: Isyarat Ringkas

Isyarat Ringkas
Isyarat Ringkas

Untuk pengecaman gerak isyarat yang boleh dipercayai, diperlukan pemprosesan PC yang betul dari gambar spektral ini. Tetapi untuk pengaktifan jari tangan robotik, cukup hanya menggunakan nilai rata-rata pada 3 saluran - uECG dengan mudah menyediakannya pada bait paket tertentu sehingga lakaran Arduino dapat menguraikannya. Nilai-nilai ini kelihatan lebih sederhana - saya telah melampirkan carta nilai mentah dari Arduino's Serial Plotter. Carta merah, hijau, biru adalah nilai mentah dari 3 peranti uECG pada kumpulan otot yang berlainan ketika saya menekan jempol, jari dan jari tengah. Bagi pandangan kita, kes-kes ini jelas berbeza, tetapi kita perlu mengubah nilai-nilai itu menjadi "skor jari" entah bagaimana program dapat menghasilkan nilai ke tangan servo. Masalahnya adalah, isyarat dari kumpulan otot "bercampur": dalam kes 1 dan 3 intensiti isyarat biru hampir sama - tetapi merah dan hijau berbeza. Dalam kes 2 dan 3 isyarat hijau sama - tetapi biru dan merah berbeza.

Langkah 3: Pemprosesan Isyarat

Pemprosesan isyarat
Pemprosesan isyarat

Untuk "mencampurkan" isyarat ini, saya telah menggunakan formula yang agak mudah:

S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), di mana S0 - skor untuk saluran 0, V0, V1, V2 - nilai mentah untuk saluran 0, 1, 2, dan a, b, c, d - pekali yang saya sesuaikan secara manual (a dan c adalah dari 0,3 hingga 2,0, b dan d adalah 15 dan 20, anda perlu mengubahnya untuk menyesuaikan dengan penempatan sensor tertentu anda). Skor yang sama dikira untuk saluran 1 dan 2. Selepas ini, carta menjadi hampir sempurna. Untuk isyarat yang sama (jari manis kali ini, tengah, dan kemudian ibu jari) isyarat jelas dan dapat diterjemahkan dengan mudah ke dalam pergerakan servo hanya dengan membandingkan dengan ambang

Langkah 4: Skematik

Skematik
Skematik

Skema cukup mudah, anda hanya memerlukan modul nRF24, pengawal PCA9685 atau I2C PWM yang serupa, dan bekalan kuasa amp 5V tinggi yang cukup untuk menggerakkan semua servo ini sekaligus (jadi memerlukan sekurang-kurangnya 5A kuasa untuk operasi yang stabil).

Senarai sambungan: 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 A5PCA9685 Vcc - Arduino's 5vPCA9685 GND - V555 GND - Arbino-G5 Saluran PCA 0-4, di ibu jari notasi saya - saluran 0, jari telunjuk - saluran 1 dll.

Langkah 5: Penempatan Sensor EMG

Penempatan Sensor EMG
Penempatan Sensor EMG
Penempatan Sensor EMG
Penempatan Sensor EMG

Untuk mendapatkan pembacaan yang wajar, penting untuk meletakkan peranti uECG, yang merakam aktiviti otot, di tempat yang betul. Walaupun terdapat banyak pilihan yang berbeza di sini, masing-masing memerlukan pendekatan pemprosesan isyarat yang berbeza - jadi dengan kod saya, lebih baik menggunakan penempatan yang serupa dengan foto saya. Ia mungkin berlawanan dengan intuisi, tetapi isyarat otot ibu jari lebih baik dilihat di bahagian lawan lengan, jadi salah satu sensor diletakkan di sana, dan semuanya diletakkan dekat dengan siku (otot mempunyai sebahagian besar badan mereka di kawasan itu, tetapi anda ingin memeriksa di mana tepatnya lokasi anda - terdapat perbezaan individu yang cukup besar)

Langkah 6: Kod

Sebelum menjalankan program utama, anda perlu mengetahui ID unit peranti uECG tertentu anda (ia dilakukan dengan melepaskan baris 101 dan menghidupkan peranti satu persatu, anda akan melihat ID peranti semasa antara lain) dan memasukkannya ke dalam susunan unit_id (baris 37). Selain daripada ini, anda ingin bermain dengan pekali formula (garis 129-131) dan periksa bagaimana rupa pada plotter bersiri sebelum memasangkannya ke tangan robot.

Langkah 7: Hasil

Dengan beberapa eksperimen yang memakan masa sekitar 2 jam, saya dapat menjalani operasi yang cukup dipercayai (video menunjukkan kes khas). Ia berkelakuan tidak sempurna dan dengan pemprosesan ini hanya dapat mengenali jari yang terbuka dan tertutup (dan tidak juga masing-masing dari 5, ia hanya mengesan 3 kumpulan otot: ibu jari, telunjuk dan tengah bersama, cincin dan jari kelingking bersama). Tetapi "AI" yang menganalisis isyarat mengambil 3 baris kod di sini dan menggunakan satu nilai dari setiap saluran. Saya percaya lebih banyak cara dapat dilakukan dengan menganalisis gambar spektrum 32-bin pada PC atau telefon pintar. Juga, versi ini hanya menggunakan 3 peranti uECG (saluran EMG). Dengan lebih banyak saluran, kita mungkin dapat mengenali corak yang sangat kompleks - tetapi, inilah titik projek, untuk menyediakan beberapa titik permulaan bagi sesiapa yang berminat:) Kawalan tangan bukanlah satu-satunya aplikasi untuk sistem tersebut.

Disyorkan: