Indholdsfortegnelse:

Roomba MATLAB -projekt: 5 trin
Roomba MATLAB -projekt: 5 trin

Video: Roomba MATLAB -projekt: 5 trin

Video: Roomba MATLAB -projekt: 5 trin
Video: Беслан. Помни / Beslan. Remember (english & español subs) 2024, November
Anonim
Roomba MATLAB -projekt
Roomba MATLAB -projekt

Den nuværende plan, som NASA har for Mars -roveren, er, at den skal være en dataindsamler og vandre rundt på Mars og samle prøver af jorden for at bringe den tilbage til Jorden, så forskere kan se, om der var tidligere livsformer på planeten. Derudover sender roveren billeder tilbage til forskere, så de kan hjælpe med at navigere i roveren og løse eventuelle problemer, den måtte have.

Vores gruppes idé til vores projekt er, at roveren skal gøre det samme som NASA -roveren, der forlader jorden i 2020, men at den også skal kortlægge landets geografi. Roomba ville være i stand til at fornemme klipper og stoppe sig selv, før den falder af, og derefter bakke op, dreje og ændre kurs, så den ikke falder og bliver beskadiget. Vores anden idé, der er integreret i vores projekt, er, at roomba skal kunne plotte de vartegn, den ser, og vise et plot hver gang sløjfen er færdig, og dens forløb er blevet kørt.

Denne instruerbare er for alle andre, der gerne vil oprette den samme type kode til deres roomba.

Trin 1: Trin 1: Nødvendige materialer

Trin 1: Nødvendige materialer
Trin 1: Nødvendige materialer
Trin 1: Nødvendige materialer
Trin 1: Nødvendige materialer

Du får brug for:

  1. En roomba
  2. MATLAB
  3. Denne fil til at køre roomba
  4. En flad overflade
  5. En bordoverflade til at fungere som en "klippe"

Trin 2: Trin 2: Opsætning/hentning af kode til Roomba

Trin 2: Opsætning/hentning af kode til Roomba
Trin 2: Opsætning/hentning af kode til Roomba

Din skærm vil se sådan ud, når du har indtastet filerne.

Trin 3: Trin 3: Opsætning af klippesensorer/LED -lys

Denne kode fortæller din roomba nøjagtigt hvilken vinkel den skal dreje, tjekker batterioplysningerne, fortæller din roomba, hvor hurtigt den skal gå, og for at kontrollere, om en person er gennem roombas kamera. Det vil også bippe, hvis det identificerer en person, og stoppe sig selv, før det går ud af en klippe.

% prøv rob.setLEDDigits ('') x = 0; y = 0; theta = 0; forhindring = ; cyklus = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Funktion til at korrigere drejningsvinkler, mens rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Gå %Check For Person, hvis AA_checkperson (rob) rob.beep end %Check Cliff Sensor hvis AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pause (0,5) forhindring (cyklus) = 2; AA_cliffbeep (rob) %Sikkerhedskopier og drej rob.moveDistance (-. 15) rob.turnAngle (30) ende

Trin 4: Trin 4: Kontrol af forhindringer

Denne kode får roomba til at kontrollere, om der er ting omkring den, og vil kontrollere stødføleren for at sikre, at den stopper, før den beskadiger sig selv.

%Kontroller lyssensoren, hvis AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) forhindring (cyklus) = 1; %Wall AA_wallbeep (rob) %Sikkerhedskopier og drej rob.moveDistance (-. 15) rob.turnAngle (30) end %Check Bump Sensor hvis AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) forhindring (cyklus) = 1; %Wall AA_wallbeep (rob) %Sikkerhedskopier og drej rob.moveDistance (-. 15) rob.turnAngle (30) end %If none if isempty (hinder) hinder (cyklus) = 0; elseif længde (forhindring) <cyklus forhindring (cyklus) = 0; ende

Trin 5: Trin 5: Plotte

Trin 5: Plotte
Trin 5: Plotte

Denne kode fortæller din roomba at planlægge, hvad den støder på på sin rejse. Et plot som dette vil dukke op, efter at roomba er stoppet.

%Få position d = rob.getDistance; hvis cyklus == 1 theta (cyklus) = 0; x (cyklus) = d.*cosd (theta (cyklus)); % total tilbagelagt afstand i x y (cyklus) = d.*sind (theta (cyklus)); % total tilbagelagt afstand i y ellers theta (cyklus) = theta (cyklus-1) + rob.getAngle; x (cyklus) = d.*cosd (theta (cyklus)) + x (cyklus-1); % total tilbagelagt afstand i x y (cyklus) = d.*sind (theta (cyklus)).*d + y (cyklus-1); %total tilbagelagt afstand i y ende %Pausetilstand, hvis rob.getButtons.clean break end %Forøgelsescykluscyklus = cyklus + 1; slut rob.stop for i = 1: cyklus hvis forhindring (i) == 1 %Vægplot (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') ellershindring (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') sluttekst (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hold on end % Distress Signal while true rob.beep pause (3) if rob.getButtons.clean break end end % catch % rob.stop % end

Anbefalede: