विषयसूची:

ईएमजी के साथ रोबोटिक हैंड कंट्रोल: 7 कदम
ईएमजी के साथ रोबोटिक हैंड कंट्रोल: 7 कदम

वीडियो: ईएमजी के साथ रोबोटिक हैंड कंट्रोल: 7 कदम

वीडियो: ईएमजी के साथ रोबोटिक हैंड कंट्रोल: 7 कदम
वीडियो: Robotic Hand Controlled using EMG sensor and Machine Learning 2024, जुलाई
Anonim
Image
Image
सिग्नल अधिग्रहण
सिग्नल अधिग्रहण

यह परियोजना मांसपेशियों की गतिविधि (इलेक्ट्रोमोग्राम, ईएमजी) को मापने और संसाधित करने के लिए उपयोग किए जाने वाले 3 ओपनसोर्स यूईसीजी उपकरणों के साथ रोबोटिक हाथ (ओपनसोर्स हैंड इनमूव का उपयोग करके) का नियंत्रण दिखाती है। हमारी टीम के पास हाथों और उनके नियंत्रण के साथ एक लंबी कहानी है, और यह सही दिशा में एक अच्छा कदम है:)

आपूर्ति

3x uECG devices1x Arduino (मैं नैनो का उपयोग कर रहा हूं लेकिन अधिकांश अन्य काम करेंगे) 1x nRF24 मॉड्यूल (कोई भी सामान्य एक करेगा) 1x PCA9685 या समान सर्वो ड्राइवर 1x इनमूव हैंड 5x बड़े सर्वो (संगत प्रकारों के लिए Moov निर्देश देखें) 1x 5V बिजली की आपूर्ति सक्षम 5A या अधिक वर्तमान

चरण 1: सिग्नल अधिग्रहण

नियंत्रण ईएमजी - मांसपेशियों की विद्युत गतिविधि पर आधारित है। ईएमजी सिग्नल तीन यूईसीजी उपकरणों द्वारा प्राप्त किया जाता है (मुझे पता है, इसे ईसीजी मॉनिटर माना जाता है, लेकिन चूंकि यह एक सामान्य एडीसी पर आधारित है, यह ईएमजी सहित किसी भी बायोसिग्नल को माप सकता है)। ईएमजी प्रसंस्करण के लिए, यूईसीजी में एक विशेष मोड है जिसमें यह 32-बिन स्पेक्ट्रम डेटा, और "मांसपेशी विंडो" औसत (75 और 440 हर्ट्ज के बीच औसत वर्णक्रमीय तीव्रता) भेजता है। स्पेक्ट्रम की छवियां नीले-हरे पैटर्न की तरह दिखती हैं जो समय के साथ बदलती हैं। यहां आवृत्ति एक ऊर्ध्वाधर अक्ष पर है (3 भूखंडों में से प्रत्येक पर, नीचे की ओर कम आवृत्ति, शीर्ष पर उच्च - 0 से 488 हर्ट्ज तक ~ 15 हर्ट्ज चरणों के साथ), समय एक क्षैतिज पर है (यहां बाईं ओर पुराना डेटा है) स्क्रीन पर लगभग 10 सेकंड है)। तीव्रता रंग के साथ एन्कोडेड है: नीला - निम्न, हरा - मध्यम, पीला - उच्च, लाल - और भी अधिक।

चरण 2: सरलीकृत सिग्नल

सरलीकृत संकेत
सरलीकृत संकेत

एक विश्वसनीय हावभाव पहचान के लिए, इन वर्णक्रमीय छवियों के एक उचित पीसी प्रसंस्करण की आवश्यकता होती है। लेकिन रोबोटिक हाथ की उंगलियों के सरल सक्रियण के लिए, यह केवल 3 चैनलों पर औसत मूल्य का उपयोग करने के लिए पर्याप्त है - यूईसीजी आसानी से इसे कुछ पैकेट बाइट्स पर प्रदान करता है ताकि Arduino स्केच इसे पार्स कर सके। ये मान बहुत सरल दिखते हैं - मैंने Arduino के सीरियल प्लॉटर से कच्चे मूल्यों का एक चार्ट संलग्न किया है। लाल, हरा, नीला चार्ट विभिन्न मांसपेशी समूहों पर 3 यूईसीजी उपकरणों से कच्चे मान होते हैं जब मैं अंगूठे, अंगूठी और मध्य उंगलियों को संगत रूप से निचोड़ रहा होता हूं। हमारी नज़र के लिए ये मामले स्पष्ट रूप से अलग हैं, लेकिन हमें उन मानों को किसी भी तरह "फिंगर स्कोर" में बदलने की जरूरत है ताकि एक प्रोग्राम सर्वो को सौंपने के लिए मूल्यों को आउटपुट कर सके। समस्या यह है कि, मांसपेशी समूहों से संकेत "मिश्रित" होते हैं: पहले और तीसरे मामले में नीले सिग्नल की तीव्रता लगभग समान होती है - लेकिन लाल और हरे रंग अलग होते हैं। दूसरे और तीसरे मामलों में हरे रंग के सिग्नल समान होते हैं - लेकिन नीले और लाल अलग-अलग होते हैं।

चरण 3: सिग्नल प्रोसेसिंग

संकेत आगे बढ़ाना
संकेत आगे बढ़ाना

इन संकेतों को "अनमिक्स" करने के लिए, मैंने अपेक्षाकृत सरल सूत्र का उपयोग किया है:

S0=V0^2 / ((V1 *a0 +b0)(V2 * c0+d0)), जहां S0 - चैनल 0, V0, V1, V2 के लिए स्कोर - चैनल 0, 1, 2 और a के लिए अपरिष्कृत मान, बी, सी, डी - गुणांक जिन्हें मैंने मैन्युअल रूप से समायोजित किया था (ए और सी 0.3 से 2.0 तक थे, बी और डी 15 और 20 थे, वैसे भी आपको अपने विशेष सेंसर प्लेसमेंट के लिए समायोजित करने के लिए उन्हें बदलने की आवश्यकता होगी)। चैनल 1 और 2 के लिए समान स्कोर की गणना की गई। इसके बाद, चार्ट लगभग पूरी तरह से अलग हो गए। समान इशारों के लिए (इस बार अनामिका, मध्यमा और फिर अंगूठे) संकेत स्पष्ट हैं और केवल थ्रेशोल्ड के साथ तुलना करके आसानी से सर्वो आंदोलनों में अनुवाद किया जा सकता है

चरण 4: स्कैमैटिक्स

schematics
schematics

स्कैमैटिक्स काफी सरल है, आपको केवल nRF24 मॉड्यूल, PCA9685 या समान I2C PWM नियंत्रक, और उच्च amp 5V बिजली की आपूर्ति की आवश्यकता है जो इन सभी सर्वो को एक बार में स्थानांतरित करने के लिए पर्याप्त होगा (इसलिए इसे स्थिर संचालन के लिए कम से कम 5A रेटेड शक्ति की आवश्यकता होती है)।

कनेक्शन की सूची: nRF24 पिन 1 (GND) - Arduino का GNDnRF24 पिन 2 (Vcc) - Arduino का 3.3vnRF24 पिन 3 (चिप सक्षम करें) - Arduino का D9nRF24 पिन 4 (SPI: CS) - Arduino का D8nRF24 पिन 5 (SPI: SCK) - Arduino's D13nRF24 पिन 6 (SPI: MOSI) - Arduino का D11nRF24 पिन 7 (SPI: MISO) - Arduino का D12PCA9685 SDA - Arduino का A4PCA9685 SCL - Arduino का A5PCA9685 Vcc - Arduino का 5vPCA9685 GND - Arduino का GNDPCA9685 V+ - उच्च amp GND: 5VPCA9685 V+ - उच्च amp जीएनडीपीसीए 9685 एर सर्वो पीसीए चैनल 0-4, माई नोटेशन थंब-चैनल 0, इंडेक्स फिंगर-चैनल 1 आदि में।

चरण 5: ईएमजी सेंसर प्लेसमेंट

ईएमजी सेंसर प्लेसमेंट
ईएमजी सेंसर प्लेसमेंट
ईएमजी सेंसर प्लेसमेंट
ईएमजी सेंसर प्लेसमेंट

उचित रीडिंग प्राप्त करने के लिए, यूईसीजी उपकरणों को सही जगह पर रखना महत्वपूर्ण है, जो मांसपेशियों की गतिविधि को रिकॉर्ड कर रहे हैं। जबकि यहां कई अलग-अलग विकल्प संभव हैं, प्रत्येक को अलग सिग्नल प्रोसेसिंग दृष्टिकोण की आवश्यकता होती है - इसलिए मेरे कोड के साथ मेरी तस्वीरों के समान प्लेसमेंट का उपयोग करना सबसे अच्छा है। यह प्रति-सहज हो सकता है, लेकिन हाथ के विपरीत दिशा में अंगूठे की मांसपेशी संकेत बेहतर दिखाई देता है, इसलिए सेंसर में से एक को वहां रखा गया है, और उन सभी को कोहनी के करीब रखा गया है (मांसपेशियों का अधिकांश शरीर उस क्षेत्र में होता है, लेकिन आप यह जांचना चाहते हैं कि वास्तव में आपका कहां स्थित है - काफी बड़ा व्यक्तिगत अंतर है)

चरण 6: कोड

मुख्य कार्यक्रम चलाने से पहले, आपको अपने विशेष यूईसीजी उपकरणों की यूनिट आईडी का पता लगाना होगा (यह लाइन 101 को असंबद्ध करके और एक-एक करके उपकरणों को चालू करके किया जाता है, आप अन्य चीजों के साथ वर्तमान डिवाइस की आईडी देखेंगे) और उन्हें भरें Unit_ids सरणी (पंक्ति 37)। इसके अलावा, आप फॉर्मूला गुणांक (लाइन 129-131) के साथ खेलना चाहते हैं और रोबोटिक हाथ से जोड़ने से पहले यह जांचना चाहते हैं कि सीरियल प्लॉटर पर यह कैसा दिखता है।

चरण 7: परिणाम

लगभग 2 घंटे लगने वाले कुछ प्रयोगों के साथ, मैं काफी विश्वसनीय संचालन प्राप्त करने में सक्षम था (वीडियो एक विशिष्ट मामला दिखाता है)। यह पूरी तरह से व्यवहार नहीं करता है और इस प्रसंस्करण के साथ केवल खुली और बंद उंगलियों को पहचान सकता है (और 5 में से प्रत्येक भी नहीं, यह केवल 3 मांसपेशी समूहों का पता लगाता है: अंगूठे, सूचकांक और मध्य एक साथ, अंगूठी और छोटी उंगलियां एक साथ)। लेकिन "एआई" जो सिग्नल का विश्लेषण करता है, यहां कोड की 3 लाइनें लेता है और प्रत्येक चैनल से एक मान का उपयोग करता है। मेरा मानना है कि पीसी या स्मार्टफोन पर 32-बिन वर्णक्रमीय छवियों का विश्लेषण करके और अधिक किया जा सकता है। साथ ही, यह संस्करण केवल 3 यूईसीजी डिवाइस (ईएमजी चैनल) का उपयोग करता है। अधिक चैनलों के साथ वास्तव में जटिल पैटर्न को पहचानना संभव होना चाहिए - लेकिन ठीक है, यह परियोजना का बिंदु है, रुचि रखने वाले किसी भी व्यक्ति के लिए कुछ प्रारंभिक बिंदु प्रदान करना:) निश्चित रूप से हाथ नियंत्रण ऐसी प्रणाली के लिए एकमात्र आवेदन नहीं है।

सिफारिश की: