Innholdsfortegnelse:

Roomba MATLAB -prosjekt: 5 trinn
Roomba MATLAB -prosjekt: 5 trinn

Video: Roomba MATLAB -prosjekt: 5 trinn

Video: Roomba MATLAB -prosjekt: 5 trinn
Video: Who Can Clean Better? #Shorts 2024, Juli
Anonim
Roomba MATLAB -prosjekt
Roomba MATLAB -prosjekt

Den nåværende planen som NASA har for Mars -roveren er at den skal være en datainnsamler og vandre rundt Mars og samle prøver av jorda for å bringe tilbake til jorden slik at forskere kan se om det var noen tidligere livsformer på planeten. I tillegg sender roveren bilder tilbake til forskere, slik at de kan hjelpe deg med å navigere i roveren og fikse eventuelle problemer.

Vår gruppes idé for prosjektet vårt er at roveren skal gjøre det samme som NASA -roveren som skal forlate jorden i 2020, men at den også skal kartlegge landets geografi. Roomba ville være i stand til å føle klipper og stoppe seg selv før den faller av, og deretter sikkerhetskopiere, snu og endre kursen slik at den ikke faller og blir skadet. Vår andre idé integrert i prosjektet vårt er at roomba skal kunne plotte ut landemerkene den ser, og vise et plott hver gang løkken er ferdig og kursen har blitt kjørt.

Denne instruksen er for alle andre som ønsker å lage den samme typen kode for sin roomba.

Trinn 1: Trinn 1: Nødvendige materialer

Trinn 1: Nødvendige materialer
Trinn 1: Nødvendige materialer
Trinn 1: Nødvendige materialer
Trinn 1: Nødvendige materialer

Du vil trenge:

  1. En roomba
  2. MATLAB
  3. Denne filen for å kjøre roomba
  4. En flat overflate
  5. En bordoverflate for å fungere som en "klippe"

Trinn 2: Trinn 2: Sette opp/få kode for Roomba

Trinn 2: Konfigurere/få kode for Roomba
Trinn 2: Konfigurere/få kode for Roomba

Skjermen din vil se slik ut når du har lagt inn filene.

Trinn 3: Trinn 3: Sette opp klippesensorer/LED -lys

Denne koden vil fortelle din roomba nøyaktig hvilken vinkel den skal snu, sjekke batteriinformasjonen, fortelle din roomba hvor fort den skal gå, og for å se etter en person gjennom roomba -kameraet. Det vil også pippe hvis det identifiserer en person, og stoppe seg selv før du går av en klippe.

% prøv rob.setLEDDigits ('') x = 0; y = 0; theta = 0; hinder = ; syklus = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Funksjon for å korrigere svingvinkler mens rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Gå %Se etter person hvis AA_checkperson (rob) rob.beep end %Kontroller Cliff Sensor hvis AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pause (0,5) hinder (syklus) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Trinn 4: Trinn 4: Se etter hindringer

Denne koden får romba til å sjekke om det er ting rundt den, og sjekker støtsensoren for å sikre at den stopper før den skader seg selv.

%Kontroller lyssensoren hvis AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) hinder (syklus) = 1; %Wall AA_wallbeep (rob) %Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Check Bump Sensor if AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) hinder (syklus) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %If none if isempty (hinder) hinder (syklus) = 0; elseif lengde (hinder) <syklus hinder (syklus) = 0; slutt

Trinn 5: Trinn 5: Plotte

Trinn 5: Plotte
Trinn 5: Plotte

Denne koden vil fortelle din romba å plotte ut hva den møter på sin reise. Et plot som dette vil dukke opp etter at roomba har stoppet.

%Få posisjon d = rob.getDistance; hvis syklus == 1 theta (syklus) = 0; x (syklus) = d.*cosd (theta (syklus)); % total distanse tilbakelagt i x y (syklus) = d.*sind (theta (syklus)); % total distansert distanse i y ellers theta (syklus) = theta (syklus-1) + rob.getAngle; x (syklus) = d.*cosd (theta (syklus)) + x (syklus-1); % total distansert distanse i x y (syklus) = d.*sind (theta (syklus)).*d + y (syklus-1); %total distansert distanse i y ende %Pausetilstand hvis rob.getButtons.clean pause slutt %Økende syklus = syklus + 1; avslutt rob.stop for i = 1: syklus hvis hinder (i) == 1 %Vegplott (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif hinder (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') slutttekst (.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

Anbefalt: