Mundarija:

LEGO va Raspberry Pi -dan tayyorlangan shaxmat robot: 6 qadam
LEGO va Raspberry Pi -dan tayyorlangan shaxmat robot: 6 qadam

Video: LEGO va Raspberry Pi -dan tayyorlangan shaxmat robot: 6 qadam

Video: LEGO va Raspberry Pi -dan tayyorlangan shaxmat robot: 6 qadam
Video: Lego robot arm, controlled by Raspberry Pi, playing happy birthday on iPad xylophone 2024, Noyabr
Anonim
Image
Image

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

Chiroqlar, kamera, harakat!
Chiroqlar, kamera, harakat!

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

Image
Image

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.

  1. Dexter Industries EV3 dvigatellari va boshqalarni harakatlantirish uchun kodni etkazib beradi. Bu BrickPi3 bilan birga keladi.
  2. Men dvigatellarni shaxmat bo'laklarini siljitadigan qilib harakatlantiradigan kodni beraman!
  3. 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".
  4. Shaxmat dvigatelini boshqaradigan kod, harakatning to'g'riligini tasdiqlash va boshqalar ChessBoard.py
  5. Men bu bilan bog'lanish uchun https://chess.fortherapy.co.uk saytidan ba'zi kodlardan foydalanaman.
  6. 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: