Mundarija:
- 1 -qadam: talablar
- 2 -qadam: Uskuna tuzilishi
- 3 -qadam: Robotni harakatga keltiruvchi dastur
- 4 -qadam: Inson harakatini aniqlash uchun dasturiy ta'minot
- 5 -qadam: chiroqlar, kamera, harakat
- 6 -qadam: dasturiy ta'minotni qanday olish kerak
Video: LEGO va Raspberry Pi -dan tayyorlangan shaxmat robot: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Bu shaxmat robot bilan do'stlaringizni hayratda qoldiring!
Agar siz ilgari LEGO robotlarini yaratgan bo'lsangiz va kompyuter dasturlash va Linux haqida hech bo'lmaganda boshlang'ich ma'lumotga ega bo'lsangiz, qurish qiyin emas.
Robot o'z harakatlarini qiladi va o'yinchining harakatini aniqlash uchun vizual tanishni ishlatadi.
Bu robotning yangiliklaridan biri bu harakatni aniqlash kodidir. Bu ko'rish kodi boshqa yo'llar bilan qurilgan shaxmat robotlari uchun ham ishlatilishi mumkin (masalan, mening ChessRobot Lynxmotion robot qo'li yordamida).
Maxsus shaxmat taxtasi, qamish kalitlari yoki boshqa narsalar kerak emas (chunki odamning harakati vizual tanib olish orqali aniqlanadi).
Mening kodim shaxsiy foydalanish uchun mavjud.
1 -qadam: talablar
Barcha kod Python -da yozilgan, u boshqa narsalar qatorida Raspberry Pi -da ishlaydi.
Raspberry Pi-bu kredit karta o'lchamidagi kompyuter, uni ekran va klaviaturaga ulash mumkin. Bu arzon (taxminan 40 dollar), qobiliyatli kichik kompyuter, uni elektronika va robototexnika sohasida va ish stolida bajariladigan ko'p narsalarda ishlatish mumkin.
Mening robotim Raspberry Pi va Lego -dan foydalanadi. RPi va Lego Mindstorms EV3 dvigatellari va datchiklari orasidagi apparat interfeysi Dexter Industriesdan BrickPi3 tomonidan ta'minlangan.
Lego qurilishi, men o'zgartirgan Darrous Xadining "Charli shaxmat roboti" ga asoslangan, shu jumladan Lego Mindstorms protsessori emas, balki RPi -ni ishlatish usullari. Lego Mindstorms EV3 dvigatellari va datchiklari ishlatiladi.
Shuningdek, sizga stol, kamera, yorug'lik, klaviatura, ekran va ko'rsatgich qurilmasi (masalan, sichqoncha) kerak bo'ladi.
Va, albatta, shaxmat bo'laklari va taxta.
Men bularning barchasini keyingi bosqichlarda batafsilroq tasvirlab beraman.
2 -qadam: Uskuna tuzilishi
Yuqorida aytib o'tganimdek, ko'rish kodining yuragi turli xil tuzilmalar bilan ishlaydi.
Men o'z robotimni Darrous Xadining "Charli shaxmat robotiga" (EV3 versiyasi) asos qilib oldim, bu sahifadagi ma'lumotlar qurilish bo'yicha ko'rsatmalarni qanday olish kerakligini aytadi. Qismlarning ro'yxati bu erda.
Men robotni bir necha usul bilan o'zgartirdim.
1. tortuvchi. Bu men uchun ishlamadi. Vites siljidi, shuning uchun men bunga yo'l qo'ymaslik uchun qo'shimcha Lego qismlarini qo'shdim. Va keyin kran tushirilganda, u tez -tez tiqilib qolardi, shuning uchun men bunga yo'l qo'ymaslik uchun Vatt bilan bog'lanishni qo'shdim.
Yuqorida - o'zgartirilgan bog'lanishni ko'rsatadigan tutqich.
2. Asl tuzilish Lego Mindstorms EV3 protsessoridan foydalanadi, lekin men Raspberry Pi -dan foydalanaman, bu Python -dan foydalanishni osonlashtiradi.
3. Men Raspberry Pi 3 Model B dan foydalanaman.
4. RPi -ni Lego -ga ulash uchun men Dexter Industries -dan BrickPi3 -dan foydalanaman. BrickPi Raspberry Pi -ga ulanadi va birgalikda LEGO Mindstorms NXT yoki EV3 Brick -ni almashtiradi.
Agar sizda Lego Digital Designer fayli bo'lsa, LEGO qismlarini olish masalasi paydo bo'ladi. Siz g'ishtni to'g'ridan -to'g'ri LEGO do'konidan olishingiz mumkin va bu ularni olishning eng arzon usuli. Biroq, ular sizga kerak bo'lgan hamma narsaga ega bo'lmaydi va g'ishtni olish uchun bir necha hafta yoki undan ko'proq vaqt kerak bo'ladi.
Siz shuningdek Rebrickable -dan foydalanishingiz mumkin: hisob oching, LDD faylini yuklang va undan sotuvchilar ro'yxatini oling.
Yana bir yaxshi manba - Bricklink.
3 -qadam: Robotni harakatga keltiruvchi dastur
Barcha kod Python 2 da yozilgan.
- Dexter Industries EV3 dvigatellari va boshqalarni harakatlantirish uchun kodni etkazib beradi. Bu BrickPi3 bilan birga keladi.
- Men dvigatellarni shaxmat bo'laklarini siljitadigan qilib harakatlantiradigan kodni beraman!
- Shaxmat dvigateli - Stockfish - har qanday odamni mag'lub eta oladi! "Stockfish - dunyodagi eng kuchli shaxmat dvigatellaridan biri. U, shuningdek, eng yaxshi inson shaxmat grossmeysterlariga qaraganda ancha kuchli".
- Shaxmat dvigatelini boshqaradigan kod, harakatning to'g'riligini tasdiqlash va boshqalar ChessBoard.py
- Men bu bilan bog'lanish uchun https://chess.fortherapy.co.uk saytidan ba'zi kodlardan foydalanaman.
- Mening kodim (yuqoridagi 2 -da) keyin u bilan interfeys!
4 -qadam: Inson harakatini aniqlash uchun dasturiy ta'minot
O'yinchi harakatdan so'ng, kamera suratga tushadi. Shaxmat taxtasi keyingi tasvirga to'liq mos tushishi uchun kod uni aylantiradi va aylantiradi. Shaxmat taxtasi kvadratlari to'rtburchaklar ko'rinishi kerak! Rasmda buzilish mavjud, chunki taxtaning chekkalari kameraning markaziga qaraganda ancha uzoqda. Biroq, kamera etarlicha uzoqda, shuning uchun kesishdan keyin bu buzilish ahamiyatli bo'lmaydi. Chunki robot kompyuterning harakatlanishidan keyin hamma bo'laklarning qaerdaligini biladi, shuning uchun odam harakat qilgandan keyingina kod quyidagi uchta holatni farqlay oladi.
- Bo'sh kvadrat
- Har qanday turdagi qora bo'lak
- Har qanday turdagi oq bo'lak.
Bu barcha holatlarni o'z ichiga oladi, shu jumladan kasting va o'tishni ham.
Robot odamning harakatlari to'g'riligini tekshiradi va agar yo'q bo'lsa, ularga xabar beradi! Qo'llanilmaydigan yagona holat-bu o'yinchi, garovga qo'yilgan malika bo'lmagan odam. Keyin o'yinchi robotga targ'ib qilingan buyum nima ekanligini aytishi kerak.
Endi biz tasvirni shaxmat taxtasi kvadratlari nuqtai nazaridan ko'rib chiqishimiz mumkin.
Dastlabki taxtada biz oq va qora bo'laklar qaerda va bo'sh kvadratlar qaerda ekanligini bilamiz.
Bo'sh kvadratlar egallagan kvadratlarga qaraganda rang jihatidan kamroq farq qiladi. Biz har bir kvadrat uchun har bir kvadrat uchun uchta RGB rangining har birining standart og'ishini hisoblaymiz (kvadrat chegaralariga yaqin bo'lmaganlardan tashqari). Har qanday bo'sh kvadrat uchun maksimal standart og'ish har qanday ishg'ol qilingan kvadrat uchun minimal standart og'ishdan ancha past bo'ladi va bu bizga o'yinchining keyingi harakatidan keyin qaysi kvadratlar bo'sh ekanligini aniqlashga imkon beradi.
Bo'sh va bo'sh kvadratlar uchun chegara qiymatini aniqlab, endi bo'sh joylar uchun bo'lak rangini aniqlashimiz kerak:
Dastlabki taxtada biz har bir oq kvadrat uchun, har bir R, G, B uchun, uning piksellarining o'rtacha (o'rtacha) qiymatini hisoblaymiz (kvadrat chegaralariga yaqin bo'lmaganlardan tashqari). Har qanday oq kvadrat uchun ushbu vositalarning minimal qiymati har qanday qora kvadratdagi vositalarning maksimal qiymatidan kattaroqdir va shuning uchun biz egallab olingan kvadratlar uchun bo'lak rangini aniqlashimiz mumkin. Yuqorida aytib o'tilganidek, bu inson o'yinchisining harakatlari nima ekanligini aniqlash uchun qilishimiz kerak bo'lgan narsa.
Agar shaxmat taxtasi bo'laklarning rangidan ancha uzoqda bo'lsa, algoritmlar eng yaxshi ishlaydi! Mening robotimdagi bo'laklar oq va jigarrang, shaxmat taxtasi qo'lda kartochkada, och yashil rangda, "qora" va "oq" kvadratlar o'rtasida unchalik farq yo'q.
2018 yil 17 -oktabrni tahrirlash: Men hozir jigarrang bo'laklarni mat rangga bo'yadim, bu esa algoritmni yanada o'zgaruvchan yorug'lik sharoitida ishlashiga olib keladi.
5 -qadam: chiroqlar, kamera, harakat
Chiroqlar
Sizga tekis nur manbai kerak. Men Amazon -dan juda arzon bo'lganini ishlataman - va shubhasiz, amazon.com -da shunga o'xshash narsa bor. Xona chiroqlari o'chirilganida.
Yangilash: Menda ikkita yorug'lik bor, yorug'lik manbasini yanada tekisroq berish uchun
Kamera
Shubhasiz, siz maxsus Raspberry Pi kamera modulidan foydalanishingiz mumkin (uzun simi bilan), lekin men USB kameradan foydalanaman - "Logitech 960-001064 C525 HD veb -kamerasi - Qora" - bu RPi bilan ishlaydi. Siz minora qurish yoki uni mahkam o'rnashtiradigan joyga ega bo'lish orqali kameraning taxtaga nisbatan harakat qilmasligini ta'minlashingiz kerak. Geometrik buzilishlarni kamaytirish uchun kamera taxtadan ancha baland bo'lishi kerak. Mening kameram taxtadan 58 sm balandlikda.
Yangilash: Men hozir HP veb -kamerasi HD 2300 -ni afzal ko'raman, chunki bu ishonchliroq.
Jadval
Sizga mustahkam tayanch kerak. Men buni sotib oldim. Buning ustiga, menda MDF to'rtburchagi borligini ko'rishingiz mumkin, unda trolleybus harakatlanayotganda robotning sakrab o'tishini to'xtatadigan narsalar bor. Kamerani taxtada bir xil holatda ushlab turish yaxshidir!
Klaviatura
Birinchi sozlash uchun RPi USB klaviaturasiga muhtoj. Va men buni kodni ishlab chiqish uchun ishlataman. Robotga klaviatura kerak bo'lgan yagona narsa - dasturni ishga tushirish va shaxmat soatiga urishni taqlid qilish. Men shulardan birini oldim. Haqiqatan ham, sizga faqat sichqoncha yoki RPi-ga ulangan GPIO tugmasi kerak
Ko'rsatish
Rivojlanish uchun men katta ekran ishlataman, lekin robotga kerak bo'lgan yagona narsa - bu sizning harakatingiz noto'g'ri ekanligini tekshirish, tekshirish va h.k. Men ulardan birini oldim.
Ammo robot ko'rsatishni talab qilish o'rniga, bu iboralarni gapiradi! Men buni bu erda tasvirlangan kod yordamida matnni nutqqa aylantirish va kichik dinamikni biriktirish orqali qildim. (Men "Gamburger mini karnay" dan foydalanaman).
Robotning so'zlari:
- Tekshiring!
- Shaxmatchi
- Noto‘g‘ri harakat
- Yutdingiz!
- To'xtab qolish
- Uch marta takrorlash bilan chizish
- 50 harakat bilan chizish qoidasi
Shaxmatning ellik harakat qoidasi, agar o'yinchi oxirgi ellik harakatda qo'lga olinmagan bo'lsa va hech qanday piyoda qimirlanmagan bo'lsa, o'yinchi durangga da'vo qilishi mumkin (shu maqsadda "harakat" o'z navbatini tugatgan o'yinchi va keyin raqib o'z navbatini yakunlaydi).
Siz robotning "ahmoqning turmush o'rtog'i" nomli qisqa videoda gapirayotganini eshitishingiz mumkin (agar siz ovozingizni baland ko'tarsangiz)!
6 -qadam: dasturiy ta'minotni qanday olish kerak
1. Baliq
Agar siz Raspbian -ni RPi -da ishlatsangiz, Stockfish 7 dvigatelidan foydalanishingiz mumkin - bu bepul. Yugur:
sudo apt-get stockfish-ni o'rnating
2. ChessBoard.py
Buni bu erdan oling.
3. Kod https://chess.fortherapy.co.uk/home/a-wooden-chess… ga asoslangan.
Mening kodim bilan birga keladi.
4. BrickPi3 uchun Python drayverlari:
Bularni bu erdan oling.
5. Yuqoridagi barcha kodni chaqiradigan va robotni harakatlarni bajarishga majburlaydigan mening kodim va ko'rish kodim.
Buni mendan izoh qoldirib oling, men javob beraman.
Tavsiya:
Shaxmat roboti Raspberry Pi Lynxmotion AL5D qo'l: 6 qadam
Shaxmat roboti Raspberry Pi Lynxmotion AL5D Arm: Bu shaxmat robotini yarating va u hammani mag'lubiyatga uchrayotganini ko'ring! Agar qo'lni qanday qurish bo'yicha ko'rsatmalarga amal qilsangiz, va agar siz kompyuter dasturlash va Linux haqida hech bo'lmaganda boshlang'ich bilimga ega bo'lsangiz, qurish juda oson. . Odam oq rangda o'ynayapti
Cho'ntak shaxmat: 4 qadam
Cho'ntak shaxmat: bu shaxmat! Sizning cho'ntagingizda. Ushbu loyiha ilon, pac-man, tetris va hatto shaxmat kabi kichik o'yinlarni boshqaradigan kichik qurilma yaratishga qaratilgan
Shaxmat so'zlari: 7 qadam (rasmlar bilan)
Og'zaki so'zlar shaxmat donalari: Men o'z ovozimdan foydalanib, juda shaxsiy shaxmat buyumlarini yasadim. Har bir bo'lak o'z nomini aytayotganda qilgan ovozim shakliga asoslangan. Bu to'liq to'plam emas, chunki boshqa tomon ham xuddi shunday bo'lishi kerak, lekin raqibimning ovozi bilan.
Oddiy Arduino shaxmat soati: 5 qadam
Oddiy Arduino shaxmat soati: Men Arduino bilan shaxmat soati qilishni o'ylaganimda, maqsad oddiy dasturlash yordamida sinfsiz va AVR registri bilan ishlash edi. Amaldagi baza Arduino Reference edi. Eng qiyin narsa - taymerni faqat … yordamida o'zgartirish
Raqamli shaxmat - shaxmat o'yiningizni onlayn kuzatib boring: 5 qadam
Raqamli shaxmat - shaxmat o'yiningizni onlayn kuzatib boring: Men yoshligimdan ko'p shaxmat o'ynaganman va Internetda shaxmat o'ynash uchun juda ko'p veb -saytlar mavjud bo'lgani uchun men hech qachon veb -sayt topmaganman. bu siz o'ynayotgan shaxmat o'yiningizni kuzatib boradi