विषयसूची:

मार्स रूंबा: 6 कदम
मार्स रूंबा: 6 कदम

वीडियो: मार्स रूंबा: 6 कदम

वीडियो: मार्स रूंबा: 6 कदम
वीडियो: 【Latin Dance】Easy On Me ( Rumba ) 2024, नवंबर
Anonim
मार्स रूमबा
मार्स रूमबा

यह निर्देश आपको रास्पबेरी पाई नियंत्रित रूमबा वैक्यूम बॉट के संचालन की दिशा में मार्गदर्शन करेगा। हम जिस ऑपरेटिंग सिस्टम का उपयोग करेंगे वह MATLAB के माध्यम से होगा।

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

इस परियोजना को पूरा करने के लिए आपको क्या इकट्ठा करना होगा:

  • iRobot's Create2 Roomba वैक्यूम क्लीनर बॉट
  • रास्पबेरी पाई
  • रास्पबेरी पाई कैमरा
  • MATLAB का नवीनतम संस्करण
  • MATLAB के लिए Roomba इंस्टाल टूलबॉक्स
  • सेलुलर डिवाइस के लिए MATLAB एप्लिकेशन

चरण 2: समस्या विवरण

समस्या कथन
समस्या कथन

हमें एक रोवर विकसित करने के लिए MATLAB का उपयोग करने का काम सौंपा गया था जिसका उपयोग मंगल ग्रह पर वैज्ञानिकों की सहायता के लिए ग्रह डेटा एकत्र करने में किया जा सकता है। हमने अपनी परियोजना में जिन कार्यों को संबोधित किया, वे रिमोट कंट्रोल, ऑब्जेक्ट इम्पैक्ट रिकग्निशन, वाटर रिकग्निशन, लाइफ रिकग्निशन और इमेज प्रोसेसिंग के थे। इन उपलब्धियों को प्राप्त करने के लिए, हमने iRobot के Create2 Roomba के कई कार्यों में हेरफेर करने के लिए Roomba टूलबॉक्स कमांड का उपयोग करके कोड किया।

चरण 3: ब्लूटूथ रिमोट कंट्रोल

ब्लूटूथ रिमोट कंट्रोल
ब्लूटूथ रिमोट कंट्रोल

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

कोड इस प्रकार है:

जबकि 0 == 0

विराम (.5)

फोनडाटा = एम.ओरिएंटेशन;

अज़ी = फोनडाटा (1);

पिच = फोनडाटा (2);

साइड = फोनडाटा (3);

धक्कों = r.getBumpers;

अगर साइड>80 || साइड<-80

आर.स्टॉप

आर.बीप ('सी, ई, जी, सी^, जी, ई, सी')

टूटना

अन्य साइड>20 && साइड<40

r.turnAngle(-5);

एल्सिफ साइड>40

आर.टर्नएंगल (-25);

एल्सिफ साइड-40

आर.टर्नएंगल(५);

अन्य साइड<-40

आर.टर्नएंगल(25);

समाप्त

अगर पिच >10 && पिच<35

r.moveDistance(.03)

एल्सिफ़ पिच>-35 && पिच<-10

r.moveDistance(-.03)

समाप्त

समाप्त

चरण 4: प्रभाव पहचान

प्रभाव पहचान
प्रभाव पहचान

एक अन्य कार्य जिसे हमने लागू किया वह था किसी वस्तु में रूंबा के प्रभाव का पता लगाना और फिर उसके वर्तमान पथ को ठीक करना। ऐसा करने के लिए, हमें यह निर्धारित करने के लिए बम्पर सेंसर से रीडिंग के साथ सशर्त उपयोग करना पड़ा कि क्या कोई वस्तु टकरा गई है। यदि रोबोट किसी वस्तु से टकराता है, तो वह.2 मीटर का बैक अप लेगा, और उस कोण पर घूमेगा, जिसके द्वारा बम्पर मारा गया था। एक बार जब कोई आइटम हिट हो जाता है, तो "ऊफ़" शब्द प्रदर्शित करने वाला एक मेनू पॉप अप होता है।

कोड नीचे दिखाया गया है:

जबकि 0 == 0

धक्कों = r.getBumpers;

r.setDriveVelocity(.1)

अगर धक्कों.बाएं == 1

संदेश बॉक्स ('ओफ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

आर.टर्नएंगल(-35)

r.setDriveVelocity(.2)

एल्सिफ़ बम्प्स.फ्रंट == 1

संदेश बॉक्स ('ओफ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

आर.टर्नएंगल(90)

r.setDriveVelocity(.2)

एल्सिफ़ बम्प्स। राइट == 1

संदेश बॉक्स ('ओफ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

आर.टर्नएंगल(35)

r.setDriveVelocity(.2)

बाकीफ बम्प्स। लेफ्टव्हीलड्रॉप ==1

संदेश बॉक्स ('ओफ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

आर.टर्नएंगल(-35)

r.setDriveVelocity(.2)

एल्सिफ़ बम्प्स।राइटव्हीलड्रॉप ==1

संदेश बॉक्स ('ओफ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

आर.टर्नएंगल(35)

r.setDriveVelocity(.2)

समाप्त

समाप्त

चरण 5: जीवन पहचान

जीवन पहचान
जीवन पहचान

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

कोड इस प्रकार है:

टी = 10;

मैं = 0;

जबकि टी == 10

img = r.getImage; आईएमशो (आईएमजी)

विराम (0.167)

मैं = मैं + 1;

red_mean = माध्य (माध्य (img (:,:, 1)));

blue_mean = माध्य (माध्य (img (:,:, 3)));

ग्रीन_मीन = माध्य (माध्य (आईएमजी (:,:, 2)));

सफेद_मीन = (नीला_मीन + हरा_मीन + लाल_मीन) / 3; % इस वैल को लगभग 100 चाहते हैं

नौ_प्लस_टेन = 21;

हरा_दहलीज = 125;

नीला_दहलीज = १३०;

सफेद सीमा = १२४;

लाल_दहलीज = ११५;

जबकि नौ_प्लस_टेन == 21% हरा - जीवन

अगर हरा_माध्य> हरा_दहलीज && नीला_मीन < नीला_दहलीज && लाल_माध्य < लाल_दहलीज

r.moveDistance(-.1)

a = msgbox ('संभावित जीवन स्रोत मिला, स्थान प्लॉट किया गया');

विराम(2)

हटाएं (ए)

[y2, Fs2] =ऑडियोरेड ('z_speak2.wav');

ध्वनि (y2, Fs2)

विराम(2)

% संयंत्र = r.getImage; % imshow (पौधे);

%save('plant_img.mat', plant');

हरे रंग में% प्लॉट स्थान

मैं = 5;

टूटना

अन्यथा

नौ_प्लस_टेन = 19;

समाप्त

समाप्त

नौ_प्लस_टेन = 21;

जबकि नौ_प्लस_टेन == 21% नीला - वोडर

अगर नीला_माध्य> नीला_दहलीज && हरा_माध्य < हरा_दहलीज && सफेद_माध्य < सफेद_दहलीज && लाल_माध्य < लाल_दहलीज

r.moveDistance(-.1)

a = msgbox ('पानी का एक स्रोत मिल गया है, स्थान प्लॉट किया गया है');

विराम(2)

हटाएं (ए)

[y3, Fs3] =ऑडियोरेड ('z_speak3.wav');

ध्वनि (y3, Fs3);

%woder = r.getImage; %imshow(वोडर)

%save('water_img.mat', वोडर)

%प्लॉट स्थान नीले रंग में

मैं = 5;

टूटना

अन्यथा

नौ_प्लस_टेन = 19;

समाप्त

समाप्त

नौ_प्लस_टेन = 21;

जबकि नौ_प्लस_टेन == 21% सफेद - एलियंस मोनकाएस

अगर सफेद_माध्य> सफेद_दहलीज && नीला_मीन < नीला_दहलीज && हरा_मीन < हरा_दहलीज

[y5, Fs5] =ऑडियोरेड ('z_speak5.wav');

ध्वनि (y5, Fs5);

विराम(3)

r.setDriveVelocity(0,.5)

[ys, Fss] = audioread('z_scream.mp3');

ध्वनि (वाईएस, एफएसएस);

विराम(3)

आर.स्टॉप

% एलियन = r.getImage; % imshow (विदेशी);

% सेव ('एलियन_आईएमजी.मैट', एलियन);

मैं = 5;

टूटना

अन्यथा

नौ_प्लस_टेन = 19;

समाप्त

समाप्त

अगर मैं == 5

ए = 1; %कोण घुमाता है

टी = 9; % बड़े लूप को समाप्त करें

मैं = 0;

समाप्त

समाप्त

चरण 6: इसे चलाएं

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

अपने रोबोट का उपयोग करके आनंद लें !!

सिफारिश की: