Mundarija:

Shaxmat roboti Raspberry Pi Lynxmotion AL5D qo'l: 6 qadam
Shaxmat roboti Raspberry Pi Lynxmotion AL5D qo'l: 6 qadam

Video: Shaxmat roboti Raspberry Pi Lynxmotion AL5D qo'l: 6 qadam

Video: Shaxmat roboti Raspberry Pi Lynxmotion AL5D qo'l: 6 qadam
Video: robotic arm playing chess 2024, Iyul
Anonim
Image
Image

Bu shaxmat robotini yarating va u hammani mag'lub etayotganini ko'ring!

Agar siz qo'lni qanday qurish bo'yicha ko'rsatmalarga amal qilsangiz va kompyuter dasturlash va Linux haqida hech bo'lmaganda boshlang'ich ma'lumotga ega bo'lsangiz, qurish juda oson.

Odam oq rangda o'ynab, harakat qiladi. Bu vizual aniqlash tizimi yordamida aniqlanadi. Keyin robot mulohaza yuritadi va keyin harakat qiladi. Va hokazo …

Ehtimol, bu robotdagi eng yangi narsa - bu harakatni aniqlash kodi. Bu ko'rish kodi boshqa yo'llar bilan qurilgan shaxmat robotlari uchun ham ishlatilishi mumkin (masalan, mening shaxmat robotim LEGO qurilgan).

Insonning harakatini ko'rish tizimi aniqlaganligi uchun shaxmat taxtasi uchun maxsus asboblar kerak emas (masalan, qamish kalitlari va boshqalar).

Mening kodim shaxsiy foydalanish uchun mavjud.

1 -qadam: talablar

Uskuna tuzilishi
Uskuna tuzilishi

Barcha kod Python -da yozilgan, u boshqa narsalar qatorida Raspberry Pi -da ishlaydi.

Raspberry Pi-Raspberry Pi jamg'armasi tomonidan ishlab chiqilgan kichik, arzon (taxminan 40 dollar) bitta taxtali kompyuter. Asl model kutilganidan ancha mashhur bo'lib ketdi, robototexnika kabi maqsadlarda sotildi

Mening robotim Raspberry Pi -dan foydalanadi va robot qo'li komplektdan qurilgan: Lynxmotion AL5D. To'plam servo boshqaruv paneli bilan birga keladi. (Men bergan havola RobotShop -ning AQShdagi saytiga tegishli; sizning saytingiz sahifalarining yuqori o'ng burchagidagi bayroqlardan birini bosing, masalan, Buyuk Britaniya).

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

Uskuna tuzilishi
Uskuna tuzilishi

Yuqorida aytib o'tganimdek, ko'rish kodining yuragi turli xil tuzilmalar bilan ishlaydi.

Ushbu qurilishda Lynxmotion, AL5D robotlashtirilgan qo'l to'plami ishlatiladi. To'plamga qo'lda motorlarni boshqarish uchun ishlatiladigan SSC-32U servo boshqaruv paneli kiradi.

Men AL5D ni tanladim, chunki qo'l bir necha marta aniq harakatlarni amalga oshirishi va chetga burilmasligi kerak. Tutqich qismlar orasiga kira olishi kerak, qo'l esa taxtaning narigi tomoniga yetishi kerak. Men hali ham quyida batafsilroq bo'lgani kabi ba'zi o'zgartirishlarni kiritishim kerak edi.

Men foydalanadigan Raspberry Pi - bu Raspberry Pi 3 Model B+. Bu USB ulanishi orqali SSC-32U kartasi bilan gaplashadi.

EDIT: Raspberry Pi 4 endi mavjud. Sizga kerak bo'ladi:

  • 15W USB-C quvvat manbai-Raspberry Pi USB-C rasmiy quvvat manbasini tavsiya qilamiz
  • Operatsion tizimni o'rnatuvchi dasturiy ta'minot NOOBS o'rnatilgan microSD karta (Raspberry Pi bilan birga oldindan yuklangan SD-kartani sotib oling yoki kartani o'zingiz yuklash uchun NOOBS-ni yuklab oling)
  • Klaviatura va sichqoncha (keyinroq qarang)
  • Raspberry Pi 4 -ning micro HDMI porti orqali displeyga ulanish uchun kabel

Menga robot qo'lini yaqinroq tutishim kerak edi, shuning uchun RobotShop -dan sotib olinadigan qo'shimcha Lynxmotion qismlari yordamida unga biroz o'zgartirish kiritdim:

1. 4,5 dyuymli naychani 6 dyuymli Lynxmotion qismi AT-04 bilan almashtirildi, mahsulot kodi RB-Lyn-115.

2. Qo'shimcha buloqlar to'plamidan foydalanishga harakat qildim, lekin quyida 3 -bandni amalga oshirganimda bir juftga qaytdim

3. Balandligi 1 dyuymli ajratuvchi-Lynxmotion qismi HUB-16, mahsulot kodi RB-Lyn-336 yordamida kengaytirildi.

4. LEGO -ning zaxira qismlari va elastik tasmalar bilan biriktirilgan zaxira ushlagichlar yordamida ushlagichning masofasi kengaytirildi (!) Bu juda yaxshi ishlaydi, chunki u bo'laklarni ko'tarishda moslashuvchanlikni ta'minlaydi.

Ushbu o'zgarishlarni o'ngdagi yuqoridagi rasmda ko'rish mumkin.

Shaxmat taxtasi ustida kamera o'rnatilgan. Bu odamning harakatini aniqlash uchun ishlatiladi.

3 -qadam: Robotni harakatga keltiruvchi dastur

Hamma kod Python 2 da yozilgan. Har xil dvigatellarni shaxmat qismlarini siljitish uchun ularni to'g'ri harakatlantirish uchun teskari kinematik kod kerak. Men Lynxmotion kutubxona kodini ishlataman, u dvigatellarni ikki o'lchovli harakatlantirishni qo'llab -quvvatlaydi va bunga o'z o'lchamim bilan 3 o'lchov, tutqich burchagi va ushlagich jag'ining harakati qo'shiladi.

Shunday qilib, bizda bo'laklarni ko'chiradigan, bo'laklarni oladigan, qal'ani qo'llab -quvvatlaydigan va hokazo kodlar mavjud.

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) keyin bu bilan interfeys!

4 -qadam: Inson harakatini tan oladigan dastur

Men buni Lego shaxmat robotim uchun ko'rsatmalarda batafsil tasvirlab berdim - shuning uchun uni bu erda takrorlashning hojati yo'q!

Mening "qora" bo'laklarim dastlab jigarrang edi, lekin men ularni mat qora rangga bo'yadim ("doska bo'yog'i" bilan), bu algoritm yorug'lik o'zgaruvchan sharoitda yaxshiroq ishlashini ta'minlaydi.

5 -qadam: Kamera, chiroqlar, klaviatura, stol, displey

Kamera, chiroqlar, klaviatura, stol, displey
Kamera, chiroqlar, klaviatura, stol, displey
Kamera, chiroqlar, klaviatura, stol, displey
Kamera, chiroqlar, klaviatura, stol, displey

Bular Lego shaxmat robotimdagi kabi, shuning uchun ularni bu erda takrorlashning hojati yo'q.

Bu safar men RPi -ga USB orqali ulanadigan, boshqa va sezilarli darajada yaxshiroq bo'lgan, Lenrui Bluetooth dinamikidan foydalandim.

Amazon.com, amazon.co.uk va boshqa savdo nuqtalarida mavjud.

Bundan tashqari, men boshqa kameradan foydalanmoqdaman - HP Webcam HD 2300, chunki oldingi kamerani ishonchli ishlashiga yo'l qo'ymadim.

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.

Algoritmlarga kameraning aniq yo'nalishi kerak. Agar sizda muammo bo'lsa, quyida izoh qoldiring. Qo'lning cheklangan chegarasi bor, shuning uchun kvadrat kattaligi 3,5 sm bo'lishi kerak.

6 -qadam: Dasturiy ta'minotni olish

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 shu erdan oling.

3. https://chess.fortherapy.co.uk/home/a-wooden-chess… ga asoslangan kod Mening kodim bilan birga keladi.

4. Python 2D teskari kinematika kutubxonasi -

5. Yuqoridagi barcha kodni chaqiradigan va robotni harakatlarni bajarishga majburlaydigan mening kodim va ko'rish kodim. Buni mendan oling, avval mening YouTube kanalimga obuna bo'ling, so'ngra ushbu ko'rsatmaning yuqori qismidagi "Sevimli" tugmachasini bosing va keyin ushbu ko'rsatmaga sharh yozing, men javob beraman.

Tavsiya: