جدول المحتويات:

روبوت الشطرنج المصنوع من LEGO و Raspberry Pi: 6 خطوات
روبوت الشطرنج المصنوع من LEGO و Raspberry Pi: 6 خطوات

فيديو: روبوت الشطرنج المصنوع من LEGO و Raspberry Pi: 6 خطوات

فيديو: روبوت الشطرنج المصنوع من LEGO و Raspberry Pi: 6 خطوات
فيديو: SCP-261 Пан-мерное Торговый и эксперимент Войти 261 объявление Де + полный + 2024, شهر نوفمبر
Anonim
Image
Image

أذهل أصدقاءك مع روبوت الشطرنج هذا!

ليس من الصعب البناء إذا كنت قد صنعت روبوتات LEGO من قبل وإذا كان لديك على الأقل معرفة أولية ببرمجة الكمبيوتر و Linux.

يقوم الروبوت بحركاته الخاصة ، ويستخدم التعرف البصري لتحديد حركة اللاعب البشري.

أحد الأشياء الجديدة في هذا الروبوت هو رمز التعرف على الحركة. رمز الرؤية هذا قابل للاستخدام أيضًا لروبوتات الشطرنج المبنية بعدة طرق أخرى (مثل ChessRobot الخاص بي باستخدام ذراع Lynxmotion الآلية).

لا توجد لوحة شطرنج خاصة أو مفاتيح قصب أو أي شيء مطلوب (حيث يتم تحديد حركة الإنسان من خلال التعرف البصري).

الكود الخاص بي متاح للاستخدام الشخصي.

الخطوة 1: المتطلبات

الأضواء، الكاميرا، إبدأ!
الأضواء، الكاميرا، إبدأ!

تمت كتابة جميع الشفرات بلغة Python ، والتي ستعمل ، من بين أشياء أخرى ، على Raspberry Pi.

Raspberry Pi هو كمبيوتر بحجم بطاقة الائتمان يمكن توصيله بشاشة ولوحة مفاتيح. إنه جهاز كمبيوتر صغير غير مكلف (حوالي 40 دولارًا) ، ويمكن استخدامه في مشاريع الإلكترونيات والروبوتات ، وللعديد من الأشياء التي يقوم بها جهاز الكمبيوتر المكتبي الخاص بك.

يستخدم الروبوت الخاص بي Raspberry Pi و Lego. يتم توفير واجهة الأجهزة بين محركات ومستشعرات RPi و Lego Mindstorms EV3 بواسطة BrickPi3 من Dexter Industries.

يعتمد تصميم Lego على "Charlie the Chess Robot" ، بواسطة Darrous Hadi ، تم تعديله بواسطتي ، بما في ذلك التعديلات لاستخدام RPi ، بدلاً من معالج Lego Mindstorms. يتم استخدام محركات وأجهزة استشعار Lego Mindstorms EV3.

ستحتاج أيضًا إلى طاولة وكاميرا وإضاءة ولوحة مفاتيح وشاشة وجهاز تأشير (مثل الماوس).

وبالطبع قطع الشطرنج ولوحة.

أصف كل هذه الأشياء بمزيد من التفصيل في الخطوات اللاحقة.

الخطوة 2: بناء الأجهزة

Image
Image

كما أشرت سابقًا ، سيعمل قلب رمز الرؤية مع مجموعة متنوعة من البنيات.

لقد بنيت الروبوت الخاص بي على "Charlie the Chess Robot" (إصدار EV3) بواسطة Darrous Hadi ، المعلومات الواردة في تلك الصفحة توضح كيفية الحصول على تعليمات الإنشاء. قائمة الأجزاء هنا.

لقد قمت بتعديل الروبوت بطريقتين.

1. المنتزع. لكن هذا لم ينفع بالنسبة لي. انزلقت التروس ، لذلك أضفت قطع Lego إضافية لمنع ذلك. وبعد ذلك عندما يتم إنزال الرافعة ، غالبًا ما تتعطل ، لذلك أضفت وصلة وات لمنع ذلك.

أعلاه هو المنتزع في العمل ، ويظهر الارتباط المعدل.

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.

الخطوة الثالثة: البرنامج الذي يجعل الروبوت يتحرك

كل الكود مكتوب في بايثون 2.

  1. توفر Dexter Industries رمزًا لدعم تحريك محركات EV3 ، وما إلى ذلك. يأتي هذا مع BrickPi3.
  2. أقدم الكود لجعل المحركات تتحرك بطريقة تحرك قطع الشطرنج!
  3. محرك الشطرنج هو Stockfish - الذي يمكنه التغلب على أي إنسان! "ستوكفيش هو أحد أقوى محركات الشطرنج في العالم. كما أنه أقوى بكثير من أفضل أساتذة الشطرنج البشريين."
  4. رمز قيادة محرك الشطرنج ، والتحقق من صحة الحركة ، وما إلى ذلك هو ChessBoard.py
  5. أستخدم بعض التعليمات البرمجية من https://chess.fortherapy.co.uk للتفاعل مع ذلك.
  6. الكود الخاص بي (في 2 أعلاه) ثم يتفاعل مع ذلك!

الخطوة 4: برنامج التعرف على حركة الإنسان

بعد أن يقوم اللاعب بحركته ، تلتقط الكاميرا صورة. يقوم الكود بقص هذا وتدويره بحيث تلائم رقعة الشطرنج الصورة التالية تمامًا. يجب أن تبدو مربعات رقعة الشطرنج مربعة! يوجد تشويه في الصورة لأن حواف اللوحة بعيدة عن الكاميرا عن مركز اللوحة. ومع ذلك ، فإن الكاميرا بعيدة بما فيه الكفاية بحيث لا يكون هذا التشويه مهمًا بعد القص. لأن الروبوت يعرف مكان كل القطع بعد أن يتحرك الكمبيوتر ، فكل ما يجب القيام به بعد أن يقوم الإنسان بالتحرك هو أن يتمكن الكود من معرفة الفرق بين الحالات الثلاث التالية:

  • ساحة فارغة
  • قطعة سوداء من أي نوع
  • قطعة بيضاء من أي نوع.

وهذا يشمل جميع الحالات ، بما في ذلك التبييت والعابر.

يتحقق الروبوت من صحة تحرك الإنسان ويبلغه إذا لم يكن كذلك! الحالة الوحيدة التي لم تتم تغطيتها هي عندما يقوم اللاعب البشري بترقية بيدق إلى غير ملكة. يتعين على اللاعب بعد ذلك إخبار الروبوت عن القطعة التي تم الترويج لها.

يمكننا الآن اعتبار الصورة من منظور مربعات رقعة الشطرنج.

في إعداد اللوحة الأولي ، نعرف مكان كل القطع البيضاء والسوداء وأين توجد المربعات الفارغة.

المربعات الفارغة لها تباين أقل في اللون من المربعات المشغولة. نحسب الانحراف المعياري لكل لون من ألوان RGB الثلاثة لكل مربع عبر جميع وحدات البكسل الخاصة به (بخلاف تلك الموجودة بالقرب من حدود المربع). الحد الأقصى للانحراف المعياري لأي مربع فارغ هو أقل بكثير من الحد الأدنى للانحراف المعياري لأي مربع مشغول ، وهذا يسمح لنا ، بعد حركة تالية للاعب ، بتحديد المربعات الفارغة.

بعد تحديد قيمة العتبة للمربعات الفارغة مقابل المربعات المشغولة ، نحتاج الآن إلى تحديد لون القطعة للمربعات المشغولة:

في اللوحة الأولية نحسب لكل مربع أبيض ، لكل من R ، G ، B ، متوسط (متوسط) قيمة وحدات البكسل (بخلاف تلك الموجودة بالقرب من حدود المربع). الحد الأدنى من هذه الوسائل لأي مربع أبيض أكبر من الحد الأقصى للوسائل عبر أي مربع أسود ، وبالتالي يمكننا تحديد لون القطعة للمربعات المشغولة. كما ذكرنا سابقًا ، هذا كل ما يتعين علينا القيام به من أجل تحديد حركة اللاعب البشري.

تعمل الخوارزميات بشكل أفضل إذا كانت رقعة الشطرنج لها لون بعيد جدًا عن لون القطع! في الروبوت الخاص بي ، تكون القطع بيضاء مصفرة وبنية ، ولوحة الشطرنج مصنوعة يدويًا في بطاقة ، وهي خضراء فاتحة مع اختلاف بسيط بين المربعين "الأسود" و "الأبيض".

تحرير 17 أكتوبر 2018: لقد قمت الآن بطلاء القطع البنية باللون الأسود غير اللامع ، مما يجعل الخوارزمية تعمل في ظل ظروف إضاءة أكثر تنوعًا.

الخطوة 5: الأضواء ، الكاميرا ، العمل

أضواء

أنت بحاجة إلى مصدر ضوء متساوٍ موضوع على السبورة. أستخدم هذا ، وهو رخيص حقًا ، من amazon.co.uk - ولا شك أن هناك شيئًا مشابهًا على amazon.com. مع إطفاء أضواء الغرفة.

تحديث: لدي الآن مصباحان لإعطاء مصدر إضاءة أكثر

الة تصوير

لا شك أنه يمكنك استخدام وحدة كاميرا Raspberry Pi الخاصة (بكابل طويل) ، ولكني أستخدم كاميرا USB - "Logitech 960-001064 C525 HD Webcam - 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. برامج تشغيل Python لـ BrickPi3:

احصل على هذه هنا.

5. الكود الخاص بي الذي يستدعي كل الكود أعلاه والذي يجعل الروبوت يقوم بالحركات ، ورمز الرؤية الخاص بي.

احصل على هذا مني عن طريق نشر تعليق ، وسأرد.

موصى به: