Tartalomjegyzék:

Mars Roomba: 6 lépés
Mars Roomba: 6 lépés

Videó: Mars Roomba: 6 lépés

Videó: Mars Roomba: 6 lépés
Videó: ВЗРЫВНАЯ КОМЕДИЯ ДО СЛЁЗ! НОВИНКА! "Море Горы Керамзит" (5-8 серия) РОССИЙСКИЕ КОМЕДИИ, НОВИНКИ КИНО 2024, November
Anonim
Mars Roomba
Mars Roomba

Ez az utasítás elvezeti Önt a Raspberry Pi vezérelt Roomba vákuum bot működtetésének irányába. Az operációs rendszer, amelyet használni fogunk, a MATLAB.

1. lépés: Kellékek

Amit össze kell gyűjtenie a projekt megvalósításához:

  • Az iRobot Create2 Roomba porszívó botja
  • Raspberry Pi
  • Raspberry Pi kamera
  • A MATLAB legújabb verziója
  • A Roomba telepítő eszköztára a MATLAB számára
  • MATLAB alkalmazás mobil eszközhöz

2. lépés: A problémajelentés

A probléma kijelentése
A probléma kijelentése

Azt a feladatot kaptuk, hogy a MATLAB segítségével kifejlesszük a Marson használható rover -t, hogy segítsünk a tudósoknak a bolygóadatok gyűjtésében. A projektünkben tárgyalt funkciók a távvezérlés, az objektumütközés -felismerés, a vízfelismerés, az életfelismerés és a képfeldolgozás voltak. Ezen teljesítmények eléréséhez a Roomba eszköztár parancsaival kódoltuk az iRobot Create2 Roomba számos funkciójának manipulálását.

3. lépés: Bluetooth távirányító

Bluetooth távirányító
Bluetooth távirányító

Ez a dia végigvezeti a Roomba mozgásának vezérlésére szolgáló kódot az okostelefon Bluetooth funkcióinak segítségével. Először is töltse le a MATLAB alkalmazást okostelefonjára, és jelentkezzen be Mathworks -fiókjába. Bejelentkezés után lépjen a "továbbiak", "beállítások" menüpontra, és csatlakozzon a számítógéphez az IP -címe segítségével. A csatlakoztatás után térjen vissza a "több" részhez, és válassza az "érzékelők" lehetőséget. Érintse meg a képernyő felső eszköztárának harmadik érzékelőjét, majd a start gombot. Most az okostelefon egy távirányító!

A kód a következő:

míg 0 == 0

szünet (.5)

PhoneData = M. Orientation;

Azi = Telefonadatok (1);

Hangmagasság = Telefonadatok (2);

Oldal = Telefonadatok (3);

dudorok = r.getBumpers;

ha az oldal> 80 || Oldal <-80

r.megáll

r. hangjelzés ('C, E, G, C^, G, E, C')

szünet

elseif oldal> 20 && oldal <40

r.fordulószög (-5);

Egyéb oldal> 40

ford.szög (-25);

elseif Side-40

r.fordulószög (5);

elseif Oldala <-40

r.fordulószög (25);

vége

ha Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

vége

vége

4. lépés: Hatásfelismerés

Hatásfelismerés
Hatásfelismerés

Egy másik funkció, amelyet megvalósítottunk, az volt, hogy érzékeljük a Roomba becsapódását egy objektumba, majd korrigáljuk annak aktuális útvonalát. Ehhez feltételeseket kellett használnunk a lökhárító szenzorok leolvasásával, hogy megállapítsuk, elütött -e egy tárgyat. Ha a robot eltalál egy tárgyat, akkor 0,2 métert hátrál, és olyan szögben forog, amelyet a lökhárító üt. Miután egy elemet eltaláltak, megjelenik egy menü, amelyben megjelenik az "oof" szó.

A kód az alábbiakban látható:

míg 0 == 0

dudorok = r.getBumpers;

r.setDriveVelocity (.1)

ha dudorok.balra == 1

msgbox ('Hoppá!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif dudorok.front == 1

msgbox ('Hoppá!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif dudorok.jobb == 1

msgbox ('Hoppá!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif dudorok.leftWheelDrop == 1

msgbox ('Hoppá!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif dudorok.rightWheelDrop == 1

msgbox ('Hoppá!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

vége

vége

5. lépés: Életfelismerés

Életfelismerés
Életfelismerés

Életfelismerő rendszert kódoltunk, hogy leolvassuk az előtte lévő tárgyak színeit. A háromféle élet, amelyet kódoltunk, a növények, a víz és az idegenek. Ehhez kódoltuk az érzékelőket, hogy kiszámítsuk a piros, kék, zöld vagy fehér átlagértékeket. Ezeket az értékeket összehasonlították a küszöbértékekkel, amelyeket manuálisan állítottak be a kamera által nézett szín meghatározásához. A kód az objektum elérési útját és a térkép létrehozását is ábrázolja.

A kód a következő:

t = 10;

i = 0;

míg t == 10

img = r.getImage; imshow (img)

szünet (0,167)

i = i + 1;

red_mean = átlag (átlagos (img (:,:, 1)));

blue_mean = átlag (átlag (img (:,:, 3)));

zöld_érték = átlag (átlag (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %szeretné ezt a val kb 100 -at

nine_plus_ten = 21;

zöld_küszöb = 125;

kék_küszöb = 130;

fehér_küszöb = 124;

piros_küszöb = 115;

míg nine_plus_ten == 21 %zöld - élet

if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('lehetséges életforrás megtalálva, a hely ábrázolva');

szünet (2)

törlés (a)

[y2, Fs2] = audioread ('z_speak2.wav');

hang (y2, Fs2)

szünet (2)

%növény = r.getImage; %imshow (növény);

%mentés ('plant_img.mat', plant ');

%telek elhelyezkedése zöld színben

i = 5;

szünet

más

nine_plus_ten = 19;

vége

vége

nine_plus_ten = 21;

míg nine_plus_ten == 21 %kék - woder

if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('vízforrást találtak, helyét ábrázolták');

szünet (2)

törlés (a)

[y3, Fs3] = hangolvasás ('z_speak3.wav');

hang (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%mentés ('water_img.mat', woder)

%telekhely kékkel

i = 5;

szünet

más

nine_plus_ten = 19;

vége

vége

nine_plus_ten = 21;

míg nine_plus_ten == 21 %fehér - idegenek monkaS

if white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = hangolvasás ('z_speak5.wav');

hang (y5, Fs5);

szünet (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

hang (ys, Fss);

szünet (3)

r.megáll

% idegen = r.getImage; %imshow (idegen);

% save ('alien_img.mat', idegen);

i = 5;

szünet

más

nine_plus_ten = 19;

vége

vége

ha i == 5

a = 1; %fordulási szög

t = 9; %nagy ciklus befejezése

i = 0;

vége

vége

6. lépés: Futtassa

Miután az összes kódot megírta, egyesítse mindezt egy fájlba, és íme! A Roomba botja most teljesen működőképes lesz, és a hirdetések szerint fog működni! A Bluetooth -vezérlőnek azonban külön fájlban kell lennie, vagy %% -val kell elválasztania a kód többi részétől.

Élvezze a robot használatát !!

Ajánlott: