विषयसूची:

MATLAB नियंत्रित रूमबा: 5 कदम
MATLAB नियंत्रित रूमबा: 5 कदम

वीडियो: MATLAB नियंत्रित रूमबा: 5 कदम

वीडियो: MATLAB नियंत्रित रूमबा: 5 कदम
वीडियो: Numb (Official Music Video) [4K UPGRADE] – Linkin Park 2024, जुलाई
Anonim
MATLAB नियंत्रित रूमबा
MATLAB नियंत्रित रूमबा
MATLAB नियंत्रित रूमबा
MATLAB नियंत्रित रूमबा

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

चरण 1: भागों और सामग्री

भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री

MATLAB 2018a

MATLAB का 2018 संस्करण सबसे पसंदीदा संस्करण है, क्योंकि यह उस कोड के साथ सबसे अच्छा काम करता है जो मोबाइल डिवाइस से जुड़ता है। हालांकि, हमारे अधिकांश कोड की व्याख्या अधिकांश MATLAB संस्करणों में की जा सकती है।

iRobot डिवाइस बनाएं

-यह डिवाइस एक विशेष निर्मित डिवाइस है जिसका एकमात्र उद्देश्य प्रोग्रामिंग और कोडिंग के लिए है। (यह एक वास्तविक वैक्यूम नहीं है)

रास्पबेरी पाई (कैमरा के साथ)

- यह एक गैर-महंगा कंप्यूटर बोर्ड है जो iRobot के दिमाग की तरह काम करता है। यह छोटा हो सकता है, लेकिन कई चीजों में सक्षम है। कैमरा एक अतिरिक्त ऐड ऑन है। यह अपने सभी कार्यों और आदेशों को प्राप्त करने के लिए रास्पबेरी पाई का भी उपयोग करता है। ऊपर चित्रित कैमरा टेनेसी विश्वविद्यालय में इंजीनियरिंग बुनियादी बातों के विभागों द्वारा बनाए गए एक 3D प्रिंटेड स्टैंड पर लगाया गया है

चरण 2: Roomba डेटाबेस फ़ाइल

रूमबा डेटाबेस फ़ाइल
रूमबा डेटाबेस फ़ाइल

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

आप इस लिंक या नीचे डाउनलोड करने योग्य फ़ाइल पर फ़ाइल डाउनलोड कर सकते हैं

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

चरण 3: रूमबा से जुड़ना

सबसे पहले, आपको माइक्रो यूएसबी प्लग का उपयोग करके यह सुनिश्चित करना होगा कि आपका रोबोट आपके रास्पबेरी पाई बोर्ड से जुड़ा है। फिर आपको अपने कंप्यूटर और रोबोट को एक ही वाईफाई से ठीक से कनेक्ट करना होगा। एक बार यह हो जाने के बाद, आप अपने रोबोट को चालू कर सकते हैं और रोबोट डेटाबेस फ़ाइल में दिए गए कमांड का उपयोग करके उससे जुड़ सकते हैं। (अपने रोबोट का उपयोग करने से पहले और बाद में उसे हमेशा हार्ड रीसेट करें)। उदाहरण के लिए, हम अपने रोबोट से कनेक्ट करने के लिए "r.roomba(19)" कमांड का उपयोग करते हैं, हमारे डिवाइस को वेरिएबल r असाइन करते हैं। यह डेटाबेस फ़ाइल को संदर्भित करता है, जो हमारे चर को एक संरचना के रूप में सेट करता है जिसे हम किसी भी समय संदर्भित कर सकते हैं।

चरण 4: कोड

कोड
कोड
कोड
कोड

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

हमने सरल कमांड "r.setDriveVelocity(.06)" के साथ शुरुआत की जो रोबोट के आगे के वेग को.06 m/s पर सेट करता है। यह सिर्फ रोबोट को पहले से गतिमान करने के लिए है।

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

जबकि सही% जबकि लूप तब तक चलता है जब तक कुछ "झूठा" नहीं होता (इस मामले में यह असीम रूप से चलता है) डेटा = r.getCliffSensors; data2 = r.getBumpers;% क्लिफ सेंसर मानों के बारे में लगातार डेटा पुनर्प्राप्त करता है और उन्हें एक चर % img = r.getImage को असाइन करता है; % घुड़सवार कैमरे से एक तस्वीर लेता है% छवि (आईएमजी); % उस छवि को दिखाता है जिसे लिया गया था एक बार राइट फ्रंट क्लिफ सेंसर का मान 2000 r.setDriveVelocity(.05) से कम हो जाने पर % Roomba को लगभग.2 डिग्री CW बदल देता है; अन्य डेटा। लेफ्टफ्रंट डेटा। लेफ्टफ्रंट && 2000> डेटा। राइटफ्रंट r.moveDistance(.1); % Roomba को लगभग.2 m/s पर आगे बढ़ते रहने के लिए कहता है यदि दाएं सामने और बाएं फ्रंट सेंसर से दोनों मान 2000% r.turnAngle(0) से नीचे आते हैं; % रूमबा को बताता है कि अगर ऊपर बताई गई शर्तें सही हैं तो वह मुड़ें नहीं

अन्य डेटा 2. सही == 1 r.moveDistance (-.12); आर.टर्नएंगल (160); r.setDriveVelocity(.05); अन्य डेटा2.बाएं == 1 आर.मूवडिस्टेंस(-.2); आर.टर्नएंगल(५); r.setDriveVelocity(.05); अन्य डेटा 2.फ्रंट == 1 आर.मूवडिस्टेंस (-.12); आर.टर्नएंगल (160); r.setDriveVelocity(.05);

इसके बाद लूप के बाद, हम एक और जबकि लूप दर्ज करते हैं जो कैमरे के माध्यम से प्राप्त डेटा को ट्रिगर करता है। और हम इसके अंदर एक if स्टेटमेंट का उपयोग करते हैं जबकि लूप एक विशिष्ट प्रोग्राम (एलेक्सनेट) का उपयोग करके एक छवि को पहचानता है, और एक बार जब यह छवि की पहचान करता है तो यह तुरंत मोबाइल डिवाइस रिमोट कंट्रोल को ट्रिगर करता है।

एनेट = एलेक्सनेट; % एलेक्सनेट डीप लर्निंग को एक वैरिएबल को असाइन करता है जबकि सही% अनंत जबकि लूप img = r.getImage; img = imresize (img, [२२७, २२७]); लेबल = वर्गीकृत (एनेट, आईएमजी); अगर लेबल == "कागज तौलिया" || लेबल == "रेफ्रिजरेटर" लेबल = "पानी"; अंत छवि (आईएमजी); शीर्षक (चार (लेबल)); खींचना;

जबकि लूप जो हमें अपने फोन के साथ डिवाइस को नियंत्रित करने की अनुमति देता है, उस डेटा को फोन के जीरोस्कोप से पुनर्प्राप्त करता है और हम इसे एक मैट्रिक्स में प्लग करते हैं जो लगातार डेटा को कंप्यूटर पर MATLAB में वापस स्ट्रीम करता है। हम एक if स्टेटमेंट का उपयोग करते हैं जो मैट्रिक्स के डेटा को पढ़ता है और एक आउटपुट देता है जो डिवाइस को फोन के जाइरोस्कोप के कुछ मूल्यों के आधार पर ले जाता है। यह जानना जरूरी है कि हमने मोबाइल डिवाइस के ओरिएंटेशन सेंसर का इस्तेमाल किया। ऊपर वर्णित एक से तीन मैट्रिक्स को फोन के ओरिएंटेशन सेंसर के प्रत्येक तत्व द्वारा वर्गीकृत किया गया है, जो कि अज़ीमुथ, पिच और साइड है। अगर बयानों ने ऐसी स्थितियां बनाईं जो बताती हैं कि जब पक्ष 50 से अधिक या -50 से नीचे गिरता है, तो रोबोट एक निश्चित दूरी आगे (सकारात्मक 50) या पीछे (नकारात्मक 50) चलता है। और वही पिच वैल्यू के लिए जाता है। यदि पिच मान -25 से नीचे गिरने वाले 25 के मान से अधिक हो जाता है, तो रोबोट 1 डिग्री (सकारात्मक 25) या ऋणात्मक 1 डिग्री (नकारात्मक 25) के कोण पर मुड़ जाता है।

जबकि ट्रू पॉज़ (.1) % पॉज़.5 सेकंड से पहले प्रत्येक मान लिया जाता है कंट्रोलर = आईफोन। ओरिएंटेशन; % आईफोन के अभिविन्यास के मूल्यों के लिए मैट्रिक्स को एक चर अज़ीमुथल = नियंत्रक (1) के लिए असाइन करता है; % मैट्रिक्स के पहले मान को एक चर पिच = नियंत्रक (2) को असाइन करता है; % मैट्रिक्स के दूसरे मान को एक चर के लिए असाइन करता है (जब आईफोन को किनारे पर रखा जाता है तो आगे और पीछे झुकाएं) साइड = कंट्रोलर (3); % मैट्रिक्स के तीसरे मान को एक वेरिएबल को असाइन करता है (जब आईफोन को किनारे पर रखा जाता है तो बाएं और दाएं झुकाएं) % फोन के ओरिएंटेशन के आधार पर आउटपुट का कारण बनता है यदि साइड > 130 || साइड 25 r.moveDistance(-.1) % रूंबा को लगभग.1 मीटर पीछे की ओर ले जाता है यदि iPhone पीछे की ओर झुका हुआ है तो कम से कम 25 डिग्री और यदि साइड 25 r.turnAngle(-1) % रूमबा को लगभग 1 डिग्री CCW बदल देता है यदि iPhone कम से कम 25 डिग्री बाईं ओर झुका हुआ है यदि पिच <-25 r.turnAngle(1)%, रूमबा को लगभग 1 डिग्री CW कर देता है यदि iPhone कम से कम 25 डिग्री अंत में झुका हुआ है

ये हमारे कोड के प्रमुख अंशों की केवल मुख्य विशेषताएं हैं, जिन्हें हमने शामिल किया है यदि आपको अपने लाभ के लिए किसी अनुभाग को तुरंत कॉपी और पेस्ट करने की आवश्यकता है। हालाँकि, यदि आवश्यक हो तो हमारा पूरा कोड नीचे संलग्न है।

चरण 5: निष्कर्ष

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

सिफारिश की: