فهرست مطالب:

کنترل دست رباتیک با EMG: 7 مرحله
کنترل دست رباتیک با EMG: 7 مرحله

تصویری: کنترل دست رباتیک با EMG: 7 مرحله

تصویری: کنترل دست رباتیک با EMG: 7 مرحله
تصویری: لحظه دستگیری قاتل که دو فرد را در کنار خیابان سر برید ! 2024, نوامبر
Anonim
Image
Image
خرید سیگنال
خرید سیگنال

این پروژه کنترل دست روباتیک (با استفاده از دست منبع باز inMoov) با 3 دستگاه منبع باز uECG برای اندازه گیری و پردازش فعالیت ماهیچه ها (الکترومیوگرافی ، EMG) را نشان می دهد. تیم ما داستانی طولانی با دستان و کنترل آنها دارد و این گام خوبی در جهت درست است:)

تدارکات

3x دستگاه های uECG 1x آردوینو (من از نانو استفاده می کنم اما اکثر دیگران کار می کنند) 1x ماژول nRF24 (هر فرد معمولی می تواند انجام دهد) 1x PCA9685 یا درایور سرو مشابه 1 برابر inMoov hand5x سرویس بزرگ (به دستورالعمل های Moov برای انواع سازگار مراجعه کنید) منبع تغذیه 1x 5V جریان 5A یا بیشتر

مرحله 1: به دست آوردن سیگنال

کنترل بر اساس EMG - فعالیت الکتریکی ماهیچه ها است. سیگنال EMG توسط سه دستگاه uECG به دست می آید (من می دانم ، این یک مانیتور ECG است ، اما از آنجا که بر اساس ADC عمومی است ، می تواند هرگونه نشانگر زیستی - از جمله EMG را اندازه گیری کند). برای پردازش EMG ، uECG دارای حالت خاصی است که در آن داده های طیف 32 سطحی و میانگین "پنجره ماهیچه" (میانگین طیفی بین 75 تا 440 هرتز) را ارسال می کند. تصاویر طیفی شبیه الگوهای آبی-سبز هستند که با گذشت زمان تغییر می کنند. در اینجا فرکانس در یک محور عمودی است (در هر 3 نمودار ، فرکانس پایین در پایین ، بالا در بالا - از 0 تا 488 هرتز با مراحل ~ 15 هرتز) ، زمان به صورت افقی است (داده های قدیمی در سمت چپ به طور کلی در اینجا حدود 10 ثانیه روی صفحه است). شدت با رنگ کدگذاری می شود: آبی - کم ، سبز - متوسط ، زرد - بالا ، قرمز - حتی بیشتر.

مرحله 2: سیگنال ساده شده

سیگنال ساده شده
سیگنال ساده شده

برای تشخیص حرکات قابل اعتماد ، پردازش مناسب این تصاویر طیفی با رایانه مورد نیاز است. اما برای فعال سازی ساده انگشتان دست روباتیک ، کافی است فقط از مقدار متوسط در 3 کانال استفاده کنید - uECG به راحتی آن را در بایت بسته های خاصی ارائه می دهد تا طرح آردوینو بتواند آن را تجزیه کند. این مقادیر بسیار ساده تر به نظر می رسند - من نمودار مقادیر خام از Serial Plotter آردوینو را ضمیمه کرده ام. نمودارهای قرمز ، سبز ، آبی مقادیر خام 3 دستگاه uECG در گروه های مختلف ماهیچه ای هستند که من به طور همزمان انگشت شست ، حلقه و وسط را فشار می دهم. از نظر ما این موارد به وضوح متفاوت هستند ، اما ما باید این مقادیر را به "نمره انگشت" تبدیل کنیم تا برنامه بتواند مقادیر را برای سروهای دستی ارسال کند. مشکل این است که سیگنال های گروه های عضلانی "مخلوط" هستند: در مورد 1 و 3 شدت سیگنال آبی تقریباً یکسان است - اما قرمز و سبز متفاوت هستند. در موارد دوم و سوم سیگنال های سبز یکسان هستند - اما آبی و قرمز متفاوت هستند.

مرحله 3: پردازش سیگنال

پردازش سیگنال
پردازش سیگنال

به منظور "اختلاط" این سیگنالها ، از یک فرمول نسبتاً ساده استفاده کرده ام:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)) ، جایی که S0 - نمره برای کانال 0 ، V0 ، V1 ، V2 - مقادیر خام برای کانالهای 0 ، 1 ، 2 و a ، b ، c ، d - ضرایبی که من به صورت دستی تنظیم کردم (a و c از 0.3 تا 2.0 ، b و d 15 و 20 بود ، شما باید آنها را برای تنظیم محل قرارگیری سنسور خاص خود به هر حال تغییر دهید). نمره یکسان برای کانالهای 1 و 2 محاسبه شد. پس از این ، نمودارها تقریباً کاملاً از هم جدا شدند. برای حرکات یکسان (اینبار انگشت حلقه ، وسط و سپس انگشت شست) سیگنال ها واضح هستند و فقط با مقایسه با آستانه به راحتی به حرکات سروو تبدیل می شوند

مرحله 4: شماتیک

طرحواره ها
طرحواره ها

شماتیک بسیار ساده است ، شما فقط به ماژول nRF24 ، PCA9685 یا کنترلر I2C PWM مشابه و منبع تغذیه 5 آمپر قوی نیاز دارید که بتواند همه این سرووها را به طور همزمان حرکت دهد (بنابراین برای عملکرد پایدار به حداقل توان 5A نیاز دارد).

لیست اتصالات: پین nRF24 1 (GND) - پین GNDnRF24 آردوینو 2 (Vcc) - پین 3.3vnRF24 3 آردوینو (فعال کردن تراشه) - پین 4 Arduino's D9nRF24 4 (SPI: CS) - پین 5 Arduino's D8nRF24 5 (SPI: SCK) - آردوینو پین D13nRF24 6 (SPI: MOSI) - پین 7 Arduino's D11nRF24 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPC998585 G - C کانالهای PCA 0-4 ، در انگشت شست من - کانال 0 ، انگشت اشاره - کانال 1 و غیره

مرحله 5: قرار دادن سنسورهای EMG

قرار دادن سنسورهای EMG
قرار دادن سنسورهای EMG
قرار دادن سنسورهای EMG
قرار دادن سنسورهای EMG

به منظور دستیابی به خواندن معقول ، مهم است که دستگاه های uECG ، که فعالیت عضلات را ثبت می کنند ، در مکان های مناسب قرار دهید. در حالی که بسیاری از گزینه های مختلف در اینجا امکان پذیر است ، هر کدام نیاز به روش پردازش سیگنال متفاوتی دارند - بنابراین در مورد کد من بهتر است از مکان مشابه عکس های من استفاده کنید. ممکن است ضدحسی باشد ، اما سیگنال ماهیچه شست در طرف مقابل بازو بهتر قابل مشاهده است ، بنابراین یکی از سنسورها در آنجا قرار می گیرد و همه آنها نزدیک به آرنج قرار می گیرند (ماهیچه ها بیشتر بدن خود را در آن ناحیه دارند ، اما شما می خواهید بررسی کنید محل دقیق شما در کجا قرار دارد - تفاوت فردی بسیار زیادی وجود دارد)

مرحله 6: کد

قبل از اجرای برنامه اصلی ، باید شناسه های واحد دستگاههای uECG خاص خود را بیابید (این امر با عدم اظهار نظر در خط 101 انجام می شود و دستگاهها را یکی پس از دیگری روشن می کنید ، در کنار سایر موارد ، شناسه دستگاه فعلی را مشاهده خواهید کرد) و آنها را وارد کنید آرایه unit_ids (خط 37). به غیر از این ، شما می خواهید با ضرایب فرمول (خطوط 129-131) بازی کنید و قبل از اتصال آن به دست رباتیک ، ظاهر آن را در پلاتر سریال بررسی کنید.

مرحله 7: نتایج

با آزمایشاتی که حدود 2 ساعت به طول انجامید ، من توانستم عمل کاملاً قابل اعتمادی انجام دهم (ویدیو یک مورد معمولی را نشان می دهد). این رفتار کاملاً خوب نیست و با این پردازش فقط می توان انگشتان باز و بسته را تشخیص داد (و حتی در هر 5 مورد ، فقط 3 گروه عضلانی را تشخیص می دهد: انگشت شست ، شاخص و وسط با هم ، انگشت حلقه و انگشتان کوچک با هم). اما "AI" که سیگنال را تجزیه و تحلیل می کند 3 خط کد در اینجا می گیرد و از یک مقدار واحد برای هر کانال استفاده می کند. من معتقدم با تجزیه و تحلیل تصاویر طیفی 32 بن در رایانه شخصی یا تلفن های هوشمند می توان کارهای بیشتری انجام داد. همچنین ، این نسخه فقط از 3 دستگاه uECG (کانال EMG) استفاده می کند. با استفاده از کانال های بیشتر می توان الگوهای واقعاً پیچیده را تشخیص داد - اما خوب ، این نقطه اصلی پروژه است ، تا بتواند نقطه شروع را برای هر کسی که علاقه مند است ارائه دهد.) کنترل دست قطعاً تنها برنامه کاربردی برای چنین سیستمی نیست.

توصیه شده: