विषयसूची:

MATLAB के साथ Roomba: 4 कदम (चित्रों के साथ)
MATLAB के साथ Roomba: 4 कदम (चित्रों के साथ)

वीडियो: MATLAB के साथ Roomba: 4 कदम (चित्रों के साथ)

वीडियो: MATLAB के साथ Roomba: 4 कदम (चित्रों के साथ)
वीडियो: dubbed movie the kingdom of robot singham in hindi 2024, नवंबर
Anonim
मैटलैब के साथ रूमबा
मैटलैब के साथ रूमबा

यह प्रोजेक्ट MATLAB और एक iRobot Create2 प्रोग्रामयोग्य रोबोट का उपयोग करता है। MATLAB के अपने ज्ञान का परीक्षण करके, हम छवियों की व्याख्या करने और संकेतों का पता लगाने के लिए Create2 को प्रोग्राम करने में सक्षम हैं। रोबोट की कार्यक्षमता मुख्य रूप से MATLAB मोबाइल ऐप और रास्पबेरी पाई कैमरा मॉड्यूल पर निर्भर करती है।

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

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

1. आईरोबोट बनाएं, संस्करण 2

- यह एक प्रोग्राम करने योग्य रोबोट है जो एक रूमबा की तरह दिखता है। ध्यान रखें कि iRobot का यह उत्पाद वैक्यूम नहीं है। यह उपयोगकर्ता द्वारा कस्टम प्रोग्रामिंग के लिए अभिप्रेत है।

2. MATLAB 2017a

- अधिकांश पुराने संस्करण हमारे द्वारा नीचे उपयोग किए गए कोड के साथ संगत होंगे। MATLAB एक कमांड की पहचान करेगा जो आपके पास मौजूद संस्करण के साथ संगत नहीं है और एक सर्वोत्तम फिट कमांड का सुझाव देगा।

3. रास्पबेरी पाई 3 मॉडल बी, संस्करण 1.2

- यह देखने के लिए जांचें कि कौन सा रास्पबेरी पाई आपके iRobot के साथ संगत है। आगे की सहायता के लिए इस लिंक को देखें: https://www.irobotweb.com/~/media/MainSite/PDFs/A… यह निर्देश योग्य मानता है कि आप एक प्रीप्रोग्राम्ड रास्पबेरी पाई के साथ काम कर रहे हैं। कृपया ध्यान रखें कि काम करने के लिए निम्नलिखित चरणों के लिए आपको एक प्रीप्रोग्राम्ड पाई के साथ काम करने की आवश्यकता होगी। प्रीप्रोग्राम्ड पाई का उपयोग करने से आप अकेले MATLAB में अपनी सभी कोडिंग कर सकेंगे।

4. कैमरा मॉड्यूल V2 (रास्पबेरी पाई के लिए)

- आपको आश्चर्य हो सकता है; इसके आकार के बावजूद, रास्पबेरी पाई कैमरा मॉड्यूल बहुत अच्छी गुणवत्ता वाला है। यह इस परियोजना के लिए सबसे सस्ता और सबसे अनुकूल विकल्प है।

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

चरण 2: कॉन्फ़िगरेशन

विन्यास
विन्यास
विन्यास
विन्यास

1. रास्पबेरी पाई और कैमरा मॉड्यूल (हार्डवेयर) को जोड़ना

- रास्पबेरी पाई को पावर देने के लिए, आपको माइक्रोकंट्रोलर पर महिला पावर पोर्ट के लिए एक पुरुष अंत माइक्रो यूएसबी चलाने की आवश्यकता होगी। वैकल्पिक: वोल्टेज 5V से अधिक न हो यह सुनिश्चित करने के लिए एक वोल्टेज नियामक का उपयोग किया जा सकता है। रास्पबेरी पाई को पावर देने के बाद, आप माइक्रोकंट्रोलर पर मदरबोर्ड से यूएसबी पोर्ट ए तक मेल एंड यूएसबी चलाकर इसे अपने रोबोट से जोड़ सकते हैं।

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

2. उचित फ़ाइलें स्थापित करना और रूमबा को अपने कंप्यूटर से कनेक्ट करना आपके सभी हार्डवेयर कॉन्फ़िगर होने के बाद, अब आप संबंधित एम-फाइलों के साथ MATLAB स्थापित करने के लिए आगे बढ़ सकते हैं जो आपको रोबोट के साथ संचार करने की अनुमति देता है। ऐसा करने के लिए, MATLAB खोलें और सभी संबंधित फाइलों को एक साथ रखने के लिए एक नया फ़ोल्डर बनाएं। आवश्यक फ़ाइलों को स्थापित/अपडेट करने के लिए इस स्क्रिप्ट का उपयोग करें:

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

3. एक बार फाइलें इंस्टाल हो जाने के बाद, अब आप अपने रोबोट से जुड़ना शुरू कर सकते हैं। अपने रोबोट को चालू करके शुरू करें और फिर स्टार्ट अप के बाद इसे सीधे हार्ड रीसेट करें (उपयोग से पहले और बाद में हर बार अपने रोबोट को हार्ड रीसेट करना न भूलें)। दूसरा, अपने रोबोट और लैपटॉप दोनों को एक ही वाईफाई नेटवर्क से कनेक्ट करें। इसके बाद, हम दिए गए नाम और फंक्शन रूमबा का उपयोग करके रूमबा को कॉल करके MATLAB के माध्यम से प्रीप्रोग्राम्ड रास्पबेरी पाई से बात करेंगे। उदाहरण के लिए, मैं निम्न पंक्ति का उपयोग करके रोबोट 28 से जुड़ूंगा: आर = रूमबा (28)।

- ध्यान दें कि कैसे मैंने ऑब्जेक्ट को एक वेरिएबल R को असाइन किया।

- R.turnAngle(90) यदि सब कुछ ठीक रहा, तो कनेक्शन की पुष्टि करते हुए एक संगीतमय स्वर बजना चाहिए।

चरण 3: MATLAB तर्क

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

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

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

नीचे हमारा कोड है (MATLAB 2017a में पूरा हुआ)

% इनपुट: वाईफाई कनेक्टेड डिवाइस, कैमरा से ओरिएंटेशन डेटा

%जानकारी, सेंसर डेटा

% आउटपुट: गति वाईफाई कनेक्टेड डिवाइस और गति द्वारा नियंत्रित होती है

सेंसर डेटा को पढ़कर % सुरक्षा की जांच की जाती है। अगर कैमरा पता लगाता है

% एक विदेशी झंडा तो रूमबा दुश्मन के झंडे को ट्वीट करके जवाब देता है

% देखा गया है।

%उद्देश्य: हमारा उपकरण उन लोगों की रक्षा करने के अलावा बिना किसी उद्देश्य के रहता है जो

% ने इसे बनाया, यह इसके निर्माता की सेवा करता है और करता है

% बिल्कुल वही जो उसने बताया।

% उपयोग: अनिवार्य रूप से कार्यक्रम अपने आप चलेगा।

सभी साफ़ करें, सभी बंद करें, clc

%वस्तुओं और चरों को प्रारंभ करना

आर = रूमबा (28);

एम = मोबाइलदेव;

% उपयोग प्रतिक्रिया = वेबराइट (होस्टनाम, डेटा)

होस्टनाम = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

एपीआई = 'एसजीजेडसीटीएनक्यूएक्ससीडब्ल्यूएएचआरसीटी5';

ट्वीट = 'रोबोकॉप ऑपरेशनल है… वेटिंग कमांड';

डेटा = स्ट्रैट ('एपीआई_की =', एपीआई, 'और स्थिति =', ट्वीट);

प्रतिक्रिया = वेबराइट (होस्टनाम, डेटा);

%लगातार लूप चल रहा है

जबकि 1==1

% संरचनाएं जिसमें रिलेवेंट डेटा शामिल है

ओ = एम.अभिविन्यास; मोबाइल डिवाइस का %अभिविन्यास

लाइट = r.getLightBumpers (); %प्रकाश बंपर मान

a = r.getCliffSensors (); %CLiff सेंसर मान

बम्प = r.getBumpers (); %बम्पर सेंसर

% चेक बंपर

अगर टक्कर.दाएं == 1 || टक्कर.बाएं==1 ||बम्प.फ्रंट==1

r.moveDistance(-.2,.2);

% चेक लाइट सेंसर

अन्य प्रकाश।बाएं>60 || लाइट.लेफ्टफ्रंट>60 || लाइट.लेफ्टसेंटर>60 || लाइट.राइट>60 || light.rightFront>60 || लाइट.राइटसेंटर>60

r.moveDistance(-.2,.2);

%चेक क्लिफ सेंसर

% एंटी-थेफ्ट सिग्नल और नोटिफिकेशन

और अगर ए.बाएं<300 && ए.दाएं<300 && ए.बाएंफ्रंट<300 && ए.राइटफ्रंट<300

आर.स्टॉप ();

आर.बीप ();

ट्वीट = 'रोबोकॉप उठा लिया गया है!'

डेटा = स्ट्रैट ('एपीआई_की =', एपीआई, 'और स्थिति =', ट्वीट);

प्रतिक्रिया = वेबराइट (होस्टनाम, डेटा);

%सामान्य चट्टान से बचाव ऑपरेशन

बाकी ए.बाएं<300 || ए.राइट<300 || ए.लेफ्टफ्रंट<300 || ए.राइटफ्रंट<300

r.moveDistance(-.2,.2);

%Roomba ने जांच पास कर ली है और अब सामान्य ऑपरेशन के साथ चलेगा।

%प्रारंभ में उपकरण का रोल मापा जाता है और आधार बन जाता है

%वेग जो तब पहिया की गति की गणना के लिए उपयोग किया जाता है

%आगे की गति

अन्य o(3)>=0 && o(3)<=60

बेसवेल=(-.5/60)*(ओ(3)-60);

अगर ओ(2)>=-70 && ओ(2)<0

r.setDriveVelocity(baseVel+(.3/50)*abs(o(2)), baseVel-(.3/50)*abs(o(2)));

अन्य ओ(2)=0

r.setDriveVelocity(baseVel-(.3/50)*abs(o(2)), baseVel+(.3/50)*abs(o(2)));

अन्य r.stop

समाप्त

% पीछे की ओर गति

एल्सिफ़ ओ(3)>100 && ओ(3)<150

r.setDriveVelocity(-.2, -.2)

आर.बीप ();

आर.बीप ();

%resting Roomba फ़्लॉरेसेंट के रूप में चिह्नित एलियन फ़्लैग की खोज करेगा

कागज का% हरा टुकड़ा

अन्यथा

आर.स्टॉप

img=r.getImage(); %छवि लें

दहलीज = ग्रेथ्रेश (img(200:383,:, 2))+.1; %calc हरा स्तर

अगर दहलीज>.42

ट्वीट = 'दुश्मन ने देखा !!'

डेटा = स्ट्रैट ('एपीआई_की =', एपीआई, 'और स्थिति =', ट्वीट);

प्रतिक्रिया = वेबराइट (होस्टनाम, डेटा);

अन्यथा

आर.स्टॉप

समाप्त

समाप्त

समाप्त

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

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

सिफारिश की: