Բովանդակություն:
- Քայլ 1: Պահանջներ
- Քայլ 2: Սարքաշարի կառուցում
- Քայլ 3. Softwareրագրակազմը, որը ստիպում է ռոբոտին շարժվել
- Քայլ 4. Մարդու շարժը ճանաչելու ծրագրակազմ
- Քայլ 5: Լույսեր, տեսախցիկ, գործողություն:
- Քայլ 6: Ինչպես ձեռք բերել ծրագրակազմ
Video: LEGO և Raspberry Pi- ով պատրաստված շախմատային ռոբոտ ՝ 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Amazարմացրեք ձեր ընկերներին այս շախմատային ռոբոտի միջոցով:
Շատ դժվար չէ կառուցել, եթե նախկինում պատրաստել եք LEGO ռոբոտներ և եթե ունեք համակարգչային ծրագրավորման և Linux- ի առնվազն տարրական գիտելիքներ:
Ռոբոտը կատարում է իր սեփական քայլերը և օգտագործում է տեսողական ճանաչումը `որոշելու համար, թե ով է մարդու խաղը:
Այս ռոբոտի վեպերից մեկը շարժման ճանաչման ծածկագիրն է: Տեսողության այս ծածկագիրը կարող է օգտագործվել նաև շատ այլ եղանակներով կառուցված շախմատային ռոբոտների համար (օրինակ ՝ իմ ChessRobot- ը օգտագործելով Lynxmotion ռոբոտային թևը):
Ոչ մի հատուկ շախմատի տախտակ, եղեգի անջատիչ կամ ինչ որ պահանջվում է (քանի որ մարդու քայլը որոշվում է տեսողական ճանաչմամբ):
Իմ կոդը հասանելի է անձնական օգտագործման համար:
Քայլ 1: Պահանջներ
Ամբողջ ծածկագիրը գրված է Python- ում, որը, ի թիվս այլ բաների, կաշխատի Raspberry Pi- ով:
Raspberry Pi- ն վարկային քարտի չափի համակարգիչ է, որը կարող է միացվել էկրանի և ստեղնաշարի հետ: Դա էժան (մոտ $ 40), ունակ փոքր համակարգիչ է, որը կարող է օգտագործվել էլեկտրոնիկայի նախագծերում և ռոբոտաշինությունում, և այն շատ բաների համար, ինչ անում է ձեր աշխատասեղանը:
Իմ ռոբոտը օգտագործում է Raspberry Pi և Lego: RPi- ի և Lego Mindstorms EV3 շարժիչների և տվիչների միջև ապարատային ինտերֆեյսը տրամադրվում է BrickPi3- ի կողմից Dexter Industries- ից:
Lego- ի կառուցվածքը հիմնված է «Չարլի շախմատային ռոբոտի» վրա, Դարուս Հադիի կողմից, իմ կողմից փոփոխված, ներառյալ RPi- ի օգտագործման ռեժիմներ, այլ ոչ թե Lego Mindstorms պրոցեսոր: Օգտագործվում են Lego Mindstorms EV3 շարժիչներ և տվիչներ:
Ձեզ նույնպես պետք է սեղան, տեսախցիկ, լուսավորություն, ստեղնաշար, էկրան և մատնանշող սարք (օրինակ ՝ մկնիկ):
Եվ, իհարկե, շախմատի խաղաքարեր և տախտակ:
Այս բոլոր բաները ես ավելի մանրամասն նկարագրում եմ հետագա քայլերում:
Քայլ 2: Սարքաշարի կառուցում
Ինչպես արդեն նշեցի, տեսողության կոդի սիրտը կաշխատի տարբեր կառուցվածքներով:
Ես իմ ռոբոտին հիմնեցի Դարուս Հադիի «Չարլի շախմատային ռոբոտը» (EV3 տարբերակ) վրա, այդ էջի տեղեկատվությունը ասում է, թե ինչպես ստանալ կառուցման հրահանգները: Մասերի ցանկը ՝ այստեղ:
Ես փոխեցի ռոբոտը մի քանի եղանակով:
1. Գրավողը: Սա ինձ մոտ չաշխատեց: Դարպասները սահեցին, ուստի ես դա ավելացնելու համար ավելացրեցի Լեգոյի լրացուցիչ կտորներ: Եվ երբ կռունկը իջեցվում էր, այն հաճախ խցանում էր, ուստի ես դա ավելացնելու համար ավելացրեցի Watt- ի կապը:
Վերևում գործող գրավիչն է ՝ ցույց տալով փոփոխված կապը:
2. Սկզբնական կառուցվածքում օգտագործվում է Lego Mindstorms EV3 պրոցեսորը, բայց ես օգտագործում եմ Raspberry Pi- ն, ինչը հեշտացնում է Python- ի օգտագործումը:
3. Ես օգտագործում եմ Raspberry Pi 3 Model B- ն:
4. RPi- ն Lego- ին միացնելու համար ես օգտագործում եմ BrickPi3 Dexter Industries- ից: BrickPi- ն ամրացվում է Raspberry Pi- ին և միասին դրանք փոխարինում են LEGO Mindstorms NXT կամ EV3 Brick- ին:
Երբ ունեք Lego Digital Designer ֆայլը, ապա LEGO կտորներ ստանալու հարց է առաջանում: Դուք կարող եք աղյուսներ ստանալ անմիջապես LEGO խանութից, և սա դրանք ձեռք բերելու ամենաէժան տարբերակն է: Այնուամենայնիվ, նրանք չեն ունենա այն ամենը, ինչ ձեզ հարկավոր է, և աղյուսների ժամանումը կարող է տևել մի քանի շաբաթ կամ ավելի:
Կարող եք նաև օգտագործել Rebrickable ՝ հաշիվ բացել, վերբեռնել LDD ֆայլը և դրանից ստանալ վաճառողների ցուցակ:
Մեկ այլ լավ աղբյուր է Bricklink- ը:
Քայլ 3. Softwareրագրակազմը, որը ստիպում է ռոբոտին շարժվել
Ամբողջ ծածկագիրը գրված է Python 2 -ում:
- Dexter Industries- ը կոդ է մատակարարում ՝ աջակցելու EV3 շարժիչները և այլն: Սա գալիս է BrickPi3- ի հետ:
- Ես տրամադրում եմ ծածկագիրը, որպեսզի շարժիչները շարժվեն այնպես, որ շարժվեն շախմատի խաղաքարերը:
- Շախմատային շարժիչը Stockfish- ն է, որը կարող է հաղթել ցանկացած մարդու: «Ստոկֆիշը աշխարհի ամենաուժեղ շախմատային շարժիչներից մեկն է: Այն նաև շատ ավելի ուժեղ է, քան շախմատի լավագույն մարդկային գրոսմայստերները»:
- Շախմատային շարժիչ վարելու, վավերացնելու, որ քայլը վավեր է և այլն, ChessBoard.py- ն է:
- Ես դրան միանալու համար օգտագործում եմ https://chess.fortherapy.co.uk- ի որոշ ծածկագիր:
- Իմ ծածկագիրը (վերը նշված 2 -ում) այնուհետև դրան միանում է:
Քայլ 4. Մարդու շարժը ճանաչելու ծրագրակազմ
Երբ խաղացողը կատարել է իր քայլը, տեսախցիկը լուսանկարում է: Կոդը կտրում և պտտում է այն այնպես, որ շախմատային տախտակը ճշգրիտ համապատասխանի հաջորդ պատկերին: Շախմատի տախտակները պետք է քառակուսի տեսք ունենան: Պատկերում աղավաղում կա, քանի որ տախտակի եզրերը տեսախցիկից ավելի հեռու են, քան տախտակի կենտրոնը: Այնուամենայնիվ, տեսախցիկը բավականաչափ հեռու է, որպեսզի կտրելուց հետո այս խեղաթյուրումն էական չլինի: Քանի որ ռոբոտը գիտի, թե որտեղ են գտնվում բոլոր կտորները համակարգչի տեղաշարժից հետո, ապա այն, ինչ պետք է անել մարդու կողմից քայլ կատարելուց հետո, այն է, որ ծածկագիրը կարողանա տարբերել հետևյալ երեք դեպքերի միջև.
- Դատարկ հրապարակ
- Սև կտոր ցանկացած տեսակի
- Pieceանկացած տեսակի սպիտակ կտոր:
Սա ընդգրկում է բոլոր դեպքերը, ներառյալ castling- ը և en passant- ը:
Ռոբոտը ստուգում է, որ մարդու քայլը ճիշտ է, և տեղեկացնում է նրանց, եթե դա այդպես չէ: Միակ դեպքը, որը չի լուսաբանվում, այն է, երբ մարդ խաղացողը գրավ է դնում ոչ թագուհու վրա: Հետո խաղացողը պետք է ռոբոտին ասի, թե որն է գովազդվող կտորը:
Այժմ մենք կարող ենք պատկերը դիտարկել շախմատի տախտակի քառակուսիների առումով:
Տախտակի սկզբնական տեղադրման վրա մենք գիտենք, թե որտեղ են բոլոր սպիտակ և սև կտորները և որտեղ են դատարկ քառակուսիները:
Դատարկ քառակուսիների գույնը շատ ավելի քիչ է, քան զբաղեցրած քառակուսիները: Մենք հաշվարկում ենք յուրաքանչյուր քառակուսի RGB- ի երեք գույներից յուրաքանչյուրի համար ստանդարտ շեղումը իր բոլոր պիքսելներով (բացառությամբ քառակուսի սահմանների մոտ գտնվողների): Emptyանկացած դատարկ քառակուսի առավելագույն ստանդարտ շեղումը շատ ավելի փոքր է, քան ցանկացած զբաղեցրած քառակուսիի համար սահմանված ստանդարտ շեղումը, և դա թույլ է տալիս մեզ, խաղացողի հաջորդ քայլից հետո, որոշել, թե որ հրապարակներն են դատարկ:
Որոշելով դատարկ և զբաղեցված քառակուսիների շեմի արժեքը, այժմ մենք պետք է որոշենք կտորի գույնը զբաղված քառակուսիների համար.
Սկզբնական տախտակի վրա մենք հաշվարկում ենք յուրաքանչյուր սպիտակ քառակուսիի համար, R- ի, G- ի, B- ի յուրաքանչյուրի համար, նրա պիքսելների միջին (միջին) արժեքը (բացի քառակուսի սահմաններին մոտ գտնվողներից): Meansանկացած սպիտակ քառակուսի համար այդ միջոցների նվազագույնը մեծ է ցանկացած սև քառակուսի միջոցի առավելագույնից, ուստի մենք կարող ենք որոշել կտորների գույնը զբաղեցրած քառակուսիների համար: Ինչպես արդեն նշվեց, սա այն ամենն է, ինչ մենք պետք է անենք, որպեսզի որոշենք, թե որն է եղել խաղացողի քայլը:
Ալգորիթմներն ավելի լավ են աշխատում, եթե շախմատային տախտակն ունի գույն, որը շատ հեռու է խաղաքարերի գույնից: Իմ ռոբոտում խաղաքարերը սպիտակ են և շագանակագույն, իսկ շախմատային տախտակը ձեռքով պատրաստված է քարտով և բաց կանաչ է ՝ փոքր տարբերությամբ «սև» և «սպիտակ» քառակուսիների միջև:
Խմբագրել 17 հոկտեմբեր 2018. Այժմ ես ներկել եմ դարչնագույն կտորները սև, ինչը ստիպում է ալգորիթմին աշխատել ավելի փոփոխական լուսավորության պայմաններում:
Քայլ 5: Լույսեր, տեսախցիկ, գործողություն:
Լույսեր
Ձեզ հարկավոր է լույսի հավասար աղբյուր, որը տեղադրված է տախտակի վրա: Ես օգտագործում եմ այս մեկը, որն իսկապես էժան է, amazon.co.uk- ից - և անկասկած, նման բան կա նաև amazon.com- ում: Սենյակի լույսերն անջատված էին:
Թարմացում. Ես այժմ ունեմ երկու լույս, ավելի լուսավոր աղբյուր տալու համար
Տեսախցիկ
Անկասկած, դուք կարող եք օգտագործել Raspberry Pi ֆոտոխցիկի հատուկ մոդուլը (երկար մալուխով), բայց ես օգտագործում եմ USB տեսախցիկ `« Logitech 960-001064 C525 HD վեբ -տեսախցիկ - սև », որն աշխատում է RPi- ով: Դուք պետք է համոզվեք, որ տեսախցիկը չի շարժվում տախտակի նկատմամբ `աշտարակ կառուցելով կամ այն ամուր ամրացնելու տեղ ունենալով: Երկրաչափական աղավաղումը նվազեցնելու համար տեսախցիկը պետք է բավականին բարձր լինի տախտակից բարձր: Ես ունեմ իմ տեսախցիկը տախտակից 58 սմ բարձրության վրա:
Թարմացում. Ես այժմ նախընտրում եմ HP Webcam HD 2300- ը, քանի որ այն ավելի հուսալի եմ համարում:
Սեղան
Ձեզ անհրաժեշտ է ամուր մեկը: Ես գնել եմ այս մեկը: Դրա վերևում դուք կարող եք տեսնել, որ ես ունեմ MDF- ի քառակուսին, որոշ իրեր կարող են կանգնեցնել ռոբոտին ցատկելը, երբ տրոլեյբուսը շարժվում է: Լավ գաղափար է, որ տեսախցիկը տախտակի վրա նույն դիրքում պահի:
Ստեղնաշար
RPi- ին անհրաժեշտ է USB ստեղնաշար իր առաջին տեղադրման համար: Եվ ես դա օգտագործում եմ ծածկագիրը մշակելու համար: Միակ բանը, որի համար ռոբոտին անհրաժեշտ է ստեղնաշար, ծրագիրը սկսելն է և շախմատային ժամացույցին հարվածելը մոդելավորելը: Ես ստացել եմ սրանցից մեկը: Բայց իսկապես, ձեզ հարկավոր է միայն մկնիկ կամ RPi- ին միացված GPIO կոճակ
Displayուցադրել
Developmentարգացման համար ես օգտագործում եմ մեծ էկրան, բայց միակ բանը, որ անհրաժեշտ է ռոբոտին, դա ձեզ ասելն է, որ ձեր քայլը անվավեր է, ստուգեք և այլն: Ես ստացա դրանցից մեկը, որը հասանելի է նաև amazon.com կայքում:
Բայց ցուցադրում պահանջելու փոխարեն, ռոբոտը կխոսի այս արտահայտությունները: Ես դա արել եմ ՝ տեքստը խոսքի վերածելով ՝ օգտագործելով այստեղ նկարագրված ծածկագիրը և կցելով փոքր բարձրախոս: (Ես օգտագործում եմ «Համբուրգերի մինի բարձրախոս»):
Ռոբոտի արտահայտություններն ասում են.
- Ստուգեք!
- Չամմ
- Անվավեր քայլ
- Դուք հաղթեցիք!
- Փակուղի
- Նկարեք եռակի կրկնությամբ
- Ոչ ոքի 50 քայլով կանոն
Շախմատի հիսուն քայլի կանոնը սահմանում է, որ խաղացողը կարող է ոչ-ոքիի դիմել, եթե վերջին հիսուն քայլում գրավում չի կատարվել, և գրավ չի տեղափոխվել (այդ նպատակով «քայլը» բաղկացած է այն խաղացողից, որն ավարտում է իր հերթը, որին հաջորդում է. հակառակորդն ավարտում է իր հերթը):
Դուք կարող եք լսել ռոբոտին, որը խոսում է վերևում «հիմարի կողակից» կարճ տեսանյութում (եթե ձեր ձայնը բարձրացնեք բավականին բարձր):
Քայլ 6: Ինչպես ձեռք բերել ծրագրակազմ
1. Թռչնամիս
Եթե Raspbian- ը գործարկում եք ձեր RPi- ով, կարող եք օգտագործել Stockfish 7 շարժիչը `անվճար է: Պարզապես գործարկեք.
sudo apt-get տեղադրել stockfish
2. ChessBoard.py
Ստացեք այստեղ:
3. Կոդ ՝ հիմնված
Գալիս է իմ ծածկագրով:
4. Python- ի վարորդներ BrickPi3- ի համար.
Ստացեք դրանք այստեղ:
5. Իմ կոդը, որը վկայակոչում է վերը նշված բոլոր ծածկագրերը և որոնք ստիպում են ռոբոտին կատարել շարժումները, և իմ տեսողության կոդը:
Ստացեք սա ինձանից ՝ մեկնաբանություն տեղադրելով, և ես կպատասխանեմ:
Խորհուրդ ենք տալիս:
MIA-1 բաց կոդով առաջադեմ ձեռքով պատրաստված մարդանման ռոբոտ: 4 քայլ
MIA-1 բաց կոդով առաջադեմ ձեռքով պատրաստված մարդանման ռոբոտ: Բարև բոլորին, այսօր ես ցույց կտամ, թե ինչպես եմ պատրաստել MIA-1 ռոբոտը, որը ոչ միայն առաջադեմ և եզակի է, այլև բաց կոդով և կարող է պատրաստվել առանց 3D տպագրության: Այո, հասկացաք, այս ռոբոտը ամբողջությամբ ձեռքի աշխատանք է: Իսկ բաց կոդ նշանակում է ՝ դուք ստանում եք
Պարզ Arduino շախմատային ժամացույց ՝ 5 քայլ
Պարզ Arduino շախմատային ժամացույց. Երբ մտածում էի Arduino- ի հետ շախմատային ժամացույց անելու մասին, նպատակն էր կառուցել պարզ ծրագրավորման միջոցով `առանց օգտագործման դասի և աշխատել AVR գրանցամատյանով: Օգտագործված բազան Arduino Reference- ն էր: Ամենադժվարը ժամաչափը շահարկելն էր ՝ օգտագործելով միայն
Էլեկտրոնային շախմատային տախտակի 4x4 ցուցադրում/ Arduino Mega + RFID Reader + Hall-effect սենսորներով. 7 քայլ
Էլեկտրոնային շախմատային տախտակի 4x4 ցուցադրություն/ Arduino Mega + RFID Reader + Hall-effect սենսորներով. Բարև ձեզ, ես Թահիր Միրիևն եմ, 2018 թ. Ավարտել եմ Մերձավոր Արևելքի տեխնիկական համալսարանը, Անկարա/ Թուրքիա: Ես մասնագիտացել եմ Կիրառական մաթեմատիկա առարկայի մեջ, բայց ես միշտ սիրում էի իրեր պատրաստել, հատկապես, երբ այն ներառում էր էլեկտրոնիկայի, դիզայնի և ծրագրավորման ձեռքի աշխատանք:
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ ՝ 8 քայլ
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ. Մենք կառուցել ենք համակցված հավասարակշռող և եռանիվ ռոբոտ `կրթական օգտագործման համար դպրոցներում և դպրոցից հետո կրթական ծրագրերում: Ռոբոտը հիմնված է Arduino Uno- ի, սովորական վահանի վրա (շինարարության բոլոր մանրամասները տրամադրված են), Li Ion մարտկոցի տուփով (բոլորը կառուցված են
BasketBot - Պլաստիկ զամբյուղով պատրաստված ռոբոտ -մեքենա ՝ 12 քայլ
BasketBot - պլաստիկ զամբյուղով պատրաստված ռոբոտ -մեքենա. Թե փոքր կանաչ ուղղանկյուն զամբյուղը, թե ավելի մեծ կարմիր կլորացված զամբյուղը վերածվում են BasketBot- ի: Կառուցվելուց հետո ro