رفتار ربات را خرد کن
اگر پروژهای مثل «ربات مانعگریز» را یکجا ببینی ممکن است پیچیده به نظر برسد. یکی از مهمترین مهارتهای مهندسی این است که یک رفتار بزرگ را به چند مرحله کوچکتر تبدیل کنیم.
در شروع میتوانیم تقریبا هر رفتار ساده را با این مدل ببینیم:
SENSE → THINK → ACT
Sense — حس کردن
ربات داده میگیرد. مثلا سنسور فاصله مقدار 12 cm را گزارش میکند.
Think — تصمیم گرفتن
برنامه بررسی میکند:
اگر فاصله کمتر از 20 سانتیمتر بود
مانع نزدیک است
در غیر این صورت
مسیر آزاد است
Act — عمل کردن
حالا بر اساس تصمیم، موتور باید بایستد یا جهت حرکت تغییر کند.
چرا این مدل مهم است؟
چون وقتی پروژه خراب میشود، میتوانی مرحلهبهمرحله عیبیابی کنی:
- آیا Sense درست کار میکند و عدد سنسور واقعی است؟
- آیا Think شرط درست دارد؟
- آیا Act فرمان را اجرا میکند و موتور سالم است؟
این روش از همان پروژههای ساده تا سیستمهای پیچیدهتر همراهت میماند.
اولین شبهکد
شبهکد قرار نیست زبان برنامهنویسی واقعی باشد. فقط منطق را واضح میکند:
loop forever:
distance = read_sensor()
if distance < 20:
stop()
turn()
else:
move_forward()
بعدا همین منطق را با C/C++ روی Arduino مینویسیم. فعلا فقط باید بفهمی داده چطور به تصمیم و بعد به عمل تبدیل میشود.
پایان اولین ماژول
اگر سه درس این بخش را کامل کنی، موتور RoboPath ماژول آشنایی با رباتیک را خودکار Complete میکند، XP ماژول را اضافه میکند و دو مرحله بعدی Core یعنی برنامهنویسی مقدماتی و الکترونیک مقدماتی در رودمپ باز میشوند.
یک قدم فراتر: حلقه بازخورد
در بسیاری از رباتها این سه مرحله فقط یک بار اجرا نمیشوند؛ ربات بعد از عمل دوباره محیط را حس میکند و تصمیم تازه میگیرد. مثلا ربات مانعگریز بعد از چرخیدن باید دوباره فاصله را اندازه بگیرد، چون نتیجه واقعی حرکت ممکن است با چیزی که انتظار داشتیم فرق داشته باشد. این تکرار، پایه یک حلقه بازخورد ساده است. هنگام تست، فقط فرمان خروجی را نبین؛ بررسی کن آیا ورودی بعدی نشان میدهد عمل قبلی واقعا اثر موردنظر را داشته است یا نه.