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

Ինքնուսուցման քաոսային ռոբոտ. 3 քայլ
Ինքնուսուցման քաոսային ռոբոտ. 3 քայլ

Video: Ինքնուսուցման քաոսային ռոբոտ. 3 քայլ

Video: Ինքնուսուցման քաոսային ռոբոտ. 3 քայլ
Video: BABOK Guide: IIBA Certification (CBAP, CCBA, ECBA) Study Strategy 2024, Նոյեմբեր
Anonim
Ինքնուսուցման քաոսային ռոբոտ
Ինքնուսուցման քաոսային ռոբոտ

Դուք հետաքրքրվա՞ծ եք մեքենայական ուսուցմամբ, AI և ռոբոտներով: Պետք չէ ինչ -որ շքեղ համալսարանում աշխատել: Սա իմ քաոսային ռոբոտի նկարագրությունն է: Դա շատ պարզ ռոբոտ է ՝ ցույց տալու համար, թե ինչպես օգտագործել ինքնուսուցման կոդը և ինչպես այն կիրառել arduino հարթակում, այս դեպքում ՝ Arduino due- ի միջոցով: Դա շատ էժան հարթակ է:

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

Քայլ 1. Սարքավորումներ AKA ռոբոտը

Սարքավորումներ AKA ռոբոտը
Սարքավորումներ AKA ռոբոտը
Սարքավորումներ AKA ռոբոտը
Սարքավորումներ AKA ռոբոտը
Սարքավորումներ AKA ռոբոտը
Սարքավորումներ AKA ռոբոտը

Քեզ պետք է:

- 1 Arduino Due

- 8 միկրոսերվոս

- 1 ձիաուժ/2 մուկ

- 1 մակարդակի փոփոխիչ

- սենսորային վահանի կամ դրա նման այլ տարբերակ, ես հոգնել էի սենսորային վահանից և եռակցել իմը:

-լարերը

-արտաքին հոսանքի մատակարարում 5 Վ սերվերի համար

- որոշ մետաղի ջարդոն, մի քանի սոսինձ և մի քանի պողպատե թել: Եվ ժապավեն!

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

Խորհուրդներ. Օգտագործեք բավականին ծանր մետաղական մասեր, դա հեշտացնում է ռոբոտի տեղաշարժը:

Սերվոները միացրեք պատշաճին, իմ դեպքում դրանք միացված են D39, 41, 43, 45, 47, 49, 51, 53:

Սպասարկիչները միացրեք արտաքին 5 Վ էլեկտրամատակարարմանը: Դրա համար կառուցեք ինչ -որ վահան կամ օգտագործեք սենսորային վահան կամ նմանատիպ: ՄԻ՛ մատակարարեք սերվերին 5 Վ -ի վճարից, դա բավարար չէ, Պատճառը այրվելու է: Ես օգտագործեցի փոքր նախատիպի տախտակ ՝ 5 Վ -ը բոլոր սերվոներին բաժանելու համար: Այս տախտակը ունի նաև մակարդակի փոփոխիչ PS/2 մկնիկի ժամացույցի և տվյալների գծերի համար: Տախտակը մկնիկին սնուցում է նաև 5 Վ լարման միջոցով: Հիշեք, որ արտաքին հոսանքից միացրեք գետնին Arduino- ին: սխեմաները ցույց են տալիս, թե ինչպես միացնել այդ ամենը:

PS/2 -ը միացրեք հոսանքին (5V) և գետնին: PS/2- ի ժամացույցը և տվյալների գիծը միացրեք փոխանցման մակարդակին `մակարդակի փոխարկիչի միջոցով: (վճարման ժամկետը ՝ 3.3 Վ, PS/2 -ը ՝ 5 Վ): Միացրեք ժամացույցը D12- ին և տվյալները D13- ին:

PS/2 արձանագրության մանրամասների համար սա շատ լավ ուսանելի է.

www.instructables.com/id/Optical-Mouse-Od…

PS/2 գրադարանը jazzycamel- ով, որը ես օգտագործել եմ ՝

Քայլ 2: Կոդ

Օրենսգիրքը
Օրենսգիրքը

Սկզբում թույլ տվեք ասել. Ես ծրագրավորող չեմ: Որոշ մասեր շատ ընդարձակ են, հմուտ ծրագրավորողը, իհարկե, կարող է կրճատել այն և այլն և այլն:

Կոդն ինքնուսուցում է, և սա նախագծի առանցքն է: Սա դրա զվարճալի մասն է: Դա նշանակում է, որ ռոբոտը զարգանում է և ավելի ու ավելի լավանում, այս դեպքում այն ավելի լավ է դառնում սողալով: Այս ամենի զարմանալին այն է, որ ռոբոտը կզարգանա այնպես, ինչպես երբևէ սնուցում եք այն: Այս դեպքում այն քաշում է PS/2 մկնիկը և որքան երկար է մկնիկը քաշվում, այնքան ավելի բարձր միավորներ է ստանում:

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

Ինչպես տեսնում եք պատկերներում, մկնիկը քաշվում է բարակ լարի վրա: Սկզբում այն քաշվեց մկնիկի մալուխի մեջ: Այնուամենայնիվ, մալուխը մի տեսակ թունդ է, ուստի ռոբոտը սովորեց թափահարել մկնիկը ՝ այն քարշ տալու փոխարեն: Թափահարումը բարձր միավորներ բերեց…

Կոդն օգտագործում է 50 անհատականություն: Սրա միջուկը 50x50 բայթ զանգված է:

Անհատը բայթերի զանգված է: Երբ անհատը օգտագործվում է ռոբոտը գործարկելու համար, այն ուղարկվում է «tolken» կոչվող կոդի գործառույթին:

Վազքի սկզբում կա 8 փոփոխական m1, m2, m3, m4, m5, m6, m7 և m8 (մեկը յուրաքանչյուր սերվոյի համար): Այս ռոբոտում նրանք բոլորն ունեն մշտական մեկնարկային արժեքներ: «Tolken» - ում mś- ն փոխակերպվում է գործի/swich հանգույցի ՝ կախված անհատի արժեքներից: օրինակ «1» արժեքը կատարում է հետևյալը. m1 = m1 + m2:

Եթե անհատը ՝ 1, 2, 3, 0, 0, 0, 0….. ապա mś- ն կփոխակերպվի հետևյալ կերպ.

մ 1 = մ 1 + մ 2;

մ 1 = մ 1 + մ 3;

մ 1 = մ 1 + մ 4;

Tolken- ը 256 տարբեր մաթեմատիկական գործողությունների ցանկ է, ուստի առանձին զանգվածների յուրաքանչյուր հնարավոր արժեքը ներկայացնում է m արժեքների մաթեմատիկական փոփոխություն:

Հաշվարկի գործընթացը կատարվում է 4 անգամ ՝ յուրաքանչյուր շրջագծի միջև ընթերցմամբ, յուրաքանչյուր «մ» -ի համար ստեղծելով չորս տարբեր շարժիչ-կոդեր: Մոտոցիկլերն այն արժեքներն են, որոնք հետագայում ուղարկվում են սպասարկողներին:

Everyարգացման յուրաքանչյուր քայլում 4 անհատ մրցում են սողացող: Երկու լավագույն անհատները կլինեն երկու երեխայի ծնողներ, երեխաները կփոխարինեն երկու վատագույն անհատներին: Երբ երեխաները պատրաստվում են, մի ծնողից «գենետիկական կոդի» միացումը փոխանակվում է մյուս ծնողի մի կտորի հետ, ինչը ստեղծում է երկու նոր անհատ:

Եթե ընդհանրապես որևէ անհատ հանդես չի գալիս, ապա անհատների մուտացիա տեղի կունենա ՝ նորերը գեներացնելու համար:

Դուք կարող եք գտնել կոդը GitHub- ում ՝

Քայլ 3: Ինչպե՞ս վարժեցնել այն:

Սա բարդ մասն է: Properlyիշտ մարզվելու համար հարկավոր է այն «վերագործարկել» ամեն վազքից հետո: Սա նշանակում է, որ ամեն անգամ այն պետք է դնես նույն դիրքում:

Ես մի քանի ստուգման կետ եմ տեղադրել ծածկագրի ներսում `համոզվելու համար, որ ռոբոտը գտնվում է իր սկզբնական դիրքում:

Այսպիսով, հավասարեցրեք ռոբոտը և թող աշխատի:

Այն ստուգում է 4 անհատների, այնուհետև ընտրում է լավագույն 2 -ին ՝ ծնողներ լինելու համար: Ամենավատը նորածիններով փոխարինելուց հետո այն տպում է անհատների կատարողականի վերաբերյալ որոշ տվյալներ: Այն նաև տպում է 50x50 զանգվածը: Խելամիտ է սա պատճենել Excel թերթիկի կամ նմանատիպի մեջ: (կամ մշակման ընթացքում գրեք անհրաժեշտության ծածկագիր) Եթե Dueամկետը վերակայվի (դա տեղի է ունենում տարբեր պատճառներով), ապա դուք չեք կորցնի ձեր ուսուցման աշխատանքը: Դուք կարող եք պատճենել/տեղադրեք զանգվածը ծածկագրի մեջ և շարունակել մարզվելը, եթե մնացել եք:

Իմ ռոբոտը սովորեց սողալ մի քանի ժամից: Ներբեռնեք տեսանյութը ՝ այն սողալու համար: Այն չգնաց այն ուղղությամբ, ինչ ես կարծում էի:

Փորձեք նաև տարբեր հարկեր: Իմ ռոբոտը լավագույնս ցուցադրեց նեյլոնե գորգի վրա:

Հնարավոր բարելավումներ.

1. Ավելի լավ կլիներ ունենալ առանձին նանո ՝ PS/2 մկնիկը կարդալու համար, իսկ սերիայի միջոցով տեղափոխված հեռավորությունը նանոյին ուղարկել: Իմ PS/2 մկնիկի ընթերցումը մի փոքր ցնցված է: Սա է պատճառը, որ մկնիկը կարդում/մաքրում է ծածկագրի հատվածները:

2. ինչ -որ փորձարկման սարք, որը ռոբոտին հետ էր քաշում իր սկզբնական դիրքը, կարագացներ ուսուցումը:

3. Կարծում եմ, որ իմաստուն է այն վարժեցնել մի փոքր ավելի դանդաղ, քան ես: Դանդաղ ուսուցումը վստահեցնում է, որ այն վերապատրաստվում է «ճիշտ ուղղությամբ»: Մի քանի փորձարկումների միջին կատարումը կարող էր հնարավոր լինել:

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