विषयसूची:

मार्स रूंबा प्रोजेक्ट UTK: 4 चरण
मार्स रूंबा प्रोजेक्ट UTK: 4 चरण

वीडियो: मार्स रूंबा प्रोजेक्ट UTK: 4 चरण

वीडियो: मार्स रूंबा प्रोजेक्ट UTK: 4 चरण
वीडियो: Lay Hand Prayer,Bishop Amardeep Ministry 2024, जुलाई
Anonim
मार्स रूंबा प्रोजेक्ट UTK
मार्स रूंबा प्रोजेक्ट UTK
मार्स रूंबा प्रोजेक्ट UTK
मार्स रूंबा प्रोजेक्ट UTK

अस्वीकरण: यह तभी काम करेगा जब ROMBA को A में सेट किया गया हो

बहुत विशिष्ट तरीका, यह निर्देश टेनेसी छात्रों और संकाय के विश्वविद्यालय द्वारा बनाया गया था और इसका उपयोग करने का इरादा था

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

आवश्यक सामग्री:

· रूमबा

· मतलब

रास्पबेरी पाई और पाई कैमरा

चरण 1: पुस्तकालय प्राप्त करना

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

चरण 2: प्रोग्राम लिखना

ऐसे कुछ कार्य हैं जिनका उपयोग कार्यक्रम में किया जा सकता है, इन कार्यों को "डॉक रूमबा" कमांड का उपयोग करके एक्सेस किया जा सकता है। इन कार्यों का उपयोग करके, आप अपने Roomba को कई अलग-अलग तरीकों से नियंत्रित कर सकते हैं। नीचे दिया गया कोड मार्स रोवर बनाने के लिए विभिन्न तरीकों से बंप सेंसर, लाइट बार सेंसर, कैमरा और क्लिफ सेंसर का उपयोग करता है। जब रूंबा किसी वस्तु से टकराता है, तो इसका पता लगाने के लिए हमने बंप सेंसर का उपयोग किया, जब ऐसा होता है तो रोबोट उलट जाएगा, घूमेगा और आगे बढ़ना जारी रखेगा। इससे पहले कि Roomba किसी ऑब्जेक्ट को हिट करे, लाइट बार ऑब्जेक्ट का पता लगाएगा और Roomba को धीमा कर देगा ताकि जब यह बम्प सेंसर को सक्रिय करने के लिए ऑब्जेक्ट से टकराए तो Roomba प्रभाव से कम क्षतिग्रस्त/प्रभावित हो। कैमरा सतह पर पानी या लावा खोजता है, अगर कोई तरल नहीं मिला तो रोबोट खोज करता रहेगा, अगर कुछ पानी मिला तो रोबोट ऑपरेटरों को संदेश देगा। क्लिफ सेंसर को रोबोट को रोकने के लिए डिज़ाइन किया गया है यदि वह चट्टान के पास जाता है। यदि रोबोट को एक चट्टान का आभास होता है तो वह उलट जाएगा और गिरने से बचने के लिए घूमेगा।

चरण 3: कोड

इसे एक MATLAB फ़ाइल में कॉपी और पेस्ट करें जो पुस्तकालयों के समान फ़ोल्डर में स्थित है

functionMainRoombaFile(r)

r.setDriveVelocity(0.1, 0.1)

जबकि सच % Infinte जबकि लूप कोड चालू रखने के लिए

नॉटफॉल = क्लिफचेक (आर)% फंक्शन 'क्लिफचेक' के लिए वैरिएबल 'डॉंटफॉल' असाइन करता है

अगर 'क्लिफचेक' के पूरा होने के बाद कोड में आगे बढ़ने के लिए स्टेटमेंट नहीं है, तो % नहीं है

r.setDriveVelocity(0.1, 0.1) % 'क्लिफचेक' के पूरा होने के बाद रूमबा को गतिमान रखता है

अंत% समाप्त होता है 'नहीं गिरना' अगर बयान

बम्पर = बम्पचेक (आर)% 'बम्पचेक' फ़ंक्शन के लिए चर 'बम्पर' असाइन करता है

अगर बंपर% अगर 'बम्पचेक' पूरा होने के बाद कोड में स्टेटमेंट आगे बढ़ना है

r.setDriveVelocity(0.1, 0.1) % 'बम्पचेक' पूरा होने के बाद रूमबा को गतिमान रखता है

अंत% समाप्त होता है 'बम्पर' यदि कथन

तरल पदार्थ = लिक्विडचेक (आर) % 'लिक्विडचेक' फ़ंक्शन के लिए चर 'तरल पदार्थ' असाइन करता है

अगर लिक्विड्स % if स्टेटमेंट 'लिक्विडचेक' के पूरा होने के बाद कोड में आगे बढ़ना है

r.setDriveVelocity(0.1, 0.1) % 'लिक्विडचेक' के पूरा होने के बाद रूमबा को गतिमान रखता है

अंत% समाप्त होता है 'तरल पदार्थ' अगर बयान

लाइटबम्पर = लाइटचेक (आर) % फंक्शन 'लाइटचेक' के लिए वैरिएबल 'लाइटबम्पर' असाइन करता है

पॉज़ (0.1) % निरंतर लूप पुनरावृत्ति से बचने के लिए संक्षिप्त रूप से रुकें

अंत% अनंत समाप्त होता है जबकि लूप

अंत% समारोह समाप्त होता है

फ़ंक्शन बम्पर = बम्पचेक (आर)% 'बम्पचेक' फ़ंक्शन बनाता है

बम्पडेटा = r.getBumpers% बंपर से चर 'bumpdata' के लिए सभी डेटा असाइन करता है

बंपर = बम्पडेटा.दाएं || बम्पडेटा.बाएं || बम्पडेटा.फ्रंट % विभिन्न बंपर के लिए एक संग्रहीत चर, 'बम्पर' बनाता है

अगर बम्पडाटा। राइट> 0% अगर बम्पर टकराने पर रूमबा के विभिन्न कार्यों का कारण बनता है

r.stop % Stops Roomba

r.moveDistance(-0.3, 0.2)% रिवर्स रूम्बा 0.3m

r.turnAngle(90, 0.5) % जितनी जल्दी हो सके Roomba को 90 डिग्री घुमाता है

समाप्त

अगर बम्पडेटा.फ्रंट>0

आर.स्टॉप

r.moveDistance(-0.3, 0.2)

r.turnAngle(randi(270), 0.5) % रूम्बा को 0 और 270 डिग्री के बीच एक यादृच्छिक अंतराल पर जितनी जल्दी हो सके घुमाता है

समाप्त

अगर बम्पडेटा.बाएं>0

आर.स्टॉप

r.moveDistance(-0.3, 0.2)

r.turnAngle(-90, 0.5) % जितनी जल्दी हो सके Roomba -90 डिग्री घुमाता है

समाप्त

समाप्त

फ़ंक्शन लाइटबम्पर = लाइटचेक (आर)% 'लाइटचेक' फ़ंक्शन बनाता है

lightdata= r.getLightBumpers % लाइट बम्प सेंसर से सभी डेटा को वेरिएबल 'लाइटडेटा' में असाइन करता है

लाइटबम्पर = लाइटडेटा।बाएं || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % अलग-अलग लाइट बंपर के लिए एक संग्रहित चर, 'लाइटबम्पर' बनाता है

अगर लाइटबम्पर% अगर ऊपर से लाइटबम्पर डेटा को कॉल करने के लिए स्टेटमेंट है

if lightdata.left>10% if स्टेटमेंट रूमबा के विभिन्न कार्यों का कारण बनता है यदि लाइट बम्पर 10 से अधिक मानों को महसूस करता है

r.setDriveVelocity(०.०५, ०.०५)% बंप की तैयारी के लिए रूमबा को धीमा कर देता है

अंत% प्रारंभिक यदि कथन समाप्त होता है

अगर lightdata.rightCenter>10

r.setDriveVelocity(०.०५, ०.०५)

समाप्त

अगर lightdata.right>10

r.setDriveVelocity(०.०५, ०.०५)

समाप्त

अगर lightdata.leftCenter>10

r.setDriveVelocity(०.०५, ०.०५)

समाप्त

अंत% समाप्त होता है 'लाइटबम्पर' अगर कथन

अंत% लाइटचेक फ़ंक्शन समाप्त करता है

फ़ंक्शन नॉटफ़ॉल = क्लिफ़चेक (आर)% 'क्लिफ़चेक' फ़ंक्शन बनाता है

डेटा = r.getCliffSensors; % क्लिफ सेंसर से सभी डेटा को वेरिएबल 'डेटा' में असाइन करता है

नॉटफॉल = डेटा। लेफ्ट<1020 || डेटा.लेफ्टफ्रंट<1020 || डेटा.राइटफ्रंट<1020 || data.right<1020% अलग-अलग क्लिफ सेंसर के लिए एक संग्रहित चर, 'dontFall' बनाता है

यदि ऊपर से क्लिफ सेंसर डेटा को कॉल करने के लिए कथन नहीं है, तो% गिरें नहीं

if data.left <1010 % यदि स्टेटमेंट रूमबा के विभिन्न कार्यों का कारण बनता है यदि क्लिफ सेंसर 1010 से कम मानों को महसूस करता है

आर.स्टॉप

r.moveDistance(-0.2, 0.2)% रिवर्स रूम्बा 0.2m

r.turnAngle(-90, 0.5) % जितनी जल्दी हो सके Roomba -90 डिग्री घुमाता है

अन्य डेटा। लेफ्टफ्रंट <1010

आर.स्टॉप

r.moveDistance(-0.3, 0.2)

r.turnAngle(90, 0.5) % जितनी जल्दी हो सके Roomba को 90 डिग्री घुमाता है

अन्य डेटा। राइटफ्रंट <1010

आर.स्टॉप

r.moveDistance(-0.3, 0.2)

r.turnAngle(90, 0.5) % जितनी जल्दी हो सके Roomba को 90 डिग्री घुमाता है

अन्य डेटा। राइट <1010

आर.स्टॉप

r.moveDistance(-0.3, 0.2)

r.turnAngle(90, 0.5) % जितनी जल्दी हो सके Roomba को 90 डिग्री घुमाता है

समाप्त

समाप्त

समाप्त

फंक्शन लिक्विड्स = लिक्विडचेक (आर) % 'लिक्विडचेक' फंक्शन बनाता है

जबकि सत्य% कैलिब्रेटिंग के लिए अनंत लूप शुरू करें

img = r.getImage; % रोबोट के कैमरे को बंद कर देता है

छवि (आईएमजी)% छवि को एक आकृति विंडो में दिखाता है

red_mean = माध्य (माध्य (img (200, 150, 1)))% लाल पिक्सेल की औसत मात्रा को पढ़ता है

blue_mean = माध्य (माध्य (img (200, 150, 3)))% नीले पिक्सेल की औसत मात्रा को पढ़ता है

तरल पदार्थ = red_mean || blue_mean % विभिन्न रंग चर के लिए एक संग्रहित चर, 'तरल पदार्थ' बनाता है

यदि तरल पदार्थ% यदि कथन ऊपर से छवि डेटा को कॉल करने के लिए है

if red_mean>170% if स्टेटमेंट रूमबा के विभिन्न कार्यों का कारण बनता है यदि कैमरा 170 से अधिक का औसत लाल रंग देखता है

r.stop% स्टॉप रूमबा

r.setLEDCenterColor(255) % सर्कल को लाल रंग में सेट करता है

आर.सेटएलईडीडिजिट्स (); % प्रदर्शन साफ़ करें

f = प्रतीक्षापट्टी (0, '*आने वाला संदेश*'); % लोडिंग संदेश के लिए एक प्रतीक्षा पट्टी बनाता है

आर.सेटएलईडीडिजिट्स ('हॉट'); % एलईडी डिस्प्ले को आउटपुट 'HOT' पर सेट करता है

विराम (0.5)% भुगतान की गई जानकारी को पढ़ने के लिए संक्षिप्त विराम

r.setLEDD अंक ('लावा'); % एलईडी डिस्प्ले को आउटपुट 'लावा' पर सेट करता है

विराम (0.5)

वेटबार (.33, f, '*इनकमिंग मेसेज*'); % प्रतीक्षा पट्टी में वृद्धि करता है

आर.सेटएलईडीडिजिट्स ('हॉट');

विराम (0.5)

r.setLEDD अंक ('लावा');

विराम (0.5)

वेटबार (.67, f, '*इनकमिंग मेसेज*'); % प्रतीक्षापट्टी में वृद्धि करता है

आर.सेटएलईडीडिजिट्स ('हॉट');

विराम (0.5)

r.setLEDD अंक ('लावा');

वेटबार (1, एफ, '* आने वाला संदेश *'); %वेटबार पूरा करता है

विराम(1)

बंद करें (एफ)% प्रतीक्षा पट्टी बंद कर देता है

आर.सेटएलईडीडिजिट्स (); % एलईडी डिस्प्ले को साफ करता है

सभी % बंद करें सभी पिछली विंडो बंद करें

axes('Color', 'none', 'XColor', 'none', 'YColor', 'none') % अक्ष और चार्ट की प्लॉट विंडो को साफ करता है

वाई = 0.5; % प्लॉटिंग विंडो में टेक्स्ट की y-स्थिति सेट करता है

एक्स = 0.06; % प्लॉटिंग विंडो में टेक्स्ट की एक्स-पोजिशन सेट करता है

शीर्षक ('मार्स रूम्बा से', 'फोंटसाइज', 32)% प्लॉटिंग विंडो में एक शीर्षक जोड़ता है

quadeqtxt = 'खतरे का लावा'; % वेरिएबल 'quadeqtxt' को आउटपुट 0. पर सेट करता है

टेक्स्ट (x, y, quadeqtxt, 'दुभाषिया', 'लेटेक्स', 'फ़ॉन्टसाइज़', 36); % प्लॉटिंग विंडो में क्वाडेक टेक्स्ट प्रदर्शित करता है

r.moveDistance(-0.2, 0.2)% रूमबा 0.2m. को उलट देता है

r.turnAngle(180, 0.5) % जितनी जल्दी हो सके रूमबा को 180 डिग्री घुमाता है

r.setLEDCenterColor(128, 128); % रूमबा सेंटर एलईडी को नारंगी रंग में सेट करता है

सभी % बंद करें शेष खुली खिड़कियाँ बंद करें

एल्सिफ़ ब्लू_मीन> १७५% अगर स्टेटमेंट रूमबा के विभिन्न कार्यों का कारण बनता है यदि कैमरा 175 से अधिक का औसत नीला रंग देखता है

r.stop% स्टॉप रूमबा

r.setLEDCenterColor(255) % सर्कल को लाल रंग में सेट करता है

आर.सेटएलईडीडिजिट्स (); % प्रदर्शन साफ़ करें

f = प्रतीक्षापट्टी (0, '*आने वाला संदेश*'); % लोडिंग संदेश के लिए एक प्रतीक्षा पट्टी बनाता है

r.setLEDDgits ('देखो'); % एलईडी डिस्प्ले को आउटपुट 'लुक' पर सेट करता है

विराम (0.5)% भुगतान की गई जानकारी को पढ़ने के लिए संक्षिप्त विराम

r.setLEDD अंक ('वाटर'); % एलईडी डिस्प्ले को आउटपुट 'वाटर' पर सेट करता है

विराम (0.5)

वेटबार (.33, f, '*इनकमिंग मेसेज*'); % प्रतीक्षा पट्टी में वृद्धि करता है

r.setLEDDgits ('देखो');

विराम (0.5)

r.setLEDD अंक ('वाटर');

विराम (0.5)

वेटबार (.67, f, '*इनकमिंग मेसेज*'); % प्रतीक्षापट्टी में वृद्धि करता है

r.setLEDDgits ('देखो');

विराम (0.5)

r.setLEDD अंक ('वाटर');

वेटबार (1, एफ, '* आने वाला संदेश *'); %वेटबार पूरा करता है

विराम(1)

बंद करें (एफ)% प्रतीक्षा पट्टी बंद कर देता है

आर.सेटएलईडीडिजिट्स (); % एलईडी डिस्प्ले को साफ करता है

सभी % बंद करें सभी पिछली विंडो बंद करें

axes('Color', 'none', 'XColor', 'none', 'YColor', 'none') % अक्ष और चार्ट की प्लॉट विंडो को साफ करता है

वाई = 0.5; % प्लॉटिंग विंडो में टेक्स्ट की y-स्थिति सेट करता है

एक्स = 0.06; % प्लॉटिंग विंडो में टेक्स्ट की एक्स-पोजिशन सेट करता है

शीर्षक ('मार्स रूम्बा से', 'फोंटसाइज', 32)% प्लॉटिंग विंडो में एक शीर्षक जोड़ता है

quadeqtxt = 'पानी मिला'; % वेरिएबल 'quadeqtxt' को आउटपुट 0. पर सेट करता है

टेक्स्ट (x, y, quadeqtxt, 'दुभाषिया', 'लेटेक्स', 'फ़ॉन्टसाइज़', 36); % प्लॉटिंग विंडो में क्वाडेक टेक्स्ट प्रदर्शित करता है

r.moveDistance(-0.2, 0.2)% रूमबा 0.2m. को उलट देता है

r.turnAngle(180, 0.5) % रूमबा को 180 डिग्री जितनी जल्दी हो सके घुमाता है

r.setLEDCenterColor(128, 128); % रूमबा सेंटर एलईडी को नारंगी रंग में सेट करता है

सभी % बंद करें शेष खुली खिड़कियाँ बंद करें

अंत% समाप्त होता है 'red_mean' अगर कथन

अंत% समाप्त होता है 'तरल पदार्थ' अगर बयान

अंत% अनंत बंद हो जाता है जबकि लूप

अंत% फ़ंक्शन 'लिक्विडचेक' समाप्त होता है

चरण 4: कोड चलाना

आपके द्वारा कोड को MATLAB में कॉपी और पेस्ट करने के बाद आपको Roomba से कनेक्ट करना होगा। एक बार Roomba कनेक्ट हो जाने पर आपको वेरिएबल r नाम देना चाहिए। रूमबा का जिक्र करते समय फ़ंक्शन चर r का उपयोग करते हैं, इसलिए रूमबा को चर r के रूप में परिभाषित किया जाना चाहिए। कोड चलाने के बाद Roomba निर्देशानुसार चलना चाहिए।

सिफारिश की: