Satura rādītājs:
- 1. solis: Piegādes
- 2. darbība: problēmas izklāsts
- 3. darbība: Bluetooth tālvadības pults
- 4. darbība. Ietekmes atpazīšana
- 5. darbība. Dzīves atpazīšana
- 6. darbība: palaidiet to
Video: Mars Roomba: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šī 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
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
Š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
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
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:
Jūsu Roomba pārvēršana Mars Rover: 5 soļi
Pārvēršot savu Roomba par Mars Rover:
Mars Rover, izmantojot Raspberry Pi: 5 soļi
Mars Rover, izmantojot Raspberry Pi: Dārgais, lielais mācībniek, man vienmēr ir interesanti uzzināt par marsa braucēju, kuram ir 6 riteņi, kas var iet pa visu Marsa virsmu un izpētīt lietas no Zemes. Es arī vēlos izpētīt lietu, sēžot klēpjdatorā. Tāpēc tagad es domāju, ka ir īstais laiks to izdarīt un
Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: 7 soļi (ar attēliem)
Raspberry Pi - autonoms Mars Rover ar OpenCV objektu izsekošanu: darbina Raspberry Pi 3, Open CV objektu atpazīšana, ultraskaņas sensori un pārnesumkārbas līdzstrāvas motori. Šis roveris var izsekot jebkuram objektam, kuram tas ir apmācīts, un pārvietoties pa jebkuru reljefu
Mars Roomba projekts UTK: 4 soļi
Mars Roomba Project UTK: ATRUNA: TAS TIKS TIKAI, JA ROOMBA IESTATĪTU ĪPAŠI, ŠO INSTRUKCIJU TIKA IZVEIDOTA UN NOLŪKUSI IZMANTOT TENSESA STUDENTU UN FAKULTĀTES UNIVERSITĀTE Šis kods tiek izmantots, lai iestatītu rakstīts un s
IRobot Create-Mars Expedition Rover Mark I: 4 soļi
IRobot Create-Mars Expedition Rover Mark I: Šī pamācība iemācīs jums iestatīt iRobot Create, izmantojot MatLab kodēšanu. Jūsu robotam būs iespēja meklēt minerālus, atšķirot formas, manevrēt nelīdzenā reljefā, izmantojot klints sensorus, un tam ir iespēja