Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
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
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
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
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
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 !!