استارت ساخت ربات مسیریاب (تعقیب خط) . قسمت اول
سلام .
خب به دلایلی با اینکه فصل امتحاناس ولی داخل یه مسابقات رباتیک در لیگ تعقیب خط شرکت کردم و باید خیلی فشرده تو این دو هفته رباتو تکمیل کنم .
همین امروز صبح زود وسایلی که نیاز داشتمو سفارش دادم . امیدوارم تا آخر هفته ، پست محترم به دستم برسونه .
میخوام تمام مراحل تکمیل ربات رو به صورت پست اینجا منتشر کنم . این میتونه برای خودم یک نقشه ذهنی باشه و شایدم برای کسانی که میخوان داخل این لیگ ها و مسابقات شرکت کنند یک سری تجربیات بدرد بخور . احتمالا برای بعضی هام سواله که یه ربات صفر تا صدش چطوری طراحی میشه میتونه سرگرمی جالبی باشه :)
داخل این پست هایی که میزارم از نظراتی که میدین برای بهبود ربات استفاده میکنم . پس اگه انتقادی راجع به ربات داشتید حتما بگید تا به بهترین شکل بتونیم ربات رو تکمیل کنیم .
خب ربات تعقیب خطو که احتمالا جریانشو میدونید . یه مسیر به شکل خط مشکی روی یک پس زمینه ی سفید براش میکشن و این ربات باید روی این مسیر حرکت کنه و تا آخر راه از مسیر منحرف نشه . در مسابقات سرعت ربات معیار خیلی مهمیه . یعنی ربات ها بر اساس زمانی که مسیرو کامل طی میکنند رتبه بندی میشن . هر رباتی سریع تر حرکت کنه و در نتیجه در زمان کوتاه تری مسیر رو بدون انحراف طی کنه ، رتبه بهتری داره .
یک ربات به طور کلی از سه بخش تشکیل میشه که جداگونه باید هر کدوم از این بخش ها رو تکمیل کنیم :
1 - مکانیک ربات
2 - سخت افزار ربات
3 - نرم افزار ربات
مکانیک ربات : فیزیک ربات و مکانیزم حرکتی ربات هستش . اینکه چه شکل و شاسی برای ربات در نظر بگیریم و بسازیم . چه موتور هایی و به چه شکلی برای حرکت ربات ببندیم و ....
سخت افزار ربات : شامل مدار سخت افزاری ربات هست که اونو طراحی میکنیم و روی ربات میبندیم . این مدار از المان های الکترونیکی مثل سنسور ها ، میکروکنترلر ها ، دایورهای موتور ها و ... تشکیل میشه .
نرم افزار ربات : این بخش همون برنامه نویسی ربات هستش . یعنی مغز ( پردازشگر مرکزی که میتونه یک میکروکنترلر باشه ) ربات رو طبق الگوریتمی که ربات داره و کاری که باید انجام بده برنامه ریزی کنیم . معمولا این برنامه نویسی میتونه با زبان های مختلف انجام بشه ولی یکی از قدرتمندترین و معروف ترین آن ها زبان C و ++C هستند . اسمبلی نیز میتونه در برخی مدار ها به عنوان زبان برنامه نویسی درنظر گرفته بشه .
اما ربات مسیریاب چه شکلی قراره مسیر یا خط مشکی که معمولا با چسب برق کشیده میشه رو تشخیص بده ؟
ربات مسیریاب با استفاده از سنسور های مادون قرمز یا فوتوسل ( به ندرت ) اینکار رو انجام میده .
چون استفاده از سنسور فوتوسل خیلی خیلی کم پیش میاد بنابراین فقط روش سنسور مادون قرمز رو توضیح میدیم .
در اصل همینطور که میدونید امواج مادون قرمز یک نوع نور غیر مرئی هستند . یعنی با چشم غیر مسلح قابل دید نیست . کنترل تلویزیونامون از امواج مادون قرمز برای ارتباط با تلویزیون استفاده میکند . اگه دقت کنید سر کنترلتون یک چراغ مانند کوچیک وجود داره ولی هیچوقت نوری ازش ساطع نمیشه . به خاطر اینه که این چراغ در واقع فرستنده ی مادون قرمزه . بنابراین انتظار نداریم امواجش با چشم قابل دیدن باشه . ولی به جاش کافیه دوربین گوشیتون رو باز کنید و بگیرید سر کنترل (رو به روی فرستنده مادون قرمز) و یکی از کلید های کنترل رو فشار بدید . میبینید که یک نور سفید رنگ یا بنفش رنگ از اون ساطع میشه . اینجا چون از چشم مسلح (دوربین گوشی) استفاده کردیم تونستیم این نور رو ببینیم .
نمونه ای از زمین یا مسیر یک ربات مسیریاب :
کف ربات مسیریاب در اصل سنسور های مادون قرمز چسبیده اند. این سنسور ها میتونن خط رو تشخیص بدن و به مدار ربات اطلاعات لازم از خط رو بدن تا ربات بتونه مسیر رو با توجه به اطلاعاتی که از سنسور ها میگیره طی کنه . در اصل سنسور ها مثل چشم ربات میمونن که خط رو میتونن ببینن .
اما این سنسور های مادون قرمز چه شکلی خط رو تشخیص میدن ؟ زیر ربات مسیریاب ، چندین جفت سنسور فرستنده و گیرنده مادون قرمز وجود داره . فرستنده مادون قرمز امواج مادون قرمز رو ارسال میکنه به کف زمین که چسب روش چسبیده . اگه این نور هایی که ارسال میکنه به سطح مشکی ( یعنی به خط ها ) بخوره ، بازتابی ازشون صورت نمیگیره چون رنگ مشکی نور رو جذب میکنه . بنابراین گیرنده چیزی از نور رو نمیگیره . بنابراین هروقت گیرنده نتونست نوری رو بگیره ، میفهمه الان سنسور روی خط مشکی قرار داره چون بازتابی صورت نگرفته . برعکس هروقت جفت سنسور مورد نظر روی سطح سفید قرار بگیرن ، فرستنده نور رو میفرسته و میخوره به سطح سفید . ازاونجایی که سطح سفید اصلا جذبی از نور به اون صورت نداره بنابراین بیشتر نور رو بازتاب میکنه . بازتاب نور میرسه به گیرنده و گیرنده میفهمه که الان روی سطح سفید هستند :)
شکل زیر به خوبی نحوه کارکرد سنسور ها رو نشون میده :
فرض کنید یک جفت فرستنده گیرنده سمت راست ربات قرار بدیم و یک جفت هم سمت چپ . به شکل زیر :
اونایی که دورشون خط قرمز کشیده شده هر کدومشون یک جفت فرستنده گیرنده مادون قرمزن که میتونن تشخیص بدن رو خط هستند یانه ( طبق روشی که گفتم یعنی از طریق بازتاب مادون قرمز از طرف سطح زمین )
وقتی هر دو سنسور چپ و راست طبق تصویر بالا سطح سفید رو تشخیص بدن یعنی ربات دقیقا روی خط مشکی هستش . پس باید هر دو موتور چپ و راست ربات که چرخ های ربات بهش وصلن ، به سمت جلو بچرخن تا ربات مستقیم حرکت کنه .
حالا فرض کنید مثلا مسیر چسب یهو 90 درجه بپیچه به سمت چپ . تصویر زیر :
در اینجا سنسور سمت چپ ربات میره رو خط و در نتیجه سنسور سمت چپ میفهمه که روی خط مشکیه . اینجا باید موتور سمت چپ رو از کار بندازیم . این باعث میشه فقط چرخ سمت راست بچرخه و این باعث میشه ربات شروع به چرخیدن به سمت چپ کنه :) .
در اصل الگوریتم اینه سنسور هر طرفی که خط رو دید ، موتور و چرخ همون طرف نچرخه . مثلا اگه سنسور سمت راست خط رو دید یعنی مسیر چرخیده به سمت راست و ربات هم باید به راست بپیچه . پس باید موتور همون سمت یعنی سمت راست خاموش شه . اینطوری فقط چرخ سمت چپ میچرخه و در نتیجه ربات به سمت راست مایل میشه .
اینطوریه که میتونه روی خط حرکت کنه .
خب حالا طرز کار رو میدونیم چجوریه . بریم سراغ کار خودمون . من اول از مکانیک ربات شروع میکنم . سپس سخت افزار رو تکمیل میکنم و سپس برنامه نویسی .
تا اینجای کار فعلا منتظر ارسال یک سری وسایل هستم . برای اینکار به دوتا موتور نیاز داریم ( سمت راست و چپ ) و یک سری جفت گیرنده فرستنده مادون قرمز . که سفارش دادم بیاد .
البته این رباتی که فقط دو تا جفت سنسور داشت خیلی مبتدی بود . ربات ها گاهی اوقات تا 26 سنسور هم دارن :||||||
فعلا تا اینجا تئوری ها رو داشته باشیم . در پست بعدی میریم برا تکمیل مکانیک ربات (احتمالا میشه فردا پس فردا و اینا )
شب بخیر ... :))
خیلی هم عالی!
راستی یه سوال
من میخوام برد رسبری سفارش بدم
آردوینو و اینا هم میخوام بگیرم. از کجا بهتره بگیرم؟