سلام
یکی دو سال پیش تو مسابقات حلی کاپ ما تو مسابقه حل ماز شرکت کردیم. البته ما ثبت نام کردیم اما متاسفانه روبات مون آماده نشده بود. جالب اینکه از 14-15 تیم شرکت کننده توی این مسابقه تنها 2 تیم شرکت کردند و تقریبا فکر میکنم بیشترین مشکل برای این ربات هوش مصنوعی این ربات باید باشه که شرکت کننده اون کم هست.
برای تست هوش مصنوعی ربات من زمین مسابقه رو شبیه سازی کردم.
این شبیه ساز 2 قسمت داره. قبل از شرح شبیه ساز مسابقه حل ماز رو توضیح میدم:
یک زمین 9*15 داریم که کف اون به صورت شطرنجی در اومده(سیاه و سفید). روبات از یک خونه شروع به حرکت میکنه و باید به خونه انتها برسه. نکته اساسی اینجاست که این همه خونه ها به هم راه ندارن و بین هر خونه ممکنه دیوار باشه. هر رباتی زودتر بتونه خونه انتها رو پیدا کنه برنده هست. دو تا از خونه ها هم خونه خطا هستند و ربات در صورتی که وارد اونها بشه امتیاز منفی میگیره.
---
شبیه ساز این مسابقه دارای دو قسمت هست. هر دو قسمت با ویژوال بیسیک 6 نوشته شده.
BoardMaker:
این برنامه برای طراحی زمین مسابقه قرار داده شده. شما با این برنامه میتونید بین هر خونه ای که بخواید دیوار بزارید و بعد اون رو در یک فایل ذخیره کنید و در شبیه ساز از اون استفاده کنید.
Maze:
این برنامه شبیه ساز هست. وقتی New رو میزنید مشخصات ربات (طول، عرض، مکان شروع؛ سرعت دو موتور، نوع کنترل ) و زمین بازی رو انتخاب میکنید. البته در کنترل دستی شما به کلیدهای جهتی کیبورد به صورت دستی میتونید ربات رو حرکت بدید.
چون ما میخواستیم این شبیه ساز چیزی باشه که ما خودمون ازش استفاده میکنیم پس بهتره این اطلاعات رو هم بدم که ربات ما چجوری کار میکرد.
ربات ما در زیرش چهار تا سنسور مادون قرمز داشت. بالا، پایین ، چپ و راست. چون زمین مسابقه سیاه سفید هست با این سنسور ها برای تشخیص خونه ای که ربات در اون قرار داره استفاده کردیم. وقتی شبیه ساز رو میارید توی قسمت "Sensors/ Motors" زیر قسمت IR_Down میتونید وضعیت این چهار سنسور رو مشاهده کنید.
در چهار طرف ربات هم چهار تا سنسور مادون قرمز وجود داشت که این چهار سنسور رو طوری باید تنظیم میکردیم که اگه دیوار نزدیک بود تشخیص بده. (فکر میکنم اندازه هر خونه 20*20 سانت بود). توی قسمت سنسور ها در شبیه ساز وضعیت این چهار سنسور رو هم میتونید ببینید.
ربات ما دو تا موتور داشت. یکی برای بالا و پایین رفتن و یکی برای چپ رو راست رفتن. وقتی که New رو میزنید TopSpeed1 و TopSpeed2 رو میبینید که حداکثر سرعت هر موتور رو اینجا قرار دادیم که وضعیت مکانیکی ربات بررسی بشه و شتاب موتوها هم در قسمت Accelator قرار داره.
در کل این وضعیت ظاهری ربات بود که ما بر اساس اون این شبیه ساز رو طراحی کردیم.
برای میکرو هم فکر کنم از Atmega 32 استفاده کردیم که 1کیلوبایت حافظه داشت و این شبیه ساز خونه های حافظه رو نشون میده.
برای اینکه هوش مصنوعی این شبیه ساز رو عوض کنید وقتی پروژه Maze رو توی ویژوال بیسیک باز کردید در ماژول ها، ماژول mMicro رو باز کنید و کد میکرو رو عوض کنید. البته برای اینکار نیاز به دونستن ویژوال بیسیک دارید.
فکر نمیکنم کد سختی نوشته باشم ولی اگه یه جایی متوجه یه چیزهایی نشدید بگید تا توضیح بیشتر بدم.
این شبیه ساز هم بدرد اونهایی میخوره که میخوان توی مسابقه ربات حل ماز شرکت کنند و هم بدرد اونهایی میخوره که میخوان یک سورس کد اینجوری رو ببینند. امیدوارم بدرد همتون بخوره.
در ضمن اگه میخواید توی این مسابقات شرکت کنید یه حقه کوچیک هست که فکر میکنم برای همه جالب باشه. همونطور که توی همین شبیه ساز میبینید ربات مسیری رو که میره توی حافظه ذخیره میکنه. توی این مسابقه هم زمان تست و هم چندبار زمان رکوردگیری هست. بعضیا(یعنی خیلی ها!) توی تست یا رکورد گیری اول میزارن ربات کل مسیر رو بره و وقتی ربات به خونه انتهایی رسید دیگه مسیر رو ذخیره میکنه و توی رکوردگیری بعدی همون مسیر اصلی رو که پیدا کرده میره
توی مسابقات حلی کاپ اون سال هم من یادم میاد از این حقه استفاده کردند و کسی ایراد نگرفت. احتمالا هنوز هم مسابقات این چنینی ایراد نگیرند.
پروژه ها ضمیمه شده.
موفق باشید.