Tartalomjegyzék:

Roomba MATLAB projekt: 5 lépés
Roomba MATLAB projekt: 5 lépés

Videó: Roomba MATLAB projekt: 5 lépés

Videó: Roomba MATLAB projekt: 5 lépés
Videó: iRobot mopping testing #shorts #robomate #robotvacuums #cleaning 2024, Július
Anonim
Roomba MATLAB projekt
Roomba MATLAB projekt

A NASA jelenlegi terve a Mars roverre vonatkozóan az, hogy adatgyűjtő legyen, és a Mars körül barangoljon, mintákat gyűjtsön a talajból, hogy visszahozza őket a Földre, hogy a tudósok láthassák, léteztek -e korábbi életformák a bolygón. Ezenkívül a rover képeket küld vissza a tudósoknak, hogy segítsenek navigálni a roverben, és megoldják az esetleges problémákat.

Csoportunk elképzelése a projektünkről, hogy a rover ugyanazt tegye, mint a NASA roverje, amely 2020 -ban elhagyja a földet, de feltérképezze a föld földrajzát is. A roomba képes lenne érzékelni a sziklákat, és megállni, mielőtt leesik, majd hátrálni, fordulni és megváltoztatni az irányát, hogy ne essen le és ne sérüljön meg. A másik ötletünk, amelyet a projektünkbe integráltunk, az, hogy a roomba képes legyen felrajzolni a látott tereptárgyakat, és megjeleníteni egy parcellát minden alkalommal, amikor a ciklus befejeződik és fut.

Ez az utasítás mindenkinek szól, aki ugyanazt a kódot szeretné létrehozni a roomba számára.

1. lépés: 1. lépés: Szükséges anyagok

Lépés: Szükséges anyagok
Lépés: Szükséges anyagok
Lépés: Szükséges anyagok
Lépés: Szükséges anyagok

Szükséged lesz:

  1. Egy szoba
  2. MATLAB
  3. Ez a fájl a roomba futtatásához
  4. Sima felület
  5. Az asztal felülete "szikla"

2. lépés: 2. lépés: A Roomba kódjának beállítása/beszerzése

2. lépés: A Roomba kódjának beállítása/beszerzése
2. lépés: A Roomba kódjának beállítása/beszerzése

A fájlok bevitele után a képernyője így fog kinézni.

3. lépés: 3. lépés: A sziklaérzékelők/LED -lámpák beállítása

Ez a kód pontosan megmondja a Roomba -nak, hogy milyen szögben kell fordulnia, ellenőrizze az akkumulátor adatait, megmondja a Roomba -nak, hogy milyen gyorsan kell mennie, és hogy a roomba kameráján keresztül ellenőrizze, hogy van -e személy. Ez akkor is sípol, ha azonosít egy személyt, és megáll, mielőtt lemegy egy szikláról.

% try rob.setLEDDigits ('') x = 0; y = 0; téta = 0; akadály = ; ciklus = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Funkció a fordulási szögek korrigálására, miközben rob.getBatteryInfo.percent> 15 rob.setLEDDigits (") rob.setDriveVelocity (0,1) %Go %Check for Person if AA_checkperson (rob) rob.beep end %Check Cliff Sensor if AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') szünet (0,5) akadály (ciklus) = 2; AA_cliffbeep (rob) %Back up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

4. lépés: 4. lépés: Ellenőrizze az akadályokat

Ez a kód ellenőrzi a roomba -t a körülötte lévő tárgyak tekintetében, és ellenőrzi a dudorérzékelőt, hogy megáll -e, mielőtt megrongálja magát.

%Ellenőrizze a fényérzékelőt, ha AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Fal') szüneteltetése (0,5) akadály (ciklus) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Ellenőrizze az ütésérzékelőt, ha AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') szünet (0,5) akadály (ciklus) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Ha nincs, ha üres (akadály) akadály (ciklus) = 0; elseif hossz (akadály) <ciklus akadály (ciklus) = 0; vége

5. lépés: 5. lépés: Ábrázolás

5. lépés: Ábrázolás
5. lépés: Ábrázolás

Ez a kód azt fogja mondani a Roomba -nak, hogy írja le, mit talál az út során. Egy ilyen cselekmény a roomba leállítása után jelenik meg.

%Pozíció lekérése d = rob.getDistance; ha ciklus == 1 théta (ciklus) = 0; x (ciklus) = d.*cosd (théta (ciklus)); % teljes megtett távolság x y -ban (ciklus) = d.*sind (théta (ciklus)); % teljes megtett távolság y máshol théta (ciklus) = théta (ciklus-1) + rob.getAngle; x (ciklus) = d.*cosd (théta (ciklus)) + x (ciklus-1); % teljes megtett távolság x y-ban (ciklus) = d.*sind (théta (ciklus)).*d + y (ciklus-1); %teljes megtett távolság y végén %Szakadási feltétel, ha rob.getButtons.clean break end %Növelési ciklusciklus = ciklus + 1; end rob.stop i = 1 esetén: ciklus, ha akadály (i) == 1 %Falábrázolás (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif akadály (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') végszöveg (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' normalized ') visszatartja a % vészjelzést, miközben a valódi rob.beep szünet (3), ha a rob.getButtons.clean break end end % catch % rob.stop % end

Ajánlott: