Sisukord:

Mars Roomba: 6 sammu
Mars Roomba: 6 sammu

Video: Mars Roomba: 6 sammu

Video: Mars Roomba: 6 sammu
Video: Я иду тебя искать 6 сезон - Серия 4 / Сериал HD 2024, Juuli
Anonim
Mars Roomba
Mars Roomba

See juhend juhendab teid Raspberry Pi juhitava Roomba vaakumpotti käitamise suundades. Kasutatav operatsioonisüsteem on MATLABi kaudu.

Samm: tarvikud

Selle projekti elluviimiseks peate koguma järgmist:

  • iRoboti Creat2 Roomba tolmuimeja robot
  • Vaarika Pi
  • Raspberry Pi kaamera
  • MATLABi uusim versioon
  • Roomba installimise tööriistakast MATLAB -i jaoks
  • Rakendus MATLAB mobiilseadme jaoks

2. samm: probleemipüstitus

Probleemi avaldus
Probleemi avaldus

Meile tehti ülesandeks kasutada MATLAB -i roveri väljatöötamiseks, mida saaks Marsil kasutada, et aidata teadlastel planeedi andmeid koguda. Meie projektis käsitletud funktsioonid olid kaugjuhtimine, objektide mõju tuvastamine, vee tuvastamine, elutuvastus ja pilditöötlus. Nende saavutuste saavutamiseks kodeerisime Roomba tööriistakasti käske, et manipuleerida iRoboti loodud Create2 Roomba paljude funktsioonidega.

Samm: Bluetoothi kaugjuhtimispult

Bluetooth kaugjuhtimispult
Bluetooth kaugjuhtimispult

See slaid läbib koodi, mis võimaldab Roomba liikumist juhtida teie nutitelefoni Bluetooth-funktsioonide abil. Alustuseks laadige oma nutitelefoni alla rakendus MATLAB ja logige sisse oma Mathworksi kontole. Kui olete sisse loginud, minge jaotisse "Veel", "Seaded" ja ühendage oma arvutiga selle IP -aadressi kasutades. Kui olete ühenduse loonud, minge tagasi "rohkem" ja valige "andurid". Puudutage ekraani ülemisel tööriistaribal kolmandat andurit ja puudutage nuppu Start. Nüüd on teie nutitelefon kaugjuhtimispult!

Kood on järgmine:

samas 0 == 0

paus (.5)

Telefoniandmed = M. Orientation;

Azi = Telefoniandmed (1);

Pigi = Telefoniandmed (2);

Külg = Telefoniandmed (3);

muhke = r.getBumpers;

kui külg> 80 || Külg <-80

r.peatus

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

murda

elseif pool> 20 && külg <40

r.pöördenurk (-5);

muidu kui külg> 40

r.pöördenurk (-25);

elseif Side-40

r.pöördenurk (5);

elseif Külg <-40

r.pöördenurk (25);

lõpp

kui Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

lõpp

lõpp

4. samm: mõju tuvastamine

Mõju tuvastamine
Mõju tuvastamine

Teine meie rakendatud funktsioon oli tuvastada Roomba mõju objektile ja seejärel parandada selle praegust rada. Selleks pidime kasutama kaitseraua anduritelt saadud konditsioone, et teha kindlaks, kas mõni objekt sai löögi. Kui robot tabab objekti, taandub see 0,2 meetrit ja pöörleb nurga all, mille järgi kaitseraud tabati. Kui üksus on tabatud, avaneb menüü, kus kuvatakse sõna "ooh".

Kood on näidatud allpool:

samas 0 == 0

muhke = r.getBumpers;

r.setDriveVelocity (.1)

kui muhke.vasak == 1

msgbox ('Ooh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif muhke.esine == 1

msgbox ('Ooh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif muhke.õige == 1

msgbox ('Ooh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnNurk (35)

r.setDriveVelocity (.2)

elseif muhke.leftWheelDrop == 1

msgbox ('Ooh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif löögid.rightWheelDrop == 1

msgbox ('Ooh!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnNurk (35)

r.setDriveVelocity (.2)

lõpp

lõpp

5. samm: elutuvastus

Elu äratundmine
Elu äratundmine

Kodeerisime elutuvastussüsteemi, et lugeda selle ees olevate objektide värve. Kolm eluliiki, mida me kodeerisime, on taimed, vesi ja tulnukad. Selleks kodeerisime andurid punase, sinise, rohelise või valge keskmise väärtuse arvutamiseks. Neid väärtusi võrreldi lävenditega, mis olid kaamera poolt vaadatava värvi määramiseks käsitsi määratud. Kood joonistaks ka tee objektini ja kaardi loomise.

Kood on järgmine:

t = 10;

i = 0;

samas kui t == 10

img = r.getImage; imshow (img)

paus (0,167)

i = i + 1;

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

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

roheline_mean = keskmine (keskmine (img (:,:, 2)));

valge_mean = (sinine_mees + roheline_mean + punane_mean) / 3; %soovib seda väärtust umbes 100

üheksa_pluss_ten = 21;

roheline_lävi = 125;

sinine_lävi = 130;

valge_lävi = 124;

punane_lävi = 115;

samas nine_plus_ten == 21 %roheline - elu

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

r.moveDistance (-. 1)

a = msgbox ('leiti võimalik eluallikas, joonistatud asukoht');

paus (2)

kustutada (a)

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

heli (y2, Fs2)

paus (2)

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

%säästa ('plant_img.mat', plant ');

krundi asukoht roheliselt

i = 5;

murda

muidu

üheksa_pluss_ten = 19;

lõpp

lõpp

üheksa_pluss_ten = 21;

samas nine_plus_ten == 21 %sinine - woder

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

r.moveDistance (-. 1)

a = msgbox ('veeallikas on leitud, asukoht on joonistatud');

paus (2)

kustutada (a)

[y3, Fs3] = helilugemine ('z_speak3.wav');

heli (y3, Fs3);

%woder = r.getImage; %näitus (woder)

%säästa ('water_img.mat', woder)

Krundi asukoht %sinine

i = 5;

murda

muidu

üheksa_pluss_ten = 19;

lõpp

lõpp

üheksa_pluss_ten = 21;

samas nine_plus_ten == 21 %valge - tulnukate monkaS

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

[y5, Fs5] = helilugemine ('z_speak5.wav');

heli (y5, Fs5);

paus (3)

r.setDriveVelocity (0,.5)

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

heli (ys, Fss);

paus (3)

r.peatus

välismaalane % = r.getImage; %imshow (välismaalane);

% säästa ('alien_img.mat', tulnukas);

i = 5;

murda

muidu

üheksa_pluss_ten = 19;

lõpp

lõpp

kui ma == 5

a = 1; %pöördenurk

t = 9; %lõpetab suure silmuse

i = 0;

lõpp

lõpp

6. samm: käivitage see

Kui kogu kood on kirjutatud, ühendage see kõik üheks failiks ja voila! Teie Roomba robot on nüüd täielikult töökorras ja töötab reklaamitud viisil! Kuid Bluetooth -juhtelement peaks olema kas eraldi failis või ülejäänud koodist eraldatud %% -ga.

Naudi oma roboti kasutamist !!

Soovitan: