Orodha ya maudhui:

Mars Roomba: Hatua 6
Mars Roomba: Hatua 6

Video: Mars Roomba: Hatua 6

Video: Mars Roomba: Hatua 6
Video: Зачем мы спасли ПРИШЕЛЬЦА от ЛЮДЕЙ В ЧЕРНОМ!? ПРИШЕЛЬЦЫ В РЕАЛЬНОЙ ЖИЗНИ! 2024, Novemba
Anonim
Mars Roomba
Mars Roomba

Inayoweza kufundishwa itakuongoza katika mwelekeo wa kutumia bot ya utupu ya Raspberry Pi inayodhibitiwa ya Roomba. Mfumo wa uendeshaji ambao tutatumia ni kupitia MATLAB.

Hatua ya 1: Vifaa

Nini utahitaji kukusanya ili kutekeleza mradi huu:

  • iRobot's Create2 Roomba utupu safi bot
  • Pi ya Raspberry
  • Kamera ya Raspberry Pi
  • Toleo la hivi karibuni la MATLAB
  • Sanduku la zana la kufunga Roomba kwa MATLAB
  • Matumizi ya MATLAB ya kifaa cha rununu

Hatua ya 2: Taarifa ya Shida

Taarifa ya Shida
Taarifa ya Shida

Tulipewa jukumu la kutumia MATLAB kuunda rover ambayo inaweza kutumika kwenye Mars ili kusaidia wanasayansi kukusanya data za sayari. Kazi ambazo tulishughulikia katika mradi wetu zilikuwa za kudhibiti kijijini, utambuzi wa athari za kitu, utambuzi wa maji, utambuzi wa maisha, na usindikaji wa picha. Ili kufikia mafanikio haya, tuliandika kwa kutumia amri za kisanduku cha Roomba kudhibiti kazi nyingi za i2Romba ya iRobot.

Hatua ya 3: Udhibiti wa Kijijini cha Bluetooth

Udhibiti wa Kijijini cha Bluetooth
Udhibiti wa Kijijini cha Bluetooth

Slide hii itatembea kupitia nambari kudhibiti mwendo wa Roomba kwa kutumia uwezo wa Bluetooth wa kifaa chako cha smartphone. Kuanza, pakua programu ya MATLAB kwa smartphone yako na uingie kwenye akaunti yako ya Mathworks. Mara tu umeingia, nenda kwa "zaidi", "mipangilio", na uunganishe kwenye kompyuta yako ukitumia anwani yake ya IP. Mara baada ya kushikamana, rudi kwa "zaidi" na uchague "sensorer." Gonga kwenye sensorer ya tatu kwenye mwambaa zana wa juu wa skrini, na ugonge kuanza. Sasa, smartphone yako ni udhibiti wa kijijini!

Nambari ni kama ifuatavyo:

wakati 0 == 0

pumzika (.5)

SimuData = Mlo wa M.

Azi = SimuData (1);

Lami = SimuData (2);

Upande = SimuData (3);

matuta = r.getBumpers;

ikiwa Upande> 80 || Upande <-80

r.acha

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

kuvunja

upande mwingine> 20 && Side <40

r. TurnAngle (-5);

mwingineif Side> 40

r. TurnAngle (-25);

mwingineif Side-40

r. TurnAngle (5);

mwingineif upande <-40

r. TurnAngle (25);

mwisho

ikiwa Pitch> 10 && Pitch <35

r.soveDistance (.03)

vingine ikiwa Pitch> -35 && Pitch <-10

r.soveDistance (-. 03)

mwisho

mwisho

Hatua ya 4: Utambuzi wa Athari

Utambuzi wa Athari
Utambuzi wa Athari

Kazi nyingine ambayo tulitekeleza ilikuwa kugundua athari ya Roomba ndani ya kitu na kisha kurekebisha njia yake ya sasa. Ili kufanya hivyo, ilibidi tutumie hali na usomaji kutoka kwa sensorer bumper kuamua ikiwa kitu kiligongwa. Ikiwa roboti itagonga kitu, itahifadhi mita.2, na itazunguka kwa pembe iliyoamuliwa na ambayo bumper ilipigwa. Mara tu kitu kinapogongwa, menyu hujitokeza ikionyesha neno "oof."

Kanuni imeonyeshwa hapa chini:

wakati 0 == 0

matuta = r.getBumpers;

r.setDriveVelocity (.1)

ikiwa matuta.kushoto == 1

msgbox ('Oof!');

r.soveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (-35)

r.setDriveVelocity (.2)

mwingineif matuta.mbele == 1

msgbox ('Oof!');

r.soveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (90)

r.setDriveVelocity (.2)

vingine ikiwa matuta. sawa == 1

msgbox ('Oof!');

r.soveDistance (-0.2)

r.setTurnVelocity (.2)

r. zungusha (35)

r.setDriveVelocity (.2)

mwingine ikiwa matuta.leftWheelDrop == 1

msgbox ('Oof!');

r.soveDistance (-0.2)

r.setTurnVelocity (.2)

r. TurnAngle (-35)

r.setDriveVelocity (.2)

mwingine ikiwa matuta.rightWheelDrop == 1

msgbox ('Oof!');

r.soveDistance (-0.2)

r.setTurnVelocity (.2)

r. zungusha (35)

r.setDriveVelocity (.2)

mwisho

mwisho

Hatua ya 5: Utambuzi wa Maisha

Utambuzi wa Maisha
Utambuzi wa Maisha

Tuliandika mfumo wa utambuzi wa maisha ili kusoma rangi za vitu mbele yake. Aina tatu za maisha ambazo tuliandika ni mimea, maji, na wageni. Ili kufanya hivyo, tuliandika sensorer ili kuhesabu wastani wa rangi nyekundu, bluu, kijani au nyeupe. Maadili haya yalilinganishwa na vizingiti ambavyo viliwekwa kwa mikono kuamua rangi ambayo kamera inaangalia. Nambari hiyo pia ingeandaa njia ya kitu na kuunda ramani.

Nambari ni kama ifuatavyo:

t = 10;

i = 0;

wakati t == 10

img = r.getImage; imshow (img)

pumzika (0.167)

i = i + 1;

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

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

green_mean = maana (maana (img (:,:, 2)));

njia nyeupe = (maana ya samawati + maana ya kijani + nyekundu_maana) / 3; % wanataka hii val takriban 100

tisa_plus_ten = 21;

kizingiti kijani_ 125 = 125;

kizuizi_buluu = 130;

kizuizi_ nyeupe = 124;

kizingiti nyekundu = 115;

wakati nine_plus_ten == 21% kijani - maisha

ikiwa green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_mean <

r.soveDistance (-. 1)

a = msgbox ('chanzo kinachowezekana cha maisha kilipatikana, eneo limepangwa');

pumzika (2)

futa (a)

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

sauti (y2, Fs2)

pumzika (2)

% mmea = r.piga picha; % imshow (mmea);

% kuokoa ('mmea_img.mat', mmea ');

% eneo la njama katika kijani kibichi

i = 5;

kuvunja

mwingine

tisa_plus_ten = 19;

mwisho

mwisho

tisa_plus_ten = 21;

wakati nine_plus_ten == 21% ya bluu - woder

ikiwa blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_mean && red_mean <red_threshold

r.soveDistance (-. 1)

a = msgbox ('chanzo cha maji kimepatikana, eneo limepangwa');

pumzika (2)

futa (a)

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

sauti (y3, Fs3);

% woder = r.piga picha; % imshow (woder)

% kuokoa ('water_img.mat', woder)

Eneo la njama katika bluu

i = 5;

kuvunja

mwingine

tisa_plus_ten = 19;

mwisho

mwisho

tisa_plus_ten = 21;

wakati nine_plus_ten == 21% nyeupe - wageni monkaS

ikiwa nyeupe_maana> kizuizi_chafu && bluu_maana <bluu_ kizingiti && green_mean

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

sauti (y5, Fs5);

pumzika (3)

r.setDriveVelocity (0,.5)

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

sauti (ys, Fss);

pumzika (3)

r.acha

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

% kuokoa ('alien_img.mat', mgeni);

i = 5;

kuvunja

mwingine

tisa_plus_ten = 19;

mwisho

mwisho

ikiwa i == 5

a = 1; % inageuka pembe

t = 9; kusitisha kitanzi kikubwa

i = 0;

mwisho

mwisho

Hatua ya 6: Endesha !

Baada ya nambari yote kuandikwa, inganisha yote kuwa faili moja na voila! Bot yako ya Roomba sasa itafanya kazi kikamilifu na itafanya kazi kama ilivyotangazwa! Walakini, udhibiti wa Bluetooth unapaswa kuwa katika faili tofauti au kutengwa na nambari yote na %%.

Furahiya kutumia roboti yako !!

Ilipendekeza: