Satura rādītājs:

Mars Roomba: 6 soļi
Mars Roomba: 6 soļi

Video: Mars Roomba: 6 soļi

Video: Mars Roomba: 6 soļi
Video: 【Latin Dance】Easy On Me ( Rumba ) 2024, Novembris
Anonim
Marss Roomba
Marss Roomba

Šī pamācība sniegs norādījumus Raspberry Pi kontrolētā Roomba vakuuma robota darbības virzienos. Mēs izmantosim operētājsistēmu, izmantojot MATLAB.

1. solis: Piegādes

Kas jums būs jāapkopo, lai īstenotu šo projektu:

  • iRobot izveidotais putekļu sūcēja Create2 Roomba robots
  • Raspberry Pi
  • Raspberry Pi kamera
  • Jaunākā MATLAB versija
  • Roomba instalēšanas rīkkopa MATLAB
  • MATLAB lietojumprogramma mobilajai ierīcei

2. darbība: problēmas izklāsts

Paziņojums par problēmu
Paziņojums par problēmu

Mums tika uzdots izmantot MATLAB, lai izstrādātu roveru, ko varētu izmantot uz Marsa, lai palīdzētu zinātniekiem apkopot datus par planētu. Mūsu projektā apskatītās funkcijas bija tālvadības pults, objektu ietekmes atpazīšana, ūdens atpazīšana, dzīvības atpazīšana un attēlu apstrāde. Lai sasniegtu šos varoņdarbus, mēs kodējām, izmantojot Roomba rīkjoslas komandas, lai manipulētu ar daudzajām iRobot's Create2 Roomba funkcijām.

3. darbība: Bluetooth tālvadības pults

Bluetooth tālvadības pults
Bluetooth tālvadības pults

Šajā slaidā tiks parādīts kods, lai kontrolētu Roomba kustību, izmantojot viedtālruņa Bluetooth iespējas. Lai sāktu, lejupielādējiet MATLAB lietojumprogrammu savā viedtālrunī un piesakieties savā Mathworks kontā. Kad esat pieteicies, dodieties uz "vairāk", "iestatījumi" un izveidojiet savienojumu ar datoru, izmantojot tā IP adresi. Kad esat izveidojis savienojumu, atgriezieties sadaļā “vairāk” un atlasiet “sensori”. Pieskarieties trešajam sensoram ekrāna augšējā rīkjoslā un pieskarieties startam. Tagad jūsu viedtālrunis ir tālvadības pults!

Kods ir šāds:

kamēr 0 == 0

pauze (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = PhoneData (3);

izciļņi = r.getBamperi;

ja sāns> 80 || Sānos <-80

r. apstāties

r. pīkstiens ('C, E, G, C^, G, E, C')

pārtraukums

elseif Side> 20 && Side <40

r.pagrieziena leņķis (-5);

ja sāns> 40

r.pagrieziena leņķis (-25);

elseif Side-40

r.pagrieziena leņķis (5);

elseif Side <-40

r.pagrieziena leņķis (25);

beigas

ja Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

beigas

beigas

4. darbība. Ietekmes atpazīšana

Ietekmes atpazīšana
Ietekmes atpazīšana

Vēl viena funkcija, ko mēs ieviesām, bija noteikt Roomba ietekmi uz objektu un pēc tam izlabot tā pašreizējo ceļu. Lai to izdarītu, mums bija jāizmanto nosacījumi ar bufera sensoru rādījumiem, lai noteiktu, vai objekts nav notriekts. Ja robots atsitīsies pret kādu objektu, tas atkāpsies.2 metrus un griezīsies leņķī, kas noteikts, ar kuru trāpīts buferis. Kad vienums ir trāpīts, tiek parādīta izvēlne, kurā redzams vārds "oof".

Kods ir parādīts zemāk:

kamēr 0 == 0

izciļņi = r.getBamperi;

r.setDriveVelocity (.1)

ja izciļņi.pa kreisi == 1

msgbox ('Oho!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Oho!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif izciļņiem.pareizi == 1

msgbox ('Oho!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Oho!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif izciļņiem.rightWheelDrop == 1

msgbox ('Oho!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

beigas

beigas

5. darbība. Dzīves atpazīšana

Dzīves atpazīšana
Dzīves atpazīšana

Mēs kodējām dzīvības atpazīšanas sistēmu, lai nolasītu priekšā esošo objektu krāsas. Trīs dzīves veidi, kurus mēs iekodējām, ir augi, ūdens un citplanētieši. Lai to izdarītu, mēs kodējām sensorus, lai aprēķinātu vidējās sarkanās, zilās, zaļās vai baltās vērtības. Šīs vērtības tika salīdzinātas ar sliekšņiem, kas tika manuāli iestatīti, lai noteiktu krāsu, uz kuru kamera skatās. Kods arī uzzīmētu ceļu uz objektu un izveidotu karti.

Kods ir šāds:

t = 10;

i = 0;

kamēr t == 10

img = r.getImage; parādīt (img)

pauze (0,167)

i = i + 1;

red_mean = vidējais (vidējais (img (:,:, 1)));

blue_mean = vidējais (vidējais (img (:,:, 3)));

green_mean = vidējais (vidējais (img (:,:, 2)));

balts_means = (zils_means + zaļš_pars + sarkans_princips) / 3; %vēlas šo vērtību aptuveni 100

deviņi_pluss_ten = 21;

zaļais slieksnis = 125;

zilais slieksnis = 130;

baltais_slieksnis = 124;

sarkanais slieksnis = 115;

savukārt nine_plus_ten == 21 %zaļš - dzīvība

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

r.moveDistance (-. 1)

a = msgbox ('atrasts iespējamais dzīvības avots, uzzīmēta atrašanās vieta');

pauze (2)

dzēst (a)

[y2, Fs2] = audiolasījums ('z_speak2.wav');

skaņa (y2, Fs2)

pauze (2)

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

%ietaupīt ('plant_img.mat', plant ');

%zemes gabala atrašanās vieta zaļā krāsā

i = 5;

pārtraukums

citādi

deviņi_pluss_ten = 19;

beigas

beigas

deviņi_pluss_ten = 21;

savukārt nine_plus_ten == 21 %zils - woder

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

r.moveDistance (-. 1)

a = msgbox ('ir atrasts ūdens avots, norādīta atrašanās vieta');

pauze (2)

dzēst (a)

[y3, Fs3] = audiolasījums ('z_speak3.wav');

skaņa (y3, Fs3);

%woder = r.getImage; %parādīts (woder)

%ietaupījums ('water_img.mat', woder)

Zemes gabala atrašanās vieta %zilā krāsā

i = 5;

pārtraukums

citādi

deviņi_pluss_ten = 19;

beigas

beigas

deviņi_pluss_ten = 21;

savukārt nine_plus_ten == 21 %balts - citplanētiešu monkaS

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

[y5, Fs5] = audiolasījums ('z_speak5.wav');

skaņa (y5, Fs5);

pauze (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audiolasījums ('z_scream.mp3');

skaņa (ys, Fss);

pauze (3)

r. apstāties

svešzemju % = r.getImage; %imshow (citplanētietis);

% ietaupīt ('alien_img.mat', citplanētietis);

i = 5;

pārtraukums

citādi

deviņi_pluss_ten = 19;

beigas

beigas

ja i == 5

a = 1; %pagrieziena leņķis

t = 9; %izbeigt lielo cilpu

i = 0;

beigas

beigas

6. darbība: palaidiet to

Kad viss kods ir uzrakstīts, apvienojiet to vienā failā un voila! Jūsu Roomba robots tagad būs pilnībā funkcionāls un darbosies kā reklamēts! Tomēr Bluetooth vadīklai vajadzētu būt atsevišķā failā vai atdalīt no pārējā koda ar %%.

Izbaudiet sava robota lietošanu !!

Ieteicams: