Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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
Du kommer behöva:
- En roomba
- MATLAB
- Denna fil för att köra roomba
- En plan yta
- En bordsyta för att fungera som en "klippa"
Steg 2: 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
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