ربات شطرنج باز مستقل با بازوی رباتیک

0
371
ربات شطرنج باز مستقل با بازوی رباتیک

در این پروژه می خواهیم یک ربات شطرنج باز مستقل با بازوی رباتیک را با استفاده از پردازش تصویر و بینایی ماشین طراحی کنیم.

بخش نرم افزاری ربات شطرنج باز

Python Idle : یک پلتفرم کد نویسی است که در این پروژه استفاده شده است. کل ربات شطرنج باز به زبان پایتون در محیط  Python Idle نوشته شده است.

Python Idle : یک کتابخانه پردازش تصویر است که برای دادن یک بینش از صفحه شطرنج به ربات می باشد.

Pyfirmata : برای کد نویسی آردوینو به زبان پایتون به کار می رود. در واقع آردوینو را به جای اتصال به محیط برنامه نویسی آردوینو به محیط کد نویسی پایتون متصل می کند.

ساخت ربات شطرنج باز با بازوی رباتیک

۱) سینماتیک رو به جلو: با توجه به زوایای سینماتیک رو به جلو سروو موتور ، موقعیت مکانی بازوی ربات مشخص می شود. به عنوان مثال، دادن زاویه سینماتیک رو به جلو theta_1، theta_2 و theta_3 سبب می شود تا مختصات X،Y و Z یا موقعیت مکانی بازوی ربات شطرنج باز مشخص شود.

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

۲) سینماتیک معکوس: با وجود مختصات X،Y و Z بازوی ربات، سینماتیک معکوس با توجه به زاویه مطلوب بدست آمده سروو موتورها محاسبه می شود تا به موقعیت مکانی مطلوب برسد. به عنوان مثال: برای رسیدن به شیئ که در موقعیت (x,y,z) قرار گرفته، سینماتیک معکوس می تواند برای رسیدن به آن شیء به کار رود تا بازوی ربات آن شی را بگیرد.

۳) دیاگرام سینماتیک: برای حل معادلات سینماتیک رو به جلو و معکوس باید نمودارهایی ترسیم کنید.

۴) Denavit–Hartenberg parameters: یک روش آسان برای حل سینماتیک رو به جلو است که در آن باید جدولی از پارامترها ایجاد کنید.

۵) ماتریسهای چرخشی و بردارهای جا به جایی: برای پیدا کردن ماتریس تبدیل همگن و همچنین برای تبدیل مختصات دوربین به مختصات فریم رباتها به کار می رود.

۶) پردازش تصویر: برای دادن بینش به ربات استفاده می شود تا متوجه شود که چه اتفاقاتی در صفحه شطرنج رخ می دهد، فرضاً اگر حرکتی اتفاق افتاده یا خیر یا اینکه نوبت حرکت با مهره سفید یا سیاه است.

عملکرد ربات

گام اول: اگر بازیکن مهره سفید را انتخاب کند، آنگاه ربات مهره سیاه را انتخاب می کند و حرکت اول با مهره های سفید است و بالعکس. در ویدیوی زیر می بینید که بازیکن مهره سفید را انتخاب کرده است.

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

گام سوم: فرض کنید که مهره سفید حرکت E4 را انجام داده است. ربات، حرکت را با پردازش تصویر تشخیص می دهد. سپس ربات نوع حرکت را از کتابخانه ای که ما برای آن طراحی کرده ایم پیدا می کند و با توجه به آن، حرکت مناسب را اجرا می کند (فرضاً در این کتابخانه برای حرکت e5 یک مختصات (x,y,z) تعریف شده است). به همین ترتیب، ربات مختصات مطلوب را بدست می آورد و سپس با استفاده از سینماتیک معکوس، پیاده را از مکان e7 بلند می کند و آن را در مکان e5 قرار می دهد.

گام چهارم: این بازی ادامه پیدا می کند تا نتیجه مشخص شود. ربات با استفاده از میکروکنترلر آردوینو (Arduino pro mini) کنترل می شود که با استفاده از آن، موتورها را کنترل و PWM لازم را برای موتورها تولید می کند.

لینک دانلود عملکرد ربات شطرنج باز

قطعات مورد نیاز

  • ۱x SparkFun Arduino Pro Mini 328 – 5V/16MHz
  • 4x servo motor Mg995
  • 1x USB webcam
  • 1x Digilent 5V 2.5A Switching Power Supply
  • 1x Female Header 20 Position 2 Row (0.1”)
  • ۱x Male Header 40 Position 1 Row (0.1”)
  • ۱x Custom PCB

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید