विषयसूची:

UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018: 5 कदम
UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018: 5 कदम

वीडियो: UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018: 5 कदम

वीडियो: UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018: 5 कदम
वीडियो: 10L लोन के लिए प्रोजेक्ट रिपोर्ट कैसे बनाये | New Business Ke Liye Project Report Kaise Banaye 2023 2024, जुलाई
Anonim
UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018
UTK EF 230 MarsRoomba प्रोजेक्ट फॉल 2018

वर्तमान में, मार्स रोवर्स का उपयोग विभिन्न तरीकों से मंगल ग्रह की सतह पर डेटा एकत्र करने के लिए किया जाता है, ताकि सूक्ष्म जीवन के लिए ग्रह की क्षमता के बारे में अधिक जानने के अंतिम छोर तक पहुंच सके। रोवर्स मुख्य रूप से डेटा संग्रह के लिए फोटोग्राफी और मिट्टी विश्लेषण उपकरण का उपयोग करते हैं, लेकिन रोवर्स में नेविगेशन उपकरण, विकिरण डिटेक्टर, वायुमंडलीय सेंसर और रॉक नमूना वाष्पीकरण के लिए एक लेजर भी शामिल है। नासा के अनुसार, नियोजित 2020 रोवर मिशन का लक्ष्य ज्यादातर समान है, लेकिन विशेष कार्य के साथ "मिट्टी और चट्टान के नमूने एकत्र करना और उन्हें भविष्य के मिशन द्वारा पृथ्वी पर संभावित वापसी के लिए सतह पर कैश करना" है।

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

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

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

सामग्री की जरूरत
सामग्री की जरूरत

1) इंटरनेट सुलभ कंप्यूटर/लैपटॉप

2) MATLAB_R2018a

3) रूमबा और रूमबा डाउनलोड

चरण 2: सेटअप/डाउनलोड

सेटअप/डाउनलोड
सेटअप/डाउनलोड

रूमबा तक पहुंचने के लिए आवश्यक सॉफ़्टवेयर डाउनलोड करने के लिए MATLAB में इस स्क्रिप्ट को चलाएं (प्रोजेक्ट फ़ोल्डर में अपनी फ़ाइल में सहेजा गया)।

अतिरिक्त सहायता:

EF 230 Roomba प्रोजेक्ट% के लिए % इंस्टालेशन प्रोग्राम% अंतिम अपडेट: 13 सितंबर, 2017 (https सर्वर से जुड़ी निश्चित सुरक्षा समस्याएँ और त्रुटि होने पर हटाई गई फ़ाइल हटाने की चेतावनी) फ़ंक्शन रूमबासीएलसी स्थापित करें; फ़ाइलें स्थापित करने के लिए फ़ाइलों की% सूची = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; विकल्प से स्थापित करने के लिए% स्थान = वेब विकल्प ('सर्टिफिकेटफाइलनाम', ''); % इसे प्रमाणपत्र आवश्यकताओं को अनदेखा करने के लिए कहें सर्वर = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'रुम्बा इंस्टाल/अपडेट'; % प्रदर्शन उद्देश्य और पुष्टिकरण संकेत प्राप्त करें = {'यह प्रोग्राम इन EF 230 Roomba फ़ाइलों को डाउनलोड करेगा:' '' strjoin(files, '') '' 'इस फ़ोल्डर में:' '' cd '' 'क्या आप जारी रखना चाहते हैं? ' }; बीप; yn = questdlg (प्रॉम्प्ट, … dlgTitle, … 'हां', 'नहीं', 'हां');

अगर ~ strcmp (yn, 'हां'), वापसी; समाप्त

% उन फाइलों की सूची प्राप्त करें जो मौजूद हैं मौजूदा_फाइल्स = फाइलें (सेलफुन (@exist, फाइलें)> 0); अगर ~isempty(मौजूदा_फाइल्स)% सुनिश्चित करें कि उन्हें बदलना वास्तव में ठीक है प्रॉम्प्ट = {'आप इन फाइलों को बदल रहे हैं:' '' strjoin (मौजूदा_फाइल्स, '') '' 'बदलने के लिए ठीक है?' }; बीप; yn = questdlg (प्रॉम्प्ट, … dlgTitle, … 'हां', 'नहीं', 'हां'); अगर ~ strcmp (yn, 'हां'), वापसी; अंत अंत

% फ़ाइलें डाउनलोड करें cnt = 0; i=1 के लिए:लंबाई (फ़ाइलें) f=फ़ाइलें{i}; disp (['डाउनलोडिंग' f]); यूआरएल का प्रयास करें = [सर्वर एफ]; वेबसेव (एफ, यूआरएल, विकल्प); सुरक्षा त्रुटियों से बचने के लिए % जोड़े गए विकल्प cnt = cnt + 1; कैच डिस्प (['डाउनलोड करने में त्रुटि' f]); डमी = [एफ '.एचटीएमएल']; अगर मौजूद है (डमी, 'फाइल') == 2 डिलीट (डमी) एंड एंड एंड

अगर cnt == लंबाई (फ़ाइलें) संदेश = 'स्थापना सफल'; प्रतीक्षा करें (msgbox (संदेश, dlgTitle)); अन्य संदेश = 'स्थापना त्रुटि - विवरण के लिए कमांड विंडो देखें'; प्रतीक्षा करें (errordlg (msg, dlgTitle)); समाप्त

अंत %roombaइंस्टॉल

चरण 3: कोड भाग 1: ट्रैकिंग फ़ंक्शन

कोड भाग 1: ट्रैकिंग फ़ंक्शन
कोड भाग 1: ट्रैकिंग फ़ंक्शन

यह फ़ंक्शन Roomba चर और कैमरे से Roomba पर चित्र लेता है और ट्रैक किए गए ऑब्जेक्ट के केंद्र xy निर्देशांक ढूंढता है।

इस कोड को उसी फोल्डर में दूसरी फाइल में सेव करें।

फ़ंक्शन [xm, ym] = ट्रैकिंगनीला (r)% इनपुट: रूमबा वैरिएबल% आउटपुट: निम्न ऑब्जेक्ट के केंद्र का x और y मान value] = ट्रैकिंगब्लू (रूमबा वैरिएबल) img=r.getImage; % रोबोट सबप्लॉट (1, 2, 2) सबइमेज (आईएमजी) के कैमरे को पढ़ता है; पथ शीर्षक ('ट्रैकिंग छवि') लाल = img (:,:, 1); हरा = आईएमजी (:,:, 2); नीला = आईएमजी (:,:, 3); जस्टब्लू = नीला - हरा / 2 - लाल / 2; बीडब्ल्यू = जस्टब्लू> ४०; सबप्लॉट (1, 2, 2) सबइमेज (बीडब्ल्यू) पर होल्ड करें; [एक्स, वाई] = खोजें (बीडब्ल्यू); अगर ~ isempty(x) && ~isempty(y) xm = Round(mean(x)); ym = गोल (माध्य (y)); xx = अधिकतम (1, xm-5): न्यूनतम (xm + 5, आकार (bw, 1)); yy = अधिकतम(1, ym-5):मिनट(ym+5, आकार(bw, 2)); बीडब्ल्यूबीडब्ल्यू = शून्य (आकार (बीडब्ल्यू), 'uint8'); बीडब्ल्यूबीडब्ल्यू (xx, yy) = 255; सबप्लॉट (1, 2, 2) सबइमेज (जस्टब्लू + बीडब्ल्यूबीडब्ल्यू) पर होल्ड करें; समाप्त

चरण 4: कोड भाग 2: जबकि लूप

यह कोड रोम्बा को ट्रैकिंग फ़ंक्शन से ऑब्जेक्ट के x और y स्थान के आधार पर चलाता है। यह रूंबा को नीले रंग की तलाश करते हुए दीवारों और चट्टानों के लिए सतर्क कर देगा। यह Roomba पथ के x और y निर्देशांक भी लेगा और ट्रैकिंग छवि के साथ संबंधित प्लॉट बनाएगा। यदि बम्प सेंसर सक्रिय है तो यह ईमेल अनुभाग में चला जाएगा।

% रोवर परियोजना

% जोनाह ज़हान, वेड प्राइस, नूह स्लोन% jzahn2, wprice15, nsloan1% इनपुट: रूमबा वैल्यू, कैमरा डेटा, बम्प, लाइट और वॉल सेंसर% उद्देश्य: अंतरिक्ष यात्री का अनुसरण करता है और बाधाओं से बचा जाता है। यदि सतर्क किया जाता है, तो रूंबा एक ईमेल भेजता है जिसमें एक मानचित्र का विवरण दिया जाता है और जहां यह अपनी प्रारंभिक स्थिति के अनुसार है। %उपयोग: केवल रूमबा वैरिएबल घोषित करके प्रोग्राम को चलाएं, साथ ही% में मूविंग ग्रीन ऑब्जेक्ट भी है %प्रारंभिक चर c=0; एक्स = 0; वाई = 0; थीटा = 0; जबकि c==0% इसे नीली वस्तु और बाधाओं का पता लगाने के लिए t = r.timeGet; d = r.getDistance; [xval, yval] = ट्रैकिंगब्लू (आर); चट्टान = getCliffSensors (आर); % सेंसर मूल्यों के लिए संरचनाओं को प्रारंभ करना प्रकाश = getLightBumpers (आर); बम्प = गेटबम्पर्स (आर); अगर प्रकाश।बाएंकेंद्र>= 10 || light.rightCenter >= १०% होश अगर r.stop r.setLEDDigits('help') c=1% के पास एक दीवार है तो b==0% अगर बम्प.दाएं == 1 || टक्कर.बाएं == 1 || बम्प.फ्रंट == 1% होश अगर यह दीवार को भांपने के बाद किसी चीज से टकराया है टक्कर.बाएं == 1 || बम्प.फ्रंट == 1% सेंस अगर उसने कुछ टकराया है, यदि ऐसा है, तो यह एक ईमेल भेजेगा r.stop c=1 b=1 और अगर क्लिफ। लेफ्टफ्रंट <= 100 || क्लिफ.राइटफ्रंट <= 100 || चट्टान.बाएं <= १०० || क्लिफ.राइट <= १००% सेंस अगर r.stop c=1 r.setLEDDigits('help') के पास एक चट्टान है तो% ड्राइव वेग को नीले रंग का अनुसरण करने के लिए सेट करता है यदि yval = १०० r.setDriveVelocity(०.१) और अगर yval ४०० r.turnAngle(-5) अंत अंत थीटा = थीटा + r.getAngle; x = d.*cosd(थीटा) + x; रूमबा का % x निर्देशांक y = d.*sind(theta).*d + y; रूमबा सबप्लॉट का % y निर्देशांक(1, 2, 1) प्लॉट(x, y, 'bd') % पथ को प्लॉट करता है और एक शीर्षक शीर्षक जोड़ता है ('रूमबा पथ') होल्ड करें; समाप्त

चरण 5: कोड भाग 3: ईमेल अनुभाग

यह प्लॉट किए गए पथ और छवि को ले जाएगा और इसे एक निर्दिष्ट ईमेल पते पर भेज देगा।

(उदाहरण ईमेल के साथ यहां दिखाया गया है)

%% ईमेल अनुभाग

अगर b==1 saveas(gcf, 'rovermap.png') % आंकड़ा बचाता है setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('इंटरनेट', 'ई_मेल', '[email protected]'); % मेल खाता setpref ('इंटरनेट', 'SMTP_Username', 'gsseकंप्यूटर@gmail.com') से भेजने के लिए; % प्रेषक उपयोगकर्ता नाम setpref ('इंटरनेट', 'SMTP_Password', 'gssegsse'); % प्रेषक पासवर्ड सहारा = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465'); sendmail ('उदाहरण ईमेल', 'रोवरबीकन', 'अंतरिक्ष यात्री ने चलना बंद कर दिया है। पुनर्प्राप्ति के लिए, संलग्न फ़ाइल में निर्देशों का पालन करें।', 'rovermap.png') disp('ईमेल भेजा गया') अंत

सिफारिश की: