Sadržaj:

Mars Roomba: 6 koraka
Mars Roomba: 6 koraka

Video: Mars Roomba: 6 koraka

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

Ovaj Instructable vodit će vas u smjerovima rada s vakuumskim botom Roomba s kontrolom Raspberry Pi. Operativni sustav koji ćemo koristiti je putem MATLAB -a.

Korak 1: Opskrba

Što ćete morati prikupiti za provedbu ovog projekta:

  • iRobotov bot usisavača Create2 Roomba
  • Malina Pi
  • Raspberry Pi kamera
  • Najnovija verzija MATLAB -a
  • Roomba set alata za instalaciju za MATLAB
  • MATLAB aplikacija za stanični uređaj

Korak 2: Izjava o problemu

Izjava o problemu
Izjava o problemu

Imali smo zadatak koristiti MATLAB za razvoj rovera koji bi se mogao koristiti na Marsu kako bismo pomogli znanstvenicima u prikupljanju podataka o planeti. Funkcije kojima smo se bavili u našem projektu bile su daljinsko upravljanje, prepoznavanje utjecaja objekta, prepoznavanje vode, prepoznavanje života i obrada slike. Da bismo postigli ove uspjehe, kodirali smo pomoću naredbi Roomba toolbox za upravljanje mnogim funkcijama iRobotovog Create2 Roomba.

Korak 3: Bluetooth daljinski upravljač

Bluetooth daljinski upravljač
Bluetooth daljinski upravljač

Ovaj slajd će proći kroz kôd za upravljanje kretanjem Roombe pomoću 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 ste prijavljeni, idite na "više", "postavke" i povežite se s računalom koristeći njegovu IP adresu. Nakon povezivanja vratite se na "više" i odaberite "senzori". Dodirnite treći senzor na gornjoj alatnoj traci zaslona i dodirnite Start. Sada je vaš pametni telefon daljinski upravljač!

Kod je sljedeći:

dok je 0 == 0

stanka (0,5)

PhoneData = M. Orijentacija;

Azi = PhoneData (1);

Nagib = PhoneData (2);

Side = PhoneData (3);

izbočine = r.getBumpers;

ako je stranica> 80 || Bočno <-80

r.stop

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

pauza

elseif Side> 20 && Side <40

r.turnAngle (-5);

inače strana> 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 utjecaja

Prepoznavanje utjecaja
Prepoznavanje utjecaja

Druga funkcija koju smo implementirali bila je otkriti utjecaj Roombe na objekt, a zatim ispraviti njezin trenutni put. Da bismo to učinili, morali smo upotrijebiti uvjete s očitanjima senzora odbojnika kako bismo utvrdili je li udario neki predmet. 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 izbornik koji prikazuje riječ "oof".

Kôd je prikazan ispod:

dok je 0 == 0

izbočine = r.getBumpers;

r.setDriveVelocity (.1)

ako neravnine.lijevo == 1

msgbox ('Uf!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif neravnine.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 neravnine.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 sustav 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. Te su vrijednosti uspoređene s pragovima koji su ručno postavljeni za određivanje boje koju kamera gleda. Kod bi također iscrtao put do objekta i stvorio kartu.

Kod je sljedeći:

t = 10;

i = 0;

dok je t == 10

img = r.getImage; imshow (img)

stanka (0,167)

i = i + 1;

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

plavo_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 3)));

zeleno_sredstvo = srednja vrijednost (srednja vrijednost (img (:,:, 2)));

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

nine_plus_ten = 21;

green_threshold = 125;

plavi_prag = 130;

bijeli_prag = 124;

crveni_prag = 115;

dok nine_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');

stanka (2)

izbrisati (a)

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

zvuk (y2, Fs2)

stanka (2)

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

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

%lokacije parcele u zelenoj boji

i = 5;

pauza

drugo

nine_plus_ten = 19;

kraj

kraj

nine_plus_ten = 21;

dok je nine_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');

stanka (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 parcele u plavoj boji

i = 5;

pauza

drugo

nine_plus_ten = 19;

kraj

kraj

nine_plus_ten = 21;

dok nine_plus_ten == 21 %bijelaca - vanzemaljci monkaS

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

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

zvuk (y5, Fs5);

stanka (3)

r.setDriveVelocity (0,.5)

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

zvuk (ys, Fss);

stanka (3)

r.stop

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

% spremi ('alien_img.mat', vanzemaljac);

i = 5;

pauza

drugo

nine_plus_ten = 19;

kraj

kraj

ako je i == 5

a = 1; %zavoja kuta

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 voila! 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čeni: