Բովանդակություն:

Roomba Parking Pal: 6 քայլ
Roomba Parking Pal: 6 քայլ

Video: Roomba Parking Pal: 6 քայլ

Video: Roomba Parking Pal: 6 քայլ
Video: AMA record with community manager Oleg. PARALLEL FINANCE 2024, Հուլիսի
Anonim
Roomba Parking Pal
Roomba Parking Pal

Այս նախագիծը օգտագործում է iRobot Ստեղծել ծրագրավորվող roomba, MATLAB r2018a և MATLAB բջջային հեռախոսներ: Օգտագործելով այս երեք միջավայրը և ծածկագրման մեր գիտելիքները, մենք iRobot Create- ը ծրագրավորեցինք գույները մեկնաբանելու և առաջադրանքներն ավարտելու համար օգտագործվող ներկառուցված տվիչների միջոցով: Այս խնդիրները կատարելու համար այս նախագծերը կախված են Raspberry Pi- ից և MATLAB հաղորդակցությունից:

Քայլ 1: Նյութեր

Նյութեր
Նյութեր
Նյութեր
Նյութեր

1. iRobot Ստեղծել ռոբոտ

2. MATLAB r2018a

3. Ազնվամորի Պի

4. Խցիկի մոդուլ

5. 3D տպագիր Camera Stabilizer Stand

6. Տեղադրված է MATLAB բջջայինով սմարթֆոն

7. Նոթբուք/համակարգիչ `տեղադրված MATLAB- ով

Քայլ 2: Միացում

Այս քայլը վերաբերում է Raspberry Pi- ին ռոբոտին միացնելուն, երկրորդը ՝ ռոբոտը ձեր համակարգչին միացնելուն և սմարթֆոնը համակարգչին միացնելուն:

Այս գործընթացի ամենահեշտ մասը Raspberry Pi- ն ձեր ռոբոտին միացնելն է, քանի որ Raspberry Pi- ն տեղադրված է ռոբոտի վերևում: Ռոբոտից կա լար, որը մնում է միացնել Raspberry Pi- ի կողքին:

Հաջորդ քայլը ռոբոտը ձեր համակարգչին միացնելն է, որպեսզի կարողանաք ռոբոտին կատարել հրամաններ: Առաջին բանը, որ դուք պետք է անեք, ձեր համակարգիչը միացնելն է ձեր roomba- ի ստեղծած անլար ցանցին: Այժմ, խորհուրդ է տրվում օգտագործել MATLAB- ում Set Path պատկերակը `ճանապարհը սահմանելու համար, որպեսզի կարողանաք օգտագործել MATLAB- ի Roomba գործիքների տուփի գործառույթները: Ամեն անգամ, երբ սկսում եք և ավարտում եք ռոբոտի օգտագործումը, դուք պետք է կատարեք «Երկու մատով ողջունում» ռոբոտին կոշտ վերականգնում, ինչը նշանակում է, որ տասը վայրկյան պահում եք նավահանգիստը և տեղում կոճակները, մինչև լույսը մարում է, որը ցույց է տալիս արձակվել: Այս կոշտ վերականգնումը ձեզ հաջողվեց, եթե լսեք, որ ռոբոտը կարճ մասշտաբով է խաղում: Հաջորդը դուք պետք է միանաք roomba- ին ՝ օգտագործելով այսպիսի «r = roomba (x)» կոդի տողը, որտեղ «x» - ը ձեր ունեցած ռոբոտին նշանակված համարն է:

Վերջապես, դուք պետք է ներբեռնեք MATLAB բջջային հեռախոսը ցանկացած շարժական սարքի վրա, որը դուք կօգտագործեք այս նախագծի համար, և այս ծրագիրը հասանելի է ինչպես Android, այնպես էլ Apple սարքերում: Երբ ծրագիրը տեղադրվի, դուք պետք է մուտք գործեք ՝ օգտագործելով ձեր հավատարմագրերը: Այնուհետև դուք պետք է միացնեք այս սարքը ձեր համակարգչին ՝ օգտագործելով «Ավելին» պիտակի ներդիրը -> այնուհետև կտտացրեք «կարգավորումներ» -> այնուհետև կտտացրեք «Ավելացնել համակարգիչ», սա պետք է բարձրացնի վերևի նկարներում ցուցադրված էկրանը: Սա տեսնելուց հետո Հաջորդ քայլը, որի միջով դուք պետք է անցնեք, պարզապես պահանջվող տեղեկատվության միացումն ու խցանումն է: Հաջողությամբ միանալուց հետո դուք կկարողանաք ձեր համակարգչում ձեր հեռախոսով զանգահարել գործառույթներ `ձեր ռոբոտին կառավարելու համար:

Քայլ 3. Տրամաբանորեն ստեղծեք MATLAB ծածկագիր սենսորների օգտագործման համար

Տրամաբանորեն սենսորների օգտագործման համար ստեղծեք MATLAB ծածկագիր
Տրամաբանորեն սենսորների օգտագործման համար ստեղծեք MATLAB ծածկագիր

Կոդն ամենահեշտն է ստեղծվելու, երբ դրա մեծամասնությունը միացված է while loop- ում, այնպես որ roomba- ն կարող է անընդհատ թարմացնել վավեր արժեքները, որոնք նա նայում է: Եթե կա սխալ, MATLAB- ը կցուցադրի սխալ և որտեղ այն հայտնվում է ծածկագրում ՝ համեմատաբար պարզ դարձնելով խնդիրների լուծումը:

Նախագծված է r2018a MATLAB- ում, այս ծածկագիրը օգտագործում է ստանդարտ գործիքատուփերը, iRobot Create գործիքատուփը, ինչպես նաև MATLAB շարժական գործիքատուփը: Այս օրինակում օգտագործված սենյակը նշանակված է որպես 26, իսկ r = roomba- ն (26) անհրաժեշտ է միայն մեկ անգամ գործարկել սենյակի հետ լիովին հաղորդակցվելու համար:

Կոդ:

գործառույթը parkassist (x), եթե x == 1

r = roomba (26) % -ը միանում է roomba- ին

մինչդեռ ճշմարիտ է

r.setDriveVelocity (.05,.05) % -ը դնում է roomba- ին ավելի դանդաղ ընթացքի արագության վրա

bump = r.getBumpers % -ը ստանում է տվյալները հարվածի տվիչներից

cliff = r.getCliffSensors % -ը ստանում է տվյալները ժայռի տվիչներից

light = r.getLightBumpers % -ը տվյալներ է ստանում լույսի հարվածի տվիչներից

img = r.getImage;% -ը կարդում է ռոբոտի տեսախցիկը

red_mean = միջին (միջին (միջին (img (:,:, 1))) % կարդում է կարմիր պիքսելների միջին քանակը

green_mean = միջին (միջին (միջին (img (:,,, 2))) % կարդում է կանաչ պիքսելների միջին քանակը

blue_mean = միջին (միջին (միջին (img (:,:, 3)))) % -ը կարդում է կապույտ պիքսելների միջին քանակը

եթե bump.front == 1 %-ը կարդում է առջևի հարվածի տվիչները

r.stop %կանգնում է roomba- ին

msgbox ('Path Obscured!', 'Parking Assistant Message') % ցուցադրում է հաղորդագրություն, որն ասում է, որ ճանապարհը խավարված է % ընդհատում է օղակը

elseif green_mean> 150

r.stop %կանգնում է roomba- ին

cont = questdlg («Շարունակե՞լ», «Ավարտված ճանապարհը») ցուցադրում է հարցման տուփ ՝ շարունակելու խնդրանքով

եթե շարունակել == 'Այո'

parkassist (1) %-ը վերագործարկում է կոդը

ուրիշ

վերջ

break % ավարտում է հանգույցը

elseif red_mean> 140

r.turnAngle (45) %-ը սենյակը դարձնում է 45 աստիճան

r.timeStart % - ը սկսում է ժամանակի հաշվիչ

մինչդեռ ճշմարիտ է

r.setDriveVelocity (.05,.05) %-ը սահմանում է սենյակի արագությունը

time = r.timeGet %-ը ժամանակ է հատկացնում փոփոխականին

bump = r.getBumpers % -ը ստանում է տվյալները հարվածի տվիչներից

cliff = r.getCliffSensors % -ը ստանում է տվյալները ժայռի տվիչներից

light = r.getLightBumpers % -ը տվյալներ է ստանում լույսի հարվածի տվիչներից

img = r.getImage;% -ը կարդում է ռոբոտի տեսախցիկը

red_mean = միջին (միջին (միջին (img (:,:, 1))) % կարդում է կարմիր պիքսելների միջին քանակը

green_mean = միջին (միջին (միջին (img (:,:, 2))) % կարդում է կանաչ պիքսելների միջին քանակը

blue_mean = միջին (միջին (միջին (img (:,:, 3)))) % -ը կարդում է կապույտ պիքսելների միջին քանակը

եթե blue_mean> 120

r.moveDistance (-0.01) % -ը սենյակը հետ է տեղափոխում սահմանված հեռավորության երգ Խաղալ (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % նվագում է աճող երաժշտական մասշտաբ

msgbox ('Water Found!', 'Parking Assistant Message') % ցուցադրում է հաղորդագրություն, որում ասվում է, որ ջուրը գտնվել է r.turnAngle (-80) % -ը պտտում է սենյակը 80 աստիճան

break % ավարտում է ընթացիկ հանգույցը

elseif light.right Առջև> 25 || light.leftFront> 25 %-ը կարդում է լույսի հարվածի տվիչներ

r.moveDistance (-0.01) % -ը սենյակը հետ է տեղափոխում սահմանված հեռավորություն

r.turnAngle (-35) % -ը պտտում է սենյակը 35 աստիճանով

break %ավարտում է ընթացիկ հանգույցը

elseif cliff.rightF Front <2500 && cliff.leftF Front <2500 %-ը կարդում է երկու ժայռերի սենսորները

r.moveDistance (-0.1) % -ը սենյակը հետ է տեղափոխում սահմանված հեռավորությունը

r.turnAngle (-80) %-ը պտտում է սենյակը 80 աստիճանով

break % ավարտում է ընթացիկ հանգույցը

elseif ժամանակ> = 3

r.stop %կանգնում է roomba- ին

Contin = questdlg («Ազատ կայարան, շարունակե՞լ», «Ավտոկանգառի օգնականի հաղորդագրություն») %-ը հարցնում է, թե արդյոք սենյակը պետք է շարունակվի, եթե շարունակվի == «Այո»

r.turnAngle (-90) % -ը պտտում է սենյակը 90 աստիճանով

parkassist (1) %-ը վերագործարկում է գործառույթը

ուրիշ

r.stop % կանգնեցնում է սենյակը

վերջ

ուրիշ

վերջ

վերջ

elseif cliff.rightF Front <2500 && cliff.leftF Front <2500 %-ը կարդում է երկու ժայռերի սենսորները

r.moveDistance (-0.1) %-ը սենյակը հետ է տեղափոխում սահմանված հեռավորությունը

r.turnAngle (-90) %-ը պտտում է սենյակը 90 աստիճանով

elseif cliff.rightF Front <2500 %-ը կարդում է ժայռի աջ սենսորը

r.turnAngle (-5) %-ը փոքր-ինչ շրջում է սենյակը ժայռի տվիչի հակառակ ուղղությամբ

elseif cliff.leftF Front <2500 %-ը կարդում է ձախ ժայռի տվիչը

r.turnAngle (5) %-ը փոքր -ինչ շրջում է սենյակը ժայռի տվիչի հակառակ ուղղությամբ

ուրիշ

վերջ

վերջ

վերջ

Քայլ 4: Կոդի և ռոբոտի փորձարկում

Կոդի և ռոբոտի փորձարկում
Կոդի և ռոբոտի փորձարկում
Կոդի և ռոբոտի փորձարկում
Կոդի և ռոբոտի փորձարկում
Կոդի և ռոբոտի փորձարկում
Կոդի և ռոբոտի փորձարկում

Կոդը մշակվելուց հետո հաջորդ քայլը ծածկագրի և ռոբոտի փորձարկումն էր: Քանի որ կան բազմաթիվ տարբեր ճշգրտումներ, որոնք կարող են կատարվել ծածկագրում, ինչպիսիք են ռոբոտի շրջադարձի անկյունը, շարժման արագությունը և յուրաքանչյուր գույնի շեմերը, ձեր ռոբոտի համար այդ արժեքները պարզելու լավագույն միջոցը փորձարկումն է: դրանք և փոխվել, երբ գնում ես: Մեր ունեցած յուրաքանչյուր աշխատանքային օրվա համար մենք անընդհատ փոխում էինք այս արժեքները, քանի որ դրանցից մի քանիսը ապավինում են այն միջավայրին, որտեղ աշխատում է ձեր ռոբոտը: Լավագույն միջոցը, որը մենք գտանք, դա սենյակի տեղադրումն էր այն ուղու վրա, որը ցանկանում եք, և այն ունենալու համար: բավականաչափ բարձր պատնեշ, որպեսզի տեսախցիկը չկարողանա հայտնաբերել այն գույները, որոնք դուք չեք ցանկանում: Հաջորդ քայլը թողնել, որ այն գործի և ցույց տա ձեր ուզած գույները, երբ ցանկանում եք, որ նա կատարի այդ առաջադրանքը: Երբ առաջ եք գնում, եթե տեսնում եք որևէ խնդիր, ապա ամենալավն այն է, որ առջևի բամպերը ներս մղեք ՝ այն կանգնեցնելով, այնուհետև փոխեք այն պարամետրը, որի հետ խնդիրներ ունեք:

Քայլ 5: Սխալի ճանաչում

Ավարտված յուրաքանչյուր ծրագրի դեպքում միշտ կան սխալի աղբյուրներ: Մեզ համար մենք սխալ թույլ տվեցինք այն պարզ փաստի հետ կապված, որ ռոբոտը ճշգրիտ չէ այն պտտվող անկյան հետ, այնպես որ, եթե նրան ասեք 45 աստիճան պտտվել, դա ճշգրիտ չի լինի: Մեզ համար սխալի մեկ այլ աղբյուր այն էր, որ երբեմն ռոբոտը սխալ է աշխատում, և դուք դժվարությամբ վերականգնում եք այն, մինչև այն նորից աշխատի: Մեզ համար սխալի հիմնական աղբյուրն այն էր, որ նույն ծածկագիրը նույն ազդեցությունը չի ունենա տարբեր ռոբոտների վրա, այնպես որ գուցե ստիպված լինեք համբերատար լինել դրան և համապատասխանաբար հարմարվել:

Քայլ 6: Եզրակացություն

Այժմ դուք ունեք բոլոր գործիքները ձեր սենյակի հետ խաղալու համար, ինչը նշանակում է, որ դուք կարող եք շահարկել ծածկագիրը ցանկացած դեպքում, երբ ցանկանում եք հասնել ձեր ուզած նպատակներին: Սա պետք է լինի ձեր օրվա լավագույն մասը, այնպես որ զվարճացեք և ապահով վարեք:

Խորհուրդ ենք տալիս: