विषयसूची:

रोबोटिक आर्म: जेन्सेन: 4 कदम
रोबोटिक आर्म: जेन्सेन: 4 कदम

वीडियो: रोबोटिक आर्म: जेन्सेन: 4 कदम

वीडियो: रोबोटिक आर्म: जेन्सेन: 4 कदम
वीडियो: Humanoid - Jansen Walking Mechanism 🚶‍♀ 2024, नवंबर
Anonim
रोबोटिक आर्म: जेन्सेन
रोबोटिक आर्म: जेन्सेन

जेन्सेन एक रोबोटिक आर्म है जिसे अरुडिनो प्लेटफॉर्म पर बनाया गया है जिसमें सहज गति योजना पर ध्यान केंद्रित किया गया है, जिसे चार्ल्स बी मलोच, पीएचडी से परामर्श के तहत 1 क्रेडिट स्वतंत्र परियोजना के रूप में किया गया है। यह हाथ को मैन्युअल रूप से घुमाकर प्रोग्राम किए गए आंदोलनों की एक श्रृंखला को दोहरा सकता है। मुझे इसे बनाने की प्रेरणा UMass Amherst M5 मेकरस्पेस में निर्मित अन्य रोबोटिक हथियारों को देखने से मिली। इसके अलावा, मैं सीएडी सॉफ्टवेयर का उपयोग करना सीखना चाहता था और मैं एक उन्नत Arduino प्रोजेक्ट बनाना चाहता था। मैंने इसे उन सभी चीजों को करने के अवसर के रूप में देखा।

चरण 1: मूल डिजाइन और दायरा

मूल डिजाइन और दायरा
मूल डिजाइन और दायरा

इस प्रोजेक्ट के लिए मैंने जो CAD सॉफ्टवेयर सीखने के लिए चुना था, वह था OnShape, और पहली चीज जो मैंने मॉडलिंग की थी, वह थी HiTec HS-422 एनालॉग सर्वो। मैंने सर्वो को चुना क्योंकि यह मेरे लिए स्थानीय रूप से उपलब्ध था और यह एक उचित मूल्य था। इसने अपने स्वयं के भागों को डिजाइन करने के लिए आगे बढ़ने से पहले ऑनशेप सीखने के लिए अच्छे अभ्यास के रूप में भी काम किया। परियोजना के इस शुरुआती बिंदु पर, मुझे इस बात का सामान्य अंदाजा था कि मैं क्या चाहता हूं कि हाथ सक्षम हो। मैं चाहता था कि इसमें गति की एक अच्छी रेंज हो और चीजों को उठाने के लिए एक ग्रिपर हो। इन सामान्य विनिर्देशों ने डिजाइन को सूचित किया क्योंकि मैंने इसे सीएडी में मॉडलिंग करना जारी रखा था। इस बिंदु पर मेरे पास एक अन्य डिज़ाइन बाधा मेरे 3D प्रिंटर पर प्रिंट बेड के आकार की थी। इसलिए ऊपर की तस्वीर में आप जो आधार देख रहे हैं वह अपेक्षाकृत आदिम वर्ग है।

परियोजना के इस चरण के दौरान, मैं यह भी सोच रहा था कि मैं हाथ को कैसे नियंत्रित करना चाहता हूं। एक रोबोटिक बांह जिसे मैं मेकर्सस्पेस में प्रेरित करता था, नियंत्रण के लिए एक कठपुतली बांह का इस्तेमाल करता था। एक अन्य ने एक सहज पथ प्रोग्रामिंग पद्धति का उपयोग किया जिसमें उपयोगकर्ता द्वारा हाथ को विभिन्न पदों पर ले जाया गया। फिर हाथ उन स्थितियों के माध्यम से वापस चक्र करेगा।

मेरी मूल योजना हाथ के निर्माण को समाप्त करने और फिर इन दोनों नियंत्रण विधियों को लागू करने की थी। मैं उसके बाद किसी बिंदु पर इसे नियंत्रित करने के लिए एक कंप्यूटर एप्लिकेशन भी बनाना चाहता था। जैसा कि आप शायद बता सकते हैं, मैंने परियोजना के इस पहलू के दायरे को कम कर दिया। जब मैंने उन पहले दो नियंत्रण विधियों पर काम करना शुरू किया, तो मैंने जल्दी से पाया कि सहज ज्ञान युक्त पथ प्रोग्रामिंग मेरे विचार से कहीं अधिक जटिल थी। तभी मैंने इसे अपना ध्यान केंद्रित करने का फैसला किया और अन्य नियंत्रण विधियों को अनिश्चित काल के लिए रोक दिया।

चरण 2: नियंत्रण

नियंत्रण
नियंत्रण

मैंने जो नियंत्रण का तरीका चुना वह इस तरह काम करता है: आप अपने हाथों से हाथ को विभिन्न स्थितियों में ले जाते हैं और उन पदों को "सहेजते" हैं। प्रत्येक स्थिति में हाथ की प्रत्येक कड़ी के बीच के कोण के बारे में जानकारी होती है। आपके द्वारा पदों को सहेजना समाप्त करने के बाद, आप एक प्लेबैक बटन दबाते हैं और हाथ क्रम में उनमें से प्रत्येक स्थिति में वापस आ जाता है।

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

मैं अब पोटेंशियोमीटर के मध्य पिन पर वोल्टेज को पढ़कर करंट एंगल प्राप्त कर सकता था। हालाँकि, दो नई समस्याएं थीं। सबसे पहले बीच के पिन से आने वाले सिग्नल पर वोल्टेज स्पाइक्स के रूप में शोर होता था। यह समस्या बाद में एक वास्तविक समस्या बन गई। दूसरे, कोण भेजने और कोण प्राप्त करने के लिए मानों की सीमा भिन्न थी।

हॉबी सर्वो मोटर्स को 0 और 180 डिग्री के बीच किसी कोण पर ले जाने के लिए कहना, इसे कोण के अनुरूप उच्च समय के साथ पीडब्लूएम सिग्नल भेजना शामिल है। इसके विपरीत, 0 और 180 डिग्री के बीच सर्वो हॉर्न को घुमाने के दौरान पोटेंशियोमीटर के मध्य पिन पर वोल्टेज को पढ़ने के लिए Arduino के एक एनालॉग इनपुट पिन का उपयोग करके मूल्यों की एक अलग श्रेणी देता है। इसलिए, सहेजे गए इनपुट मान को संबंधित PWM आउटपुट मान में अनुवाद करने के लिए कुछ गणित की आवश्यकता थी, जो सर्वो को उसी कोण पर वापस करने के लिए आवश्यक था।

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

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

मैंने आउटपुट पर एक एक्सपोनेंलिली वेटेड मूविंग एवरेज (EWMA) फिल्टर लगाकर अत्यधिक त्वरित त्वरण की समस्या को हल किया। आउटपुट के औसत से, गति में बड़े स्पाइक्स कम हो गए (शोर से घबराना सहित)। हालाँकि, इनपुट सिग्नल पर शोर अभी भी एक समस्या थी, इसलिए मेरी परियोजना का अगला चरण इसे हल करने का प्रयास कर रहा था।

चरण 3: शोर

शोर
शोर

ऊपर चित्र

लाल रंग में: मूल इनपुट संकेत

नीले रंग में: प्रसंस्करण के बाद इनपुट संकेत

इनपुट सिग्नल पर शोर को कम करने का पहला कदम इसके कारण को समझना था। एक आस्टसीलस्कप पर संकेत की जांच से पता चला कि वोल्टेज स्पाइक्स 50 हर्ट्ज की दर से हो रहे थे। मुझे पता चला कि सर्वो को भेजा जा रहा पीडब्लूएम सिग्नल भी 50 हर्ट्ज की दर से था, इसलिए मैंने अनुमान लगाया कि वोल्टेज स्पाइक्स का इससे कुछ लेना-देना है। मैंने अनुमान लगाया कि सर्वो की गति किसी तरह पोटेंशियोमीटर के वी + पिन पर वोल्टेज स्पाइक्स पैदा कर रही थी, जो बदले में मध्य पिन पर रीडिंग को गड़बड़ कर रही थी।

यहीं पर मैंने शोर को कम करने का पहला प्रयास किया। मैंने प्रत्येक सर्वो को फिर से खोला और पोटेंशियोमीटर पर V + पिन से आने वाला एक तार जोड़ा। मुझे उन्हें पढ़ने के लिए Arduino Uno की तुलना में अधिक एनालॉग इनपुट की आवश्यकता थी, इसलिए मैं इस बिंदु पर एक Arduino मेगा में भी चला गया। अपने कोड में, मैंने कोण इनपुट को मध्य पिन पर वोल्टेज के एनालॉग रीडिंग से मध्य पिन पर वोल्टेज के बीच के अनुपात में V + पिन पर वोल्टेज के अनुपात में बदल दिया। मेरी आशा थी कि अगर पिनों पर वोल्टेज स्पाइक होता, तो यह अनुपात में रद्द हो जाता।

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

मुझे समझ नहीं आया कि ऐसा क्यों हो रहा है, इसलिए मैंने आखिरकार सर्वो में अपने जमीनी कनेक्शन की जांच की। पूरे मैदान में लगभग ०.३ वोल्ट की औसत वोल्टेज ड्रॉप थी, और जब सर्वो ने करंट खींचा तो यह और भी अधिक बढ़ गया। तब मेरे लिए यह स्पष्ट था कि उन पिनों को अब "ग्राउंड" नहीं माना जा सकता था और उन्हें "संदर्भ" पिन के रूप में बेहतर तरीके से वर्णित किया जा सकता था। सर्वो में नियंत्रण बोर्ड वी + और संदर्भ पिन दोनों पर वोल्टेज के सापेक्ष पोटेंशियोमीटर के मध्य पिन पर वोल्टेज को माप रहे होंगे। पोटेंशियोमीटर को अलग से चलाने से उस सापेक्ष माप में गड़बड़ी हुई क्योंकि अब सभी पिनों पर वोल्टेज स्पाइक होने के बजाय, यह केवल संदर्भ पिन पर हुआ।

मेरे गुरु, डॉ मलोच ने मुझे यह सब डिबग करने में मदद की और सुझाव दिया कि मैं अन्य पिनों के सापेक्ष मध्य पिन पर वोल्टेज को भी मापता हूं। कोण इनपुट के शोर को कम करने के अपने तीसरे और अंतिम प्रयास के लिए मैंने यही किया। मैंने प्रत्येक सर्वो को खोला, मेरे द्वारा काटे गए तार को फिर से जोड़ा, और पोटेंशियोमीटर पर संदर्भ पिन से आने वाले तीसरे तार को जोड़ा। अपने कोड में, मैंने कोण इनपुट को निम्नलिखित अभिव्यक्ति के बराबर बनाया: (मध्य पिन - संदर्भ पिन) / (वी + पिन - संदर्भ पिन)। मैंने इसका परीक्षण किया और इसने वोल्टेज स्पाइक्स के प्रभाव को सफलतापूर्वक कम कर दिया। इसके अलावा, मैंने इस इनपुट पर एक EWMA फ़िल्टर भी लगाया है। यह संसाधित संकेत और मूल संकेत ऊपर चित्रित किया गया है।

चरण 4: चीजों को लपेटना

चीजों को लपेटना
चीजों को लपेटना

शोर की समस्या को अपनी सर्वश्रेष्ठ क्षमता के साथ हल करने के साथ, मैंने डिजाइन के अंतिम भागों को ठीक करने और बनाने के बारे में सोचा। हाथ आधार में सर्वो पर बहुत अधिक भार डाल रहा था, इसलिए मैंने एक नया आधार बनाया जो एक बड़े असर का उपयोग करके हाथ के वजन का समर्थन करता है। मैंने ग्रिपर को भी प्रिंट किया और इसे काम करने के लिए उस पर थोड़ी सी सैंडिंग की।

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

सीएडी दस्तावेज़:

cad.onshape.com/documents/818ea878dda7ca2f…

सिफारिश की: