Sisukord:

Roomba parkimine Pal: 6 sammu
Roomba parkimine Pal: 6 sammu

Video: Roomba parkimine Pal: 6 sammu

Video: Roomba parkimine Pal: 6 sammu
Video: i Robot vacum parking to charge the battery 2024, November
Anonim
Roomba parkimine Pal
Roomba parkimine Pal

See projekt kasutab programmeeritavat roomba iRobot Create, MATLAB r2018a ja MATLAB mobile. Kasutades neid kolme meediumit ja oma teadmisi kodeerimisest, programmeerisime iRobot Createi värvide tõlgendamiseks ja ülesannete täitmiseks rongisiseseid andureid. Need projektid sõltuvad nende ülesannete täitmisest Raspberry Pi ja MATLAB suhtlusest.

Samm: materjalid

Materjalid
Materjalid
Materjalid
Materjalid

1. iRobot Loo robot

2. MATLAB r2018a

3. Vaarika Pi

4. Kaamera moodul

5. 3-D trükitud kaamera stabilisaatorialus

6. Nutitelefon, millele on paigaldatud mobiiltelefon MATLAB

7. Sülearvuti/arvuti, kuhu on paigaldatud MATLAB

Samm 2: Ühendamine

See samm hõlmab Raspberry Pi ühendamist robotiga, teiseks roboti ühendamist arvutiga ja nutitelefoni ühendamist arvutiga.

Selle protsessi lihtsaim osa on Raspberry Pi ühendamine teie robotiga, kuna Raspberry Pi on paigaldatud roboti ülaossa. Robotil on juhe, mille peate vaid ühendama Raspberry Pi küljega.

Järgmine samm on roboti ühendamine arvutiga, et saaksite roboti jaoks käske käivitada. Esimene asi, mida peate tegema, on arvuti ühendamine traadita võrguga, mida teie roomba loob. Nüüd on soovitatav tee määramiseks kasutada MATLAB -is ikooni Set Path, et saaksite kasutada MATLAB -i Roomba tööriistakasti funktsioone. Iga kord, kui alustate ja lõpetate roboti kasutamist, peate roboti kõvasti lähtestama "Kahe sõrme tervituseks", mis tähendab, et hoiate doki ja kohapealseid nuppe kümme sekundit all, kuni valgus hakkab vaibuma. Selle kõva lähtestamise korral õnnestus teil kuulda, kuidas robot mängib lühikest skaalat. Järgmisena peate roombaga ühenduse looma, kasutades sellist koodirida nagu "r = roomba (x)", kus "x" on teie robotile määratud number.

Lõpuks peate MATLAB mobiiltelefoni alla laadima mis tahes mobiilseadmest, mida selle projekti jaoks kasutate, ning see rakendus on saadaval nii Androidi kui ka Apple'i seadmetes. Kui rakendus on installitud, peate sisse logima, kasutades oma mandaati. Seejärel peate selle seadme arvutiga ühendama, kasutades vahekaarti "Rohkem" -> seejärel klõpsake "seaded" -> seejärel klõpsake "Lisa arvuti", see peaks avama ülaltoodud piltidel kuvatud ekraani. Pärast seda näete järgmine samm, mille peate läbima, on lihtsalt taotletava teabe ühendamine ja sulgemine. Kui olete edukalt ühenduse loonud, saate oma roboti juhtimiseks helistada funktsioonidele, mille määrate oma arvutis oma telefonis.

3. samm: loogiline MATLAB -koodi loomine andurite kasutamiseks

Loogiline MATLAB -koodi loomine andurite kasutamiseks
Loogiline MATLAB -koodi loomine andurite kasutamiseks

Koodi on kõige lihtsam luua, kui suurem osa sellest on sisse lülitatud ajal, nii et roomba saab pidevalt vaadata kehtivaid väärtusi, mida ta vaatab. Kui ilmneb tõrge, kuvab MATLAB vea ja selle, kus see koodis kuvatakse, muutes tõrkeotsingu suhteliselt lihtsaks.

See kood, mis on loodud r2018a MATLAB -is, kasutab standardseid tööriistakaste, iRobot Create tööriistakasti ja MATLAB mobiilitööriistakasti. Selles näites kasutatud roomba on tähistatud kui 26 ja r = roomba (26) tuleb roombaga täielikuks suhtlemiseks käivitada ainult üks kord.

Kood:

funktsiooni parkassist (x), kui x == 1

r = roomba (26) % ühendub roombaga

kuigi tõsi

r.setDriveVelocity (.05,.05) % seab roomba aeglasemale sõidukiirusele

bump = r.getBumpers % saab andmed põrkeanduritelt

cliff = r.getCliffSensors % saab andmed kaljuanduritelt

light = r.getLightBumpers % saab andmed valgustugevuse anduritelt

img = r.getImage;% loeb kaamera robotilt välja

red_mean = keskmine (keskmine (img (:,:, 1))) % loeb punaste pikslite keskmist kogust

green_mean = keskmine (keskmine (img (:,:, 2))) % loeb roheliste pikslite keskmist kogust

blue_mean = keskmine (keskmine (img (:,:, 3))) % loeb siniste pikslite keskmist kogust

kui bump.front == 1 %loeb eesmise löögi andureid

r.stop %peatab roomba

msgbox ('Tee on varjatud!', 'Parkimisabilise teade') % kuvab teate, et tee on varjatud, katkesta % lõpetab tsükli

elseif green_mean> 150

r.stop %peatab roomba

cont = questdlg ('Kas jätkata?', 'Tee valmis') %kuvab küsimuste kasti, milles palutakse jätkata

kui jätk == 'jah'

parkassist (1) %taaskäivitab koodi

muidu

lõpp

break % lõpetab tsükli

140

r.turnAngle (45) %pöörab ruumi 45 kraadi

r.timeStart %käivitab ajaloenduri

kuigi tõsi

r.setDriveVelocity (.05,.05) %määrab toa kiiruse

time = r.timeGet %määrab aja muutujale

bump = r.getBumpers % saab andmed põrkeanduritelt

cliff = r.getCliffSensors % saab andmed kaljuanduritelt

light = r.getLightBumpers % saab andmed valgustugevuse anduritelt

img = r.getImage;% loeb kaamera robotilt välja

red_mean = keskmine (keskmine (img (:,:, 1))) % loeb punaste pikslite keskmist kogust

green_mean = keskmine (keskmine (img (:,:, 2))) % loeb roheliste pikslite keskmist kogust

blue_mean = keskmine (keskmine (img (:,:, 3))) % loeb siniste pikslite keskmist kogust

kui blue_mean> 120

r.moveDistance (-0,01) % liigutab roomba tagasi teatud kaugusega laulu Esita (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % mängib muusikaskaala tõusu

msgbox ('Vesi leitud!', 'Parkimisabilise teade') % kuvab teate, et vett on leitud r.turnAngle (-80) % pöörab toa 80 kraadi

murda % lõpetab praeguse tsükli

elseif light.rightFront> 25 || light.leftFront> 25 %loeb valguse löögi andureid

r.moveDistance (-0,01) % nihutab roomba määratud vahemaa tahapoole

r.turnAngle (-35) % pöörab ruumi 35 kraadi

murda %lõpetab praeguse tsükli

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %loeb mõlemat kaljuandurit

r.moveDistance (-0,1) % nihutab roomba määratud vahemaa tahapoole

pöördenurk (-80) %pöörab ruumi 80 kraadi

murda % lõpetab praeguse tsükli

muul ajal> = 3

r.stop %peatab roomba

contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message') %küsib, kas roomba peaks jätkama, kui Contin == 'Jah'

r.turnAngle (-90) % pöörab ruumi 90 kraadi

parkassist (1) %taaskäivitab funktsiooni

muidu

r.stop % peatab roomba

lõpp

muidu

lõpp

lõpp

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %loeb mõlemat kaljuandurit

r.moveDistance (-0,1) %nihutab roomba määratud vahemaa tahapoole

pöörlemisnurk (-90) %pöörab ruumi 90 kraadi

elseif cliff.rightFront <2500 %loeb õiget kaljuandurit

r.turnAngle (-5) %pöörab roomba veidi kaljuanduri vastassuunas

elseif cliff.leftFront <2500 %loeb vasakpoolse kaljuanduri

r.turnAngle (5) %pöörab roomba veidi kaljuanduri vastassuunas

muidu

lõpp

lõpp

lõpp

Samm: koodi ja roboti testimine

Koodi ja roboti testimine
Koodi ja roboti testimine
Koodi ja roboti testimine
Koodi ja roboti testimine
Koodi ja roboti testimine
Koodi ja roboti testimine

Pärast koodi väljatöötamist oli järgmine samm koodi ja roboti testimine. Kuna koodis saab teha palju erinevaid kohandusi, näiteks roboti pöördenurka, liikumiskiirust ja iga värvi künniseid, on parim viis nende väärtuste väljaselgitamiseks teie roboti jaoks testida neid ja muutke teekonnal. Iga tööpäeva puhul muutsime neid väärtusi pidevalt, kuna mõned neist sõltuvad keskkonnast, milles teie robot töötab. Parim viis, mille leidsime, oli paigutada roomba teele, mida soovite, et see järgiks ja piisavalt kõrge tõke, nii et kaamera ei suuda tuvastada värve, mida te ei soovi. Järgmine samm on lasta sellel töötada ja näidata soovitud värve, kui soovite selle ülesande täita. Kui näete probleemi, on kõige parem esilöök sisse lükata ja see seiskuda ning seejärel muuta parameetrit, millega teil probleeme oli.

Samm: tõrke tuvastamine

Iga tehtud projektiga kaasneb alati veaallikaid. Meie jaoks tekkis viga lihtsa tõsiasjaga, et robot ei ole täpne pöördenurgaga, nii et kui käsite tal 45 kraadi pöörata, pole see täpne. Teine vigade allikas oli meie jaoks see, et mõnikord võib robot tõrkuda ja teil tuleb see enne taaskäivitamist kõvasti lähtestada. Peamine viimane vigade allikas oli meie jaoks see, et sama kood ei avalda erinevatele robotitele sama mõju, seega peate võib -olla olema kannatlik ja kohandama vastavalt.

6. samm: järeldus

Nüüd on teil kõik tööriistad oma roombaga mängimiseks, mis tähendab, et saate koodiga manipuleerida igal juhul, kui soovite soovitud eesmärke saavutada. See peaks olema teie päeva parim osa, nii et nautige ja sõitke ohutult!

Soovitan: