Innehållsförteckning:

Roomba MATLAB -projekt: 5 steg
Roomba MATLAB -projekt: 5 steg

Video: Roomba MATLAB -projekt: 5 steg

Video: Roomba MATLAB -projekt: 5 steg
Video: Who Can Clean Better? #Shorts 2024, November
Anonim
Roomba MATLAB -projekt
Roomba MATLAB -projekt

Den nuvarande planen som NASA har för Mars -rovern är att den ska vara en datainsamlare och ströva runt Mars och samla jordprover för att ta tillbaka till jorden så att forskare kan se om det fanns några tidigare livsformer på planeten. Dessutom skickar rovern tillbaka bilder till forskare, så att de kan hjälpa till att navigera i rovern och åtgärda eventuella problem.

Vår grupps idé för vårt projekt är att rovern ska göra samma sak som NASA -rovern som kommer att lämna jorden 2020, men att den också ska kartlägga landets geografi. Roomba skulle kunna känna av klippor och stoppa sig själv innan den ramlar av och sedan backa, vända och ändra sin kurs så att den inte faller och skadas. Vår andra idé som är integrerad i vårt projekt är att roomba ska kunna rita ut landmärken den ser och visa en plot varje gång slingan är klar och dess kurs har körts.

Denna instruerbara är för alla andra som vill skapa samma typ av kod för sin roomba.

Steg 1: Steg 1: Material som behövs

Steg 1: Material som behövs
Steg 1: Material som behövs
Steg 1: Material som behövs
Steg 1: Material som behövs

Du kommer behöva:

  1. En roomba
  2. MATLAB
  3. Denna fil för att köra roomba
  4. En plan yta
  5. En bordsyta för att fungera som en "klippa"

Steg 2: Steg 2: Konfigurera/skaffa kod för Roomba

Steg 2: Konfigurera/skaffa kod för Roomba
Steg 2: Konfigurera/skaffa kod för Roomba

Din skärm kommer att se ut så här när du matar in filerna.

Steg 3: Steg 3: Konfigurera klippsensorer/LED -lampor

Denna kod kommer att berätta för din roomba exakt vilken vinkel den ska vända, kontrollera batteriinformationen, berätta för din roomba hur snabbt den ska gå och för att kontrollera efter en person genom roombas kamera. Det kommer också att pipa om den identifierar en person och stoppar sig själv innan han går av en klippa.

% försök rob.setLEDDigits ('') x = 0; y = 0; theta = 0; hinder = ; cykel = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Funktion för att korrigera svängvinklar medan rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Gå %Kontrollera person om AA_checkperson (rob) rob.beep slut %Kontrollera Cliff Sensor om AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') paus (0,5) hinder (cykel) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Steg 4: Steg 4: Kontrollera om det finns hinder

Den här koden får roomba för kontroll av föremål runt den och kontrollerar bumpsensorn för att se till att den stannar innan den skadar sig själv.

%Kontrollera ljussensorn om AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') paus (0,5) hinder (cykel) = 1; %Vägg AA_wallbeep (rob) %Säkerhetskopiera och vrid rob.moveDistance (-. 15) rob.turnAngle (30) slutet %Kontrollera bumpsensorn om AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') paus (0.5) hinder (cykel) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %If none if isempty (hinder) hinder (cykel) = 0; elseif längd (hinder) <cykelhinder (cykel) = 0; slutet

Steg 5: Steg 5: Plotta

Steg 5: Plotta
Steg 5: Plotta

Denna kod kommer att berätta för din roomba att rita ut vad den möter på sin resa. En tomt som denna kommer att visas efter att roomba har slutat.

%Få position d = rob.getDistance; om cykel == 1 theta (cykel) = 0; x (cykel) = d.*cosd (theta (cykel)); % total distans rest i x y (cykel) = d.*sind (theta (cykel)); % total distans rest i y annars theta (cykel) = theta (cykel-1) + rob.getAngle; x (cykel) = d.*cosd (theta (cykel)) + x (cykel-1); % total distans rest i x y (cykel) = d.*sind (theta (cykel)).*d + y (cykel-1); %total distans rest i y slut %Avbrottstillstånd om rob.getButtons.clean paus slut %Ökningscykel cykel = cykel + 1; avsluta rob.stop för i = 1: cykla om hinder (i) == 1 %Väggdiagram (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') annarsif hinder (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') sluttext (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') håller på slutet % Distress Signal medan true rob.beep pausar (3) if rob.getButtons.clean break end end % catch % rob.stop % end

Rekommenderad: