Բովանդակություն:
- Քայլ 1: Նյութեր և պարագաներ
- Քայլ 2:
- Քայլ 3: Հավաքեք ձեր «Այգին»
- Քայլ 4: Գրեք օրենսգիրքը
- Քայլ 5: Պատճենեք ծածկագիրը
Video: Garden Helper Roomba Bot: 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Կիարա Մայերս, Ահմադ Ալղադիր և Մեդիսոն Թիպեթ
Նպատակը:
Այս ուսուցանելիքը կսովորեցնի ձեզ, թե ինչպես ծրագրավորել Roomba Bot- ը ՝ MATLAB- ի միջոցով, նավարկելու այգում ՝ հայտնաբերելով շրջանաձև ձևի պտուղներ/բանջարեղեններ, որոնք հասուն են ՝ չափելու համար: Այս ռոբոտը ձեզ էլ.
Հատկություններ:
- Օգտագործում է լուսային տվիչներ ՝ պատերը հայտնաբերելու և փոքր -ինչ պտտվելու համար, որպեսզի խուսափի դրանց հարվածներից
- Օգտագործում է հարվածի տվիչներ `ծրագիրը կոտրելու համար, երբ այն հարվածում է այգու վերջում գտնվող ժայռին
- Օգտագործում է պատկերի մշակումը ՝ այգում շրջան հայտնաբերելու և այնուհետև դրա շառավիղը որոշելու համար
- Օգտագործում է ժայռերի տվիչներ ՝ գունավոր ժապավենը հայտնաբերելու համար, որը ցույց է տալիս պտղի առկայությունը
Քայլ 1: Նյութեր և պարագաներ
- Մեկ նոթբուք
- MATLAB 2017
- Roomba փոշեկուլ
- Ազնվամորի Պի
- Փայտե բլոկներ
- Սպիտակ թուղթ
- Սեւ թուղթ
- Գունավոր ժապավեն/գունավոր թղթի բարակ շերտ
- Մեծ ռոք
Քայլ 2:
Քայլ 3: Հավաքեք ձեր «Այգին»
- Վերցրեք ձեր սև թուղթը և կտրեք տարբեր չափերի շրջանակներ
-
Այս սեւ շրջանակները կպցրեք մեծ սպիտակ թղթի վրա
Այս հակադրությունը անհրաժեշտ կլինի պտուղ հայտնաբերելիս
-
Օգտագործեք ձեր արգելափակոցները ՝ լաբիրինթոսին նմանվող այգու ճանապարհ կառուցելու համար, որպեսզի ձեր ռոբոտը նավարկի
Մենք ընտրեցինք U- ձև ունեցող ուղի, ինչպես պատկերված է վերևում
- Ձեր այգու վերջում ավելացրեք ժայռ կամ դուռ կամ այլ առարկա, որպեսզի ձեր ռոբոտը իմանա, որ դա արված է
-
Ձեր սպիտակ թուղթը շրջանակով կպցրեք այգու պատերին
Մենք դույլերով ամրացրեցինք այն, քանի որ մեր պատերը չափազանց կարճ էին տեսախցիկի համար
- Պտղի դիմաց գետնին դրեք գունավոր ժապավեն/գունավոր թղթի բարակ շերտ
Քայլ 4: Գրեք օրենսգիրքը
Նավիգացիա պարտեզում
Օգտագործելով Bump Sensors: runրագիրը գործարկելու համար մենք տեղադրում ենք կոդավորումը որոշ հայտարարության մեջ, որը շրջանցում է տարբեր if հայտարարությունները մինչև կոդի կոտրվելը: Եթե բամպերներից որևէ մեկը հարվածի, դա կհանգեցնի դրանց արժեքի հավասարմանը ճշմարիտին (որը Բուլյանում 1 արժեք է): Եթե հայտարարությունը օգտագործվում է կոդի խախտման համար, երբ դրանց արժեքներից մեկը հավասար է 1 -ի:
Cliff սենսորների օգտագործումը. While հայտարարության ընթացքում մենք if- ի հայտարարությունն ենք օգտագործում Roomba- ին տեղեկացնելու համար, երբ այն հասել է գործարանի գտնվելու վայր: Roomba- ն հայտնաբերում է հատակին տեղադրված գունավոր ժապավենը `ուսումնասիրելով կարմիր շեմը, որը ժայռերի տվիչները հավաքում են: Եթե ձախ կամ աջ ժայռի սենսորը հայտնաբերում է գետնից ավելի մեծ շեմ ունեցող գույն, ապա այն ռոբոտին կանգնեցնելու է 2 վայրկյանով (դադար օգտագործելու միջոցով): Այս 2 վայրկյանների ընթացքում Roomba- ն կվերցնի և կցուցադրի պտղի պատկերը: Օգտագործելով հրամանատարության մեջ կառուցված շրջանակները, սահմանեք շրջանակ ձեր շառավիղների համար, և ձեր Roomba- ն կգտնի ձեր այսպես կոչված պտուղը:
Օգտագործելով պատկերի մշակումը. If հայտարարության մեջ մենք տեղադրում ենք մեկ այլ if հայտարարություն, որն ասում է. Roomba- ն քանի պտուղ է պատրաստ և շրջվում է շարունակելու այգու միջով: Եթե ոչ, հերթը շարունակել այգու միջով: Նշում. Գուցե անհրաժեշտ լինի կարգավորել շրջվող անկյունը, քանի որ յուրաքանչյուր Roomba- ն տարբեր է
Լույսի բամպերների օգտագործումը. Մեկ այլ if հայտարարության մեջ լուսային բամպերները վերլուծվում են `համոզվելու համար, որ դրանցից ոչ մեկը չի գերազանցում մեր սահմանված շեմը: Եթե կամ ձախ, աջ, ձախ կենտրոն, աջ կենտրոն, ձախ առջև կամ աջ առջևի լապտերները գերազանցում են շեմը, ապա Roomba- ն մի փոքր կթեքվի համապատասխան անկյան տակ `պատին հարվածելուց խուսափելու համար: Հետևաբար, նավարկելով լաբիրինթոսում:
Մնացած ծածկագիրը օգտագործվում է Roomba- ի անցած ճանապարհը գծելու և արդյունքները ձեր էլ
Քայլ 5: Պատճենեք ծածկագիրը
Նպատակը. Հիման վրա իրենց չափերի, սենյակը կանցնի այգիով և կտարբերակի բանջարեղենը/պտուղները, որոնք պատրաստ են վերցնելու: % Մուտքեր. Lightbump սենսորներ, Cliff սենսորներ, Bump սենսորներ, պատկեր խցիկից % Ելքեր. Երբ լույսի տվիչները շեմից մեծ են, roomba- ն կշրջվի և կվերցնի պատկեր, կտա ազդանշաններ, եթե % բանջարեղենի/մրգերի շառավիղը գտնվում է որոշակի միջակայքի միջև: Կոդն ընդհատվում է, երբ roomba- ն բախվում է օբյեկտի % -ին, տիեզերագնացին նամակ է ուղարկում այն մասին, թե քանի պտուղ պատրաստ է հավաքել և սենյակի շարժման քարտեզագրումը: % Օգտագործում. Եթե և հայտարարություններ, հրամաններ կազմելը, էլփոստի կոդը MATLAB- ից
k = 0
տիկ
timerVal = տիկ
մինչդեռ ճշմարիտ է
v =.2; % արագություն r.setDriveVelocity (v, v);% roomba գնալ առաջ L = r.getLightBumpers; LC = L.leftCenter; Rr = L. աջ; Lf = L. ձախ; RC = L.rightCenter; LF = L.leftFront; ՌԴ = L. աջ ճակատ; Q = 75; % շեմ. RTH = 30; %Բարձր կարմիր շեմ RTL = 10; %Lowածր կարմիր շեմ B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; եթե S.leftFront> PL1 || S.rightFront> PL1 % -ը որոշում է, թե արդյոք գետնի գույնը շեմից բարձր է r. Դադարեցնել դադար (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % դադար 2 վայրկյան img = r.getImage; %take image imshow (img)%ցուցադրել պատկեր [center3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = շրջապտույտներ (կենտրոններ 3, ճառագայթներ 3); %փնտրեք ճառագայթների շրջանակներ w/պատկերի որոշակի տիրույթում, եթե radii3> = r1 T = 1 k = k+1 dist1 = 0.2.*elapsedTime %Եթե հայտնաբերված շառավիղը հասած պտղի նվազագույն %պահանջից մեծ կամ հավասար է, ապա Roomba- ն հաշվում է այս պտուղը elseif radii3 <= r3 T = 0 else T = 0 dist2 = 0.2.*elapsedTime %Եթե ոչ, ապա այն չի հաշվում պտղի վերջը
եթե T == 1 ռ. elseif T == 2 r.turnAngle (78) %Եթե հայտնաբերվում է 2 պտուղ, ապա շրջվում է շարունակելու համար %այլ այգու միջոցով r.turnAngle (78) %Եթե պտուղ չի հայտնաբերվում, ապա շրջվում է շարունակելու %պարտեզի վերջի վերջում եթե 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) end %Եթե լուսային բամպերի արժեքներից որևէ մեկը անցնում է շեմից, ապա %Roomba փոքր -ինչ կշրջվի համապատասխան ուղղությամբ ` %պատին հարվածելուց խուսափելու համար
եթե B.right == 1 || Բ. Ձախ == 1 || B.front == 1 dist3 = 0.2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Եթե որևէ մեկը բամբակները հարվածում են, այնուհետև roomba- ն հնչում է ձայնով, պտտվում շուրջը, %և կոտրում ծածկագիրը
ընդմիջման ավարտ
վերջ ցրվել (0.533, 0, '^') պահել ցրման վրա (0.533, dist1, '<') պահել ցրման վրա (-dist2, dist1, 'v') պահել ցրման վրա (-dist2, 0, 'd') saveas (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' գաղտնաբառ = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref («Ինտերնետ», «E_mail», փոստ); setpref («Ինտերնետ», «SMTP_Server», հյուրընկալող) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', փոստ); props.setProperty ('mail.smtp.host', հաղորդավար); props.setProperty ('mail.smtp.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', նավահանգիստ); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (փոստ ՝ «Բարև տիեզերագնաց! Այգում այսքան պտուղ կա», kmsg, {'Movement.png'})
Խորհուրդ ենք տալիս:
KS-Garden: ակնարկ. 9 քայլ
KS-Garden: Ակնարկ. KS-Garden- ը կարող է օգտագործվել ոռոգման/օդափոխման համար: համակարգի տուփ - ռելեներ և սնուցման տուփ
Breadboard Wire Helper: 10 քայլ (նկարներով)
Breadboard Wire Helper. Այս հրահանգները ցույց են տալիս, թե ինչպես կարելի է կառուցել գործիք, որը կօգնի հացահատիկի նախատիպերի պատրաստումն ավելի դյուրին և կոկիկ: Ես այն անվանում եմ Breadboard Wire Helper
Ultimate Electronics Helper -- Փոփոխական նստարանի վերևի PSU օգնող ձեռքերով. 12 քայլ (նկարներով)
Ultimate Electronics Helper || Variable Bench Top PSU With Helping Hands: Էլեկտրոնիկայի հետ աշխատելիս երկու գործիքներ գրեթե միշտ անհրաժեշտ են: Այսօր մենք կստեղծենք այս երկու հիմնականը: Եվ մենք դա նույնպես մեկ քայլ առաջ կանենք և այս երկուսը միասին կմիավորենք էլեկտրոնիկայի վերջնական օգնականի մեջ: Ես, իհարկե, խոսում եմ դրա մասին
Roomba Bot the Bulider: 5 քայլ (նկարներով)
Roomba Bot the Bulider. ճակատին ամրացված կկարողանա առարկաները տեղաշարժել: Նրա հետ ծածկագիրը սահմանված է գրանցելու առաջին շարժումը GUI տուփով, որը կարող եք կառավարել միայն մկնիկի կտտոցով: Հետո
Mountainbike Helper- ը հեմիպլեգիայի հիվանդների համար. 4 քայլ
Mountainbike Helper- ը հեմիպլեգիայի հիվանդների դեպքում. Այս մարդկանց համար իսկապես դժվար է հեծանիվ վարելը, քանի որ նրանք դժվարությամբ են բռնում ղեկից