विषयसूची:

IRobot Create-Mars Expedition Rover Mark I: 4 Steps
IRobot Create-Mars Expedition Rover Mark I: 4 Steps

वीडियो: IRobot Create-Mars Expedition Rover Mark I: 4 Steps

वीडियो: IRobot Create-Mars Expedition Rover Mark I: 4 Steps
वीडियो: Perseverance Mars Rover Landing- Inside Story 2024, जुलाई
Anonim
IRobot Create-Mars Expedition Rover Mark I
IRobot Create-Mars Expedition Rover Mark I

यह निर्देशयोग्य आपको सिखाएगा कि MatLab कोडिंग का उपयोग करके iRobot Create कैसे सेट किया जाए। आपके रोबोट में अलग-अलग आकृतियों के द्वारा खनिजों की खोज करने की क्षमता होगी, चट्टान सेंसर के उपयोग के माध्यम से ऊबड़-खाबड़ इलाकों में पैंतरेबाज़ी होगी, और लाइव फ़ीड के माध्यम से मैन्युअल रूप से नियंत्रित करने की क्षमता होगी।

चरण 1: आपूर्ति

आपूर्ति
आपूर्ति

इस परियोजना के लिए, आपको एक iRobot Create की आवश्यकता होगी, जो कि Roomba रोबोट वैक्यूम क्लीनर का प्रोग्राम करने योग्य संस्करण है। रोबोट इस परियोजना के लिए आवश्यक सभी सेंसर से सुसज्जित है, विशेष रूप से बंप सेंसर, क्लिफ सेंसर और "लाइट बम्प" सेंसर। आपको वायरलेस संचार, लाइव प्रोग्रामिंग और लाइव वीडियो फीड के लिए उपयोग किए जाने वाले रास्पबेरी पाई और वीडियो कैमरा की भी आवश्यकता होगी। अंत में, आपको रास्पबेरी पाई और कैमरे के लिए 3डी प्रिंटेड माउंट की आवश्यकता होगी।

चरण 2: वांछनीय परिणाम को संतुष्ट करने के लिए कोडिंग विकसित करें

वांछनीय परिणाम को संतुष्ट करने के लिए कोडिंग विकसित करें
वांछनीय परिणाम को संतुष्ट करने के लिए कोडिंग विकसित करें

एक बार जब आप अपना रूमबा कनेक्ट कर लेते हैं, तो आपको एक मैटलैब कोड बनाने की आवश्यकता होगी जो आपके वांछित इनपुट के बाद आपको वांछित आउटपुट देगा।

कोड यहाँ देखा जा सकता है:

% रूंबा प्रोजेक्ट% ब्रेंटन अर्नोल्ड (barnol15); जूलियन कोर्न (क्यूडीपी२१८); माइक हील(mheal)% 4/11/19% समस्या विवरण: मंगल ग्रह के% अन्वेषण/आवास के दौरान मनुष्यों की सहायता के लिए एक रोवर बनाएं। % समाधान विधि: कार्बनिक पदार्थ की जांच के लिए % लाइट बंपर, क्लिफ सेंसर और कैमरे के उपयोग के माध्यम से कार्बनिक (हरा) पदार्थ की खोज करें। % रोवर को बंपर, क्लिफ% सेंसर, और व्हील ऊंचाई सेंसर के उपयोग के माध्यम से उबड़-खाबड़ इलाकों में नेविगेट करने की अनुमति दें। % सुरक्षित दूरी से रोवर को नियंत्रित करने के लिए मनुष्यों को सक्षम करें और मैन्युअल रूप से खनिजों की खोज करें। विकल्प = {'लाइफ', 'रफ टेरेन', 'यूजर कंट्रोल'}; डायलॉग मेनू में% तीन विकल्प सेटिंग = मेनू ('', विकल्प) यदि सेटिंग> 0% यदि विकल्प चुना गया है तो उपयोगकर्ता पुष्टिकरण विकल्प के लिए पूछें 2 = {'हां', 'नहीं'}% "हां" या "नहीं" के लिए एक सेल सरणी बनाएं "विकल्प की पुष्टि करें = मेनू (['आपने चुना है "' विकल्प {सेटिंग} '" मोड।'], विकल्प 2)% उपयोगकर्ता सेटिंग विकल्प की पुष्टि करें यदि सेटिंग की पुष्टि करें == 1 अगर "जीवन" सेटिंग चुना गया था तो जाँच करें मैं =0 जबकि i==0 r.setLEDDigits(num2str('LIFE')) % प्रदर्शन 'जीवन' एलईडी के लिए i=1:100 r.setDriveVelocity(0.05)% रूमबा को 0.05 m/sy = r.getCliffSensors पर आगे ले जाएं % सेल संरचना "y" l = r.getLightBumpers में क्लिफ सेंसर मानों को पुनर्प्राप्त और संग्रहीत करें% पुनर्प्राप्त करें और संरचना "f" में लाइट बम्प मानों को संग्रहीत करें यदि l.बाएं> 100% जांचें कि बाएं प्रकाश बम्पर को कवर किया गया है या नहीं r.moveDistance(-0.05) %रूमबा को पीछे की ओर ले जाएँ 0.05 मीटर r.turnAngle(20) %Rotate Roomba 20 डिग्री CCW img=r.getImage %Roomba rect पर रास्पबेरी पाई कैमरा से छवि प्राप्त करें = [१०० 0 १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा करें (डी); एंड इफ एल.लेफ्टफ्रंट> 100% चेक लेफ्ट है/फ्रंट लाइट बंपर कवर किया गया है r.moveDistance(-0.05)% रूमबा को पीछे की ओर ले जाएं 0.05 मीटर img=r.getImage% रूमबा पर रास्पबेरी पाई कैमरा से इमेज प्राप्त करें और वेरिएबल 'img' में स्टोर करें ' रेक्ट = [१०० ० १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा के लिए (डी); एंड इफ्फ एल.लेफ्ट सेंटर>100% चेक करें कि क्या लेफ्ट/सेंटर लाइट बम्पर कवर किया गया है r.moveDistance(-0.05)% रूमबा को पीछे की ओर ले जाएँ 0.05 मीटर img=r.getImage% रूमबा पर रास्पबेरी पाई कैमरा से इमेज प्राप्त करें और वेरिएबल 'img' में स्टोर करें ' रेक्ट = [१०० ० १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा के लिए (डी); एंड एल्सिफ एल.राइटसेंटर>100% चेक करें कि राइट/सेंटर लाइट बम्पर कवर किया गया है या नहीं। ' रेक्ट = [१०० ० १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा के लिए (डी); एंड इफ्फ एल.राइटफ्रंट>100% चेक करें कि राइट/फ्रंट लाइट बम्पर कवर किया गया है या नहीं। ' रेक्ट = [१०० ० १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा के लिए (डी); अंत में अगर एल.राइट>100% चेक करें कि क्या राइट लाइट बम्पर कवर किया गया है r.moveDistance(-0.05)% Roomba को पीछे की ओर ले जाएं 0.05 मीटर r.turnAngle(-20)%Rotate Roomba 20 डिग्री CW img=r.getImage% से छवि प्राप्त करें रूमबा पर रास्पबेरी पाई कैमरा और वेरिएबल 'img' rect में स्टोर करें = [१०० 0 १५० १५०]; img = imcrop(img, rect) केंद्र लाल पर ध्यान केंद्रित करने के लिए% फसल छवि = माध्य (माध्य (img (:,:, 1)))% औसत लाल तीव्रता हरा = माध्य (माध्य (img (:,:, 2)))% औसत हरी तीव्रता नीला = माध्य (माध्य (img (:,:, 3)))% औसत नीला तीव्रता यदि हरा> लाल और& हरा> नीला% जाँच करें कि क्या पौधा चित्र में है d = msgbox (['जीवन मिला! ']); % एक संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो "जीवन मिल गया!" प्रतीक्षा करें (डी); एंड इफ्फ y.लेफ्टफ्रंट <१५००% चेक करें कि क्या रूमबा का बायां/सामने का हिस्सा चट्टान से दूर है। डिग्री CW और अगर y.rightFront<१५००% जाँच करें कि क्या रूमबा का दायाँ/सामने का हिस्सा चट्टान से दूर है। डिग्री CCW और अगर y.बाएं<1000% चेक करें कि क्या रूमबा का बायां हिस्सा चट्टान से दूर है। यदि बटन दबाया जाता है तो CW और यदि y.right0% चलाएँ जारी रखें == 1 i = 0% जीवन की खोज जारी रखें i = 1% एंड लाइफ मोड एंड एंड एंड इफ सेटिंग == 2% जांचें कि क्या "रफ टेरेन" सेटिंग चुनी गई थी i=0 जबकि i==0 r.setLEDDigits(num2str('RGH')) % डिस्प्ले 'रफ' एलईडी डिस्प्ले पर i=1:1000 r.setDriveVelocity(0.05)% रूमबा ड्राइव वेग को 0.05 m/sx पर सेट करें = r.getBumpers % संरचना "x" y = r.get में बम्पर सेंसर मान प्राप्त करें और संग्रहीत करें CliffSensors % पुनः प्राप्त करें और संरचना "y" में क्लिफ सेंसर मानों को संग्रहीत करें यदि x.right==1% दायां बम्पर दबाया गया है या नहीं r.turnAngle(10)% रोटेट रूमबा 10 डिग्री CCW अन्य यदि x.बाएं == 1% चेक करें कि क्या बायां है बंपर को r.turnAngle(-10)% रोटेट रूमबा 10 डिग्री CW और अगर x.front==% रोटेट करें तो चेक करें कि क्या फ्रंट बंपर दबाया गया है। जांचें कि क्या दायां पहिया r.turnAngle(-20)% रोटेट रूमबा 20 डिग्री CW अन्यथा x.leftWheelDrop==1% चेक बायां पहिया गिर गया है r.turnAngle(20)% रूमबा को 20 डिग्री CCW घुमाएं अन्यथा y.leftFront< १५००% जाँचें कि क्या रूमबा का अगला बायाँ भाग चट्टान से दूर है। १५००% जाँच करें कि क्या रूमबा का दाहिना भाग चट्टान से दूर है। % जाँच करें कि क्या बायाँ भाग o f रूमबा चट्टान से दूर है r.moveDistance(-0.05, 0.05)% रूमबा को 0.05 मीटर पीछे 0.05 मीटर/सेकंड पर ले जाएं। %उबड़-खाबड़ इलाके को जारी रखें i=1% किसी न किसी इलाके का अंत अंत अन्य% मैनुअल मोड i=0 r.setLEDDigits(num2str('USER')) एलईडी डिस्प्ले पर% डिस्प्ले 'USER' d=msgbox(['Arrow Keys - कदम; एस - स्टॉप रोवर; ईएससी - अंतिम उपयोगकर्ता नियंत्रण; ए - संसाधन का पता लगाएँ']); प्रतीक्षा के लिए (डी); जबकि i==0 r.showCamera% अलग विंडो में रास्पबेरी पाई कैमरा लाइव फ़ीड खोलें D=getkey(1)%उपयोगकर्ता द्वारा दबाए गए कुंजी को पुनर्प्राप्त करें, ASCII मान को चर D के रूप में संग्रहीत करें यदि D==30% जाँच करें कि क्या "ऊपर" तीर है दबाया गया r.setDriveVelocity(0.1)% रूमबा को 0.2 मी/से पर भेजें अन्यथा डी==28% जांचें कि क्या "बायां" तीर दबाया गया था r.setDriveVelocity(0)% रूंबा को आगे या पीछे जाने से रोकें r.turnAngle(15, ०.०५)% रूमबा को ४५ डिग्री सीसीडब्ल्यू को ०.५ मीटर/सेकेंड पर घुमाएं अन्यथा डी == ३१% जांचें कि क्या "डाउन" एरो दबाया गया था r.setDriveVelocity(-0.1)% रूमबा को ०.२ मीटर/सेकेंड पर पीछे की ओर ले जाएं अन्यथा डी==२९% जांचें कि क्या "दायां" तीर दबाया गया है r.setDriveVelocity(0)% रूंबा को आगे या पीछे जाने से रोकें। "esc" (एस्केप) कुंजी दबाया गया था i=% लूप से बाहर निकलने के लिए चर "i" का मान बदलें d=msgbox('Exiting "User Control"') %उपयोगकर्ता को यह बताएं कि मैन्युअल मोड से बाहर किया जा रहा है अन्यथा D== 115% जाँचें कि क्या "s" कुंजी दबाई गई है r.setDriveVelocity(0) %Roomba को इससे रोकें आगे या पीछे जाना अगर D==97% जाँच करें कि क्या "a" दबाया गया है image = r.getImage; imwrite(image, 'image.png') W = Classify(image) K = mode(W) if K == 3 d=msgbox('Resource मिला') % डिस्प्ले अगर आयताकार रिसोर्स ने वेटफॉर (डी) का पता लगाया है; संदेश बॉक्स "डी" को बंद करने के लिए उपयोगकर्ता के लिए% प्रतीक्षा करें अन्यथा के == 0 डी = संदेशबॉक्स ('संसाधन नहीं: (')% प्रदर्शित करें यदि आयताकार संसाधन का पता नहीं चला प्रतीक्षा के लिए (डी);% उपयोगकर्ता द्वारा संदेश बॉक्स "डी" बंद करने की प्रतीक्षा करें अन्य अंत d=msgbox('मान्य कुंजी इनपुट नहीं है।') % प्रदर्शन यदि उपयोगकर्ता "सेटिंग चुनें" मेनू वेटफॉर (डी) को बंद कर देता है; उपयोगकर्ता संदेश बॉक्स को बंद करने के लिए "डी" एंड एंड एंड एंड डी = msgbox ('अलविदा')% अलविदा कहता है यदि विकल्प बंद हैं अंत प्रतीक्षा के लिए (डी);

चरण 3: परीक्षण

परिक्षण
परिक्षण

एक बार आपका कोड लिख जाने के बाद, आपको अपने रूमबा का परीक्षण करना होगा। यद्यपि आपका कोड सही लग सकता है, आपके कई मूल्यों, विशेष रूप से रंग या आकार के लिए, उन वस्तुओं को ठीक से पहचानने के लिए बदलना होगा जिन्हें आप अपने रूमबा को पहचानना चाहते हैं।

चरण 4: दृश्य आउटपुट का निरीक्षण करें

दृश्य आउटपुट का निरीक्षण करें
दृश्य आउटपुट का निरीक्षण करें
दृश्य आउटपुट का निरीक्षण करें
दृश्य आउटपुट का निरीक्षण करें

यह बहुत स्पष्ट होगा कि आपने अपने रूमबा को इसके विजुअल आउटपुट के आधार पर सफलतापूर्वक प्रोग्राम किया है या नहीं।

आउटपुट में शामिल हैं:

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

यह हमारे ट्यूटोरियल का अंत है, अपने नए मंगल अभियान रोवर का आनंद लें!

सिफारिश की: