INHOUDSOPGAWE:

Roomba Parking Pal: 6 stappe
Roomba Parking Pal: 6 stappe

Video: Roomba Parking Pal: 6 stappe

Video: Roomba Parking Pal: 6 stappe
Video: Автомобильный кемпинг под дождем на горе - палатка на крыше - собака 2024, November
Anonim
Roomba Parking Pal
Roomba Parking Pal

Hierdie projek gebruik 'n iRobot Create programmeerbare roomba, MATLAB r2018a en MATLAB mobile. Deur hierdie drie mediums en ons kennis van kodering te gebruik, het ons die iRobot Create geprogrammeer om kleure te interpreteer en ingeboude sensors te gebruik om take te voltooi. Hierdie projekte hang af van die Raspberry Pi- en MATLAB -kommunikasie om hierdie take uit te voer.

Stap 1: materiaal

Materiaal
Materiaal
Materiaal
Materiaal

1. iRobot Skep robot

2. MATLAB r2018a

3. Framboos Pi

4. Kameramodule

5. 3D-gedrukte kamerastabilisatorstaander

6. Slimfoon met MATLAB -selfoon geïnstalleer

7. Skootrekenaar/rekenaar met MATLAB geïnstalleer

Stap 2: verbinding

Hierdie stap handel oor die koppeling van die Raspberry Pi aan die robot, tweedens die koppeling van die robot aan u rekenaar en die koppeling van die slimfoon aan die rekenaar.

Die maklikste deel van hierdie proses is om die Raspberry Pi aan u robot te koppel, aangesien die Raspberry Pi aan die bokant van die robot gemonteer is. Daar is 'n kabel van die robot wat u hoef net aan die kant van die Raspberry Pi te koppel.

Die volgende stap is om die robot aan te sluit op u rekenaar, sodat u opdragte vir die robot kan uitvoer. Die eerste ding wat u moet doen, is om u rekenaar aan te sluit op die draadlose netwerk wat u roomba skep. Dit word aanbeveel dat u die Set Path -ikoon in MATLAB gebruik om die pad in te stel sodat u die funksies in die Roomba -gereedskapskas van MATLAB kan gebruik. Elke keer as u met die robot begin en eindig, moet u die robot hard terugstel, wat beteken dat u die dok- en knoppies tien sekondes ingedruk het totdat die lig verdof om aan te dui dat dit moet loskom. U was suksesvol met hierdie harde reset as u die robot op 'n kort skaal hoor speel. Vervolgens moet u aan die roomba koppel deur 'n kodelyn soos hierdie "r = roomba (x)" te gebruik, waar 'x' die nommer is wat aan die robot is.

Laastens moet u MATLAB -selfoon aflaai op watter mobiele toestel u ook al vir hierdie projek gaan gebruik, en hierdie toepassing is beskikbaar op beide Android- en Apple -toestelle. Sodra die toepassing geïnstalleer is, moet u met u geloofsbriewe aanmeld. Dan moet u hierdie toestel aan u rekenaar koppel, met behulp van die oortjie "Meer" -> klik dan op "instellings" -> klik dan op "Voeg 'n rekenaar by". Die volgende stap wat u moet deurgaan, is om die inligting wat u versoek, aan te sluit en te verwyder. Sodra u suksesvol gekoppel is, kan u funksies wat u op u rekenaar op u selfoon definieer, bel om u robot te beheer.

Stap 3: Skep logies 'n MATLAB -kode om sensors te gebruik

Skep logies 'n MATLAB -kode om sensors te gebruik
Skep logies 'n MATLAB -kode om sensors te gebruik

Die kode is die maklikste om te skep as 'n meerderheid daarvan binne die lus is, sodat die roomba voortdurend die geldige waardes waarna dit kyk, kan opdateer. As daar 'n fout is, sal MATLAB 'n fout vertoon en waar dit in die kode verskyn, wat probleemoplossing relatief eenvoudig maak.

Hierdie kode is ontwerp in r2018a MATLAB en maak gebruik van die standaard gereedskapskaste, die iRobot Create -gereedskapskas, sowel as die MATLAB -mobiele gereedskapskas. Die roomba wat in hierdie voorbeeld gebruik word, word aangedui as 26, en die r = roomba (26) hoef slegs een keer uitgevoer te word om ten volle met die roomba te kommunikeer.

Kode:

funksie parkassis (x) as x == 1

r = roomba (26) % verbind met roomba

terwyl dit waar is

r.setDriveVelocity (.05,.05) % stel roomba op 'n stadiger rijsnelheid

bump = r.getBumpers % kry die data van die stampsensors

cliff = r.getCliffSensors % kry die data van die kransensors

light = r.getLightBumpers % kry die data van die ligstampsensors

img = r.getImage;% lees die kamera van die robot af

red_mean = gemiddelde (gemiddelde (img (:,:, 1))) % lees die gemiddelde hoeveelheid rooi pixels

green_mean = gemiddelde (gemiddelde (img (:,:, 2))) % lees die gemiddelde hoeveelheid groen pixels

blue_mean = gemiddelde (gemiddelde (img (:,:, 3)))) % lees die gemiddelde hoeveelheid blou pixels

as bump.front == 1 %lees voorste stampsensors

r.stop %stop roomba

msgbox ('Path Obscured!', 'Parking Assistant Message') % vertoon boodskap wat sê die pad is verduister breek % eindig die lus

andersif green_mean> 150

r.stop %stop roomba

cont = questdlg ('Gaan voort?', 'Pad voltooi') %vertoon die vraestel waarin gevra word om voort te gaan

as vervolg == 'Ja'

parkassist (1) %herbegin die kode

anders

einde

breek % eindig die lus

andersif red_mean> 140

r.turnAngle (45) %draai die roomba 45 grade

r.timeStart %begin 'n tydteller

terwyl dit waar is

r.setDriveVelocity (.05,.05) %stel die spoed van die roomba in

time = r.timeGet %ken die tyd toe aan 'n veranderlike

bump = r.getBumpers % kry die data van die stampsensors

cliff = r.getCliffSensors % kry die data van die kransensors

light = r.getLightBumpers % kry die data van die ligstampsensors

img = r.getImage;% lees die kamera van die robot af

red_mean = gemiddelde (gemiddelde (img (:,:, 1))) % lees die gemiddelde hoeveelheid rooi pixels

green_mean = gemiddelde (gemiddelde (img (:,:, 2))) % lees die gemiddelde hoeveelheid groen pixels

blue_mean = gemiddelde (gemiddelde (img (:,:, 3)))) % lees die gemiddelde hoeveelheid blou pixels

as blou_middel> 120

r.moveDistance (-0.01) % skuif die roomba agteruit 'n vaste afstand song Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % speel 'n stygende musikale skaal

msgbox ('Water gevind!', 'Parking Assistant Message') % wys 'n boodskap waarin gesê word dat water gevind is r.turnAngle (-80) % draai roomba 80 grade

breek % eindig huidige lus

elseif light.rightFront> 25 || light.leftFront> 25 %lees ligstampsensors

r.moveDistance (-0.01) % skuif die roomba agteruit 'n vasgestelde afstand

r.turnAngle (-35) % draai die roomba 35 grade

breek %eindig huidige lus

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %lees beide kransensors

r.moveDistance (-0.1) % skuif roomba agteruit 'n vasgestelde afstand

r.turnAngle (-80) %draai roomba 80 grade

breek % eindig huidige lus

anders tyd> = 3

r.stop %stop roomba

contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message') %vra of die roomba moet voortgaan as contin == 'Ja'

r.turnAngle (-90) % draai die roomba 90 grade

parkassist (1) %herbegin die funksie

anders

r.stop % stop die roomba

einde

anders

einde

einde

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %lees beide kransensors

r.moveDistance (-0.1) %skuif roomba agteruit 'n vasgestelde afstand

r.turnAngle (-90) %draai roomba 90 grade

elseif cliff.rightFront <2500 %lees die regte kransensor

r.turnAngle (-5) %draai die roomba effens in die teenoorgestelde rigting van die kransensor

elseif cliff.leftFront <2500 %lees die linker kransensor

r.turnAngle (5) %draai die roomba effens in die teenoorgestelde rigting van die kransensor

anders

einde

einde

einde

Stap 4: Toets die kode en robot

Toets die kode en robot
Toets die kode en robot
Toets die kode en robot
Toets die kode en robot
Toets die kode en robot
Toets die kode en robot

Nadat die kode ontwikkel is, was die volgende stap om die kode en die robot te toets. Aangesien daar baie verskillende aanpassings in die kode gemaak kan word, soos die hoek wat die robot draai, die snelheid wat dit beweeg en die drempels vir elke kleur, is die beste manier om hierdie waardes vir u robot uit te vind, deur te toets hulle en verander soos jy gaan. Vir elke werksdag wat ons gehad het, het ons hierdie waardes voortdurend verander, aangesien sommige van hulle afhanklik is van die omgewing waarin u robot werk. Die beste manier wat ons gevind het, was om die roomba op die pad te plaas wat u wil volg en 'n versperring wat hoog genoeg is sodat die kamera nie kleure kan opspoor wat u nie wil hê nie. Die volgende stap is om dit te laat loop en wys dit die kleure wat u wil hê, as u die taak wil voltooi. As u 'n probleem sien, is dit die beste om die voorste buffer in te druk en dit te laat stop, en dan die parameter waarmee u probleme ondervind het, te verander.

Stap 5: Herken fout

Met elke projek wat voltooi is, is daar altyd foutbronne. Vir ons het ons 'n fout ondervind met die eenvoudige feit dat die robot nie presies is met die hoek waarteen hy draai nie, dus as u hom sê om 45 grade te draai, sal dit nie presies wees nie. 'N Ander bron van foute vir ons was dat die robot soms nie werk nie, en u het dit moeilik herstel voordat dit weer werk. Die belangrikste foutbron vir ons was dat dieselfde kode nie dieselfde effek op verskillende robotte sal hê nie, daarom moet u moontlik geduldig wees en daarvolgens aanpas.

Stap 6: Gevolgtrekking

Nou het u al die gereedskap om met u roomba te speel, wat beteken dat u die kode kan manipuleer in elk geval waarin u die gewenste doelwitte wil bereik. Dit behoort die beste deel van u dag te wees, so geniet dit en ry veilig!

Aanbeveel: