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

AI LEGO EV3 Maze-Driving Robot- ում ՝ 13 քայլ
AI LEGO EV3 Maze-Driving Robot- ում ՝ 13 քայլ

Video: AI LEGO EV3 Maze-Driving Robot- ում ՝ 13 քայլ

Video: AI LEGO EV3 Maze-Driving Robot- ում ՝ 13 քայլ
Video: Как охотиться на людей ► 1 Прохождение Manhunt (PS2) 2024, Հուլիսի
Anonim
Image
Image
Ինչպես է լուծվում լաբիրինթոսը
Ինչպես է լուծվում լաբիրինթոսը

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

Իմ նախորդ ռոբոտը նկարագրված է այստեղ ՝

Ռոբոտը կառուցված է LEGO Mindstorms EV3- ի միջոցով: EV3 Software- ը աշխատում է համակարգչի վրա և ստեղծում է ծրագիր, որն այնուհետև ներբեռնվում է միկրոկոնտրոլերի վրա, որը կոչվում է EV3 Brick: Րագրավորման մեթոդը պատկերակի վրա հիմնված է և բարձր մակարդակի: Դա շատ հեշտ է և բազմակողմանի:

Պարագաներ

ՄԱՍՆԵՐ

  1. LEGO Mindstorms EV3 հավաքածու
  2. LEGO Mindstorms EV3 ուլտրաձայնային տվիչ: Այն ներառված չէ EV3 հավաքածուի մեջ:
  3. . Ալքավոր ստվարաթուղթ լաբիրինթոսի համար: Երկու տուփ պետք է բավարար լինի:
  4. Փոքր կտոր բարակ ստվարաթուղթ, որն օգնում է կայունացնել որոշ անկյուններ և պատեր:
  5. Սոսինձ և ժապավեն `ստվարաթղթե կտորները միմյանց միացնելու համար:
  6. Կարմիր շնորհավորական քարտի ծրար `լաբիրինթոսի ելքը նույնականացնելու համար:

ԳՈՐOOLԻՔՆԵՐ

  1. Ստվարաթուղթը կտրելու համար օգտակար դանակ:
  2. Պողպատե քանոն `օգնելու կտրման գործընթացին:

SOՐԱԳԻՐ

Րագիրն այստեղ է ՝

Քայլ 1. Ինչպես է լուծվում լաբիրինթոսը

ՄԱՆZԱՎՈՐՈՄ ՄԵԹՈԴ

Լաբիրինթոսում նավարկելու մի քանի եղանակ կա: Եթե դուք հետաքրքրված եք դրանք ուսումնասիրելով, դրանք շատ լավ նկարագրված են Վիքիպեդիայի հետևյալ հոդվածում ՝

Ես ընտրեցի ձախ պատին հետևելու մեթոդը: Գաղափարն այն է, որ ռոբոտը կպահի պատը իր ձախ կողմում ՝ լաբիրինթոսով անցնելիս կայացնելով հետևյալ որոշումները.

  1. Եթե հնարավոր է թեքվել ձախ, արեք դա:
  2. Հակառակ դեպքում, հնարավորության դեպքում ուղիղ գնացեք:
  3. Եթե այն չի կարող ձախ կամ ուղիղ գնալ, հնարավորության դեպքում թեքվեք աջ:
  4. Եթե վերը նշվածներից ոչ մեկը հնարավոր չէ, ապա դա պետք է փակուղի լինի: Շրջվել.

Oneգուշացումն այն է, որ մեթոդը կարող է ձախողվել, եթե լաբիրինթոսն իր մեջ մի օղակ ունի: Կախված օղակի տեղադրությունից, ռոբոտը կարող է շարունակել պտտվել օղակի շուրջը: Այս խնդրի հնարավոր լուծումը կլինի այն, որ ռոբոտը անցնի աջ պատի հետևորդի կանոնին, եթե գիտակցի, որ այն գնում է շրջանագծի մեջ: Ես այս կատարելագործումը չեմ ներառել իմ նախագծում:

ԼՈZՈՄ ԵՆ ԼԱՎԱԳՈՅՆԸ Ո TOԻ PԱՆԱՊԱՐՀ ԳՏՆԵԼ

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

Հնարավոր շրջադարձերն են ՝ ձախ, աջ, հետ (փակուղում) և Ուղիղ (որը խաչմերուկ է):

Համակցությունները փոխարինվում են հետևյալ կերպ.

  • «Ձախ, ետ, ձախ» -ը դառնում է «Ուղիղ»:
  • «Ձախ, հետ, աջ» -ը դառնում է «Հետ»:
  • «Ձախ, ետ, ուղիղ» -ը դառնում է «Աջ»:
  • «Աջ, Հետ, Ձախ» -ը դառնում է «Հետ»:
  • «Ուղիղ, ետ, ձախ» -ը դառնում է «աջ»:
  • «Ուղիղ, ետ, ուղիղ» -ը դառնում է «Հետ»:

ԻՆՉՊԵՍ ՌՈԲՈՏԸ ԴԱՌՆՈ MՄ Է ԻՄ ԼԱZՈՄԸ

  1. Երբ ռոբոտը սկսում է վարել, տեսնում է մի տարածք դեպի աջ և պահում է Straight- ը զանգվածի ցուցակում:
  2. Այնուհետև այն թեքվում է ձախ և ցուցակին ավելացնում Ձախը: Այժմ ցուցակը պարունակում է ՝ Ուղիղ, ձախ:
  3. Փակուղով, այն շրջվում է և ավելացնում Հետ: Այժմ ցանկը պարունակում է ՝ Ուղիղ, ձախ, հետ:
  4. Անցնելով մուտքից այն օգտագործած գոտին ՝ այն ուղիղ է ավելացնում ցուցակին: Theանկն այժմ պարունակում է ՝ Ուղիղ, ձախ, հետև, ուղիղ: Այն ճանաչում է մի համադրություն և փոխում Ձախ, Հետ, Ուղիղ դեպի աջ: Այժմ ցուցակը պարունակում է Ուղիղ, Աջ:
  5. Փակուղով, այն շրջվում է և ավելացնում Հետ: Այժմ ցուցակը պարունակում է ՝ Ուղիղ, Աջ, Հետ:
  6. Ձախ շրջվելուց հետո ցուցակը պարունակում է Ուղիղ, Աջ, Հետ, Ձախ: Այն ճանաչում է մի համադրություն և փոխում Աջ, Հետ, Ձախից դեպի Հետ: Այժմ ցուցակը պարունակում է Straight, Back:
  7. Հաջորդ ձախ շրջադարձից հետո ցուցակը պարունակում է Ուղիղ, Հետ, Ձախ: Այդ համադրությունը փոխում է Աջի: Այժմ ցուցակը պարունակում է միայն Right:
  8. Անցնում է բացատ և Straight- ը ավելացնում ցուցակին: Այժմ ցուցակը պարունակում է Right, Straight:
  9. Աջ շրջվելուց հետո ցուցակը պարունակում է Աջ, Ուղիղ, Աջ, որն ուղիղ ուղին է:

Քայլ 2. Ռոբոտին ծրագրավորելիս հաշվի առնելը

ՆՇՈՄՆԵՐ ANԱՆԿԱԱ ՄԻԿՈՐԿՈՏԵԼՈՐԻՉԻ ՀԱՄԱՐ

Երբ ռոբոտը որոշում է շրջվել, այն պետք է կա՛մ լայն շրջադարձ կատարի, կա՛մ շրջվելուց առաջ մի փոքր հեռավորություն գնա, և շրջվելուց հետո նորից մի փոքր հեռու գնա ՝ առանց սենսորը ստուգելու: Առաջին կարճ հեռավորության պատճառն այն է, որ շրջադարձից հետո ռոբոտը չպետք է բախվի պատին, իսկ երկրորդ կարճ հեռավորության պատճառն այն է, որ ռոբոտը շրջվելուց հետո սենսորը կտեսնի այն նոր տարածքը, որից նոր էր եկել:, և ռոբոտը կմտածեր, որ այն պետք է նորից շրջվի, ինչը պատշաճ բան չէ:

Երբ ռոբոտը զգում է խաչմերուկը աջ կողմում, բայց դա ճիշտ շրջադարձ չէ, ես գտա, որ լավ է, որ ռոբոտը մոտ 25 դյույմ առաջ շարժվի ՝ առանց դրա սենսորները ստուգելու:

LEGO MINDSTORMS- ի համար հատուկ դիտարկումներ EV3

Չնայած LEGO Mindstorms EV3- ը շատ բազմակողմանի է, այն թույլ է տալիս ոչ ավելի, քան մեկ տեսակի Աղյուսին միացված յուրաքանչյուր տեսակի սենսորից: Երկու կամ ավելի Աղյուսներ կարող էին շղթայված լինել, բայց ես չէի ուզում գնել մեկ այլ Աղյուս, և ես օգտագործեցի հետևյալ սենսորները (երեք ուլտրաձայնային տվիչների փոխարեն) ՝ ինֆրակարմիր տվիչ, գույնի ցուցիչ և ուլտրաձայնային տվիչ: Սա լավ ստացվեց:

Բայց գույնի տվիչը ունի շատ կարճ տիրույթ ՝ մոտ 2 դյույմ (5 սմ), ինչը հանգեցնում է մի քանի հատուկ նկատառումների, ինչպես նկարագրված է ստորև.

  1. Երբ գունավոր սենսորը հայտնաբերում է առջևի պատը, և ռոբոտը որոշում է թեքվել աջ կամ շրջվել, այն պետք է առաջինը հետ կանգնի, որպեսզի իրեն բավականաչափ տարածք տա առանց պտտվելու պատին:
  2. Բարդ խնդիր է առաջանում որոշ «Ուղիղ» խաչմերուկների դեպքում: Գունային տվիչի կարճ տիրույթի պատճառով ռոբոտը չի կարող որոշել ՝ զգում է «ուղիղ» խաչմերուկ, թե՞ աջ շրջադարձ: Ես փորձել եմ շտկել այս խնդիրը ՝ ծրագիրը դնելով «Ուղիղ» ցուցակում ամեն անգամ ռոբոտը զգալիս, այնուհետև ցուցակից մեկից ավելի «Ուղիղ» վերացնելուն: Սա շտկում է իրավիճակը, երբ լաբիրինթոսում աջ շրջադարձը հետևում է «Ուղիղ» -ին, բայց ոչ այն իրավիճակը, երբ առանց «Ուղղակի» աջ շրջադարձ է լինում: Ես նաև փորձեցի ծրագիր սահմանել ՝ «Ուղիղ» -ը վերացնելու համար, եթե այն գտնվում է «Աջից» առաջ, բայց դա չի աշխատում, եթե աջ շրջադարձը հետևում է «Ուղիղ» -ին: Ես չեմ կարողացել գտնել լուծում, որը կհամապատասխանի բոլոր դեպքերին, այնուամենայնիվ, ենթադրում եմ, որ ռոբոտի համար հնարավոր կլիներ նայել անցած ճանապարհը (կարդալով շարժիչի պտույտի տվիչները) և որոշել ՝ դա «ուղիղ» է, թե ճիշտ: շրջադարձ. Չէի կարծում, որ այս բարդությունը արժեր անել այս նախագծում AI հայեցակարգը ցուցադրելու նպատակով:
  3. Գույնի տվիչի առավելությունն այն է, որ այն տարբերակում է պատի դարչնագույնը և պատնեշի կարմիրը, որը ես օգտագործել եմ ելքի ժամանակ, և հեշտ ճանապարհ է տալիս ռոբոտին որոշելու, թե երբ է ավարտել լաբիրինթոսը:

Քայլ 3: Հիմնական ծրագիրը

Հիմնական ծրագիրը
Հիմնական ծրագիրը

LEGO Mindstorms EV3- ն ունի պատկերների վրա հիմնված ծրագրավորման շատ հարմար մեթոդ: Բլոկները ցուցադրվում են համակարգչի ցուցադրման էկրանի ներքևում և կարող են քաշվել-իջեցվել ծրագրավորման պատուհանում `ծրագիր ստեղծելու համար: EV3 Brick- ը կարող է միացված լինել համակարգչին USB մալուխի, Wi-Fi- ի կամ Bluetooth- ի միջոցով, և այնուհետև ծրագիրը կարող է ներբեռնվել համակարգչից դեպի Աղյուս:

Consistsրագիրը բաղկացած է հիմնական ծրագրից և մի քանի «Իմ բլոկները», որոնք ենթածրագրեր են: Վերբեռնված ֆայլը պարունակում է ամբողջ ծրագիրը, որն այստեղ է ՝

Հիմնական ծրագրի քայլերը հետևյալն են.

  1. Սահմանեք և սկզբնավորեք հերթափոխի հաշվարկման փոփոխականը և զանգվածը:
  2. Սպասեք 5 վայրկյան և ասեք «Գնա»:
  3. Սկսեք մի հանգույց:
  4. Քշեք լաբիրինթոսով: Երբ ելքը հասնում է, հանգույցը դուրս է գալիս:
  5. Displayուցադրեք Աղյուսի էկրանին, մինչ այժմ լաբիրինթոսում հայտնաբերված խաչմերուկները:
  6. Ստուգեք, արդյոք ուղին պետք է կրճատվի:
  7. Displayույց տվեք խաչմերուկները կրճատված ճանապարհով:
  8. Վերադարձեք դեպի քայլ 4:
  9. Օղակից հետո քշեք ուղիղ ուղին:

Էկրանի կադրը ցույց է տալիս այս հիմնական ծրագիրը:

Քայլ 4: Իմ բլոկները (ենթածրագրեր)

Իմ բլոկները (ենթածրագրեր)
Իմ բլոկները (ենթածրագրեր)

Navուցադրվում է Navigate My Block- ը, որը վերահսկում է, թե ինչպես է ռոբոտը քշում լաբիրինթոսով: Տպագրությունը շատ փոքր է և չի կարող ընթեռնելի լինել: Բայց դա լավ օրինակ է, թե որքան բազմակողմանի և հզոր են if- հայտարարությունները (որոնք կոչվում են անջատիչներ LEGO EV3 համակարգում):

  1. Սլաքը #1 ցույց է տալիս Անջատիչը, որը ստուգում է, թե արդյոք ինֆրակարմիր սենսորը օբյեկտ է տեսնում ավելի քան որոշակի հեռավորության վրա: Եթե այդպես է, բլոկների վերին շարքը կատարվում է: Եթե ոչ, ապա վերահսկողությունը փոխանցվում է բլոկների մեծ, ստորին շարքին, որտեղ գտնվում է թիվ 2 սլաքը:
  2. Սլաքը #2 ցույց է տալիս Անջատիչը, որը ստուգում է, թե ինչ գույն է տեսնում գույնի տվիչը: Կան 3 դեպք ՝ վերևում գույն չկա, մեջտեղում ՝ կարմիր, իսկ ներքևում ՝ շագանակագույն:
  3. Երկու սլաք #3 ցույց են տալիս Անջատիչները, որոնք ստուգում են, թե արդյոք ուլտրաձայնային տվիչը օբյեկտ է տեսնում ավելի քան որոշակի հեռավորության վրա: Եթե այդպես է, բլոկների վերին շարքը կատարվում է: Եթե ոչ, ապա վերահսկողությունը փոխանցվում է բլոկների ստորին շարքին:

Blանապարհը կարճացնելու և ուղիղ ճանապարհով երթևեկելու համար իմ բլոկներն ավելի բարդ են և բոլորովին անընթեռնելի, ուստի դրանք ներառված չեն այս փաստաթղթում:

Քայլ 5: Սկսում ենք կառուցել ռոբոտը. Հիմքը

Սկսում ենք կառուցել ռոբոտը. Հիմքը
Սկսում ենք կառուցել ռոբոտը. Հիմքը
Սկսում ենք կառուցել ռոբոտը. Հիմքը
Սկսում ենք կառուցել ռոբոտը. Հիմքը

Ինչպես արդեն նշվեց, LEGO Mindstorms EV3- ը թույլ է տալիս մեկ աղյուսին միացված յուրաքանչյուր տեսակի սենսորից ոչ ավելի: Ես օգտագործեցի հետևյալ սենսորները (երեք ուլտրաձայնային տվիչների փոխարեն) `ինֆրակարմիր տվիչ, գույնի ցուցիչ և ուլտրաձայնային տվիչ:

Ստորև ներկայացված զույգ լուսանկարները ցույց են տալիս, թե ինչպես կարելի է կառուցել ռոբոտը: Յուրաքանչյուր զույգի առաջին լուսանկարում ցուցադրվում են անհրաժեշտ մասերը, իսկ երկրորդ լուսանկարում ՝ միացված իրար միացած մասերը:

Առաջին քայլը ռոբոտի հիմքի կառուցումն է ՝ օգտագործելով ցուցադրված մասերը: Ռոբոտների բազան ցուցադրվում է գլխիվայր: Ռոբոտի հետևի L- ձևավորված փոքր հատվածը մեջքի համար հենարան է: Այն սահում է, երբ ռոբոտը շարժվում է: Սա լավ է աշխատում: EV3 հավաքածուն չունի շարժակազմի տիպի մաս:

Քայլ 6: Հիմքի վերև, 1

Հիմքի վերև, 1
Հիմքի վերև, 1
Հիմքի վերև, 1
Հիմքի վերև, 1

Քայլը և հաջորդ 2 քայլերը վերաբերում են ռոբոտի հիմքի վերևին, գույնի ցուցիչին և մալուխներին, որոնք բոլորը 10 դյույմ (26 սմ) մալուխներ են:

Քայլ 7: Հիմքի վերև, 2

Հիմքի վերև, 2
Հիմքի վերև, 2
Հիմքի վերև, 2
Հիմքի վերև, 2

Քայլ 8: Հիմքի վերև, 3

Հիմքի վերև, 3
Հիմքի վերև, 3
Հիմքի վերև, 3
Հիմքի վերև, 3

Քայլ 9. Ինֆրակարմիր և ուլտրաձայնային տվիչներ

Ինֆրակարմիր և ուլտրաձայնային տվիչներ
Ինֆրակարմիր և ուլտրաձայնային տվիչներ
Ինֆրակարմիր և ուլտրաձայնային տվիչներ
Ինֆրակարմիր և ուլտրաձայնային տվիչներ

Հաջորդը ՝ ինֆրակարմիր սենսորն է (ռոբոտի ձախ կողմում) և ուլտրաձայնային տվիչը (աջ կողմում): Բացի այդ, 4 կապում `Աղյուսը վերևում ամրացնելու համար:

Ինֆրակարմիր և ուլտրաձայնային տվիչները գտնվում են ուղղահայաց ՝ սովորական հորիզոնականի փոխարեն: Սա ապահովում է պատերի անկյունների կամ ծայրերի ավելի լավ նույնականացում:

Քայլ 10: Մալուխներ

Մալուխներ
Մալուխներ

Մալուխները միանում են Աղյուսին հետևյալ կերպ.

  • B նավահանգիստ. Ձախ մեծ շարժիչ:
  • Նավահանգիստ C ՝ աջ մեծ շարժիչ:
  • Պորտ 2: ուլտրաձայնային տվիչ:
  • Պորտ 3: գույնի ցուցիչ:
  • Պորտ 4: ինֆրակարմիր ցուցիչ:

Քայլ 11: Ռոբոտի կառուցման վերջին քայլը. Դեկորացիա

Ռոբոտի կառուցման վերջին քայլը. Դեկորացիա
Ռոբոտի կառուցման վերջին քայլը. Դեկորացիա
Ռոբոտի կառուցման վերջին քայլը. Դեկորացիա
Ռոբոտի կառուցման վերջին քայլը. Դեկորացիա

Թևերն ու լողակները միայն դեկորացիայի համար են:

Քայլ 12: Կառուցեք լաբիրինթոս

Կառուցեք լաբիրինթոս
Կառուցեք լաբիրինթոս
Կառուցեք լաբիրինթոս
Կառուցեք լաբիրինթոս

Երկու ծալքավոր ստվարաթղթե տուփ պետք է բավարար լինի լաբիրինթոսի համար: Ես դարձրեցի լաբիրինթոսի պատերը 12 դյույմ (12,5 սմ) բարձրությամբ, բայց 4 դյույմը (10 սմ) պետք է նույնքան լավ աշխատեն, եթե ծալքավոր ստվարաթղթի պակաս ունեք:

Նախ, ես կտրեցի տուփերի պատերը ՝ ներքևից 10 դյույմ (25 սմ): Հետո ես պատերի շուրջը կտրեցի ներքևից 5 դյույմ: Սա ապահովում է մի քանի 5-դյույմանոց պատեր: Բացի այդ, ես կտրեցի տուփերի ներքևի մասերը ՝ թողնելով կայունության համար պատերին ամրացված մոտ 1 դյույմ (2,5 սմ):

Տարբեր կտորները կարելի է կտրել և սոսնձել կամ կպցնել այնտեղ, որտեղ անհրաժեշտ է ՝ լաբիրինթոս ձևավորելու համար: Կողային պատերի միջև փակուղի ունեցող ցանկացած ճանապարհի վրա պետք է լինի 11 կամ 12 դյույմ (30 սմ) տարածություն: Երկարությունը պետք է լինի ոչ պակաս, քան 10 դյույմ (25 սմ): Այս հեռավորությունները անհրաժեշտ են, որպեսզի ռոբոտը շրջվի:

Լաբիրինթոսի որոշ անկյուններ կարող են ամրապնդման կարիք ունենալ: Բացի այդ, որոշ ուղիղ պատեր պետք է թեքվել, եթե դրանք ներառում են ստվարաթղթե ուղղված անկյուն: Այդ վայրերում պետք է սոսնձել բարակ ստվարաթղթի փոքր կտորներ, ինչպես ցույց է տրված:

Ելքն ունի կարմիր պատնեշ, որը բաղկացած է կարմիր բացիկի կես ծրարից և 2 կտոր բարակ ստվարաթղթից պատրաստված հիմքից, ինչպես ցույց է տրված:

Քայլ 13: Լաբիրինթոս

Լաբիրինթոսը
Լաբիրինթոսը

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

Այդ խնդրի լուծման ուղին է ներառել ուղի ուղղող առօրյան, որը ռոբոտին կպահպանի ձախ պատից որոշակի հեռավորություն: Ես սա չեմ ներառել: Theրագիրը բավականին բարդ է և այն բավարար է այս նախագծում AI հայեցակարգը ցուցադրելու համար:

Եզրափակիչ դիտողություն

Սա զվարճալի նախագիծ էր և ուսուցման հիանալի փորձ: Հուսով եմ, որ ձեզ նույնպես հետաքրքիր կլինի:

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