UTK EF 230 MarsRoomba Project Fall 2018: 5 քայլ
UTK EF 230 MarsRoomba Project Fall 2018: 5 քայլ
Anonim
UTK EF 230 MarsRoomba Project Fall 2018
UTK EF 230 MarsRoomba Project Fall 2018

Ներկայումս մարսագնացները օգտագործվում են Մարսի մակերևույթի վերաբերյալ տարբեր եղանակներով տվյալներ հավաքելու համար ՝ վերջնականապես վերջնականապես իմանալով մոլորակի մանրէաբանական կյանքի ներուժի մասին: Թռչող սարքերը տվյալների հավաքագրման համար հիմնականում օգտագործում են լուսանկարչության և հողի վերլուծության գործիքներ, սակայն արկածախնդիր սարքերը ներառում են նաև նավիգացիոն գործիքներ, ճառագայթման դետեկտորներ, մթնոլորտային տվիչներ և լազեր ՝ ժայռերի նմուշի գոլորշիացման համար: ՆԱՍԱ -ի տվյալներով ՝ 2020 թ. Մոլորակագնացների առաքելության նպատակը հիմնականում նույնն է, բայց հատուկ առաջադրանքն է ՝ «հողի և ժայռի նմուշներ հավաքելը և դրանք մակերևույթում պահելը ՝ ապագա առաքելությամբ Երկիր հնարավոր վերադարձի համար»:

Այնուամենայնիվ, այն ենթադրությամբ, որ ապագա թռչող սարքերը կօգտագործվեն մարդկանց օգնության համար, մեր թիմը հաշվի առավ, թե մարդկանց որ կողմերը կարող է վերահսկել արբանյակը: Մենք եկանք այն եզրակացության, որ եթե ինչ -որ արտակարգ իրավիճակ տիեզերագնացին անգիտակից վիճակում դնի կյանքի և սարքավորումների խափանումների պատճառով, մեր արբանյակը կարող է ծառայել որպես շարժական մայիսյան փարոս ՝ նկատելով, որ տիեզերագնացն անշարժ է և փոխանցում է անհանգստության ուղերձ: Մարդուն հետևելու և անշարժությունը որոշելու համար, արբանյակը պետք է օգտագործի այնպիսի տվյալներ, ինչպիսիք են մարդու կոշիկի գույնը և դրանց շարժումները: Մեկ այլ ներդրում, որը պետք է հաշվի առնել, այն է, որ այն պետք է հիշի իր ուղին, որպեսզի արտակարգ իրավիճակների դեպքում փոխանցի անհանգստության ազդանշանը: Մեր տիեզերագնացը բավարարում է Մարսի կարիքն այն առումով, որ նման թանկարժեք առաքելություն կատարելը նման օտարերկրյա տեղանքում պահանջում է խափանման սարքերի բազմաթիվ շերտեր, և եթե տիեզերագնացը չկարողանա ինքնուրույն օգնություն ստանալ կոստյումի անսարքության կամ անգիտակից վիճակի պատճառով, արբանյակը կարող է զգուշացնել ուրիշներին:.

Այս հրահանգը նախատեսված է օգնելու ընթերցողին ծրագրել իր Roomba- ին հաջողությամբ հետևել «տիեզերագնացին» և անհրաժեշտության դեպքում ազդանշանի ուղարկել:

Քայլ 1: Անհրաժեշտ նյութեր

Անհրաժեշտ նյութեր
Անհրաժեշտ նյութեր

1) ինտերնետ հասանելի համակարգիչ/նոութբուք

2) MATLAB_R2018 ա

3) Roomba և Roomba ներբեռնում

Քայլ 2: Կարգավորում/ներբեռնում

Կարգավորում/Ներբեռնում
Կարգավորում/Ներբեռնում

Գործարկեք այս սցենարը MATLAB- ում, որպեսզի ներբեռնեք Roomba մուտք գործելու համար անհրաժեշտ ծրագրակազմը (որը պահվում է նախագծի թղթապանակի իր սեփական ֆայլում):

Լրացուցիչ օգնություն ՝

% Տեղադրման ծրագիր EF 230 Roomba Project- ի համար Վերջին թարմացումը `սեպտեմբերի 13, 2017 (Անվտանգության շտկված խնդիրներ ՝ կապված https սերվերի հետ և հեռացված ֆայլի ջնջման նախազգուշացումը, եթե առաջացել են սխալներ) roombaInstall clc; % ֆայլերի ցանկ ֆայլեր տեղադրելու համար = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % location to install from options = weboptions ('CertificateFilename', ''); % ասեք նրան, որ անտեսի սերտիֆիկատի պահանջները սերվեր = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba- ի տեղադրում/թարմացում'; % ցուցադրման նպատակը և ստացեք հաստատման հուշում = {'Այս ծրագիրը կներբեռնի այս EF 230 Roomba ֆայլերը.' '' strjoin (ֆայլեր, '') '' 'այս պանակին.' '' ' '}; ազդանշան; yn = questdlg (հուշում,… dlgTitle,… 'Այո', 'Ոչ', 'Այո');

եթե ~ strcmp (yn, 'Yes'), վերադառնալ; վերջ

% ստանալ գոյություն ունեցող ֆայլերի ցանկ = ֆայլեր (cellfun (@exist, files)> 0); if ~ isempty (գոյություն ունեցող_ֆայլեր) % համոզվեք, որ իսկապես լավ է դրանք փոխարինել հուշել = {'Դուք փոխարինում եք այս ֆայլերը (ներ):' '' strjoin (գոյություն ունեցող_ֆայլեր, '') '' 'Լավ է փոխարինել?' }; ազդանշան; yn = questdlg (հուշում,… dlgTitle,… 'Այո', 'Ոչ', 'Այո'); եթե ~ strcmp (yn, 'Yes'), վերադառնալ; վերջ վերջ

% բեռնել ֆայլերը cnt = 0; համար i = 1: երկարություն (ֆայլեր) f = ֆայլեր {i}; disp (['' Ներբեռնում 'f]); փորձեք url = [սերվեր f]; websave (f, url, ընտրանքներ); % ավելացված տարբերակներ `անվտանգության սխալներից խուսափելու համար cnt = cnt + 1; catch disp (['Ներբեռնման սխալ' f]); կեղծ = [f '.html']; եթե գոյություն ունի (կեղծ, 'ֆայլ') == 2 ջնջել (կեղծ) վերջի վերջը

եթե cnt == երկարությունը (ֆայլեր) msg = 'Տեղադրումը հաջողված է'; սպասել (msgbox (msg, dlgTitle)); else msg = 'Տեղադրման սխալ. մանրամասների համար տե՛ս հրամանի պատուհանը'; սպասել (errordlg (msg, dlgTitle)); վերջ

վերջ %roombaInstall

Քայլ 3. Կոդ Մաս 1. Հետևման գործառույթ

Կոդ 1. մաս. Հետևման գործառույթ
Կոդ 1. մաս. Հետևման գործառույթ

Այս գործառույթը վերցնում է Roomba փոփոխականը և նկարը Roomba- ի տեսախցիկից և գտնում է հետագծվող օբյեկտի կենտրոնական xy կոորդինատները:

Պահեք այս կոդը նույն պանակի մեկ այլ ֆայլում:

գործառույթ [xm, ym] = trackingblue (r) %Մուտքեր. արժեք] = trackingblue (roomba փոփոխական) img = r.getImage; % կարդում է ռոբոտի ենթածրագրի (1, 2, 2) ենթապատկերի տեսախցիկը (img); %-ը ցույց է տալիս պատկերը նույն պատուհանում, որտեղ նշված է ուղու վերնագիրը ('Հետևող պատկերը') red = img (:,,: 1); կանաչ = img (:,:, 2); կապույտ = img (:,:, 3); justBlue = կապույտ - կանաչ/2 - կարմիր/2; bw = պարզապես Կապույտ> 40; պահել ենթահողում (1, 2, 2) ենթապատկերում (bw); [x, y] = գտնել (bw); եթե ~ դատարկ (x) && ~ դատարկ (y) xm = կլոր (միջին (x)); ym = կլոր (միջին (y)); xx = առավելագույն (1, xm-5) ՝ րոպե (xm+5, չափ (bw, 1)); yy = առավելագույնը (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 կոորդինատները և կստեղծի համապատասխան գծապատկեր հետևման պատկերով: Եթե հարվածի սենսորը միացված է, այն կտեղափոխվի էլ

Rover նախագիծ

Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Մուտքեր. Սենյակի արժեք, տեսախցիկի տվյալներ, հարվածի, լույսի և պատի տվիչներ %Նպատակը. Եթե զգուշացնեն, roomba- ն էլ. Նամակ է ուղարկում, որը մանրամասնում է քարտեզը և գտնվելու վայրը `ըստ իր սկզբնական դիրքի: %Օգտագործում. Պարզապես գործարկեք ծրագիրը ՝ roomba փոփոխական հայտարարելով, նաև %ունեն շարժվող կանաչ օբյեկտ %Արդյունքներ. Ցույց է տալիս պատկերին հետևող նկարը, էլ. %Փոփոխականների սկզբնականացում c = 0; x = 0; y = 0; թետա = 0; իսկ c == 0 %Loop ՝ այն կապույտ առարկան և խոչընդոտները հայտնաբերելու համար t = r.timeGet; d = r.getDistance; [xval, yval] = հետևման կապույտ (r); ժայռ = getCliffSensors (r); %սենսորային արժեքների կառուցվածքների նախաստորագրում լույս = getLightBumpers (r); bump = getBumpers (r); եթե light.leftCenter> = 10 || light.rightCenter> = 10 % ensesգում է, եթե կա պատ r. կանգառի մոտ r.setLEDDigits ('օգնություն') c = 1 %, իսկ b == 0 %, եթե bump.right == 1 || bump.left == 1 || bump.front == 1 % ensesգում է, եթե ինչ -որ բան բախվել է պատը զգալուց հետո % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %ensesգում է, եթե ինչ -որ բան բախվել է, եթե այո, այն էլ.փոստ կուղարկի r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightF Front <= 100 || ժայռ. ձախ <= 100 || cliff.right <= 100 %ensesգում է, եթե կա ժայռ r. մոտ 400 r.turnAngle (-5) վերջի վերջ theta = theta + r.getAngle; x = d.*cosd (theta) + x; սենյակի % x կոորդինատ y = d.*sind (theta).*d + y; roomba ենթածրագրի (1, 2, 1) սյուժեի (x, y, 'bd') % y կոորդինատը գծում է ուղին և ավելացնում վերնագրի վերնագիրը ('Roomba Path') պահելը; վերջ

Քայլ 5. Կոդ 3. Մաս 3. Էլեկտրոնային բաժին

Սա կտանի գծագրված ուղին և պատկերը և կուղարկի այն նշված էլ. Հասցեին:

(Ownուցադրված է այստեղ էլ.փոստի օրինակով)

%% Էլեկտրոնային բաժին

եթե 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 («ուղարկված էլ.

Խորհուրդ ենք տալիս: