فهرست مطالب:

ربات شطرنج ساخته شده با LEGO و Raspberry Pi: 6 مرحله
ربات شطرنج ساخته شده با LEGO و Raspberry Pi: 6 مرحله

تصویری: ربات شطرنج ساخته شده با LEGO و Raspberry Pi: 6 مرحله

تصویری: ربات شطرنج ساخته شده با LEGO و Raspberry Pi: 6 مرحله
تصویری: CS50 2015 - Week 10 2024, جولای
Anonim
Image
Image

با این ربات شطرنج دوستان خود را شگفت زده کنید!

اگر قبلاً ربات های LEGO ساخته اید و حداقل دانش اولیه ای در زمینه برنامه نویسی کامپیوتر و لینوکس دارید ، ساختن آن چندان دشوار نیست.

این ربات حرکات خود را انجام می دهد و از تشخیص بصری برای تعیین حرکت بازیکن استفاده می کند.

یکی از موارد جدید در این ربات ، کد تشخیص حرکت است. این کد بینایی همچنین برای روبات های شطرنج ساخته شده به روش های دیگر (مانند ChessRobot من با استفاده از بازوی روباتیک Lynxmotion) قابل استفاده است.

بدون تخته شطرنج ، سوئیچ نی یا هر چیز دیگری که لازم است (زیرا حرکت انسان با تشخیص بصری تعیین می شود).

کد من برای استفاده شخصی در دسترس است.

مرحله 1: الزامات

نور، دوربین، حرکت!
نور، دوربین، حرکت!

تمام کد در پایتون نوشته شده است ، که در کنار سایر موارد ، روی Raspberry Pi نیز اجرا می شود.

رزبری پای یک رایانه با اندازه کارت اعتباری است که می تواند به صفحه و صفحه کلید متصل شود. این یک کامپیوتر کوچک ارزان قیمت (حدود 40 دلار) است که می تواند در پروژه های الکترونیکی و روباتیک و برای بسیاری از کارهایی که رایانه رومیزی شما انجام می دهد مورد استفاده قرار گیرد.

ربات من از Raspberry Pi و Lego استفاده می کند. رابط سخت افزاری بین موتورها و سنسورهای RPi و Lego Mindstorms EV3 توسط BrickPi3 از صنایع دکستر ارائه شده است.

ساخت لگو بر اساس "چارلی روبات شطرنج" ، توسط داروس هادی ، تغییر یافته توسط من ، شامل حالت هایی برای استفاده از RPi ، به جای پردازنده Lego Mindstorms است. از موتورها و حسگرهای Lego Mindstorms EV3 استفاده می شود.

همچنین به یک میز ، دوربین ، نور ، صفحه کلید ، صفحه نمایش و دستگاه اشاره (مانند ماوس) نیاز دارید.

و البته مهره های شطرنج و یک تخته.

همه این موارد را در مراحل بعدی با جزئیات بیشتری شرح می دهم.

مرحله 2: ساخت سخت افزار

Image
Image

همانطور که قبلاً اشاره کردم ، قلب کد بینایی با ساختارهای مختلف کار می کند.

من روبات خود را بر اساس "Charlie the Chess Robot" (نسخه EV3) توسط داروس هادی بنا کردم ، اطلاعات موجود در آن صفحه می گوید که چگونه دستورالعمل ساخت را دریافت کنید. لیست قطعات در اینجا آمده است.

من روبات را به دو روش تغییر دادم.

1. چنگ زن. این برای من کار نمی کند. چرخ دنده ها لیز خوردند ، بنابراین من قطعات Lego اضافی را برای جلوگیری از آن اضافه کردم. و هنگامی که جرثقیل پایین می آمد ، اغلب گیر می کرد ، بنابراین برای جلوگیری از آن ، اتصال وات را اضافه کردم.

در بالا تصرف کننده در حال عمل است که پیوند اصلاح شده را نشان می دهد.

2. ساختار اصلی از پردازنده Lego Mindstorms EV3 استفاده می کند ، اما من از Raspberry Pi استفاده می کنم که استفاده از پایتون را آسان می کند.

3. من از Raspberry Pi 3 Model B استفاده می کنم.

4. به منظور ارتباط RPi با Lego ، من از BrickPi3 از صنایع Dexter استفاده می کنم. BrickPi به رزبری پای متصل می شود و با هم جایگزین LEGO Mindstorms NXT یا EV3 Brick می شوند.

وقتی فایل دیجیتال لگو دیجیتال را در اختیار دارید ، این س ofال وجود دارد که قطعات LEGO را دریافت کنید. شما می توانید آجر را مستقیماً از فروشگاه LEGO تهیه کنید و این ارزان ترین راه برای تهیه آنها است. با این حال ، آنها همه چیز مورد نیاز خود را ندارند و رسیدن آجرها ممکن است چند هفته یا بیشتر طول بکشد.

همچنین می توانید از Rebrickable استفاده کنید: یک حساب باز کنید ، فایل LDD را بارگذاری کنید و از آن لیست فروشندگان را دریافت کنید.

منبع خوب دیگر Bricklink است.

مرحله 3: نرم افزاری که باعث حرکت روبات می شود

تمام کد در پایتون 2 نوشته شده است.

  1. صنایع Dexter برای پشتیبانی از حرکت موتورهای EV3 و غیره کد ارائه می دهد. این با BrickPi3 همراه است.
  2. من کد را برای حرکت موتورها به گونه ای ارائه می دهم که مهره های شطرنج را جابجا کند!
  3. موتور شطرنج Stockfish است - که می تواند هر انسانی را شکست دهد! "ماهی ماهی یکی از قوی ترین موتورهای شطرنج در جهان است. همچنین بسیار قوی تر از بهترین استادان شطرنج انسان است."
  4. کد رانندگی موتور شطرنج ، تأیید صحت حرکت و موارد دیگر ChessBoard.py
  5. برای ارتباط با آن از برخی کدهای https://chess.fortherapy.co.uk استفاده می کنم.
  6. کد من (در 2 بالا) سپس با آن ارتباط برقرار می کند!

مرحله 4: نرم افزار تشخیص حرکت انسان

پس از حرکت بازیکن ، دوربین عکس می گیرد. کد آن را برش داده و می چرخاند به طوری که صفحه شطرنج دقیقاً متناسب با تصویر بعدی است. مربع های صفحه شطرنج باید مربع به نظر برسند !. در تصویر اعوجاج وجود دارد زیرا لبه های برد نسبت به مرکز برد بیشتر از دوربین فاصله دارند. با این حال ، دوربین به اندازه کافی دور است تا پس از برش ، این اعوجاج قابل توجه نباشد. از آنجا که ربات می داند که همه قطعات پس از حرکت کامپیوتر کجا هستند ، پس تنها کاری که انسان باید انجام دهد این است که کد بتواند تفاوت بین سه مورد زیر را تشخیص دهد:

  • یک مربع خالی
  • یک قطعه سیاه از هر نوع
  • یک قطعه سفید از هر نوع.

این شامل همه موارد ، از جمله Castling و en passant می شود.

این روبات بررسی می کند که حرکت انسان صحیح است و در غیر این صورت به او اطلاع می دهد! تنها موردی که تحت پوشش قرار نگرفته این است که بازیکن انسانی یک پیاده را به یک غیر ملکه ارتقا دهد. سپس بازیکن باید به ربات بگوید قطعه تبلیغ شده چیست.

اکنون می توانیم تصویر را از نظر مربع های صفحه شطرنج در نظر بگیریم.

در تنظیمات اولیه صفحه ما می دانیم که همه مهره های سفید و سیاه کجا هستند و مربع های خالی کجا هستند.

رنگ مربع های خالی بسیار کمتر از مربع های اشغال شده است. ما انحراف استاندارد برای هر یک از سه رنگ RGB برای هر مربع را در تمام پیکسل های آن محاسبه می کنیم (به غیر از رنگ های نزدیک به مربع). حداکثر انحراف استاندارد برای هر مربع خالی بسیار کمتر از حداقل انحراف استاندارد برای هر مربع اشغال شده است ، و این به ما امکان می دهد ، پس از حرکت بازیکن بعدی ، تعیین کنیم که کدام مربع ها خالی هستند.

با تعیین مقدار آستانه برای مربع های خالی در مقابل اشغال شده ، اکنون باید رنگ قطعه را برای مربع های اشغال شده تعیین کنیم:

در صفحه اولیه ما برای هر مربع سفید ، برای هر یک از R ، G ، B ، مقدار متوسط (متوسط) پیکسل های آن (به غیر از آنهایی که نزدیک مرز مربع هستند) را محاسبه می کنیم. حداقل این وسایل برای هر مربع سفید بیشتر از حداکثر میانگین در هر مربع سیاه است ، بنابراین می توانیم رنگ قطعه را برای مربع های اشغال شده تعیین کنیم. همانطور که قبلاً گفته شد ، این تنها کاری است که ما باید انجام دهیم تا تعیین کنیم حرکت بازیکنان انسانی چگونه بوده است.

الگوریتم ها بهترین کار را می کنند اگر صفحه شطرنج دارای رنگی باشد که فاصله زیادی با رنگ مهره ها دارد! در ربات من ، مهره ها سفید و قهوه ای هستند ، و صفحه شطرنج به صورت کارتی کارتی است و به رنگ سبز روشن با کمی تفاوت بین مربع های "سیاه" و "سفید" است.

ویرایش 17 اکتبر 2018: من اکنون قطعات قهوه ای را به رنگ مشکی مات رنگ آمیزی کرده ام ، که باعث می شود الگوریتم تحت شرایط متغیر نور بیشتری کار کند.

مرحله 5: چراغ ها ، دوربین ، اکشن

چراغ ها

شما به یک منبع نور یکنواخت که روی تخته قرار داده شده نیاز دارید. من از این یکی که واقعاً ارزان است از amazon.co.uk استفاده می کنم - و بدون شک چیزی مشابه در amazon.com وجود دارد. با خاموش شدن چراغهای اتاق.

به روز رسانی: من در حال حاضر دو چراغ دارم ، تا منبع نور یکنواخت تری بدهم

دوربین

بدون شک می توانید از ماژول مخصوص دوربین رزبری پای (با کابل بلند) استفاده کنید ، اما من از دوربین USB - "وب کم Logitech 960-001064 C525 HD - Black" - که با RPi کار می کند ، استفاده می کنم. شما باید اطمینان حاصل کنید که دوربین با احداث برج یا داشتن مکانی برای تعمیر محکم ، نسبت به تخته حرکت نمی کند. برای کاهش اعوجاج هندسی ، دوربین باید نسبتاً بالاتر از صفحه باشد. من دوربین خود را 58 سانتی متر بالاتر از تخته دارم.

به روز رسانی: من در حال حاضر HP Webcam HD 2300 را ترجیح می دهم ، زیرا به نظرم قابل اطمینان تر است.

جدول

شما به یک محکم نیاز دارید. من این یکی را خریدم. علاوه بر این می توانید ببینید که من یک مربع MDF دارم ، با برخی از وسایل که مانع پریدن روبات هنگام حرکت واگن برقی می شود. ایده خوبی است که دوربین را در همان حالت روی تخته نگه دارید!

صفحه کلید

RPi برای اولین راه اندازی خود به یک صفحه کلید USB نیاز دارد. و من از آن برای توسعه کد استفاده می کنم. تنها چیزی که ربات به آن نیاز دارد شروع برنامه و شبیه سازی ضربه ساعت شطرنج است. من یکی از اینها را گرفتم اما در واقع ، شما فقط به یک ماوس یا یک دکمه GPIO متصل به RPi نیاز دارید

نمایش دادن

من از یک صفحه بزرگ برای توسعه استفاده می کنم ، اما تنها چیزی که ربات نیاز دارد این است که به شما بگوید حرکت شما نامعتبر است ، بررسی کنید و غیره. من یکی از این موارد را دریافت کردم ، که در amazon.com نیز موجود است.

اما به جای نیاز به صفحه نمایش ، روبات این عبارات را بیان می کند! من این کار را با تبدیل متن به گفتار با استفاده از کد همانطور که در اینجا توضیح داده شد انجام دادم و یک بلندگوی کوچک را ضمیمه کردم. (من از "بلندگوی مینی همبرگر" استفاده می کنم).

عباراتی که ربات می گوید:

  • بررسی!
  • مات چک
  • حرکت نامعتبر است
  • شما برنده شدید!
  • بن بست
  • با سه بار تکرار رسم کنید
  • با 50 حرکت قرعه کشی کنید

قانون پنجاه حرکت در شطرنج می گوید که اگر بازیکنی در پنجاه حرکت اخیر اسیر نشده باشد و هیچ پیاده ای جابجا نشده باشد ، بازیکن می تواند قرعه کشی کند (برای این منظور "حرکت" شامل بازیکنی است که نوبت خود را به پایان می رساند. حریف نوبت خود را تکمیل می کند).

شما می توانید صدای ربات را در ویدئوی کوتاه "احمق" در بالا بشنوید (اگر صدای خود را بسیار بالا ببرید)!

مرحله 6: نحوه دریافت نرم افزار

1. ماهی قرمز

اگر Raspbian را روی RPi خود اجرا می کنید ، می توانید از موتور Stockfish 7 استفاده کنید - رایگان است. فقط بدو:

sudo apt-get install stockfish

2. ChessBoard.py

اینو اینجا بگیر

3. کد بر اساس

همراه با کد من

4. درایورهای پایتون برای BrickPi3:

اینها را اینجا بیاورید

5. کد من که تمام کد بالا را فراخوانی می کند و باعث می شود ربات حرکات را انجام دهد ، و کد بینایی من.

این را با ارسال نظر از من دریافت کنید ، من پاسخ خواهم داد.

توصیه شده: