Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
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
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
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
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
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 !!