Talaan ng mga Nilalaman:

Mars Roomba: 6 na Hakbang
Mars Roomba: 6 na Hakbang

Video: Mars Roomba: 6 na Hakbang

Video: Mars Roomba: 6 na Hakbang
Video: Топ - 5 Грузовых Контейнеровозов Севших на Мель 2024, Hulyo
Anonim
Mars Roomba
Mars Roomba

Gagabayan ka ng Instructable na ito sa mga direksyon ng pagpapatakbo ng isang Raspberry Pi na kinokontrol na Roomba vacuum bot. Ang operating system na gagamitin namin ay sa pamamagitan ng MATLAB.

Hakbang 1: Mga Panustos

Ano ang kakailanganin mong tipunin upang maisakatuparan ang proyektong ito:

  • Lumikha ang RoRoot2 Roomba vacuum cleaner bot ng iRobot
  • Raspberry Pi
  • Raspberry Pi Camera
  • Ang pinakabagong bersyon ng MATLAB
  • Ang Roomba install toolbox para sa MATLAB
  • Ang application ng MATLAB para sa isang cellular device

Hakbang 2: Ang Pahayag ng Suliranin

Ang Pahayag ng Suliranin
Ang Pahayag ng Suliranin

Naatasan kaming gumamit ng MATLAB upang makabuo ng isang rover na maaaring magamit sa Mars upang matulungan ang mga siyentista sa pagkolekta ng data ng planeta. Ang mga pagpapaandar na tinugunan namin sa aming proyekto ay may remote control, pagkilala sa epekto ng object, pagkilala sa tubig, pagkilala sa buhay, at pagproseso ng imahe. Upang makamit ang mga tampok na ito, naka-code kami gamit ang mga utos ng toolbox ng Roomba upang manipulahin ang maraming mga pagpapaandar ng iRobot's Create2 Roomba.

Hakbang 3: Bluetooth Remote Control

Remote Control ng Bluetooth
Remote Control ng Bluetooth

Dadalhin ng slide na ito ang code upang makontrol ang paggalaw ng Roomba gamit ang mga kakayahan ng Bluetooth ng iyong aparato sa smartphone. Upang magsimula, i-download ang application na MATLAB sa iyong smartphone at mag-log in sa iyong Mathworks account. Kapag naka-log in, pumunta sa "higit pa", "mga setting", at kumonekta sa iyong computer gamit ang IP address nito. Kapag nakakonekta, bumalik sa "higit pa" at piliin ang "mga sensor." Mag-tap sa pangatlong sensor sa tuktok na toolbar ng screen, at tapikin ang sa pagsisimula. Ngayon, ang iyong smartphone ay isang remote control!

Ang code ay ang mga sumusunod:

habang 0 == 0

i-pause (.5)

TeleponoData = M. Orentasyon;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = TeleponoData (3);

mga bugbog = r.getBumpers;

kung Side> 80 || Side <-80

r.stop

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

pahinga

kung hindi man Side> 20 && Side <40

r.turnAngle (-5);

kung hindi man> 40

r.turnAngle (-25);

kung hindi man, Side-40

r.turnAngle (5);

kung hindi man Side <-40

r.turnAngle (25);

magtapos

kung Pitch> 10 && Pitch <35

r.moveDistance (.03)

kung hindi man Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

magtapos

magtapos

Hakbang 4: Pagkilala sa Epekto

Pagkilala sa Epekto
Pagkilala sa Epekto

Ang isa pang pagpapaandar na ipinatupad namin ay upang makita ang epekto ng Roomba sa isang bagay at pagkatapos ay iwasto ang kasalukuyang landas nito. Upang magawa ito, kailangan naming gumamit ng mga kondisyunal sa mga pagbabasa mula sa mga bumper sensor upang matukoy kung ang isang bagay ay sinaktan. Kung ang robot ay tumama sa isang bagay, ito ay babalik ng.2 metro, at paikutin sa isang anggulo na tinukoy ng kung aling bumper ang sinaktan. Kapag na-hit ang isang item, isang pop ang pop up na ipinapakita ang salitang "oof."

Ang Code ay ipinapakita sa ibaba:

habang 0 == 0

mga bugbog = r.getBumpers;

r.setDriveVelocity (.1)

kung maingay.kaliwa == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

kung hindi man. mauna sa harapan == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

kung hindi man ay tama.kung == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

kung hindi man ay mga bumps.leftWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

kung hindi man ay nabunggo. rightWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

magtapos

magtapos

Hakbang 5: Pagkilala sa Buhay

Pagkilala sa Buhay
Pagkilala sa Buhay

Nag-code kami ng isang sistema ng pagkilala sa buhay upang mabasa ang mga kulay ng mga bagay sa harap nito. Ang tatlong uri ng buhay na aming naka-code para sa mga halaman, tubig, at mga dayuhan. Upang magawa ito, naka-code ang mga sensor upang makalkula ang average na halaga ng pula, asul, berde, o puti. Ang mga halagang ito ay inihambing sa mga threshold na manu-manong itinakda upang matukoy ang kulay na tinitingnan ng camera. Ipaplano din ng code ang landas patungo sa object at lumilikha ng isang mapa.

Ang code ay ang mga sumusunod:

t = 10;

i = 0;

habang t == 10

img = r.getImage; imshow (img)

pause (0.167)

i = i + 1;

red_mean = ibig sabihin (ibig sabihin (img (:,:, 1)));

blue_mean = ibig sabihin (ibig sabihin (img (:,:, 3)));

green_mean = ibig sabihin (ibig sabihin (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; % gusto ang val na humigit-kumulang na 100

siyam_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

habang siyam_plus_ten == 21% berde - buhay

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

r.moveDistance (-. 1)

a = msgbox ('posibleng nahanap ang mapagkukunan ng buhay, naka-plot ang lokasyon');

i-pause (2)

tanggalin ang (a)

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

tunog (y2, Fs2)

i-pause (2)

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

% makatipid ('plant_img.mat', halaman ');

% lokasyon ng balangkas sa berde

i = 5;

pahinga

iba pa

siyam_plus_ten = 19;

magtapos

magtapos

siyam_plus_ten = 21;

habang siyam_plus_ten == 21% asul - woder

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

r.moveDistance (-. 1)

a = msgbox ('isang mapagkukunan ng tubig ay natagpuan, lokasyon na naka-plot');

i-pause (2)

tanggalin ang (a)

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

tunog (y3, Fs3);

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

% makatipid ('water_img.mat', woder)

% lokasyon ng balangkas na asul

i = 5;

pahinga

iba pa

siyam_plus_ten = 19;

magtapos

magtapos

siyam_plus_ten = 21;

habang siyam_plus_ten == 21% puti - alien monkaS

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

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

tunog (y5, Fs5);

i-pause (3)

r.setDriveVelocity (0,.5)

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

tunog (ys, Fss);

i-pause (3)

r.stop

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

% makatipid ('alien_img.mat', alien);

i = 5;

pahinga

iba pa

siyam_plus_ten = 19;

magtapos

magtapos

kung ako == 5

a = 1; % lumiliko angulo

t = 9; % wakasan ang malaking loop

i = 0;

magtapos

magtapos

Hakbang 6: Patakbuhin Ito !

Matapos maisulat ang lahat ng code, pagsamahin ang lahat sa isang file at voila! Ang iyong Roomba bot ay magiging kumpleto na sa pag-andar at pagpapatakbo ng na-advertise! Gayunpaman, ang kontrol ng Bluetooth ay dapat na nasa isang hiwalay na file o pinaghiwalay mula sa natitirang code na may %%.

Masiyahan sa paggamit ng iyong robot !!

Inirerekumendang: