विषयसूची:

गार्डन हेल्पर रूमबा बॉट: 8 कदम
गार्डन हेल्पर रूमबा बॉट: 8 कदम

वीडियो: गार्डन हेल्पर रूमबा बॉट: 8 कदम

वीडियो: गार्डन हेल्पर रूमबा बॉट: 8 कदम
वीडियो: रुमाल गायब करने का जादू learn handkerchief magic trick revealed 2024, जुलाई
Anonim
गार्डन हेल्पर रूंबा बोटा
गार्डन हेल्पर रूंबा बोटा

कियारा मायर्स, अहमद अलघदीर, और मैडिसन टिप्पीट

प्रयोजन:

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

विशेषताएं:

  • दीवारों का पता लगाने के लिए प्रकाश संवेदकों का उपयोग करता है और उन्हें टकराने से बचाने के लिए थोड़ा मुड़ता है
  • जब यह बगीचे के अंत में चट्टान से टकराता है तो प्रोग्राम को तोड़ने के लिए बंप सेंसर का उपयोग करता है
  • बगीचे में एक वृत्त का पता लगाने के लिए इमेज प्रोसेसिंग का उपयोग करता है और फिर उसकी त्रिज्या निर्धारित करता है
  • एक रंगीन टेप का पता लगाने के लिए क्लिफ सेंसर का उपयोग करता है जो एक फल की उपस्थिति को इंगित करता है

चरण 1: सामग्री और आपूर्ति:

  • एक लैपटॉप
  • मैटलैब 2017
  • रूमबा वैक्यूम क्लीनर
  • रास्पबेरी पाई
  • लकड़ी के ब्लॉक
  • सफेद कागज
  • काली मिर्च
  • रंगीन टेप/रंगीन कागज की पतली पट्टी
  • बड़ी चट्टान

चरण 2:

चरण 3: अपने "गार्डन" को असेंबल करना

असेम्बलिंग योर
असेम्बलिंग योर
  1. अपना काला कागज लें और विभिन्न आकारों के हलकों को काटें
  2. इन काले घेरे को एक बड़े श्वेत पत्र पर टेप करें

    किसी फल का पता लगाते समय यह कंट्रास्ट आवश्यक होगा

  3. अपने रोबोट को नेविगेट करने के लिए भूलभुलैया जैसे बगीचे पथ का निर्माण करने के लिए अपने वुडब्लॉक का उपयोग करें

    जैसा कि ऊपर चित्र में दिखाया गया है, हमने यू-आकार का पथ चुना है

  4. अपने बगीचे के अंत में अपने रोबोट को यह जानने के लिए एक चट्टान या दरवाजा या कोई अन्य वस्तु जोड़ें कि यह हो गया है
  5. अपने श्वेत पत्र को बगीचे की दीवारों पर वृत्त के साथ टेप करें

    हमने इसे टेप करने के लिए बाल्टियों का उपयोग किया क्योंकि हमारी दीवारें कैमरे के लिए बहुत छोटी थीं

  6. फल के सामने जमीन पर रंगीन टेप/रंगीन कागज की पतली पट्टी लगाएं

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

गार्डन नेविगेट करना

बम्प सेंसर का उपयोग करना: प्रोग्राम को चलाने के लिए, हम कोडिंग को थोड़ी देर के स्टेटमेंट में रखते हैं जो कोड के टूटने तक विभिन्न if स्टेटमेंट के माध्यम से लूप करता है। यदि कोई बंपर हिट होता है, तो इसका परिणाम उनके मान के बराबर सही होगा (जो बूलियन में 1 का मान है)। एक if स्टेटमेंट का उपयोग कोड को तोड़ने के लिए किया जाता है, जब उनका एक मान 1 के बराबर होता है।

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

इमेज प्रोसेसिंग का उपयोग करना: if स्टेटमेंट के भीतर, हम एक और if स्टेटमेंट एम्बेड करते हैं जो कहता है: यदि त्रिज्या का पता चला है, radii3, एक पके फल की हमारी न्यूनतम आवश्यकता से अधिक या बराबर है, r1 (आप इसे तय करते हैं), तो गिनें और प्रदर्शित करें Roomba कितने फल तैयार हैं और बगीचे के माध्यम से जारी रखने के लिए मुड़ें। यदि नहीं, तो बगीचे के माध्यम से जारी रखने की बारी। नोट: आपको अपने द्वारा घुमाए जाने वाले कोण को समायोजित करने की आवश्यकता हो सकती है क्योंकि हर रूमबा अलग है

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

शेष कोड का उपयोग रूमबा द्वारा लिए गए पथ को प्लॉट करने के लिए किया जाता है और फिर परिणाम आपके ईमेल पर भेजते हैं

चरण 5: कोड कॉपी करें

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

कश्मीर = 0

घरेलू

टाइमरवैल = टिक

जबकि सच

वी=.2; % वेग r.setDriveVelocity(v, v);% Roomba आगे बढ़ें L=r.getLightBumpers; एलसी = एल बाएं केंद्र; आरआर = एल राइट; एलएफ = एल बाएं; आरसी = एल राइट सेंटर; एलएफ = एल बाएंफ्रंट; आरएफ = एल राइटफ्रंट; क्यू = 75; % सीमा। आरटीएच = 30; %उच्च लाल दहलीज RTL=10; % कम लाल सीमा B=r.getBumpers S=r.getCliffSensors; r1=24; r3=10; PL1=1800; अगर एस.लेफ्टफ्रंट > PL1 || S.rightFront > PL1 % पता लगाता है कि जमीन पर रंग दहलीज से ऊपर है या नहीं। % टेक इमेज इम्शो (आईएमजी)% डिस्प्ले इमेज [सेंटर 3, रेडी 3] = इमफिंडसर्कल (आईएमजी, [30 50], 'ऑब्जेक्टपोलरिटी', 'डार्क', 'सेंसिटिविटी', 0.9); एच = viscircles (केंद्र 3, त्रिज्या 3); % त्रिज्या w/छवि में निर्दिष्ट श्रेणी में सर्कल के लिए देखें यदि radii3>=r1 T=1 k=k+1 dist1=0.2। *बीता हुआ समय% यदि त्रिज्या का पता चला है तो पके फल की न्यूनतम% आवश्यकता से अधिक या बराबर है, तो रूमबा इस फल को गिनता है यदि radii3<=r3 T=0 और T=0 dist2=0.2.*elapsedTime %यदि नहीं, तो यह फल के अंत की गणना नहीं करता है

अगर T==1 r.setLEDDigits(num2str(k)) r.beep r.beep r.beep r.turnAngle(78) % अगर एक फल का पता चला है, तो Roomba पर नंबर प्रदर्शित करें,% शोर करें, और मुड़ें और अगर T==2 r.turnAngle(78)% 2 फल पाए जाते हैं, तो %गार्डन के माध्यम से जारी रखने के लिए बारी अगर LC >Q r.stop r.turnAngle(-7) और RC >Q r.stop r.turnAngle(7) और LF >Q r.stop r.turnAngle(-7) और RF >Q r.stop r. टर्नएंगल(7) और अगर एलएफ > क्यू आर.स्टॉप % दीवार से टकराने से बचने के लिए उचित दिशा में थोड़ा मुड़ेगा

अगर बी.दाएं ==1 || बी.बाएं==1 || B.front==1 dist3=0.2.*elapsedTime r.stop r.beep('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle(360) %यदि इनमें से कोई भी बंबर हिट होते हैं, फिर रूमबा ध्वनि बजाता है, चारों ओर घूमता है, %और कोड को तोड़ता है

ब्रेक एंड

एंड स्कैटर (0.533, 0, '^') स्कैटर पर होल्ड (0.533, डिस्ट 1, '<') स्कैटर पर होल्ड (-dist2, dist1, 'v') स्कैटर पर होल्ड (-dist2, 0, 'd') saveas (जीसीएफ, 'मूवमेंट.पीएनजी')

kmsg=num2str(k) mail= '[email protected]' पासवर्ड='Srsora123#' host='smtp.gmail.com' port='465'

setpref ('इंटरनेट', 'ईमेल', मेल); setpref ('इंटरनेट', 'SMTP_Server', होस्ट) प्रॉप्स = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); प्रॉप्स.सेटप्रॉपर्टी ('mail.smtp.socketFactory.port', पोर्ट); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail (मेल, 'हैलो अंतरिक्ष यात्री! बगीचे में इतने सारे फल हैं', kmsg, {'movement.png'})

सिफारिश की: