Sadržaj:

Mars Roomba: 6 koraka
Mars Roomba: 6 koraka

Video: Mars Roomba: 6 koraka

Video: Mars Roomba: 6 koraka
Video: Обзор игры Tropico 6 2024, Novembar
Anonim
Mars Roomba
Mars Roomba

Ovaj Instructable vodit će vas u smjerovima rada s Roomba vakuumskim botom kontroliranim Raspberry Pi -jem. Operativni sistem koji ćemo koristiti je preko MATLAB -a.

Korak 1: Potrošni materijal

Šta ćete morati prikupiti da biste realizirali ovaj projekt:

  • iRobotov bot za usisavanje Create2 Roomba
  • Raspberry Pi
  • Raspberry Pi kamera
  • Najnovija verzija MATLAB -a
  • Roomba set alata za instalaciju za MATLAB
  • MATLAB aplikacija za mobilni uređaj

Korak 2: Izjava o problemu

Izjava o problemu
Izjava o problemu

Zadatak nam je bio da pomoću MATLAB -a razvijemo rover koji bi se mogao koristiti na Marsu kako bi pomogli naučnicima u prikupljanju podataka o planeti. Funkcije kojima smo se bavili u našem projektu bile su daljinsko upravljanje, prepoznavanje udara objekta, prepoznavanje vode, prepoznavanje života i obrada slike. Da bismo postigli ove uspjehe, kodirali smo pomoću naredbi Roomba toolbox za manipuliranje mnogim funkcijama iRobotove Create2 Roombe.

Korak 3: Bluetooth daljinski upravljač

Bluetooth daljinski upravljač
Bluetooth daljinski upravljač

Ovaj slajd će proći kroz kod za kontrolu kretanja Roombe koristeći Bluetooth mogućnosti vašeg pametnog telefona. Za početak preuzmite aplikaciju MATLAB na svoj pametni telefon i prijavite se na svoj račun Mathworks. Nakon što se prijavite, idite na "više", "postavke" i povežite se s računarom koristeći njegovu IP adresu. Nakon povezivanja vratite se na "više" i odaberite "senzori". Dodirnite treći senzor na gornjoj traci sa alatkama na ekranu i dodirnite početak. Sada je vaš pametni telefon daljinski upravljač!

Kod je sljedeći:

dok je 0 == 0

pauza (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Nagib = PhoneData (2);

Side = PhoneData (3);

neravnine = r.getBumpers;

ako je stranica> 80 || Strana <-80

r.stop

r.beep ('C, E, G, C^, G, E, C')

break

elseif Side> 20 && Side <40

r.turnAngle (-5);

elseif Side> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif Strana <-40

r.turnAngle (25);

kraj

ako je Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Nagib> -35 && Nagib <-10

r.moveDistance (-. 03)

kraj

kraj

Korak 4: Prepoznavanje uticaja

Prepoznavanje uticaja
Prepoznavanje uticaja

Druga funkcija koju smo implementirali bila je otkrivanje utjecaja Roombe na objekt, a zatim ispravljanje njegove trenutne putanje. Da bismo to učinili, morali smo upotrijebiti uvjete s očitanjima senzora branika kako bismo utvrdili je li predmet udario. Ako robot udari u neki objekt, povući će se unatrag 0,2 metra i rotirat će se pod kutom koji je određen udarcem u branik. Nakon što je stavka pogođena, pojavit će se meni koji prikazuje riječ "oof".

Kôd je prikazan ispod:

dok je 0 == 0

neravnine = r.getBumpers;

r.setDriveVelocity (.1)

ako bumps.left == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

kraj

kraj

Korak 5: Prepoznavanje života

Prepoznavanje života
Prepoznavanje života

Kodirali smo sistem za prepoznavanje života za čitanje boja objekata ispred njega. Tri vrste života za koje smo kodirali su biljke, voda i vanzemaljci. Da bismo to učinili, kodirali smo senzore za izračunavanje prosječnih vrijednosti crvene, plave, zelene ili bijele boje. Ove vrijednosti su uspoređene s pragovima koji su ručno postavljeni za određivanje boje koju kamera gleda. Kod bi također iscrtao putanju do objekta i stvorio mapu.

Kod je sljedeći:

t = 10;

i = 0;

dok je t == 10

img = r.getImage; imshow (img)

pauza (0.167)

i = i + 1;

red_mean = mean (mean (img (:,:, 1)));

blue_mean = mean (mean (img (:,:, 3)));

green_mean = mean (mean (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %želi ovaj val otprilike 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

dok je devet_plus_ten == 21 %zeleno - život

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

r.moveDistance (-. 1)

a = msgbox ('mogući izvor života pronađen, lokacija iscrtana');

pauza (2)

izbrisati (a)

[y2, Fs2] = audiočitavanje ('z_speak2.wav');

zvuk (y2, Fs2)

pauza (2)

%biljka = r.getImage; %imshow (postrojenje);

%uštede ('plant_img.mat', biljka ');

%lokacija parcele u zelenoj boji

i = 5;

break

else

nine_plus_ten = 19;

kraj

kraj

nine_plus_ten = 21;

dok je devet_plus_ten == 21 %plavo - woder

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

r.moveDistance (-. 1)

a = msgbox ('izvor vode je pronađen, lokacija iscrtana');

pauza (2)

izbrisati (a)

[y3, Fs3] = audiočitavanje ('z_speak3.wav');

zvuk (y3, Fs3);

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

%uštede ('water_img.mat', woder)

%lokacije placa

i = 5;

break

else

nine_plus_ten = 19;

kraj

kraj

nine_plus_ten = 21;

dok je devet_plus_ten == 21 %bijelih - vanzemaljci monkaS

ako bijelo_smjer> bijelo_prag && plavo_srednje <plavo_prazno && zeleno_srednje <zeleno_pragove

[y5, Fs5] = audiočitavanje ('z_speak5.wav');

zvuk (y5, Fs5);

pauza (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audiočitavanje ('z_scream.mp3');

zvuk (ys, Fss);

pauza (3)

r.stop

% alien = r.getImage; %imshow (vanzemaljac);

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

i = 5;

break

else

nine_plus_ten = 19;

kraj

kraj

ako je i == 5

a = 1; %ugao okretanja

t = 9; %prekinuti veliku petlju

i = 0;

kraj

kraj

Korak 6: Pokrenite ga

Nakon što je sav kod napisan, spojite ga u jednu datoteku i eto! Vaš Roomba bot sada će biti potpuno funkcionalan i raditi kako je oglašeno! Međutim, Bluetooth kontrola trebala bi biti ili u zasebnoj datoteci ili odvojena od ostatka koda s %%.

Uživajte u korištenju svog robota !!

Preporučuje se: