INHOUDSOPGAWE:

Roomba MATLAB -projek: 5 stappe
Roomba MATLAB -projek: 5 stappe

Video: Roomba MATLAB -projek: 5 stappe

Video: Roomba MATLAB -projek: 5 stappe
Video: Hack it. Build it. Share it. | Create 2 Programmable Robot | iRobot® 2024, Julie
Anonim
Roomba MATLAB -projek
Roomba MATLAB -projek

Die huidige plan wat NASA vir die Mars -rover het, is dat dit 'n data -insamelaar moet wees en rondom Mars kan rondloop en monsters van die grond kan versamel om na die aarde terug te bring, sodat wetenskaplikes kan sien of daar vorige lewensvorme op die planeet bestaan. Boonop stuur die rover beelde terug na wetenskaplikes, sodat hulle kan help om die rover te navigeer en probleme op te los.

Ons groep se idee vir ons projek is dat die rover dieselfde moet doen as die NASA -rover wat die aarde in 2020 sal verlaat, maar ook om die geografie van die land in kaart te bring. Die roomba kan kranse aanvoel en homself stop voordat dit val, en dan terugdraai, draai en sy koers verander sodat dit nie val en beskadig word nie. Ons ander idee wat in ons projek geïntegreer is, is dat die roomba die landmerke wat hy sien, kan uitteken en 'n plot kan wys elke keer as die lus klaar is en die loop daarvan is.

Hierdie instruksie is vir almal wat dieselfde tipe kode vir hul roomba wil skep.

Stap 1: Stap 1: materiaal benodig

Stap 1: materiaal benodig
Stap 1: materiaal benodig
Stap 1: materiaal benodig
Stap 1: materiaal benodig

Jy sal nodig hê:

  1. 'N Kamer
  2. MATLAB
  3. Hierdie lêer om die roomba
  4. 'N Plat oppervlak
  5. 'N Tafeloppervlak om as 'n "krans" te dien

Stap 2: Stap 2: Stel kode op vir Roomba

Stap 2: Stel kode op vir Roomba
Stap 2: Stel kode op vir Roomba

U skerm sal so lyk sodra u die lêers ingevoer het.

Stap 3: Stap 3: Die oprigting van kransensors/LED -ligte

Hierdie kode sal jou roomba presies vertel watter hoek om te draai, die battery -inligting nagaan, jou kamerba vertel hoe vinnig om te gaan en om na 'n persoon deur die kameraba se kamera te kyk. Dit sal ook piep as dit 'n persoon identifiseer en homself stop voordat hy van 'n krans afklim.

% probeer rob.setLEDDigits ('') x = 0; y = 0; theta = 0; hindernis = ; siklus = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Funksie om draaihoeke reg te stel terwyl rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Gaan %Kontroleer of persoon as AA_checkperson (rob) rob.beep eind %Kontroleer Cliff Sensor as AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pouse (0.5) hindernis (siklus) = 2; AA_cliffbeep (rob) %Rugsteun en draai rob.moveDistance (-. 15) rob.turnAngle (30) einde

Stap 4: Stap 4: Kontroleer op hindernisse

Hierdie kode sal die roomba laat kontroleer of daar items rondom is en die stampsensor kontroleer om seker te maak dat dit stop voordat dit homself beskadig.

Gaan die ligsensor na as AA_lightcheck (rob) rob.stop rob.setLEDDigits ('muur') pouse (0.5) hindernis (siklus) = 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) hindernis (siklus) = 1; %Muur AA_wallbeep (rob) %Maak 'n rugsteun en draai rob.moveDistance (-. 15) rob.turnAngle (30) end %As dit nie een is as dit 'n hindernis (siklus) = 0 is nie; elseif lengte (hindernis) <siklus hindernis (siklus) = 0; einde

Stap 5: Stap 5: Plot

Stap 5: Plot
Stap 5: Plot

Hierdie kode sal u roomba vertel om uit te vind wat dit op sy reis teëkom. 'N Plot soos hierdie sal verskyn nadat die roomba gestop het.

%Kry posisie d = rob.getDistance; as siklus == 1 theta (siklus) = 0; x (siklus) = d.*cosd (theta (siklus)); % totale afstand afgelê in x y (siklus) = d.*sin (theta (siklus)); % totale afstand afgelê in y anders theta (siklus) = theta (siklus-1) + rob.getAngle; x (siklus) = d.*cosd (theta (siklus)) + x (siklus-1); % totale afstand afgelê in x y (siklus) = d.*sin (theta (siklus)).*d + y (siklus-1); %totale afstand afgelê in y einde %Onderbrekingstoestand as rob.getButtons.clean break end %Toenamesiklus siklus = siklus + 1; eindig rob.stop vir i = 1: fiets as hindernis (i) == 1 %Muur plot (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') anders as hindernis (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') eindteks (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hou aan end % Distress Signal terwyl true rob.beep pause (3) if rob.getButtons.clean break end end % catch % rob.stop % end

Aanbeveel: