Mündəricat:

EMG ilə Robotik Əl Nəzarəti: 7 addım
EMG ilə Robotik Əl Nəzarəti: 7 addım

Video: EMG ilə Robotik Əl Nəzarəti: 7 addım

Video: EMG ilə Robotik Əl Nəzarəti: 7 addım
Video: L4D2 NECƏ QURULMALIDIR 2024, Noyabr
Anonim
Image
Image
Siqnal Alınması
Siqnal Alınması

Bu layihə, əzələ fəaliyyətini ölçmək və emal etmək üçün istifadə olunan 3 opensource uECG cihazı ilə (elektromiyogram, EMG) robot əlinin (opensource əlini inMoov istifadə edərək) idarə etməsini göstərir. Komandamızın əlləri və nəzarətləri ilə uzun bir hekayəsi var və bu düzgün istiqamətdə atılan yaxşı bir addımdır:)

Təchizat

3x uECG cihazları1x Arduino (Nano istifadə edirəm, amma digərlərinin əksəriyyəti işləyəcək) 1x nRF24 modulu (hər hansı bir ümumi) 1x PCA9685 və ya oxşar servo sürücü1x inMoov hand5x böyük servolar (uyğun tiplər üçün inMoov təlimatlarına baxın) 1x 5V enerji təchizatı 5A və ya daha çox cərəyan

Addım 1: Siqnal Alınması

Nəzarət EMG - əzələlərin elektrik fəaliyyətinə əsaslanır. EMG siqnalı üç uECG cihazı ilə əldə edilir (bilirəm ki, bu bir EKQ monitoru olmalıdır, amma ümumi bir ADC -yə əsaslandığı üçün hər hansı bir biosiqnalın ölçülməsi mümkündür - EMG də daxil olmaqla). EMG emalı üçün uECG, 32 binlik spektr məlumatlarını və "əzələ pəncərəsi" ortalamasını (75 ilə 440 Hz arasındakı orta spektral intensivliyi) göndərdiyi xüsusi bir rejimə malikdir. Spektr şəkilləri zamanla dəyişən mavi-yaşıl naxışlara bənzəyir. Burada tezlik şaquli bir ox üzərindədir (hər birinin 3 hissəsində, aşağı tezliyi aşağıda, yuxarıda - 0 ilə 488 Hz arasında ~ 15 Hz addımlarla), vaxt üfüqdədir (burada ümumi solda köhnə məlumatlar var) ekranda təxminən 10 saniyədir). Şiddət rənglə kodlanır: mavi - aşağı, yaşıl - orta, sarı - yüksək, qırmızı - daha da yüksək.

Addım 2: Sadələşdirilmiş Siqnal

Sadələşdirilmiş siqnal
Sadələşdirilmiş siqnal

Etibarlı bir jest tanınması üçün bu spektral görüntülərin düzgün bir PC işlənməsi tələb olunur. Robotik əl barmaqlarının sadə aktivləşdirilməsi üçün 3 kanalda orta dəyərdən istifadə etmək kifayətdir - uECG onu müəyyən paket baytlarda rahat şəkildə təmin edir ki, Arduino eskizi onu təhlil edə bilsin. Bu dəyərlər daha sadə görünür - Arduino Serial Plotter -dən xam dəyərlər cədvəli əlavə etdim. Qırmızı, yaşıl, mavi cədvəllər, baş barmağı, üzük və orta barmaqları müvafiq olaraq sıxarkən fərqli əzələ qruplarında 3 uECG cihazının xam dəyərləridir. Gözümüz üçün bu hallar açıq şəkildə fərqlidir, amma bir dəyərin "barmaq hesabına" çevrilməsi lazımdır ki, bir proqram əl servolarına dəyərlər çıxara bilsin. Problem ondadır ki, əzələ qruplarından gələn siqnallar "qarışıqdır": 1 -ci və 3 -cü halda mavi siqnalın intensivliyi təxminən eynidir - lakin qırmızı və yaşıl fərqlidir. 2 -ci və 3 -cü hallarda yaşıl siqnallar eynidir - ancaq mavi və qırmızı fərqlidir.

Addım 3: Siqnalın İşlənməsi

Siqnal İşlənməsi
Siqnal İşlənməsi

Bu siqnalları "qarışdırmaq" üçün nisbətən sadə bir düsturdan istifadə etdim:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0))), burada S0 - kanal 0, V0, V1, V2 - 0, 1, 2 və a kanalları üçün xam dəyərlər, b, c, d - əl ilə düzəltdiyim əmsallar (a və c 0,3 ilə 2,0 arasında, b və d 15 və 20 idi, onsuz da xüsusi sensor yerləşdirməyiniz üçün onları dəyişdirməlisiniz). Eyni hesab 1 və 2 -ci kanallar üçün hesablandı. Bundan sonra qrafiklər demək olar ki, mükəmməl şəkildə ayrıldı. Eyni jestlər üçün (bu dəfə üzük barmağı, orta və sonra baş barmaq) siqnallar aydındır və eşiklə müqayisə etməklə asanlıqla servo hərəkətlərə çevrilə bilər.

Addım 4: sxemlər

Sxemalar
Sxemalar

Sxemlər olduqca sadədir, yalnız nRF24 moduluna, PCA9685 və ya oxşar I2C PWM nəzarətçisinə və bütün bu servoları bir anda hərəkət etdirmək üçün kifayət edəcək yüksək amperli 5V enerji təchizatına ehtiyacınız var (buna görə sabit iş üçün ən az 5A nominal güc tələb olunur).

Bağlantıların siyahısı: nRF24 pin 1 (GND) - Arduino GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Çip Aktivləşdir) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino D8nRF24 pin 5 (SPI: SCK) - Arduino D13nRF24 pin 6 (SPI: MOSI) - Arduino D11nRF24 pin 7 (SPI: MISO) - Arduino D12PCA9685 SDA - Arduino A4PCA9685 SCL - Arduino nin A5PCA9685 Vcc - Arduinonun 5vPDCA9685 GND - 5GPPAA688 GND PCA kanalları 0-4, baş barmağımda - kanal 0, işarə barmağım - kanal 1 və s.

Addım 5: EMG Sensorlarının Yerləşdirilməsi

EMG Sensorlarının Yerləşdirilməsi
EMG Sensorlarının Yerləşdirilməsi
EMG Sensorlarının Yerləşdirilməsi
EMG Sensorlarının Yerləşdirilməsi

Ağlabatan oxunuşlar əldə etmək üçün əzələ fəaliyyətini qeyd edən uECG cihazlarını doğru yerlərə yerləşdirmək vacibdir. Burada bir çox fərqli seçim mümkün olsa da, hər biri fərqli bir siqnal işləmə yanaşması tələb edir - buna görə də mənim koduma uyğun olaraq fotoşəkillərimə bənzər yerləşdirmə istifadə etmək daha yaxşıdır., buna görə də sensorlardan biri oraya yerləşdirilir və hamısı dirsəyə yaxın yerləşdirilir (əzələlər bədəninin çox hissəsini bu bölgədə saxlayır, ancaq tam olaraq sizinki harada yerləşdiyini yoxlamaq istəyirsiniz - çox böyük fərdi fərq var)

Addım 6: Kod

Əsas proqramı işə salmadan əvvəl, xüsusi uECG cihazlarınızın vahid identifikatorlarını öyrənməlisiniz (bu, 101 -ci xəttin açılmaması və cihazların tək -tək açılması ilə edilir, digər şeylər arasında cari cihazın şəxsiyyətini görəcəksiniz) və onları doldurmalısınız. unit_ids serialı (sətir 37). Bundan başqa, formula əmsalları ilə oynamaq (xətlər 129-131) və robot əlinə bağlamadan əvvəl serial plotterdə necə göründüyünü yoxlamaq istəyirsən.

Addım 7: Nəticələr

Təxminən 2 saat çəkən bəzi təcrübələrlə kifayət qədər etibarlı əməliyyat əldə edə bildim (video tipik bir işi göstərir). Mükəmməl davranmır və bu işləmə ilə yalnız açıq və qapalı barmaqları tanıya bilir (və hətta 5 -dən də olmasa, yalnız 3 əzələ qrupunu aşkar edir: baş barmaq, şəhadət və orta birlikdə, üzük və kiçik barmaqlar birlikdə). Ancaq siqnalları analiz edən "AI" burada 3 satır kod götürür və hər kanaldan tək bir dəyər istifadə edir. İnanıram ki, kompüterdə və ya smartfonda 32 binlik spektral görüntüləri təhlil etməklə daha çox şey etmək olar. Ayrıca, bu versiyada yalnız 3 uECG cihazı (EMG kanalları) istifadə olunur. Daha çox kanal ilə həqiqətən mürəkkəb nümunələri tanımaq mümkün olmalıdır - amma yaxşı ki, maraqlı olan hər kəs üçün bir başlanğıc nöqtəsi təmin etmək üçün layihənin məqsədi budur:) Əllə idarəetmə, şübhəsiz ki, bu sistem üçün yeganə proqram deyil.

Tövsiyə: