فهرست مطالب:
- تدارکات
- مرحله 1: به دست آوردن سیگنال
- مرحله 2: سیگنال ساده شده
- مرحله 3: پردازش سیگنال
- مرحله 4: شماتیک
- مرحله 5: قرار دادن سنسورهای EMG
- مرحله 6: کد
- مرحله 7: نتایج
تصویری: کنترل دست رباتیک با EMG: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
این پروژه کنترل دست روباتیک (با استفاده از دست منبع باز 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
به منظور دستیابی به خواندن معقول ، مهم است که دستگاه های uECG ، که فعالیت عضلات را ثبت می کنند ، در مکان های مناسب قرار دهید. در حالی که بسیاری از گزینه های مختلف در اینجا امکان پذیر است ، هر کدام نیاز به روش پردازش سیگنال متفاوتی دارند - بنابراین در مورد کد من بهتر است از مکان مشابه عکس های من استفاده کنید. ممکن است ضدحسی باشد ، اما سیگنال ماهیچه شست در طرف مقابل بازو بهتر قابل مشاهده است ، بنابراین یکی از سنسورها در آنجا قرار می گیرد و همه آنها نزدیک به آرنج قرار می گیرند (ماهیچه ها بیشتر بدن خود را در آن ناحیه دارند ، اما شما می خواهید بررسی کنید محل دقیق شما در کجا قرار دارد - تفاوت فردی بسیار زیادی وجود دارد)
مرحله 6: کد
قبل از اجرای برنامه اصلی ، باید شناسه های واحد دستگاههای uECG خاص خود را بیابید (این امر با عدم اظهار نظر در خط 101 انجام می شود و دستگاهها را یکی پس از دیگری روشن می کنید ، در کنار سایر موارد ، شناسه دستگاه فعلی را مشاهده خواهید کرد) و آنها را وارد کنید آرایه unit_ids (خط 37). به غیر از این ، شما می خواهید با ضرایب فرمول (خطوط 129-131) بازی کنید و قبل از اتصال آن به دست رباتیک ، ظاهر آن را در پلاتر سریال بررسی کنید.
مرحله 7: نتایج
با آزمایشاتی که حدود 2 ساعت به طول انجامید ، من توانستم عمل کاملاً قابل اعتمادی انجام دهم (ویدیو یک مورد معمولی را نشان می دهد). این رفتار کاملاً خوب نیست و با این پردازش فقط می توان انگشتان باز و بسته را تشخیص داد (و حتی در هر 5 مورد ، فقط 3 گروه عضلانی را تشخیص می دهد: انگشت شست ، شاخص و وسط با هم ، انگشت حلقه و انگشتان کوچک با هم). اما "AI" که سیگنال را تجزیه و تحلیل می کند 3 خط کد در اینجا می گیرد و از یک مقدار واحد برای هر کانال استفاده می کند. من معتقدم با تجزیه و تحلیل تصاویر طیفی 32 بن در رایانه شخصی یا تلفن های هوشمند می توان کارهای بیشتری انجام داد. همچنین ، این نسخه فقط از 3 دستگاه uECG (کانال EMG) استفاده می کند. با استفاده از کانال های بیشتر می توان الگوهای واقعاً پیچیده را تشخیص داد - اما خوب ، این نقطه اصلی پروژه است ، تا بتواند نقطه شروع را برای هر کسی که علاقه مند است ارائه دهد.) کنترل دست قطعاً تنها برنامه کاربردی برای چنین سیستمی نیست.
توصیه شده:
بازوی رباتیک سه بعدی با استپر موتورهای کنترل شده با بلوتوث: 12 مرحله
بازوی رباتیک سه بعدی با موتورهای پله ای کنترل شده با بلوتوث: در این آموزش نحوه ساخت بازوی سه بعدی روباتیک ، با موتورهای پله ای 28byj-48 ، موتور سروو و قطعات چاپ سه بعدی را خواهیم دید. صفحه مدار چاپی ، کد منبع ، نمودار الکتریکی ، کد منبع و اطلاعات زیادی در وب سایت من موجود است
دست رباتیک کنترل صدا: 4 مرحله
Voice Control Robotic Hand: من یک بازوی روباتیک ایجاد کرده ام که با فرمان صوتی شما عمل می کند. بازوی ربات با ورودی گفتاری متصل طبیعی کنترل می شود. ورودی زبان به کاربر اجازه می دهد تا با روباتی که برای اکثر مردم آشنا است تعامل داشته باشد. پیشرفت
دست فوم رباتیک: 7 مرحله
Robotic Foam Hand: به این صورت است که می توانید یک دست روباتیک خانگی با استفاده از کف تهیه کنید. این پروژه با تشکر از پروفسور کریس آتکسون و TA جاناتان کینگ برای Humanoids 16-264 ساخته شده است
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
دست سوم ++: یک دست کمک چند منظوره برای لوازم الکترونیکی و سایر کارهای ظریف: 14 مرحله (همراه با تصاویر)
دست سوم ++: یک دست کمک چند منظوره برای لوازم الکترونیکی و سایر کارهای ظریف: در گذشته من از دستهای سوم/دست های کمکی موجود در فروشگاه های لوازم الکترونیکی زنجیره ای استفاده کرده ام و از قابلیت استفاده آنها ناامید شده ام. من هرگز نتوانستم کلیپ ها را دقیقاً در جایی که می خواستم دریافت کنم یا زمان بیشتری برای تنظیم طول کشید