Բովանդակություն:
- Քայլ 1: Անհրաժեշտ մասեր
- Քայլ 2: Ֆայլեր և տեսախցիկի կազմաձևում
- Քայլ 3. Roomba- ի նախնական փորձարկում
- Քայլ 4: Օրինակ MATLAB կոդ
Video: Տիեզերագնացներին օժանդակող Roomba: 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս նախագիծը պատրաստված է iRobot- ի 2 -րդ տարբերակի Raspberry Pi 3 -ի օգտագործմամբ: MATLAB- ն օգտագործվում է ռոբոտին ծրագրելու համար `հատուկ ցուցումներին հետևելու համար` օգտագործելով իր տվիչներն ու տեսախցիկը: Սենսորներն ու տեսախցիկներն օգտագործվում են տիեզերագնացին հաջորդող հատուկ առաջադրանքներ կատարելու և նրան ինչ -որ բան սխալ լինելու դեպքում կապ հաստատելու համար:
Քայլ 1: Անհրաժեշտ մասեր
1. iRobot Ստեղծել տարբերակ 2
IRobot Create- ը այս ծրագրի ամենաէական մասն է, քանի որ այն ծրագրավորելի է և կարող է հիանալի ներկայացում լինել իրական տիեզերագնացների համար, որոնք հետևում են տիեզերագնացներին և հետագայում օգնում նրանց:
2. Ազնվամորի Պի 3
Այս նախագծի համար օգտագործվող ծրագրավորվող Raspberry Pi- ն էր: Կոդը նախատեսված է Pi- ի համար, իսկ Pi- ի կցված տարբերակը 3 -ն է (մոդել B): Այլ ծրագրավորվող տախտակներ, ինչպիսիք են arduino- ն, կարող են օգտագործվել, սակայն arduino- ն և այլ տախտակների մեծ մասը կպահանջեն այլ կոդավորում, քան նկարագրված է մեկ այլ քայլում:
3. Raspberry Pi Camera Module
Այս նախագծի համար անհրաժեշտ Raspberry Pi- ի միակ կողմնակի կապը Camera Module- ն է: Տեսախցիկի մոդուլը այս նախագծի անբաժանելի մասն է, քանի որ roomba- ն միայն առաջադրանքներ կկատարի `հիմնվելով տեսախցիկի մեջ տեսածի վրա:
4. MATLAB 2018 ա
MATLAB- ի երկրորդ ամենավերջին տարբերակը ՝ 2018a- ն, օգտագործվել է այս տեղադրման մեջ ներգրավված կոդավորման համար: Ամենայն հավանականությամբ, MATLAB- ի շատ այլ տարբերակներ կաշխատեն դրա հետ, քանի որ roomba- ի ծրագրավորումը որոշ ժամանակ գոյություն ունի
Քայլ 2: Ֆայլեր և տեսախցիկի կազմաձևում
1. Raspberry Pi և Camera միացումներ սենյակին
- Pi- ն iRobot- ին կարող է միանալ անմիջապես միկրո USB- ով: Դա այն ամենն է, ինչ պետք է պատրաստ լինի օգտագործման համար: Այնուամենայնիվ, խորհուրդ է տրվում, որ այն ապահով տեղադրվի սենյակի վրա, ինչպես ցույց է տրված նկարներում մինչ այժմ ներկայացված ողջ ընթացքում:
- Տեսախցիկն անմիջական կապ ունի Raspberry Pi- ի հետ, և մեծապես խորհուրդ է տրվում, որ ինչ -որ բան գնվի կամ պատրաստվի, որպեսզի տեսախցիկն ուղղակի բարձր պահի: Տեսախցիկին իրական իմաստ չկա, եթե այն հնարավոր չէ պահել տեղում ՝ ցույց տալու այն, ինչ տեսնում է սենյակը:
2. Ֆայլեր
- Ամեն ինչ կարգավորելուց և միացնելուց հետո համոզվեք, որ ռոբոտը վերակայված է և պատրաստ է գնալ ՝ միասին պահելով «Տեղ» և «Նավահանգիստ» կոճակները 10 վայրկյան:
- Այստեղ է, որ առաջին հերթին անհրաժեշտ է MATLAB- ը: Roomba- ի ֆայլերը պետք է նախ տեղադրվեն, և այն, ինչ անհրաժեշտ է այս ֆայլերի համար, գործարկելն է ՝ այս հղման վրա տրված ծածկագիրը.
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
Քայլ 3. Roomba- ի նախնական փորձարկում
Շատ նախնական ստուգումներ պետք է կատարվեն սենյակի վրա `համոզվելու, որ այն աշխատում է:
1. Համոզվեք, որ միացված եք նույն WiFi ցանցին, ինչ roomba- ն: Առանց դրա, դուք երբեք չեք կապվի MATLAB- ի միջոցով:
2. Պարզեք, թե որ համարին է հատկացված ձեր roomba- ն, որպեսզի կարողանաք միանալ ձեր ընտրած սենյակին: Օրինակ, եթե ձեր roomba- ի համարը 30 է, դուք դրան միանում եք ՝ MATLAB- ի հրամանի պատուհանում մուտքագրելով roomba (30):
3. Սենյակը կարելի է կառավարել MATLAB- ի կառուցվածքների միջոցով: Օրինակ, եթե roomba (30) - ի համար ձեր կոդը սահմանեք «r» փոփոխականը, ռոբոտը կարող է առաջ շարժվել r.moveDistance հրամանով (0.2, 0.1):
4. Կան բազմաթիվ տարբեր հրամաններ, որոնք կարելի է հաղորդել roomba- ին, և դրանք կարելի է տեսնել ՝ հրամանի պատուհանում մուտքագրելով «doc roomba»:
5. Լույսի, հարվածի և ժայռի ընթերցման համար նախատեսված սենսորները կարող են ընթերցվել ՝ օգտագործելով «doc roomba» - ում նշված հրամանները, բայց սենսորային տվյալները տեսնելու մշտական, կոկիկ ընտրացանկ ունենալու միջոցը կարելի է տեսնել «r.testSensors» - ի միջոցով: '.
6. Այս ամենը փորձարկելուց հետո ռոբոտի պատկերը հավաքող ծրագրակազմը կարող է օգտագործվել կարված նկարները կարդալու և տեսնելու համար: Դրա հիմնական կոդը կլինի img = r.getImage և imshow (img);.
7. Նկարի RGB արժեքները կարելի է գտնել red_mean = միջին (միջին (միջին (img (:,,, 1))) կոդերով:
green_mean = միջին (միջին (միջին (img (:,:, 2))); և կապույտ_միջոց = միջին (միջին (միջին (img (:,:, 3)));.
Քայլ 4: Օրինակ MATLAB կոդ
Այս պահին, դուք այժմ պատրաստ եք օգտագործել սենսորներն ու պատկերը վերցնող ծրագրակազմը ՝ ձեր սեփական պտույտը ստեղծելու համար Մարդու օգնության նախատիպի Mars Rover- ի վրա: Մեր օրինակը տիեզերագնացին հետևելն է ՝ հետևելով սպիտակ գույնին և շարժվելով դեպի այն: Ռոբոտը կտա ազդանշան, եթե նրա տվիչները կարդում են բարձր արժեքներ, որպեսզի տիեզերագնացը կարողանա վերականգնել ռոբոտին, եթե այն խրված է, կամ գնա վերցրու այն և նորից տեղադրի, եթե այն խրված է ժայռի վրա: Այնուամենայնիվ, այն միայն կարդում է այս սխալները, քանի դեռ այն տեսնում է սպիտակ: Առանց տեսնելու սպիտակ գույնը, ռոբոտը կմտնի սխալի ռեժիմ: Isրագրված է երկու տարբեր տեսակի էլ. Եթե նա տեսնում է տիեզերագնացի մաշկի գույնը, դա ակնհայտորեն լավ չէ, ուստի այն կզգուշացնի տան հիմքը, եթե տիեզերագնացը մաշկը ցուցադրի կոստյումի անսարքությամբ: Մյուս հաղորդագրությունը պատրաստ է, եթե տիեզերագնացն ուղղակի անհետանա տեսադաշտից: Եթե տեսախցիկների համար սպիտակ կամ մաշկի գույն չկա, ռոբոտը կշրջվի և կուղարկի մեկ այլ, բայց այլ էլ. Նկարները, որտեղ սենյակը չի կարող տեսնել տիեզերագնացին, կուղարկվեն էլ. Մեր նախագծի ծածկագիրը ներկայացված է ստորև.
i = 1:.1: 3 img = r.getImage; պատկեր (img) red_mean = միջին (միջին (միջին (img (:,:, 1))); green_mean = միջին (միջին (միջին (img (:,:, 2))); blue_mean = միջին (միջին (միջին (img (:,:, 3))); եթե red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.left Առաջինը <10 || cliff.right Առջև <10 || ժայռ. right700 || light.left Առաջինը> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightF Front> 700 || լույս setDriveVelocity (.3,.2) r. դադարեցնել վերջը, եթե կանաչ_գույնը <35 && blue_mean <35 %մաշկի գույնը ցույց է տալիս (անհրաժեշտ է ճշգրտել տիեզերագնացների մաշկի գույնի հիման վրա) r.beep (); r. beep (); r. beep (); փոստ = '[email protected]'; %ուղարկում է նամակ, որը ցույց է տալիս, որ հայցը անջատված է psswd = 'yeah'; հյուրընկալող = 'smtp.gmail.com'; նավահանգիստ = '465'; emailto = '[email protected]'; m_subject = 'առարկա'; m_text = 'թեստ'; setpref («Ինտերնետ», «E_mail», փոստ); setpref («Ինտերնետ», «SMTP_Server», հաղորդավար); setpref («Ինտերնետ», «SMTP_Username», փոստ); setpref ('ինտերնետ', 'SMTP_Password', psswd); 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 (emailto, «Help!», «Տիեզերագնացների համազգեստը անջատված է», img); վերջ, եթե red_mean 135 || կանաչ_միջոց 135 || blue_mean 135 համար j = 1: 2 %, եթե սպիտակ գույնը չի կարող գտնվել ռոբոտի կողմից r.turnAngle (360) mail = '[email protected]'; psswd = 'այո'; հյուրընկալող = 'smtp.gmail.com'; նավահանգիստ = '465'; emailto = '[email protected]'; m_subject = 'առարկա'; m_text = 'թեստ'; setpref («Ինտերնետ», «E_mail», փոստ); setpref («Ինտերնետ», «SMTP_Server», հաղորդավար); setpref («Ինտերնետ», «SMTP_Username», փոստ); setpref ('ինտերնետ', 'SMTP_Password', psswd); 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 (emailto, «Help!», «Տիեզերագնացը չի գտնվում», img); r.stop ավարտել end end end
Ակնհայտ է, որ այստեղ խառնաշփոթ է, բայց պատճենելուց հետո այն պետք է դուրս գա: Դրա համար գաղտնաբառերը և էլ.
Այնուամենայնիվ, մեր օրինակը այս ռոբոտի հետ խառնվելու բազմաթիվ եղանակներից մեկն է, որպեսզի այն համապատասխանի բոլորին: Շատ տարբեր անելիքներ կան, որոնք կարող եք ինքներդ ձեզ հարմարեցնել:
Խորհուրդ ենք տալիս:
Roomba Bot the Bulider: 5 քայլ (նկարներով)
Roomba Bot the Bulider. ճակատին ամրացված կկարողանա առարկաները տեղաշարժել: Նրա հետ ծածկագիրը սահմանված է գրանցելու առաջին շարժումը GUI տուփով, որը կարող եք կառավարել միայն մկնիկի կտտոցով: Հետո
MATLAB վերահսկվող Roomba: 5 քայլ
MATLAB Controlled Roomba. Այս նախագծի նպատակն է օգտագործել MATLAB- ը, ինչպես նաև փոփոխված iRobot ծրագրավորվող ռոբոտը: Մեր խումբը համատեղեց մեր կոդավորման հմտությունները `ստեղծելու համար MATLAB սցենար, որն օգտագործում է iRobot- ի բազմաթիվ գործառույթներ, ներառյալ ժայռերի տվիչները, բամպերի զգայունությունը
Mars Roomba Project UTK: 4 քայլ
Mars Roomba Project UTK. ՀԱՅՏԱՐԱՐՈԹՅՈՆ. ՍԱ ՄԻԱՅՆ ԱՇԽԱՏԱՆՔ ԵԹԵ ՌՈՄԲԱ -ն ՇԱՏ ՇԱՏ ՀԱՏՈԿ ԱՆԱՊԱՐՀՈՄ Է, ԱՅՍ հրահանգը ստեղծվել և մտադրվել է օգտագործել ՏԵՆԱՆՍԱԿԱՆ ՈIVՍԱՆՈՆԵՐԻ ՀԱՄԱԼՍԱՐԱՆՈ ANDԹՅՈՆԸ և ֆակուլտետային ծառայություն: գրված է և
Roomba Parking Pal: 6 քայլ
Roomba Parking Pal. Այս նախագիծը օգտագործում է iRobot Ստեղծել ծրագրավորվող roomba, MATLAB r2018a և MATLAB բջջային հեռախոս: Օգտագործելով այս երեք միջավայրը և ծածկագրման մեր գիտելիքները, մենք iRobot Create- ը ծրագրավորեցինք գույների մեկնաբանման և առաջադրանքներն ավարտելու համար օգտագործվող ներկառուցված տվիչների միջոցով: Այս
Mars Roomba: 6 քայլ
Mars Roomba. Այս հրահանգը կառաջնորդի ձեզ Raspberry Pi- ի կողմից վերահսկվող Roomba վակուումային բոտը գործարկելու ուղղություններով: Օպերացիոն համակարգը, որը մենք օգտագործելու ենք, MATLAB- ի միջոցով է