Përmbajtje:

Ndihmësi i Kopshtit Roomba Bot: 8 hapa
Ndihmësi i Kopshtit Roomba Bot: 8 hapa

Video: Ndihmësi i Kopshtit Roomba Bot: 8 hapa

Video: Ndihmësi i Kopshtit Roomba Bot: 8 hapa
Video: Что с ними случилось? ~ Невероятный заброшенный особняк знатной семьи 2024, Korrik
Anonim
Ndihmësi i Kopshtit Roomba Bot
Ndihmësi i Kopshtit Roomba Bot

Kiara Myers, Ahmad Alghadeer dhe Madison Tippet

Qëllimi:

Ky udhëzues do t'ju mësojë se si të programoni një Roomba Bot, duke përdorur MATLAB, për të lundruar nëpër një kopsht, duke zbuluar fruta/perime në formë rrethore që janë mjaft të pjekura për t'u zgjedhur në bazë të madhësisë së tyre. Ky robot gjithashtu ju dërgon një email, duke ju paralajmëruar se sa fruta janë gati për tu zgjedhur dhe rrugën në të cilën ka udhëtuar.

Karakteristikat:

  • Përdor sensorë të dritës për të zbuluar muret dhe për t'u kthyer pak për të shmangur goditjen e tyre
  • Përdor sensorë të përplasjes për të prishur programin kur godet shkëmbin në fund të kopshtit
  • Përdor përpunimin e imazhit për të zbuluar një rreth në kopsht dhe më pas të përcaktojë rrezen e tij
  • Përdor sensorë të shkëmbinjve për të zbuluar një shirit me ngjyrë që tregon praninë e një fruti

Hapi 1: Materialet dhe Furnizimet:

  • Një laptop
  • MATLAB 2017
  • Pastrues vakum Roomba
  • Raspberry Pi
  • Blloqe druri
  • Letër të bardhë
  • Letër e zezë
  • Shirit me ngjyra/shirit i hollë letre me ngjyrë
  • Shkëmb i madh

Hapi 2:

Hapi 3: Montimi i "Kopshtit" tuaj

Mbledhja juaj
Mbledhja juaj
  1. Merrni letrën tuaj të zezë dhe prerë rrathë të madhësive të ndryshme
  2. Ngjitini këto rrathë të zinj në një letër të madhe të bardhë

    Ky kontrast do të jetë i nevojshëm kur zbuloni një frut

  3. Përdorni blloqet tuaja të drurit për të ndërtuar një shteg kopshti të ngjashëm me labirint për robotin tuaj për të lundruar

    Ne zgjodhëm një shteg në formë U siç është paraqitur më sipër

  4. Në fund të kopshtit tuaj shtoni një shkëmb ose derë ose një objekt tjetër që roboti juaj ta dijë se është bërë
  5. Ngjiteni letrën tuaj të bardhë me rrethin në muret e kopshtit

    Ne përdorëm kova për ta ngjitur sepse muret tona ishin shumë të shkurtra për kamerën

  6. Vendosni shirit me ngjyrë/shirit të hollë letre me ngjyrë në tokë para frutave

Hapi 4: Shkrimi i Kodit

Lundrimi në Kopsht

Përdorimi i sensorëve të përplasjes: Për të ekzekutuar programin, ne vendosim kodimin në një deklaratë while, e cila kalon nëpër deklarata të ndryshme nëse nuk prishet kodi. Nëse goditet ndonjë nga parakolpët, kjo do të rezultojë në vlerën e tyre të barabartë me të vërtetë (që në Boolean është një vlerë prej 1). Një deklaratë if përdoret për të thyer kodin kur njëra prej vlerave të tyre është e barabartë me 1.

Përdorimi i Sensorëve Cliff: Brenda deklaratës while, ne përdorim një deklaratë if për t'i treguar Roomba kur ka mbërritur në vendndodhjen e një fabrike. Roomba zbulon shiritin me ngjyrë në dysheme duke ekzaminuar pragun e së kuqes që kapin sensorët e shkëmbit. Nëse sensori i shkëmbit majtas ose djathtas zbulon një ngjyrë me një prag më të madh se ajo e tokës, atëherë ai do ta ndalojë robotin për 2 sekonda (duke përdorur komandën e pauzës). Gjatë këtyre 2 sekondave, Roomba do të marrë dhe shfaq një imazh të frutave. Duke përdorur rrethinat e ndërtuara në komandë, vendosni një gamë për rrezet e qarqeve tuaja dhe Roomba juaj do të gjejë të ashtuquajturin frutin tuaj.

Përdorimi i përpunimit të imazhit: Brenda deklaratës if, ne vendosim një deklaratë tjetër if që thotë: nëse rrezja e zbuluar, radii3, është më e madhe ose e barabartë me kërkesën tonë minimale për një frut të pjekur, r1 (ju vendosni për këtë), pastaj numëroni dhe shfaqni Roomba sa fruta janë gati dhe kthehen për të vazhduar nëpër kopsht. Nëse jo, radha për të vazhduar nëpër kopsht. Shënim: mund t'ju duhet të rregulloni këndin që ktheni sepse çdo Roomba është e ndryshme

Përdorimi i parakolpave të dritës: Në një deklaratë tjetër if, parakolpët e dritës analizohen për të qenë të sigurt se asnjë prej tyre nuk bëhet më i madh se pragu ynë i përcaktuar. Nëse parakolpi i dritës së majtë, të djathtë, të majtë, të djathtë, të përparme të majtë ose të djathtë para shkon mbi pragun, atëherë Roomba do të kthehet pak në këndin e duhur për të shmangur goditjen e një muri. Prandaj, lundrimi në labirint.

Pjesa tjetër e kodit përdoret për të vizatuar rrugën e marrë nga Roomba dhe më pas dërgoni rezultatet në emailin tuaj

Hapi 5: Kopjoni Kodin

% Qëllimi: Bazuar në madhësinë e tyre, dhoma do të kalojë nëpër një kopsht dhe do të dallojë perimet/frutat që janë gati për tu marrë. % Inputet: Sensorë Lightbump, Sensorë Cliff, Sensorë Bump, imazh nga kamera % Rezultate: Sa herë që sensorët e dritës janë më të mëdhenj se pragu, dhoma e dhomës do të kthehet dhe do të marrë një imazh, bip nëse rrezja e % perimeve/frutave është midis një diapazoni të caktuar. Kodi prishet kur roomba përplaset me një objekt, i dërgon astronautit një email se sa fruta janë gati për t'u marrë % dhe një hartë të lëvizjes së dhomës. % Përdorimi: Nëse dhe ndërsa deklaratat, komandimi i komandave, kodi i postës elektronike nga MATLAB

k = 0

tik

timerVal = tic

ndërsa e vërtetë

v =.2; % shpejtësia r.setDriveVelocity (v, v);% roomba shkoni përpara L = r.getLightBumpers; LC = L.leftCenter; Rr = L.djathtas; Lf = L.majtas; RC = L. RightCenter; LF = L.leftFront; RF = L. Djathtas; Q = 75; % pragu. RTH = 30; %Pragu i lartë i kuq RTL = 10; %Pragu i ulët i kuq B = r.getBumpers S = r.getCliffSensorë; r1 = 24; r3 = 10; PL1 = 1800; nëse S.leftFront> PL1 || S.rightFront> PL1 % zbulon nëse ngjyra në tokë është mbi pragun r.ndaloni pauzën (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % pauzë për 2 sekonda img = r.getImage; %marrë imazhin imshow (img)%imazhin e shfaqjes [cent3, radii3] = imfind rrethon (img, [30 50], 'Objekti i polaritetit', 'i errët', 'Ndjeshmëria', 0.9); h = rrathët (qendrat3, rrezet3); %shikoni për qarqet e rrezeve w/në diapazonin e caktuar në imazh nëse radii3> = r1 T = 1 k = k+1 dist1 = 0.2.*koha e kaluar %Nëse rrezja e zbuluar është më e madhe ose e barabartë me kërkesën minimale %të një fruti të pjekur, atëherë Roomba e numëron këtë frutë radiif3 <= r3 T = 0 tjetër T = 0 dist2 = 0.2.*koha e kaluar %Nëse jo, atëherë nuk e numëron fundin e frutit

nëse T == 1 r.setLEDDigrit (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Nëse zbulohet një frut, atëherë shfaq numrin në Roomba, %bën zhurmë dhe kthehet elseif T == 2 r.turnAngle (78) %Nëse zbulohen 2 fruta, atëherë kthehuni për të vazhduar nëpër %kopsht tjetër r.turnAngle (78) %Nëse nuk zbulohen fruta, atëherë kthehuni për të vazhduar nëpër %fundin e kopshtit nëse LC> Q r.ndal r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.ndalo r.turnAngle (-7) elseif RF> Q r.ndal r. turnAngle (7) elseif Lf> Q r.ndal r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) fund %Nëse ndonjë nga vlerat e parakolpave të dritës shkon mbi pragun, atëherë %Roomba do të kthehet pak në drejtimin e duhur për të shmangur %goditjen në një mur

nëse B. drejtë == 1 || B.majtas == 1 || B.front == 1 dist3 = 0.2.*Koha e kaluar r.ndal r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Nëse ndonjë nga goditen numrat, pastaj roomba luan zë, rrotullohet rreth, %dhe thyen kodin

fund pushimi

shpërndarja fundore (0.533, 0, '^') mbajeni shpërndajeni (0.533, dist1, '<') mbajeni shpërndajeni (-dist2, dist1, 'v') mbani shpërndarjen (-dist2, 0, 'd') saveas (gcf, 'Movement.png')

kmsg = num2str (k) mail = '[email protected]' fjalëkalim = 'Srsora123#' host = 'smtp.gmail.com' port = '465'

setpref ('Internet', 'E_mail', postë); setpref ('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port); 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', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (postë, 'Përshëndetje Astronaut! Ka kaq shumë fruta në kopsht', kmsg, {'Movement.png'})

Recommended: