Სარჩევი:
- ნაბიჯი 1: საჭირო მასალები
- ნაბიჯი 2: დაყენება/ჩამოტვირთვა
- ნაბიჯი 3: კოდი ნაწილი 1: თვალთვალის ფუნქცია
- ნაბიჯი 4: კოდი ნაწილი 2: მიუხედავად იმისა, რომ მარყუჟი
- ნაბიჯი 5: კოდი ნაწილი 3: ელ.ფოსტის განყოფილება
ვიდეო: UTK EF 230 MarsRoomba Project შემოდგომა 2018: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ამჟამად, მარსმავლები გამოიყენება მარსის ზედაპირზე მონაცემების შეგროვების მიზნით სხვადასხვა მეთოდით, რათა საბოლოოდ გაიგონ მეტი პლანეტის მიკრობული სიცოცხლის პოტენციალის შესახებ. როვერები ძირითადად იყენებენ ფოტოგრაფიისა და ნიადაგის ანალიზის ინსტრუმენტებს მონაცემთა შეგროვებისთვის, მაგრამ როვერები ასევე მოიცავს სანავიგაციო ინსტრუმენტებს, რადიაციის დეტექტორებს, ატმოსფერულ სენსორებს და ლაზერს კლდის ნიმუშის აორთქლებისთვის. NASA– ს თანახმად, 2020 წლის როვერული მისიის მიზანი ძირითადად იგივეა, მაგრამ სპეციალური ამოცანაა „ნიადაგისა და კლდის ნიმუშების შეგროვება და ზედაპირზე მათი შენახვა მომავალი მისიით დედამიწაზე პოტენციური დაბრუნებისთვის“.
თუმცა, იმ პირობით, რომ მომავალი როვერები გამოყენებული იქნება ადამიანის დასახმარებლად, ჩვენმა გუნდმა განიხილა რა ადამიანების ასპექტების მონიტორინგი შეეძლო როვერს. ჩვენ მივედით იმ დასკვნამდე, რომ თუკი საგანგებო სიტუაციამ ასტრონავტი უგონო მდგომარეობაში ჩააგდო და ვერ შეძლებს აღჭურვილობის შენარჩუნებას, ჩვენი როვერი შეიძლება მოძრაობდეს მაიას მოძრაობის შუქურად იმ დაკვირვებით, რომ მის შემდგომ ასტრონავტი უმოძრაოა და უბედურების შეტყობინებას გადასცემს. ადამიანის მოყვანისა და უძრაობის დასადგენად, როვერმა უნდა მიიღოს ისეთი საშუალებები, როგორიცაა ადამიანის ფეხსაცმლის ფერი და მათი მოძრაობა. კიდევ ერთი გასათვალისწინებელია ის, რომ მას უნდა ახსოვდეს თავისი გზა საგანგებო სიტუაციის შემთხვევაში დისტრესის სიგნალის გადასაცემად. ჩვენი როვერი აკმაყოფილებს მარსზე მოთხოვნას, რომ ასეთი ძვირადღირებული მისიის მცდელობა ასეთ უცხო მხარეში მოითხოვს სეიფების მრავალ ფენას და თუ ასტრონავტმა ვერ შეძლო საკუთარი დახმარების მიღება უხარისხო ან უგონო მდგომარეობის გამო, როვერს შეუძლია გააფრთხილოს სხვები რა
ეს ინსტრუქცია შექმნილია იმისთვის, რომ მკითხველს დაეხმაროს თავისი Roomba- ს პროგრამირებაში წარმატებით მიჰყვეს "ასტრონავტს" და გაგზავნოს საგანგაშო სიგნალი საჭიროების შემთხვევაში.
ნაბიჯი 1: საჭირო მასალები
1) ინტერნეტით ხელმისაწვდომი კომპიუტერი/ლეპტოპი
2) MATLAB_R2018 ა
3) Roomba და Roomba ჩამოტვირთვა
ნაბიჯი 2: დაყენება/ჩამოტვირთვა
გაუშვით ეს სკრიპტი MATLAB– ში, რათა გადმოწეროთ პროგრამული უზრუნველყოფა, რომელიც საჭიროა Roomba– ზე წვდომისათვის (შენახულია საკუთარ ფაილში პროექტის საქაღალდეში)
დამატებითი დახმარება:
% EF 230 Roomba პროექტის ინსტალაციის პროგრამა% ბოლო განახლება: 13 სექტემბერი, 2017 (დაფიქსირდა უსაფრთხოების საკითხები, რომლებიც დაკავშირებულია https სერვერთან და ამოღებულია გაფრთხილების წაშლის გაფრთხილების შემთხვევაში) roombaInstall clc; % ფაილების სია ფაილების დასაყენებლად = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % ადგილმდებარეობა პარამეტრებიდან = weboptions ('CertificateFilename', ''); % უთხარი სერტიფიკატის მოთხოვნების იგნორირება სერვერზე = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba- ს ინსტალაცია/განახლება'; % ჩვენების მიზანი და მიიღეთ დადასტურების მოთხოვნა = {'ეს პროგრამა გადმოწერს ამ EF 230 Roomba ფაილებს:' '' strjoin (ფაილები, ''] '' 'ამ საქაღალდეში:' '' cd '' 'გსურთ გააგრძელოთ? '}; სიგნალი; yn = questdlg (მოთხოვნა,… dlgTitle,… 'დიახ', 'არა', 'დიახ');
if ~ strcmp (yn, 'დიახ'), დაბრუნება; დასასრული
% მიიღეთ არსებული ფაილების სია არსებული_ ფაილები = ფაილები (cellfun (@exist, files)> 0); if ~ isempty (არსებული_ ფაილები) % დარწმუნდით, რომ ნამდვილად კარგია მათი სწრაფი შეცვლა = {'თქვენ შეცვლით ამ ფაილებს (ფაილებს):' '' strjoin (არსებული_ ფაილები, '') '' 'კარგი შესაცვლელად?' }; სიგნალი; yn = questdlg (მოთხოვნა,… dlgTitle,… 'დიახ', 'არა', 'დიახ'); if ~ strcmp (yn, 'დიახ'), დაბრუნება; დასასრული დასასრული
% ჩამოტვირთეთ ფაილები cnt = 0; for i = 1: სიგრძე (ფაილები) f = ფაილები {i}; disp (['' გადმოტვირთვა 'f]); სცადეთ url = [სერვერი f]; websave (f, url, პარამეტრები); % დამატებული პარამეტრები უსაფრთხოების შეცდომების თავიდან ასაცილებლად cnt = cnt + 1; catch disp (['გადმოწერის შეცდომა' f]); დუმილი = [f '.html']; თუ არსებობს (დუმილი, 'ფაილი') == 2 წაშლა (ვიწრო) ბოლო დასასრული
თუ cnt == სიგრძე (ფაილები) msg = 'ინსტალაცია წარმატებულია'; waitfor (msgbox (msg, dlgTitle)); else msg = 'ინსტალაციის შეცდომა - იხილეთ ბრძანების ფანჯარა დეტალებისთვის'; waitfor (errordlg (msg, dlgTitle)); დასასრული
დასრულება %roombaInstall
ნაბიჯი 3: კოდი ნაწილი 1: თვალთვალის ფუნქცია
ეს ფუნქცია იღებს Roomba ცვლადს და სურათს კამერადან Roomba- ზე და პოულობს თვალყურს ადევნებული ობიექტის ცენტრალურ xy კოორდინატებს
შეინახეთ ეს კოდი იმავე საქაღალდეში სხვა ფაილში.
ფუნქცია [xm, ym] = თვალთვალის ლურჯი (r) %შეყვანა: roomba ცვლადი %შედეგები: შემდეგი ობიექტის ცენტრის x და y მნიშვნელობა %მიზანი: პოულობს სურათის მოცემული ცისფერი ობიექტის ცენტრს %გამოყენება [x მნიშვნელობა, y მნიშვნელობა] = თვალთვალის ლურჯი (ოთახის ცვლადი) img = r.getImage; % კითხულობს რობოტის ქვეპლოტის (1, 2, 2) ქვესახეობის კამერას (img); %გვიჩვენებს სურათს იმავე ფანჯარაში, როგორც ბილიკის სათაური ('სურათის თვალყურის დევნება') red = img (:,:, 1); მწვანე = img (:,:, 2); ლურჯი = img (:,,, 3); justBlue = ლურჯი - მწვანე/2 - წითელი/2; bw = justBlue> 40; დაიჭირეთ ქვემეხი (1, 2, 2) ქვესახეობა (ბ.ვ.); [x, y] = იპოვეთ (bw); თუ ~ გათავისუფლებულია (x) && ~ გათავისუფლებულია (y) xm = მრგვალი (საშუალო (x)); ym = მრგვალი (საშუალო (y)); xx = max (1, xm-5): min (xm+5, ზომა (bw, 1)); yy = max (1, ym-5): min (ym+5, ზომა (bw, 2)); bwbw = ნულოვანი (ზომა (bw), 'uint8'); bwbw (xx, yy) = 255; დაიჭირეთ ქვემეხი (1, 2, 2) ქვესახეობა (justBlue + bwbw); დასასრული
ნაბიჯი 4: კოდი ნაწილი 2: მიუხედავად იმისა, რომ მარყუჟი
ეს კოდი ამოძრავებს Roomba- ს, ობიექტის x და y ადგილმდებარეობის მიხედვით თვალთვალის ფუნქციისგან. ეს გახდის Roomba ფხიზლად კედლებსა და კლდეებს, ხოლო ეძებს ლურჯს. ეს ასევე მიიღებს Roomba ბილიკის x და y კოორდინატებს და შექმნის შესაბამის ნაკვეთს თვალთვალის სურათთან ერთად. თუ დარტყმის სენსორი გააქტიურებულია, ის გადადის ელ.ფოსტის განყოფილებაში
როვერის პროექტი
Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %საშუალებები: ოთახის ღირებულება, კამერის მონაცემები, დარტყმის, შუქისა და კედლის სენსორები მიზანი: მიჰყვება ასტრონავტს და თავს არიდებს დაბრკოლებებს. გაფრთხილების შემთხვევაში, roomba აგზავნის ელ.წერილს, სადაც აღწერილია რუკა და სად არის მისი საწყისი პოზიციის მიხედვით. გამოყენება: უბრალოდ გაუშვით პროგრამა ოთახის ცვლადის გამოცხადებით, ასევე აქვს მოძრავი მწვანე ობიექტი %შედეგები: აჩვენებს გამოსახულების თვალთვალის სურათს, ელ.ფოსტის რუქას და ტექსტს მომხმარებლისთვის %% შემდეგნაირად b = 0; %ცვლადების ინიციალიზაცია c = 0; x = 0; y = 0; თეტა = 0; ხოლო c == 0 %მარყუჟი, რათა აღმოაჩინოს ლურჯი ობიექტი და დაბრკოლებები t = r.timeGet; d = r.getDistance; [xval, yval] = თვალთვალის ლურჯი (r); cliff = getCliffSensors (r); %სენსორული მნიშვნელობების სტრუქტურების ინიციალიზაცია სინათლე = getLightBumpers (r); bump = getBumpers (r); თუ light.leftCenter> = 10 || light.rightCenter> = 10 % გრძნობს თუ არის კედელი r.stop r.setLEDDigits ('დახმარება') c = 1 % ხოლო b == 0 % თუ bump.right == 1 || bump.left == 1 || bump.front == 1 % გრძნობს, თუ მას აქვს შეჯახებული რაღაც მას შემდეგ, რაც იგრძნობა კედელი % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %გრძნობს, თუ მას აქვს რაღაც შეჯახებული, თუ ასეა, ის გამოგიგზავნით ელ.წერილს r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.right წინა = <100 || კლდე. მარცხენა <= 100 || cliff.right <= 100 %გრძნობს, თუ არის კლდე r.stop– ის მახლობლად r. 400 r.turnAngle (-5) დასასრულის დასასრული თეტა = თეტა + რ. მიიღეთAngle; x = d.*cosd (theta) + x; ოთახის % x კოორდინატი y = d.*sind (theta).*d + y; roomba ქვეპლოტის (1, 2, 1) ნაკვეთის (x, y, 'bd') % y კოორდინატი ასახავს გზას და ამატებს სათაურის სათაურს ('Roomba Path') დასასრული
ნაბიჯი 5: კოდი ნაწილი 3: ელ.ფოსტის განყოფილება
ეს მიიღებს შედგენილ გზას და სურათს და გაუგზავნის მითითებულ ელ.ფოსტის მისამართს
(აქ ნაჩვენებია ელ.ფოსტის მაგალითით)
%% ელ.ფოსტის განყოფილება
თუ b == 1 saveas (gcf, 'rovermap.png') %ინახავს ფიგურის setpref ('ინტერნეტი', 'SMTP_Server', 'smtp.gmail.com'); setpref ('ინტერნეტი', 'E_mail', '[email protected]'); % ფოსტის ანგარიში გაგზავნის setpref- დან ("ინტერნეტი", "SMTP_Username", "[email protected]"); % გამგზავნის მომხმარებლის სახელი 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 ("ელ.ფოსტის მაგალითი", "RoverBeacon", "ასტრონავტმა შეწყვიტა მოძრაობა. გამოჯანმრთელებისთვის მიჰყევით მითითებებს თანდართულ ფაილში.", "rovermap.png") disp ("გაგზავნილი ელფოსტა") დასასრული
გირჩევთ:
Robot Project UTK 2017: 3 ნაბიჯი
Robot Project UTK 2017: მისია: ჩვენი ინჟინრების გუნდი დაიქირავა Froogle– მა, არაკომერციულმა ფონდმა ღია კოდის ტექნოლოგიის განვითარებისათვის, ინოვაციური Mars Rover– ის შემქმნელი ადამიანის დასახმარებლად. არის ოთახი, რომელიც ჩვენ დავწერეთ სერიის შესასრულებლად
გენერატორი - Fidget Spinner Power 9W Led Bulb 230 V: 3 ნაბიჯი (სურათებით)
გენერატორი - Fidget Spinner Powering 9W Led Bulb 230 V: ქვემოთ მოყვანილ რიგებში ჩვენ გვინდა ვაჩვენოთ, თუ როგორ შეიძლება შეიქმნას მძლავრი fidget spinner გენერატორი. ის გამოიმუშავებს 100 ვოლტს Ac– ს დასაწყისში და მას შეეძლება განათდეს led ნათურა 230 V 9 W. საგანმანათლებლო პროექტი, სულ რამდენიმე მასალის გამოყენებით. მოძებნა
EF 230: სახლის სისტემა 3000 ინსტრუქციული: 4 ნაბიჯი
EF 230: სახლის სისტემა 3000 ინსტრუქტაჟი: სახლის სისტემა 3000 არის მოწყობილობა, რომელიც იყენებს არდუინოს, ტემპერატურის სენსორს, პიეზო ზუმერს, ოპტიკურ დეტექტორს/ფოტოტრანსისტორს და სერვოს, რომელიც აჩვენებს სახლის ენერგოეფექტურობის გაუმჯობესების გზებს
Venus Flytrap - ITM შემოდგომა 2019: 5 ნაბიჯი
Venus Flytrap - ITM შემოდგომა 2019: რა აკლია ყველას მაგიდას? მექანიკური ვენერას მფრინავი ხრახნი, რომელსაც უჭირავს ფანქრები, კალმები და სხვა საგნები
Mars Roomba Project UTK: 4 ნაბიჯი
Mars Roomba Project UTK: უარი პასუხისმგებლობაზე: ეს მხოლოდ იმუშავებს, თუ ROOMBA შეიქმნება ძალიან სპეციფიკურ გზაზე, ეს ინსტრუქცია შეიქმნა და გამიზნულია გამოიყენოს დაძაბულობის სტუდენტთა უნივერსიტეტმა და ფაკულტეტი გამოიყენოს ეს კოდი დაწერილია და