Kazalo:

Mars Roomba: 6 korakov
Mars Roomba: 6 korakov

Video: Mars Roomba: 6 korakov

Video: Mars Roomba: 6 korakov
Video: Pluzhnik Liudmila - Rachmaninoff : Prelude Op 23 No 6; Polka de WR; 2024, Julij
Anonim
Mars Roomba
Mars Roomba

Ta Instructable vas bo vodil v smeri delovanja vakuumskega robota Roomba, ki ga upravlja Raspberry Pi. Operacijski sistem, ki ga bomo uporabljali, je prek programa MATLAB.

1. korak: Zaloge

Za izvedbo tega projekta boste morali zbrati:

  • iRobotov bot sesalnika Create2 Roomba
  • Malina Pi
  • Raspberry Pi kamera
  • Najnovejša različica programa MATLAB
  • Orodjarna za namestitev Roomba za MATLAB
  • MATLAB aplikacija za mobilno napravo

2. korak: Izjava o težavi

Izjava o problemu
Izjava o problemu

Nalogo smo imeli uporabiti MATLAB za razvoj roverja, ki bi ga lahko uporabili na Marsu, da bi znanstvenikom pomagali pri zbiranju podatkov o planetih. Naloge, ki smo jih obravnavali v našem projektu, so bile daljinsko upravljanje, prepoznavanje vpliva objekta, prepoznavanje vode, prepoznavanje življenja in obdelava slik. Da bi dosegli te podvige, smo z ukazi orodne vrstice Roomba kodirali za upravljanje številnih funkcij iRobotove datoteke Create2 Roomba.

Korak: Daljinski upravljalnik Bluetooth

Bluetooth daljinski upravljalnik
Bluetooth daljinski upravljalnik

Ta diapozitiv bo predstavil kodo za nadzor gibanja Roombe z zmožnostjo Bluetooth vaše pametne naprave. Za začetek prenesite aplikacijo MATLAB v pametni telefon in se prijavite v svoj račun Mathworks. Ko ste prijavljeni, pojdite na "več", "nastavitve" in se povežite z računalnikom z njegovim naslovom IP. Ko ste povezani, se vrnite na "več" in izberite "senzorji". Dotaknite se tretjega senzorja v zgornji orodni vrstici zaslona in tapnite Start. Zdaj je vaš pametni telefon daljinski upravljalnik!

Koda je naslednja:

medtem ko je 0 == 0

premor (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Nagib = PhoneData (2);

Stranska stran = PhoneData (3);

izbokline = r.getBumpers;

če je stran> 80 || Stransko <-80

r.stop

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

prekiniti

elseif Side> 20 && Side <40

r.turnAngle (-5);

drugače stran> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif stran <-40

r.turnAngle (25);

konec

če je Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Nagib> -35 && Nagib <-10

r.moveDistance (-. 03)

konec

konec

4. korak: Prepoznavanje vpliva

Prepoznavanje vpliva
Prepoznavanje vpliva

Druga funkcija, ki smo jo izvedli, je bila zaznati vpliv Roombe na objekt in nato popraviti njegovo trenutno pot. Da bi to naredili, smo morali uporabiti pogojne vrednosti z odčitki senzorjev odbijača, da smo ugotovili, ali je bil predmet udarjen. Če robot zadene predmet, se bo umaknil za 0,2 metra in se vrtel pod kotom, ki ga določi udarci v odbijač. Ko pritisnete element, se prikaže meni z besedo "oof".

Koda je prikazana spodaj:

medtem ko je 0 == 0

izbokline = r.getBumpers;

r.setDriveVelocity (.1)

če 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)

konec

konec

5. korak: Prepoznavanje življenja

Priznanje življenja
Priznanje življenja

Kodirali smo sistem za prepoznavanje življenja za branje barv predmetov pred njim. Tri vrste življenja, za katere smo kodirali, so rastline, voda in tujci. V ta namen smo senzorje kodirali za izračun povprečnih vrednosti rdeče, modre, zelene ali bele barve. Te vrednosti so primerjali s pragi, ki so bili ročno nastavljeni za določitev barve, ki jo kamera gleda. Koda bi narisala tudi pot do predmeta in ustvarila zemljevid.

Koda je naslednja:

t = 10;

i = 0;

medtem ko je t == 10

img = r.getImage; imshow (img)

premor (0,167)

i = i + 1;

rdeče_pomen = povprečje (povprečje (img (:,:, 1)));

modro_pomen = povprečje (povprečje (img (:,:, 3)));

zeleno_pomen = povprečje (povprečje (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %želi ta val približno 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

medtem ko nine_plus_ten == 21 %zeleno - življenje

če green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('možen vir življenja najden, lokacija narisana');

premor (2)

izbriši (a)

[y2, Fs2] = zvočno branje ('z_speak2.wav');

zvok (y2, Fs2)

premor (2)

%rastlina = r.getImage; %imshow (obrat);

%prihranka ('plant_img.mat', rastlina ');

%lokacije parcele v zeleni barvi

i = 5;

prekiniti

drugače

nine_plus_ten = 19;

konec

konec

nine_plus_ten = 21;

medtem ko nine_plus_ten == 21 %modra - woder

če blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('vir vode je bil najden, lokacija narisana');

premor (2)

izbriši (a)

[y3, Fs3] = zvočno branje ('z_speak3.wav');

zvok (y3, Fs3);

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

%prihranka ('water_img.mat', woder)

%lokacije ploskve v modri barvi

i = 5;

prekiniti

drugače

nine_plus_ten = 19;

konec

konec

nine_plus_ten = 21;

medtem ko nine_plus_ten == 21 %bela - tujci monkaS

če white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = zvočno branje ('z_speak5.wav');

zvok (y5, Fs5);

premor (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = zvočno branje ('z_scream.mp3');

zvok (ys, Fss);

premor (3)

r.stop

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

% prihrani ('alien_img.mat', tujec);

i = 5;

prekiniti

drugače

nine_plus_ten = 19;

konec

konec

če je i == 5

a = 1; %kot zavoja

t = 9; %konča veliko zanko

i = 0;

konec

konec

6. korak: Zaženite !

Ko je koda napisana, jo združite v eno datoteko in voila! Vaš Roomba bot bo zdaj popolnoma funkcionalen in bo deloval, kot je oglaševano! Kontrolnik Bluetooth mora biti bodisi v ločeni datoteki bodisi ločen od preostale kode z %%.

Uživajte v uporabi svojega robota !!

Priporočena: