Turinys:

„Roomba“automobilių stovėjimo aikštelė: 6 žingsniai
„Roomba“automobilių stovėjimo aikštelė: 6 žingsniai

Video: „Roomba“automobilių stovėjimo aikštelė: 6 žingsniai

Video: „Roomba“automobilių stovėjimo aikštelė: 6 žingsniai
Video: Roomba Combo® j9+ Robot Vacuum & Mop 2024, Liepa
Anonim
„Roomba“automobilių stovėjimo aikštelė Pal
„Roomba“automobilių stovėjimo aikštelė Pal

Šiame projekte naudojama „iRobot Create“programuojama „roomba“, „MATLAB r2018a“ir „MATLAB mobile“. Naudodamiesi šiomis trimis laikmenomis ir savo žiniomis apie kodavimą, mes užprogramavome „iRobot Create“interpretuoti spalvas ir naudoti borto jutiklius užduotims atlikti. Šie projektai priklauso nuo Raspberry Pi ir MATLAB ryšio, kad būtų galima atlikti šias užduotis.

1 žingsnis: medžiagos

Medžiagos
Medžiagos
Medžiagos
Medžiagos

1. „iRobot Create Robot“

2. MATLAB r2018a

3. Raspberry Pi

4. Kameros modulis

5. 3D spausdintas fotoaparato stabilizatoriaus stovas

6. Išmanusis telefonas su įdiegtu „MATLAB mobile“

7. Nešiojamasis kompiuteris/kompiuteris su įdiegtu MATLAB

2 žingsnis: prijungimas

Šis žingsnis skirtas prijungti „Raspberry Pi“prie roboto, antra - prijungti robotą prie kompiuterio ir prijungti išmanųjį telefoną prie kompiuterio.

Lengviausia šio proceso dalis yra „Raspberry Pi“prijungimas prie jūsų roboto, nes „Raspberry Pi“yra sumontuotas roboto viršuje. Iš roboto yra laidas, kurį tereikia prijungti prie „Raspberry Pi“šono.

Kitas žingsnis yra prijungti robotą prie kompiuterio, kad galėtumėte paleisti komandas, kad robotas galėtų atlikti. Pirmas dalykas, kurį turite padaryti, yra prijungti kompiuterį prie belaidžio tinklo, kurį kuria jūsų „roomba“. Dabar rekomenduojama naudoti MATLAB piktogramą Nustatyti kelią, kad nustatytumėte kelią, kad galėtumėte naudotis MATLAB „Roomba“įrankių rinkinio funkcijomis. Kiekvieną kartą, kai pradedate ir baigiate naudoti robotą, turite iš naujo nustatyti „dviejų pirštų pasveikinimą“, o tai reiškia, kad dešimt sekundžių laikysite nuspaudę doko ir taškinius mygtukus, kol šviesa pritems. Sėkmingai atlikote šį sunkų atstatymą, jei girdite, kaip robotas žaidžia trumpą skalę. Tada turite prisijungti prie „roomba“naudodami kodo eilutę, tokią kaip „r = roomba (x)“, kur „x“yra jūsų turimam robotui skirtas numeris.

Galiausiai turite atsisiųsti „MATLAB mobile“į bet kurį mobilųjį įrenginį, kurį naudosite šiam projektui, ir ši programa yra prieinama tiek „Android“, tiek „Apple“įrenginiuose. Kai programa bus įdiegta, turėsite prisijungti naudodami savo kredencialus. Tada turite prijungti šį įrenginį prie kompiuterio naudodami skirtuką „Daugiau“-> tada spustelėkite „Nustatymai“-> tada spustelėkite „Pridėti kompiuterį“, tai turėtų parodyti aukščiau esančiose nuotraukose rodomą ekraną. Kitas žingsnis, kurį turite atlikti, yra tiesiog prijungti ir nuskaityti informaciją, kurios ji prašo. Sėkmingai prisijungę galėsite skambinti funkcijomis, kurias nustatėte savo kompiuteryje telefone, kad galėtumėte valdyti savo robotą.

3 žingsnis: logiškai sukurkite MATLAB kodą jutikliams naudoti

Logiškai sukurkite MATLAB kodą jutikliams naudoti
Logiškai sukurkite MATLAB kodą jutikliams naudoti

Lengviausia sukurti kodą, kai didžioji jo dalis yra įjungimo ciklo metu, kad „roomba“galėtų nuolat atnaujinti galiojančias vertes. Jei yra klaida, MATLAB parodys klaidą ir ten, kur ji rodoma kode, todėl trikčių šalinimas bus gana paprastas.

Sukurtas r2018a MATLAB, šis kodas naudoja standartines įrankių dėžes, „iRobot Create“įrankių rinkinį ir „MATLAB“įrankių rinkinį mobiliesiems. Šiame pavyzdyje naudojama „roomba“yra pažymėta kaip 26, o r = roomba (26) reikia paleisti tik vieną kartą, kad būtų galima visiškai susisiekti su „roomba“.

Kodas:

funkcija parkasist (x), jei x == 1

r = roomba (26) % jungiasi prie roomba

kol tiesa

r.setDriveVelocity (.05,.05) % nustato „Roomba“lėtesnį važiavimo greitį

bump = r.getBumpers % gauna duomenis iš smūgio jutiklių

cliff = r.getCliffSensors % gauna duomenis iš uolos jutiklių

light = r.getLightBumpers % gauna duomenis iš šviesos smūgio jutiklių

img = r.getImage;% nuskaito fotoaparatą nuo roboto

red_mean = vidurkis (vidurkis (img (:,:, 1))) % nuskaito vidutinį raudonų pikselių kiekį

green_mean = vidurkis (vidurkis (img (:,:, 2))) % nuskaito vidutinį žaliųjų pikselių kiekį

blue_mean = vidurkis (vidurkis (img (:,:, 3))) % nuskaito vidutinį mėlynų pikselių kiekį

jei bump.front == 1 %skaito priekinius smūgio jutiklius

r.stop %sustabdo roomba

„msgbox“(„Kelias užtemdytas!“, „Automobilio stovėjimo padėjėjo pranešimas“) % rodo pranešimą, kuriame nurodoma, kad kelias yra užtemdytas, pertrauka % baigia ciklą

elseif green_mean> 150

r.stop %sustabdo roomba

cont = questdlg ('Tęsti?', 'Kelias baigtas') %rodo klausimo langelį, kuriame prašoma tęsti

jei tęsinys == 'Taip'

parkassist (1) %iš naujo paleidžia kodą

Kitas

galas

break % baigia ciklą

140

r.turnAngle (45) %pasuka kambarį 45 laipsnių kampu

r.timeStart %paleidžia laiko skaitiklį

kol tiesa

r.setDriveVelocity (.05,.05) %nustato roomba greitį

time = r.timeGet %priskiria laiką kintamajam

bump = r.getBumpers % gauna duomenis iš smūgio jutiklių

cliff = r.getCliffSensors % gauna duomenis iš uolos jutiklių

light = r.getLightBumpers % gauna duomenis iš šviesos smūgio jutiklių

img = r.getImage;% nuskaito fotoaparatą nuo roboto

red_mean = vidurkis (vidurkis (img (:,:, 1))) % nuskaito vidutinį raudonų pikselių kiekį

žalia_prasmė = vidurkis (vidurkis (img (:,:, 2))) % nuskaito vidutinį žaliųjų pikselių kiekį

blue_mean = vidurkis (vidurkis (img (:,:, 3))) % nuskaito vidutinį mėlynų pikselių kiekį

jei blue_mean> 120

r.moveDistance (-0,01) % perkelia „roomba“atgal nustatyto atstumo dainą „Play“(r, „T400, C, D, E, F, G, A, B, C^“, „true“) % groja kylanti muzikinė skalė

msgbox ('Vanduo rastas!', 'Automobilio stovėjimo padėjėjo pranešimas') % rodo pranešimą, kad vanduo rastas r.turnAngle (-80) % pasuka kambarį 80 laipsnių kampu

pertrauka % baigia dabartinę kilpą

elseif light.rightFront> 25 || light.leftFront> 25 %nuskaito šviesos smūgio jutiklius

r.moveDistance (-0,01) % perkelia „roomba“atgal nustatytu atstumu

r.turnAngle (-35) % pasuka kambarį 35 laipsniais

pertrauka %baigia dabartinę kilpą

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %nuskaito abu uolos jutiklius

r.moveDistance (-0,1) % perkelia roomba atgal nustatytu atstumu

r.turnAngle (-80) %pasuka kambarį 80 laipsnių kampu

pertrauka % baigia dabartinę kilpą

kitas laikas> = 3

r.stop %sustabdo roomba

contin = questdlg ('Stotis nemokama, ar tęsti?', 'Automobilio stovėjimo padėjėjo pranešimas') %klausia, ar roomba turėtų tęsti, jei contin == 'Taip'

r.turnAngle (-90) % pasuka kambarį 90 laipsnių kampu

parkassist (1) %iš naujo paleidžia funkciją

Kitas

r.stop % sustabdo roomba

galas

Kitas

galas

galas

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %nuskaito abu uolos jutiklius

r.moveDistance (-0,1) %perkelia roomba atgal nustatytu atstumu

r.turnAngle (-90) %pasuka kambarį 90 laipsnių kampu

elseif cliff.rightFront <2500 %nuskaito tinkamą uolos jutiklį

r.turnAngle (-5) %šiek tiek pasuka roomba priešinga uolos jutiklio kryptimi

elseif cliff.leftFront <2500 %nuskaito kairiojo uolos jutiklį

r.turnAngle (5) %šiek tiek pasuka roomba priešinga uolos jutiklio kryptimi

Kitas

galas

galas

galas

4 žingsnis: išbandykite kodą ir robotą

Kodo ir roboto testavimas
Kodo ir roboto testavimas
Kodo ir roboto testavimas
Kodo ir roboto testavimas
Kodo ir roboto testavimas
Kodo ir roboto testavimas

Sukūrus kodą, kitas žingsnis buvo išbandyti kodą ir robotą. Kadangi kode galima atlikti daug įvairių koregavimų, pvz., Kampas, kuriuo robotas pasisuka, jo judėjimo greitis ir kiekvienos spalvos slenksčiai, geriausias būdas nustatyti šias roboto vertes yra išbandyti juos ir keičiasi eidami. Kiekvieną darbo dieną mes nuolat keisdavome šias vertybes, nes kai kurios iš jų priklauso nuo aplinkos, kurioje veikia jūsų robotas. Geriausias būdas, kurį radome, buvo patalpinti „roomba“į kelią, kuriuo norite eiti, ir pakankamai aukštą barjerą, kad fotoaparatas negalėtų aptikti spalvų, kurių nenorite. Kitas žingsnis yra leisti jam veikti ir parodyti norimas spalvas, kai norite, kad jis atliktų šią užduotį. Jei matote problemą, geriausia tai padaryti - stumti priekinį buferį, kad jis sustotų, tada pakeisti parametrą, dėl kurio kilo problemų.

5 žingsnis: Klaidos atpažinimas

Užbaigus kiekvieną projektą, visada yra klaidų šaltinių. Mes patyrėme klaidą vien dėl to, kad robotas nėra tikslus kampo, kuriuo jis sukasi, taigi, jei liepsite pasukti 45 laipsnius, jis nebus tikslus. Kitas klaidų šaltinis mums buvo tas, kad kartais robotas sugenda, ir jūs turite jį iš naujo nustatyti, kol jis vėl pradės veikti. Pagrindinis paskutinis mūsų klaidų šaltinis buvo tas, kad tas pats kodas neturės vienodo poveikio skirtingiems robotams, todėl gali tekti būti kantriems ir atitinkamai koreguoti.

6 žingsnis: Išvada

Dabar jūs turite visus įrankius, kad galėtumėte žaisti su savo „roomba“, o tai reiškia, kad galite bet kokiu būdu manipuliuoti kodu, norėdami pasiekti norimų tikslų. Tai turėtų būti geriausia jūsų dienos dalis, todėl linksminkitės ir vairuokite saugiai!

Rekomenduojamas: