Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:59
Kiara Myers, Ahmad Alghadeer ir Madison Tippet
Tikslas:
Ši pamoka išmokys jus, kaip programuoti „Roomba Bot“, naudojant MATLAB, naršyti po sodą ir aptikti apskritimo formos vaisius/daržoves, kurie yra pakankamai prinokę, kad juos būtų galima nuskinti pagal jų dydį. Šis robotas taip pat siunčia jums el. Laišką, įspėdamas, kiek vaisių paruošta skinti ir kokiu keliu jis nukeliavo.
Funkcijos:
- Naudoja šviesos jutiklius, kad aptiktų sienas ir šiek tiek pasisuktų, kad jų nepataikytų
- Naudoja smūgio jutiklius, kad nutrauktų programą, kai ji atsitrenkia į uolą sodo gale
- Naudoja vaizdo apdorojimą, kad aptiktų apskritimą sode ir nustatytų jo spindulį
- Naudoja uolų jutiklius, kad aptiktų spalvotą juostelę, rodančią vaisiaus buvimą
1 žingsnis: medžiagos ir reikmenys:
- Vienas nešiojamas kompiuteris
- MATLAB 2017 m
- „Roomba“dulkių siurblys
- Raspberry Pi
- Mediniai blokai
- Baltas popierius
- Juodasis popierius
- Spalvota juosta/plona spalvoto popieriaus juostelė
- Didelis Rokas
2 žingsnis:
3 žingsnis: Surinkite savo „sodą“
- Paimkite juodą popierių ir supjaustykite įvairaus dydžio apskritimus
-
Užklijuokite šiuos juodus apskritimus ant didelio balto popieriaus
Šis kontrastas bus būtinas nustatant vaisius
-
Naudokite savo medžio drožles, kad sukonstruotumėte į labirintą panašų sodo taką, kuriuo galėtų judėti jūsų robotas
Mes pasirinkome U formos kelią, kaip parodyta aukščiau
- Sodo pabaigoje pridėkite akmenį ar duris ar kitą objektą, kad jūsų robotas žinotų, jog tai padaryta
-
Užklijuokite baltą popierių ratu ant sodo sienų
Mes priklijavome kibirus, nes mūsų sienos buvo per trumpos fotoaparatui
- Įdėkite spalvotą juostelę/ploną spalvoto popieriaus juostelę ant žemės prieš vaisių
4 žingsnis: kodo rašymas
Naršymas sode
„Bump Sensors“naudojimas: norėdami paleisti programą, mes įdedame kodavimą į „while“teiginį, kuris kartoja įvairius „if“teiginius, kol kodas nesulaužomas. Jei bet kuris buferis nukentės, jo vertė bus lygi tiesa (kuri „Boolean“reikšme yra 1). Jei teiginys naudojamas kodui sulaužyti, kai viena iš jų reikšmių lygi 1.
„Cliff Sensors“naudojimas: per teiginį „while“mes naudojame „if“teiginį, kad „Roomba“praneštų, kada jis atvyko į gamyklos vietą. „Roomba“aptinka spalvotą juostą ant grindų, ištyrusi raudonos slenkstį, kurią nustato uolos jutikliai. Jei kairysis arba dešinysis uolos jutiklis aptinka spalvą, kurios slenkstis didesnis nei žemės, jis sustabdys robotą 2 sekundėms (naudojant pauzės komandą). Per šias 2 sekundes „Roomba“paims ir parodys vaisiaus vaizdą. Naudodami integruotą komandą „Imfindcircles“, nustatykite savo apskritimų spindulių diapazoną ir „Roomba“ras jūsų vadinamąjį vaisių.
Vaizdo apdorojimo naudojimas: teiginyje if įterpiame kitą if teiginį, kuriame sakoma: jei aptiktas spindulys, spinduliai3, yra didesnis arba lygus mūsų minimaliam prinokusio vaisiaus reikalavimui, r1 (jūs nusprendžiate), tada suskaičiuokite ir rodykite „Roomba“, kiek vaisių yra paruošta, ir pasuka, kad tęstų sodą. Jei ne, posūkis tęsti sodą. Pastaba: gali tekti pakoreguoti pasukimo kampą, nes kiekviena „Roomba“yra skirtinga
Naudojant šviesos buferius: kitame teiginyje šviesos buferiai yra analizuojami, kad įsitikintumėte, jog nė vienas iš jų neviršija nustatytos ribos. Jei kairysis, dešinysis, kairysis centras, dešinysis centras, kairysis priekinis arba dešinysis priekinis bamperis viršija slenkstį, tada „Roomba“šiek tiek pasisuks tinkamu kampu, kad neatsitrenktų į sieną. Vadinasi, naršymas labirinte.
Likusi kodo dalis naudojama „Roomba“pasirinktam keliui nubrėžti, o tada rezultatai siunčiami į jūsų el
5 veiksmas: nukopijuokite kodą
Tikslas: Atsižvelgiant į jų dydį, „Roomba“eis per sodą ir išskiria daržoves/vaisius, kurie yra paruošti pasiimti. % Įėjimai: „Lightbump“jutikliai, „Cliff“jutikliai, smūgio jutikliai, vaizdas iš fotoaparato Kodas nutrūksta, kai „Roomba“atsitrenkia į % objektą, atsiunčia astronautui el. Laišką apie tai, kiek vaisių yra paruošta surinkti, ir „Roomba“judėjimo žemėlapį. Naudojimas: jei ir kai teiginiai, braižymo komandos, el. Pašto kodas iš MATLAB
k = 0
tikas
timerVal = tikas
kol tiesa
v = 0,2; % velocity r.setDriveVelocity (v, v);% roomba eiti į priekį L = r.getLightBumpers; LC = L. kairysis centras; Rr = L.teisingas; Lf = L. kairė; RC = L. dešinysis centras; LF = L. kairė priekinė dalis; RF = L. dešinė priekis; Q = 75; % slenkstis. RTH = 30; %Aukšta raudona slenkstis RTL = 10; %Žemas raudonas slenkstis B = r.getBampers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; jei S.leftFront> PL1 || S.rightFront> PL1 % nustato, ar spalva žemėje viršija slenkstį r.stop pauzė (2) praėjoTime = toc (timerVal-2) tic timerVal = tic % pause 2 sekundes img = r.getImage; %fotografuoti vaizdą (img)%rodyti vaizdą [centrai3, spinduliai3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = kratiniai (centrai3, spinduliai3); %ieškokite spindulių apskritimų su nurodytu diapazonu paveikslėlyje, jei spinduliai3> = r1 T = 1 k = k+1 dist1 = 0,2.*praėjo laikas, tada „Roomba“skaičiuoja šį vaisių, jei spinduliai3 <= r3 T = 0 dar T = 0 dist2 = 0,2.*praėjo laikas
jei T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Jei buvo aptiktas vaisius, rodykite numerį „Roomba“, %kelia triukšmą ir pasukite elseif T == 2 r.turnAngle (78) %Jei aptinkami 2 vaisiai, tada pasukite, kad tęstumėte per %sodą else r.turnAngle (78) %Jei vaisių neaptinkama, pasukite, kad tęstumėte per %sodo pabaigos jei LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) pabaiga %Jei kuri nors šviesos buferio vertė viršija slenkstį, tada %the Roomba šiek tiek pasisuks reikiama kryptimi, kad %nepataikytų į sieną
jei B. dešinė == 1 || B. kairė == 1 || B. front == 1 dist3 = 0.2.*Praleistas laikas r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Jei nukenčia bumbuliai, tada roomba groja garsą, sukasi aplink, %ir sulaužo kodą
pertraukos pabaiga
pabaigos sklaida (0,533, 0, '^') palaikykite sklaidą (0,533, dist1, '<') sulaikykite sklaidą (-dist2, dist1, 'v') palaikykite sklaidą (-dist2, 0, 'd') saveas (gcf, „Movement.png“)
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref („Internetas“, „El. paštas“, paštas); setpref ('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', paštas); props.setProperty ('mail.smtp.host', priegloba); props.setProperty ('mail.smtp.port', prievadas); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', prievadas); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (paštas, „Sveiki, astronautai! Sode yra daug vaisių“, kmsg, {'motion.png'})
Rekomenduojamas:
„Pasidaryk pats“oro pagalbininkas: 6 žingsniai
„Pasidaryk pats“orų padėjėjas: paskutinį kartą naudodamas ESP32 sukūriau orų transliacijos stotį, kuri gali transliuoti esamą orą. Jei jus domina, galite patikrinti ankstesnę instrukciją. Dabar noriu sukurti patobulintą versiją ir paskirti miestą, kuris patikrintų mūsų
„Miller's Hollow“(狼人 殺) grandinės pagalbininkas „Vilkolakiai“: 4 žingsniai
„Millerio tuščiavidurio vilkolakiai“(狼人 殺) grandinės pagalbininkas: Šis projektas skirtas žmonėms, mėgstantiems vaidinti „Millerio tuščiavidurio vilkolakius“, o ši dėžutė naudojama žaisti su 8 žmonėmis, su trimis vilkolakiais, dviem kaimo gyventojais ir trimis specialiais vaidmenimis. (Regėtojas, ragana ir medžiotojas). Ši dėžutė skirta pakeisti
Krevetės pagalbininkas: 6 žingsniai
Krevetės pagalbininkas: krevetės, kinų kalba dar vadinamos 釣 蝦, yra vienas unikaliausių ir populiariausių taivaniečių pomėgių. Daugelis taivaniečių savaitgaliais eina į krevetes. Mėgavimasis kova su krevetėmis ir valgant krevetes, krevetės tikrai yra vienas iš
Atbulinės eigos pagalbininkas garaže naudojant esamą saugos jutiklį ir analoginę grandinę: 5 žingsniai
Atbulinės eigos pagalbininkas garaže naudojant esamą saugos jutiklį ir analoginę grandinę: įtariu, kad daugelis išradimų žmonijos istorijoje buvo padaryti dėl besiskundžiančių žmonų. Skalbimo mašina ir šaldytuvas tikrai atrodo kaip perspektyvūs kandidatai. Mano mažas „išradimas“; aprašyta šioje instrukcijoje yra elektroninė
Kalnų dviračių pagalbininkas pacientams, sergantiems hemiplegija: 4 žingsniai
Kalnų dviračių pagalbininkas pacientams, sergantiems hemiplegija: pacientai, sergantys hemiplegija, yra žmonės, kenčiantys nuo dešiniojo ar kairiojo (dalinio) paralyžiaus, todėl jie turi mažiau jėgų ir sukibimo. Šiems žmonėms važiuoti kalnų dviračiu tikrai sunku, nes jiems sunku įsikibti į vairą