Orodha ya maudhui:

Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018: Hatua 5
Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018: Hatua 5

Video: Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018: Hatua 5

Video: Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018: Hatua 5
Video: Un Aperçu du Syndrome de Tachycardie Orthostatique Posturale (POTS) 2024, Novemba
Anonim
Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018
Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018

Hivi sasa, rovers za Mars hutumiwa kukusanya data juu ya uso wa Mars kupitia njia anuwai, hadi mwisho wa kujifunza zaidi juu ya uwezekano wa sayari ya maisha ya vijidudu. Rovers kimsingi hutumia zana za upigaji picha na uchanganuzi wa mchanga kwa ukusanyaji wa data, lakini rovers pia ni pamoja na vyombo vya urambazaji, vifaa vya kugundua mionzi, sensorer za anga, na laser ya sampuli ya mwamba. Lengo lililopangwa la 2020 rover mission ni sawa, lakini na jukumu maalum la "kukusanya sampuli za mchanga na mwamba na kuziweka juu ya uso kwa uwezekano wa kurudi Duniani na ujumbe wa siku zijazo," kulingana na NASA.

Walakini, chini ya dhana kwamba rovers za baadaye zitatumika kwa msaada wa kibinadamu, timu yetu ilizingatia ni mambo gani ya wanadamu ambayo rover inaweza kufuatilia. Tulifikia hitimisho kwamba ikiwa dharura fulani inaweza kumpa fahamu mwanaanga na msaada wa maisha na vifaa, rover yetu inaweza kutumika kama taa ya siku ya meya kwa kuona kwamba mwanaanga aliyemfuata hajabadilika na kutuma ujumbe wa dhiki. Ili kumfuata mwanadamu na kuamua kutohama, rover angechukua pembejeo kama rangi ya viatu vya mwanadamu na mwendo wao. Ingizo jingine la kuzingatia ni kwamba italazimika kukumbuka njia yake ili kupeleka ishara ya shida wakati wa dharura. Rover yetu inakidhi hitaji kwenye Mars kwa kujaribu jaribio kama hilo la gharama kubwa kwenye eneo kama hilo la kigeni linahitaji safu nyingi za usalama-salama, na ikiwa mwanaanga hatoweza kupata msaada wao mwenyewe kwa sababu ya kukosekana kwa utendakazi au fahamu, rover anaweza kuwaonya wengine.

Agizo hili limebuniwa kumsaidia msomaji katika kuandaa Roomba yake ili afuate kwa ufanisi "mwanaanga" na kutuma ishara ya shida ikiwa inahitajika.

Hatua ya 1: Vifaa vinahitajika

Vifaa vinahitajika
Vifaa vinahitajika

1) kompyuta / kompyuta inayopatikana kwenye mtandao

2) MATLAB_R2018a

3) Roomba na Roomba Download

Hatua ya 2: Usanidi / Upakuaji

Usanidi / Upakuaji
Usanidi / Upakuaji

Endesha hati hii katika MATLAB ili kupakua programu inayohitajika kupata Roomba (iliyohifadhiwa katika faili yake kwenye folda ya mradi)

Msaada wa Ziada:

Mpango wa usanikishaji wa Mradi wa EF 230 Roomba% Sasisho la mwisho: Septemba 13, 2017 (Maswala yaliyosasishwa ya usalama yanayohusiana na seva ya https na faili iliyoondolewa kufuta onyo ikiwa makosa yalitokea) kazi roombaInstall clc; orodha ya faili za kusakinisha faili = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % eneo la kusanikisha kutoka kwa chaguzi = chaguo za wavuti ('CertificateFilename', "); % iambie kupuuza seva ya mahitaji ya cheti = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Sakinisha / Sasisha Roomba'; % onyesha kusudi na upate uthibitisho haraka = {'Programu hii itapakua faili hizi za EF 230 Roomba:' 'strjoin (files,' ') "" kwa folda hii: "" cd "" Je! unataka kuendelea? '}; beep; yn = questdlg (haraka,… dlgTitle,… 'Ndio', 'Hapana', 'Ndio');

if ~ strcmp (yn, 'Yes'), rudi; mwisho

% pata orodha ya faili zilizopo_files = faili (cellfun (@exist, faili)> 0); ikiwa ~ isempty (zilizopo_files)% hakikisha ni sawa kuzibadilisha haraka = {'Unabadilisha faili hizi: }; beep; yn = questdlg (haraka,… dlgTitle,… 'Ndio', 'Hapana', 'Ndio'); if ~ strcmp (yn, 'Yes'), rudi; mwisho mwisho

% pakua faili cnt = 0; kwa i = 1: urefu (faili) f = faili {i}; disp (['Upakuaji' f]); jaribu url = [server f]; hifadhi ya wavuti (f, url, chaguzi); % aliongeza chaguo ili kuepuka makosa ya usalama cnt = cnt + 1; catch disp (['Hitilafu ya kupakua' f]); dummy = [f '.html']; ikiwa zipo (dummy, 'file') == 2 kufuta (dummy) mwisho mwisho mwisho

ikiwa cnt == urefu (faili) msg = 'Ufanisi wa Usakinishaji'; subiri (msgbox (msg, dlgTitle)); mwingine msg = 'Kosa la Usakinishaji - tazama dirisha la amri kwa maelezo'; subiri (errordlg (msg, dlgTitle)); mwisho

mwisho% roombaInstall

Hatua ya 3: Sehemu ya Msimbo 1: Kazi ya Kufuatilia

Kanuni Sehemu ya 1: Kazi ya Kufuatilia
Kanuni Sehemu ya 1: Kazi ya Kufuatilia

Kazi hii inachukua ubadilishaji wa Roomba na picha kutoka kwa kamera kwenye Roomba na hupata kuratibu za katikati za kitu kilichofuatiliwa

Hifadhi nambari hii kwenye faili nyingine kwenye folda moja.

kazi [xm, ym] = ufuatiliaji wa bluu (r)% Pembejeo: matokeo ya roomba% Matokeo: x na y thamani ya katikati ya kitu kifuatacho% Kusudi: hupata katikati ya kitu cha bluu kilichopewa picha% Matumizi [x thamani, y thamani] = ufuatiliaji wa bluu (roomba variable) img = r.getImage; % inasoma kamera mbali na sehemu ndogo ya robot (1, 2, 2) subimage (img); % inaonyesha picha kwenye dirisha sawa na kichwa cha njia ('Picha ya Kufuatilia') nyekundu = img (:,:, 1); kijani = img (:,:, 2); bluu = img (:,:, 3); Bluu tu = bluu - kijani / 2 - nyekundu / 2; bw = tuBluu> 40; shikilia kijiti kidogo (1, 2, 2) kijiti kidogo (bw); [x, y] = pata (bw); ikiwa ~ isempty (x) && ~ isempty (y) xm = pande zote (maana (x)); ym = pande zote (maana (y)); xx = max (1, xm-5): min (xm + 5, saizi (bw, 1)); yy = max (1, ym-5): min (ym + 5, saizi (bw, 2)); bwbw = zero (saizi (bw), 'uint8'); bwbw (xx, yy) = 255; shikilia kijiti kidogo (1, 2, 2) kijiti kidogo (JustBlue + bwbw); mwisho

Hatua ya 4: Kanuni Sehemu ya 2: Wakati Kitanzi

Nambari hii inaendesha Roomba kulingana na eneo la x na y la kitu kutoka kwa kazi ya ufuatiliaji. Hii itafanya Roomba iangalie kuta na miamba, wakati inatafuta bluu. Hii pia itachukua uratibu wa x na y wa njia ya Roomba na kuunda njama inayolingana na picha ya ufuatiliaji. Ikiwa sensor ya mapema imeamilishwa itaendelea kwenye sehemu ya barua pepe

Mradi wa Rover

Jonah Zahn, Wade Bei, Noah Sloan% jzahn2, wprice15, nsloan1 Pembejeo: thamani ya roomba, data ya kamera, mapema, sensorer za ukuta Kusudi: Inafuata mwanaanga na epuka vizuizi. Ikiwa imearifiwa, roomba hutuma barua pepe% inayoelezea ramani na iko wapi kulingana na nafasi yake ya kuanza. Matumizi: endesha tu programu na kuwa umetangaza kutofautisha kwa roomba, pia% kuwa na kitu kijani kibichi% Matokeo: inaonyesha picha ya ufuatiliaji wa picha, ramani ya barua pepe na maandishi kwa mtumiaji %% Kufuatia Sehemu ya b = 0; Kuanzisha vigezo c = 0; x = 0; y = 0; theta = 0; wakati c == 0% Kitanzi kuifanya igundue kitu cha bluu na vizuizi t = r.timeGet; d = r.getDistance; [xval, yval] = bluu ya kufuatilia (r); mwamba = getCliffSensors (r); % kuanzisha miundo ya maadili ya sensorer mwanga = getLightBumpers (r); mapema = getBumpers (r); ikiwa mwanga.leftCenter> = 10 || light.rightCenter> = 10% Hisia ikiwa kuna ukuta karibu na r.stop r.setLEDDigits ('msaada') c = 1% wakati b == 0% ikiwa bump.right == 1 || mapema.kushoto == 1 || bump.front == 1% Hisi ikiwa imepiga kitu baada ya kuhisi ukuta% c = 1% b = 1% disp ('bump')% end% end elseif bump.right == 1 || mapema.kushoto == 1 || bump.front == 1% Hisia ikiwa imegonga kitu, ikiwa ni hivyo, itatuma barua pepe r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || mwamba.kulia mbele <= 100 || mwamba.kushoto <= 100 || cliff.right <= 100% Hisia ikiwa kuna mwamba karibu na r.stop c = 1 r.setLEDDigits ('msaada') mwingine% Huweka kasi za kuendesha kufuata bluu ikiwa yval = 100 r.setDriveVelocity (0.1) mwingineif yval 400 r. TurnAngle (-5) mwisho mwisho theta = theta + r.getAngle; x = d. * cosd (theta) + x; % x uratibu wa roomba y = d. * sind (theta). * d + y; Uratibu wa% y wa kiwanja cha roomba (1, 2, 1) kiwanja (x, y, 'bd')% hupanga njia na anaongeza kichwa cha kichwa ('Njia ya Roomba') shikilia; mwisho

Hatua ya 5: Kanuni Sehemu ya 3: Sehemu ya Barua pepe

Hii itachukua njia na picha iliyopangwa na kuipeleka kwa anwani maalum ya barua pepe

(Imeonyeshwa hapa na barua pepe ya mfano)

%% Sehemu ya Barua pepe

ikiwa b == 1 saveas (gcf, 'rovermap.png')% inaokoa setpref ya takwimu ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Mtandao', 'E_mail', '[email protected]'); Akaunti ya barua ya kutuma kutoka setpref ('Mtandao', 'SMTP_Username', '[email protected]'); % setpref ya watumaji ('Mtandao', 'SMTP_Password', 'gssegsse'); Watumaji nywila props = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'kweli'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); prop.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('email email', 'RoverBeacon', 'Mwanaanga ameacha kusonga. Kwa kupona, fuata maagizo kwenye faili iliyoambatishwa.', 'rovermap.png') disp ('email sent') end

Ilipendekeza: