Mündəricat:
- Təchizat
- Addım 1: Siqnal Alınması
- Addım 2: Sadələşdirilmiş Siqnal
- Addım 3: Siqnalın İşlənməsi
- Addım 4: sxemlər
- Addım 5: EMG Sensorlarının Yerləşdirilməsi
- Addım 6: Kod
- Addım 7: Nəticələr
Video: EMG ilə Robotik Əl Nəzarəti: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
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
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
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
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
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ə:
Menyu və Parlaqlıq Nəzarəti ilə M5StickC Sərin Görünən Saat: 8 addım
Menyu və Parlaqlıq İdarəçiliyi ilə M5StickC Sərin Görünüşlü Saat: Bu təlimatda ESP32 M5Stack StickC -ni Arduino IDE və Visuino ilə LCD -də bir vaxt göstərmək üçün necə proqramlaşdırmağı öyrənəcəyik, həmçinin menyudan və StickC düymələrindən istifadə edərək vaxtı və parlaqlığı təyin edəcəyik. Bir nümayiş videosuna baxın
Sadə Jest Nəzarəti - Qolunuzun Hərəkəti ilə RC Oyuncaqlarınızı İdarə Edin: 4 Addım (Şəkillərlə)
Sadə Jest Nəzarəti - Qolunuzun Hərəkəti ilə RC Oyuncaqlarınızı İdarə Edin: 'ible' #45 -ə xoş gəldiniz. Bir müddət əvvəl Lego Star Wars hissələrini istifadə edərək BB8-in tam işlək bir RC versiyasını hazırladım … https://www.instructables.com/id/Whats-Inside-My-R… Nə qədər sərin olduğunu görəndə Sphero tərəfindən hazırlanan Force Band, düşündüm: "Tamam, mən
Tft Lcd ilə Soyuducu Nəzarəti: 6 addım
Tft Lcd ilə Soyuducu İdarəçiliyi: Texnologiyanın davamlı təkmilləşdirilməsi ilə məişət texnikamız getdikcə daha çox işlək və istifadəsi daha asan olur. Bir elektronika həvəskarı olaraq məişət texnikasının idarə olunması ilə maraqlanıram. Soyuducumuz heç bir insan maşınla mümkün deyil
ESP8266, Google Home və Openhab İnteqrasiyası və Veb Nəzarəti ilə Pərdələrə Nəzarət: 5 Addım (Şəkillərlə birlikdə)
ESP8266, Google Home və Openhab İnteqrasiyası və Veb Nəzarəti ilə Pərdələrə Nəzarət: Bu Təlimat kitabında pərdələrimə avtomatlaşdırmanı necə əlavə etdiyimi göstərirəm. Avtomatlaşdırmanı əlavə edə və silə bilmək istədim, buna görə də bütün quraşdırma klipdədir. Əsas hissələr bunlardır: Step motor Stepper sürücüsü idarə olunan bij ESP-01 Ötürücü və montaj
Smartphone 4WD Robot Car ilə Video Yayımı və Nəzarəti (Bluetooth üzərindən): 5 addım
Smartphone 4WD Robot Car ilə Video Yayımı və Nəzarəti (Bluetooth üzərindən): Salam! Arduino üçün unikal TFT qalxanına həsr olunmuş məqalələr silsiləsinə davam edirəm. Bu məqalə " görmə qabiliyyəti " görüntüləri ötürəcək ümumi və ucuz bir kamera OV7670 istifadə edərək