Բովանդակություն:

Roomba MATLAB նախագիծ ՝ 5 քայլ
Roomba MATLAB նախագիծ ՝ 5 քայլ

Video: Roomba MATLAB նախագիծ ՝ 5 քայլ

Video: Roomba MATLAB նախագիծ ՝ 5 քայլ
Video: PROYECTO CONTROL DE VOZ POR ARDUINO 2024, Հուլիսի
Anonim
Roomba MATLAB նախագիծ
Roomba MATLAB նախագիծ

Ներկայիս ծրագիրը, որ NASA- ն ունի Մարսագնացների վերաբերյալ, այն է, որ այն լինի տվյալների հավաքող և պտտվի Մարսի շուրջը ՝ հավաքելով հողի նմուշներ Երկիր վերադարձնելու համար, որպեսզի գիտնականները կարողանան տեսնել, թե արդյոք մոլորակում գոյություն ունեին կյանքի նախկին ձևեր: Բացի այդ, արբանյակը հետ է ուղարկում պատկերներ գիտնականներին, որպեսզի նրանք կարողանան օգնել նավարկող սարքում և շտկել դրա հետ կապված ցանկացած խնդիր:

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

Սա ուսանելի է ցանկացած այլ անձի համար, ով կցանկանար ստեղծել նույն տեսակի ծածկագիր իրենց սենյակի համար:

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

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

Ձեզ հարկավոր կլինի.

  1. Մի սենյակ
  2. MATLAB
  3. Այս ֆայլը գործարկելու է roomba- ն
  4. Հարթ մակերես
  5. Սեղանի մակերես, որը հանդես կգա որպես «ժայռ»

Քայլ 2: Քայլ 2. Կարգավորեք/ստացեք կոդ Roomba- ի համար

Քայլ 2. Roomba- ի համար կարգավորում/ստացում
Քայլ 2. Roomba- ի համար կարգավորում/ստացում

Ֆայլերը մուտքագրելուց հետո ձեր էկրանն այսպիսին կլինի:

Քայլ 3: Քայլ 3. Կառուցեք ժայռերի տվիչներ/LED լուսարձակներ

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

% փորձել rob.setLEDDigits ('') x = 0; y = 0; թետա = 0; խոչընդոտ = ; ցիկլ = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Գնալ %Ստուգել անձի համար, եթե AA_checkperson (rob) rob.beep վերջ %Check Cliff Sensor if AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') դադար (0.5) խոչընդոտ (ցիկլ) = 2; AA_cliffbeep (կողոպուտ) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) վերջ

Քայլ 4: Քայլ 4. Խոչընդոտների առկայության ստուգում

Այս ծածկագիրը կստանա roomba- ն ՝ իր շուրջը գտնվող իրերի ստուգման համար, և կստուգի հարվածի տվիչը ՝ համոզվելու համար, որ այն կանգ է առնում, նախքան ինքն իրեն վնասելը:

%Ստուգեք լույսի ցուցիչը, եթե AA_lightcheck (կողոպուտ) rob.stop rob.setLEDDigits ('Wall') դադար (0.5) խոչընդոտ (ցիկլ) = 1; %Պատ AA_wallbeep (կողոպուտ) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Ստուգեք Bump Sensor, եթե AA_bumpcheck (կողոպուտ) rob.stop rob.setLEDDigits ('Wall') դադար (0.5) խոչընդոտ (ցիկլ) = 1; %Wall AA_wallbeep (կողոպուտ) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Եթե ոչ մեկը, եթե դատարկ (խոչընդոտ) խոչընդոտ (ցիկլ) = 0; elseif երկարություն (խոչընդոտ) <ցիկլի խոչընդոտ (ցիկլ) = 0; վերջ

Քայլ 5: Քայլ 5. Դավադրություն

Քայլ 5: Դավադրություն
Քայլ 5: Դավադրություն

Այս ծածկագիրը կպատմի ձեր roomba- ին ՝ գծագրել այն, ինչ հանդիպում է իր ճանապարհորդության ընթացքում: Այսպիսի սյուժեն կհայտնվի սենյակի ավարտից հետո:

%Ստացեք պաշտոն d = rob.getDistance; եթե ցիկլ == 1 թետա (ցիկլ) = 0; x (ցիկլ) = դ.*cosd (theta (ցիկլ)); % ընդհանուր ճանապարհորդություն x y (ցիկլ) = d.*sind (theta (ցիկլ)); % ընդհանուր ճանապարհորդություն y ուրիշ տետա (ցիկլ) = theta (ցիկլ -1) + rob.getAngle; x (ցիկլ) = դ.*cosd (theta (ցիկլ)) + x (ցիկլ -1); % ընդհանուր ճանապարհորդություն x y (ցիկլ) = d.*sind (theta (ցիկլ)).*d + y (ցիկլ -1); %ընդհանուր ճանապարհորդություն y վերջում %Break վիճակ, եթե rob.getButtons.clean break end %Բարձրացման ցիկլ = ցիկլ + 1; վերջ rob.stop- ի համար i = 1: ցիկլ եթե խոչընդոտ (i) == 1 %Պատի գծապատկեր (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif արգելք (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') վերջնական տեքստ (.9, 0.9, sprintf ('Square = Wall / n Շրջանակ = ժայռ »),« Միավորներ »,« նորմալացված ») վերջը պահեք % Distress ազդանշանը մինչ իսկական rob.beep դադար (3), եթե rob.getButtons.clean break end end % catch % rob.stop % end

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