FIRA Smart Home Simulation League · U14 / U19

Smart Home Simulation

یک ربات جاروبرقی خودران در یک خانه‌ی هوشمند مجازی. دانش‌آموزان برنامه‌ای می‌نویسند که ربات با حسگرهای فاصله، سپر (bumper)، حسگر رنگ و (در U19) GPS و IMU در خانه بگردد، به مبل‌ها و حیوانات خانگی نخورد و در زمان محدود بیشترین سطح را تمیز کند؛ رودررو با ربات حریف. هیچ ربات فیزیکی ساخته نمی‌شود؛ موفقیت فقط به برنامه بستگی دارد.

مسابقه‌ی Smart Home در حال اجرا
مسابقه‌ی رودررو: تیم ۱ و تیم ۲، شمارنده‌ی کاشی‌های تمیزشده، زمان باقی‌مانده و درصد تمیزی خانه
این لیگ چیست

یک خانه، دو ربات، ۱۸۰ ثانیه

خانه یک شبکه از کاشی‌هاست با اتاق‌های مبله، فرش، گیاه، و یک گربه و یک سگ که به‌عنوان مانع متحرک پرسه می‌زنند. ربات شما از یک گوشه و ربات حریف از گوشه‌ی مقابل شروع می‌کند. هر کاشی که ربات از روی آن عبور کند به رنگ آن ربات درمی‌آید و یک امتیاز دارد؛ تمیز کردن دوباره‌ی کاشی خودتان امتیاز اضافه نمی‌دهد ولی می‌توانید کاشی‌های حریف را از آنِ خود کنید. در پایان زمان، رباتی که کاشی‌های بیشتری در اختیار دارد برنده است.

برنامه‌ی ربات ۱۰ بار در ثانیه از بالا تا پایین اجرا می‌شود: اول حسگرها را می‌خوانید، بعد سرعت دو چرخ را تعیین می‌کنید. همین. U14 حسگر رنگ، قطب‌نما و شماره‌ی اتاق دارد؛ U19 به‌علاوه GPS، IMU و باتری که باید در ایستگاه شارژ شود.

۱ رباتدر هر تیم، رودررو با حریف در یک خانه
۱۸۰ ثانیهزمان شبیه‌سازی هر مسابقه
۲ تا ۶ نفراعضای تیم به‌علاوه‌ی یک کاپیتان
Pythonیا هلپر بلاکی برای تازه‌کارها
۳ + ۱ + ۰امتیاز جدول: برد ۳، تساوی ۱، باخت ۰
U14 · U19سن مبنا ۳۰ ژوئن ۲۰۲۶
مهارت‌هایی که یاد می‌گیرید: تفکر الگوریتمی، Python، کار با حسگرها، ماشین حالت، برنامه‌ریزی در محدودیت زمانی، حل مسئله زیر فشار و کار گروهی.
ویدیوی نمونه

نمونه مسابقه Smart Home

یک مسابقه نمونه در برنامه‌ی Smart Home League با همان کد پایه‌ای که در همین صفحه دانلود می‌کنید: دو ربات جاروبرقی در خانه حرکت می‌کنند و اتاق‌ها را تمیز می‌کنند.

ضبط‌شده از شبیه‌ساز رسمی، بدون تدوین.دانلود ویدیو
محیط شبیه‌ساز

برنامه‌ی Smart Home League چه شکلی است؟

تصاویر از برنامه‌ی رسمی لیگ (نسخه‌ی ۲.۱.۰) گرفته شده‌اند. نسخه‌ی Windows یک فایل exe است که همان برنامه را در پنجره‌ی خودش باز می‌کند.

شروع از صفر

از صفر تا اولین مسابقه: باز کردن برنامه، گرفتن کد پایه، بارگذاری و تحویل

این بخش برای کسی نوشته شده که هنوز هیچ‌چیز نصب نکرده. مرحله‌ها را به ترتیب بروید؛ در پایان یک مسابقه یا پرواز واقعی با کد خودتان دیده‌اید.

چه چیزهایی لازم دارید

یک رایانه‌ی ویندوزی و یک ویرایشگر متن مثل VS Code یا Notepad++. Python لازم نیست نصب کنید؛ برنامه خودش کد شما را اجرا می‌کند. اگر نمی‌خواهید چیزی دانلود کنید، نسخه‌ی تحت وب همین برنامه در smarthomeleague.ir/game در مرورگر باز می‌شود.

برنامه را دانلود و باز کنید

از بخش دانلود فایل SmartHomeLeague-Windows.exe (حدود ۱۰ مگابایت) را بگیرید و روی آن دوبار کلیک کنید. نصب ندارد. اگر ویندوز پنجره‌ی «Windows protected your PC» نشان داد، More info و بعد Run anyway را بزنید. بعد از این به اینترنت نیازی نیست.

رده‌ی خود را انتخاب کنید

در صفحه‌ی اول روی کارت رده‌ی تیم خود بزنید: زیر ۱۴ سال یا زیر ۱۹ سال. خانه، حسگرها و قوانین با رده عوض می‌شود، پس همان رده‌ای را بزنید که در سایت ثبت‌نام کرده‌اید. زبان برنامه از منوی ☰ قابل تغییر است.

کد پایه را بگیرید

در برنامه روی دکمه‌ی کد پایه بزنید. یک فایل Python کامل دانلود می‌شود که همه‌ی حسگرها و متغیرها را با توضیح فارسی داخل خودش دارد. آن را در پوشه‌ای مثل Documents\smarthome با نام تیم ذخیره کنید، مثلاً team.py. همین فایل‌ها در SmartHome-BaseCode.zip سایت هم هست (base_u14.py و base_u19.py) به‌همراه آموزش کامل از صفر.

اولین مسابقه را بدون تغییر کد اجرا کنید

روی حالت مسابقه بزنید. در کارت تیم ۱ نام تیم را بنویسید، رنگ را انتخاب کنید و روی بارگذاری ربات (.py) بزنید و فایل team.py را بدهید. برای تیم ۲ یکی از کدهای نمونه‌ی خود برنامه را انتخاب کنید. شروع مسابقه را بزنید. بازی ۱۸۰ ثانیه است. از منوی ☰ گزینه‌ی Sensors را روشن کنید تا عدد زنده‌ی حسگرها و سرعت چرخ‌ها را ببینید.

کد را کجا و چطور عوض کنیم

فایل team.py را در VS Code باز کنید. همه‌ی کد شما در همین یک فایل است و برنامه آن را ۱۰ بار در ثانیه از اول اجرا می‌کند: اول حسگرها را می‌خوانید، آخر سر دو متغیر wheelleft و wheelright را تنظیم می‌کنید. برای شروع فقط یک عدد را عوض کنید، مثلاً سرعت ۲۵ را ۲۰ کنید، ذخیره کنید، دوباره بارگذاری ربات و مسابقه. تغییر، ذخیره، بارگذاری، تماشا. همین.

گزارش پایان بازی را بخوانید

در پایان مسابقه نمودار امتیاز، مسیر حرکت ربات و چند جمله می‌بینید که می‌گوید کجا وقت تلف شده. هر بازی ضبط می‌شود (REC) و می‌توانید بازپخشش کنید. از همین گزارش بفهمید قدم بعدی چیست: مثلاً ربات در یک اتاق گیر می‌کند یا فرش را نمی‌شناسد.

تحویل کد برای مسابقه

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

اگر به مشکل خوردید

اگر زیر کارت تیم پیام قرمز آمد، یعنی کد خطا دارد؛ معمولاً اسم متغیری که وجود ندارد یا یک تورفتگی اشتباه. پنل Sensors شماره‌ی خطی را که در هر تیک اجرا شده نشان می‌دهد و خطا را پیدا می‌کند. یادتان باشد برنامه فقط بخشی از Python را می‌فهمد: عدد، if/elif/else، while، def و چهار عمل اصلی. لیست، رشته، for و import نداریم.

کد پایه در یک نگاه

# این فایل ۱۰ بار در هر ثانیه اجرا می‌شود:
# اول سنسورها را می‌خوانی، بعد دو چرخ را تنظیم می‌کنی.

wheelleft = 25
wheelright = 25

if front < 60:            # روبه‌رو بسته
    wheelleft = 18
    wheelright = -18       # چرخش درجا
elif frontleft < 50:      # مانع سمت چپ
    wheelleft = 25
    wheelright = 8         # قوس به راست
elif frontright < 50:     # مانع سمت راست
    wheelleft = 8
    wheelright = 25

if bumper == 1:            # خوردم!
    state = 2              # اول عقب…
    timer = 5              # timer = 10 یعنی ۱ ثانیه

متغیرهای در دسترس

ناممعنیرده
front, frontleft, frontrightفاصله به سانتی‌متر؛ کوچک‌تر = نزدیک‌تر؛ بیشینه ۲۰۰همه
bumper / bumperfront / bumperback۱ = تماس با دیوار، مبل، گربه، سگ یا حریفهمه
colorرنگ کفِ جلو: white تمیزنشده، red/blue مال ربات‌ها، green فرش بزرگ، purple فرش کوچک، black دیوارU14، U19
headingقطب‌نما، ۰ تا ۳۵۹ درجهU14، U19
room, clean1..clean5شماره‌ی اتاق فعلی و درصد تمیزی هر اتاقU14، U19
gps, imu, goto(x, y)موقعیت، جهت‌گیری و حرکت به مختصاتU19
wheelleft, wheelrightخروجی: سرعت دو چرخ (تا اجرای بعدی می‌ماند)همه
timer, stateحافظه‌ی شما بین تیک‌ها؛ برای مانورهای چندمرحله‌ایهمه
نکته‌ی راهنمای دانش‌آموزی: نسخه‌ی مرجع Webots این لیگ از کلاس RobotU14 / RobotU19 در بسته‌ی smarthome_robot استفاده می‌کند (robot.left_motor = 8.0). API نهایی مسابقه را کمیته فنی با نسخه‌ی شبیه‌ساز رسمی اعلام می‌کند؛ کد را با همان نسخه‌ی رسمی آزمایش کنید.
کد پایه

کد پایه‌ی Smart Home — یک فایل برای هر رده

همان «کد پایه»‌ای که داخل برنامه با دکمه‌ی کد پایه دریافت می‌کنید؛ یک برنامه‌ی کامل و قابل اجرا با توضیح فارسی و انگلیسی روی هر خط. در حالت مسابقه با «بارگذاری ربات (.py)» آن را بدهید و شروع کنید.

فایلردهچه چیزی اضافه دارد
base_fs.pyفرست‌استپسه حسگر فاصله، سپر جلو/عقب، حرکت‌های آسان (forward، backward، turnleft...)
base_u14.pyU14حسگر رنگ، قطب‌نما، شماره‌ی اتاق و درصد تمیزی، movetime
base_u19.pyU19GPS، goto(x, y)، باتری و ایستگاه شارژ
طرح درس

طرح درس Smart Home — از اولین حرکت تا مسابقه‌ی آزمایشی

بر پایه‌ی «راهنمای برنامه‌نویسی دانش‌آموزی Smart Home، پیش‌نویس v0.2». هر جلسه حدود ۹۰ دقیقه با ریتم ثابت: گرم‌کردن، یک مفهوم، تمرین تیمی در برنامه، ارزیابی، تکلیف. جلسه‌های ۸ و ۹ برای U14 و U19 متفاوت است.

همین طرح درس را به‌صورت فایل جداگانه دانلود کنید:دانلود PDFنسخه‌ی Word
۱خانه، مسابقه و «تیک»مشاهده‌ای
هدف

دانش‌آموز توضیح دهد مسابقه چطور برده می‌شود و این‌که برنامه‌اش در هر تیک (۱۰ بار در ثانیه) از نو اجرا می‌شود.

فعالیت
  • برنامه را باز کنید، رده را انتخاب کنید و یک مسابقه بین دو کد نمونه (League sample و دیوارگرد) اجرا کنید.
  • روی نقشه، اتاق‌ها، فرش‌ها، گربه و سگ و گوشه‌های شروع را پیدا کنید.
  • «Sensors» را روشن کنید و ببینید عددها چطور زنده تغییر می‌کنند.
ارزیابی

چه چیزی امتیاز می‌دهد؟ آیا تمیز کردن دوباره‌ی کاشی خودم امتیاز دارد؟ وقتی زمان تمام شود چه می‌شود؟

۲اولین حرکت: جلو، عقب، چرخشکدنویسی
مفاهیم
  • ربات دیفرانسیلی: دو چرخ با سرعت مستقل. برابر = مستقیم، مخالف = چرخش درجا، نابرابر = قوس.
  • مقداری که در wheelleft و wheelright می‌گذارید تا تیک بعدی می‌ماند.
wheelleft = 25;  wheelright = 25     # جلو
wheelleft = -25; wheelright = -25    # عقب
wheelleft = 18;  wheelright = -18    # چرخش درجا
wheelleft = 25;  wheelright = 8      # قوس به راست
تمرین
  • چالش ۱: ربات ۲ ثانیه جلو برود و بایستد (با timer).
  • جهت واقعی چرخش را در برنامه بررسی کنید، حدس نزنید.
۳خواندن حسگرهای فاصلهکدنویسی
مفاهیم
  • سه حسگر جلو: frontleft، front، frontright؛ عدد کوچک‌تر یعنی نزدیک‌تر.
  • آستانه را خودتان کالیبره کنید: مقادیر را در فضای باز و نزدیک دیوار ثبت کنید.
تمرین
  • چالش ۲: مقدار خام حسگرها را نزدیک دیوارهای مختلف ثبت کنید.
  • چالش ۳: ربات در یک آستانه‌ی کالیبره‌شده بایستد یا بچرخد.
۴سپر (bumper) و بازیابی از برخوردکدنویسی
مفاهیم
  • bumper == 1 یعنی تماس. سپر پشتیبان حسگر فاصله است، نه جایگزین آن.
  • یک بازیابی خوب: مدت مشخصی عقب برو، بعد مدت مشخصی بچرخ.
if timer > 0:
    timer -= 1
    wheelleft = -6; wheelright = -6      # عقب
elif bumper == 1:
    timer = 5                            # نیم ثانیه عقب
تمرین
  • چالش ۴: بعد از برخوردهای پی‌درپی، ربات مسیر جدید پیدا کند.
۵ماشین حالت: MOVE، BACK، TURNکدنویسی
مفاهیم
  • سه حالت با state و شمارنده‌ی timer؛ هر فاز بازیابی بعد از تعداد مشخصی تیک تمام می‌شود تا ربات در گوشه گیر نکند.
if timer > 0:
    timer -= 1
    if state == 2:             # تکه‌ی ۱: عقب
        wheelleft = -25; wheelright = -25
        if timer == 0:
            state = 1; timer = 4
    else:                      # تکه‌ی ۲: چرخش
        wheelleft = 18; wheelright = -18
elif bumper == 1 or front < 40:
    state = 2; timer = 5
تمرین
  • جهت چرخش ثابت می‌تواند در اتاق‌های پیچیده شکست بخورد؛ برخوردهای تکراری را بشمارید و راهبرد را عوض کنید.
۶حسگر رنگ و اتاق‌هاکدنویسی
مفاهیم
  • color رنگ کف جلوی ربات را می‌گوید: white کاشی تمیزنشده (برو بگیرش)، red/blue متعلق به ربات‌ها، green فرش بزرگ (نصف سرعت، بی‌امتیاز)، purple فرش کوچک، black دیوار.
  • room و clean1..clean5: «اگر در اتاق ۲ هستم و اتاق ۲ بیش از ۸۰٪ تمیز شده، برو اتاق بعدی».
تمرین
  • قانونی بنویسید که ربات پیش از ورود به فرش سبز با قوس عقب‌گرد از آن جدا شود.
۷قطب‌نما و حرکت به جهت مشخصU14 و U19
مفاهیم
  • heading از ۰ تا ۳۵۹. حرکت «بچرخ تا درجه‌ی مطلق»: آن‌قدر بچرخ تا heading برابر عدد هدف شود.
  • قانون سه‌حرکته برای خروج از اتاق: «بچرخ به ۲۷۰ ← مستقیم برو ← بچرخ به ۱۸۰».
تمرین
  • ربات بعد از هر مانع، به جهت قبلی خود برگردد.
۸U19: GPS و goto / U14: ناوبری اتاق‌به‌اتاقتفکیک رده
U19
  • gps موقعیت x, y, z در مختصات شبیه‌ساز (نه کاشی)؛ imu roll, pitch, yaw. مبدأ و محورها را پیش از استفاده بررسی کنید.
  • با goto(x, y) مسیر گشت بین اتاق‌ها بسازید و GPS/IMU را در طول مسیر ثبت کنید (چالش ۵).
U14
  • با قطب‌نما و رنگ، از اتاق تمام‌شده خارج شوید و به اتاقی بروید که درصد تمیزی کمتری دارد.
۹U19: باتری و شارژ / U14: حیوانات و پایان بازیتفکیک رده
U19
  • باتری در طول بازی کم می‌شود و باید در ایستگاه شارژ پر شود. فقط موتور بازی تعیین می‌کند شارژ معتبر بوده یا نه. کد نمونه‌ی «مدیریت باتری» را مطالعه کنید. API دقیق شارژ را کمیته فنی با نسخه‌ی رسمی اعلام می‌کند؛ متد حدسی نسازید.
U14
  • گربه و سگ مانع متحرک‌اند؛ سپر آن‌ها را هم حس می‌کند. برنامه‌ریزی برای ثانیه‌های پایانی: کاشی‌های سفیدِ نزدیک را اولویت بدهید.
۱۰راهبرد قانون جابه‌جایی و حریفراهبرد
مفاهیم
  • اگر ربات ۱۰ ثانیه پیشرفت معناداری نداشته باشد، به یک کاشی آزاد تصادفی منتقل می‌شود و جریمه می‌خورد. برنامه باید پیش از آن خودش را نجات دهد.
  • گرفتن کاشی‌های حریف هم امتیاز است: اول کاشی‌های سفید، بعد کاشی‌های حریف.
تمرین
  • دو نسخه از کد را با همان نقشه و همان حریف مقایسه کنید؛ هر بار فقط یک تغییر بدهید و امتیاز، تعداد برخورد و زمان گیر کردن را ثبت کنید.
۱۱پایداری، بودجه‌ی پردازش و پوشه‌ی تحویلآماده‌سازی
مفاهیم
  • کد نباید در هیچ تیکی خطا بدهد یا کند شود؛ یک exception در طول مسابقه حق بازی مجدد نمی‌دهد.
  • پوشه‌ی تیم: robot.py، README.md، tests/، notes.txt. Smart Home یک کنترلر تک‌رباتی است؛ ساختار ZIP چهاررباتی Chovgan را کپی نکنید.
۱۲مسابقه‌ی آزمایشی: یک راند با قوانین واقعیمسابقه
فعالیت
  • کد هر تیم را روی فلش به ایستگاه داور (مربی) تحویل دهید؛ بعد از تحویل هیچ تغییری مجاز نیست (شبیه‌سازی قرنطینه).
  • مسابقات رودررو ۱۸۰ ثانیه‌ای با نقشه‌ی اعلام‌شده؛ امتیاز جدول ۳/۱/۰.
  • هر عضو تیم بخشی از کد را توضیح دهد.
قوانین

خلاصه‌ی قوانین مسابقه (پیش‌نویس ۱۷ اکتبر ۲۰۲۶)

متن کامل را از بخش دانلود بگیرید. بندهایی که با «RELEASE GATE» علامت خورده‌اند تا انتشار نسخه‌ی رسمی شبیه‌ساز توسط کمیته فنی قطعی نیستند.

SH-1
رده‌ها و سنU14 و U19 مستقل. سن مبنا ۳۰ ژوئن ۲۰۲۶: U14 متولد ۱ ژوئیه ۲۰۱۲ به بعد؛ U19 از ۱ ژوئیه ۲۰۰۷ تا ۳۰ ژوئن ۲۰۱۲. هر نفر فقط در یک تیم و یک رده.
SH-2
تیم۲ تا ۶ دانش‌آموز با یک کاپیتان. در طول اجرای رسمی و قرنطینه‌ی کد، مربی و والدین حق تغییر برنامه یا راهنمایی زنده ندارند.
SH-3/4
نرم‌افزار و خودمختاریفقط شبیه‌ساز، Python و SDK اعلام‌شده. پس از شروع فقط برنامه‌ی تحویل‌داده‌شده ربات را کنترل می‌کند؛ هدایت دستی، تغییر کد حین بازی و دسترسی به داده‌های پنهان ممنوع.
SH-5/6
قالب مسابقهیک ربات برای هر تیم، هم‌زمان در یک خانه، ۱۸۰ ثانیه‌ی شبیه‌سازی. خانه یک شبکه‌ی منطقی ۲۲×۲۲ کاشی (پیشنهادی).
SH-7/8
شروع و موانعداور نقشه، seed و جای ربات‌ها را ثبت می‌کند؛ تیم‌ها نمی‌توانند نقطه‌ی شروع را انتخاب کنند. دیوار و مبل مانع‌اند؛ حیوانات متحرک باید قابل بازتولید باشند. برخورد به‌خودی‌خود جریمه‌ی عددی ندارد مگر در ضمیمه‌ی امتیازدهی بیاید.
SH-9/10
حسگرها و حرکتفقط API منتشرشده (نام، واحد، بازه). دسترسی به داده‌ی supervisor ممنوع. حرکت فقط با فرمان چرخ‌ها؛ نوشتن مستقیم مختصات ربات ممنوع.
SH-11/12
U14 و U19U14: حسگرهای فاصله، سپر، انکودر چرخ (و قطب‌نما/رنگ در برنامه‌ی رسمی). U19: به‌علاوه GPS، IMU، باتری و ایستگاه شارژ با مدل انرژی یکسان برای دو تیم.
SH-13/14
امتیاز و برندههر کاشی یک مالک دارد: خنثی، تیم A یا تیم B. تمیز کردن کاشی، مالکیت را منتقل می‌کند؛ تکرار روی کاشی خودی امتیاز نمی‌دهد. امتیاز = تعداد کاشی‌های در اختیار در لحظه‌ی پایان. بیشتر = برنده؛ مساوی = تساوی.
SH-15
گیر کردنبعد از ۱۰ ثانیه بدون پیشرفت: جابه‌جایی خودکار و کسر ۲ کاشی (پیشنهادی؛ منوط به تأیید در نسخه‌ی رسمی).
SH-17/18
جدول و تساوی‌شکنیبرد ۳، تساوی ۱، باخت ۰. ترتیب: امتیاز جدول ← تفاضل امتیاز ← مجموع امتیاز ← رودررو (فقط دو تیم). حذفی: دو بازی با جابه‌جایی سمت و مجموع امتیاز. گروه‌ها و جدول پیش از اولین دور منتشر می‌شود.
SH-19/20
قرنطینه و تحویلتا لحظه‌ی اعلام «فریز»، تمرین آزاد است. در فریز یک بسته‌ی تحویل هش می‌شود و تا پایان مسابقات تغییر نمی‌کند. بسته‌ی نامعتبر مهلت اصلاح مشخص دارد.
SH-21/22
کد، کتابخانه و AIتیم باید بتواند الگوریتمش را توضیح دهد. استفاده از کد نمونه‌ی رسمی و متن‌باز با ذکر منبع مجاز؛ کپی از تیم‌های دیگر و راه‌حل‌های آماده ممنوع. هیچ تماس شبکه‌ای/API مدل در طول مسابقه. دستکاری داور، seed، فایل حریف یا نقشه = ابطال و بررسی انضباطی.
SH-23–26
داور، اعتراض، جریمهامتیازده خودکار مرجع است؛ داور انسانی فقط هویت‌ها، هش‌ها و حوادث را بررسی می‌کند. خرابی سمت برگزارکننده = بازی مجدد؛ خطای کد تیم = خیر. اعتراض فقط توسط کاپیتان، ظرف ۱۵ دقیقه (پیشنهادی) با شناسه‌ی مسابقه و شواهد.
دانلود

برنامه‌ی لیگ، قوانین و راهنمای برنامه‌نویسی

نسخه‌های macOS و Linux و کد پایه‌ی هر رده از داخل خود برنامه و کانال لیگ در دسترس است. به‌روزترین نسخه‌ی فایل‌ها همیشه ابتدا در کانال کمیته فنی منتشر می‌شود.

در یک نگاه

ربات Smart Home چه دارد و از چه استفاده می‌کند؟

خلاصه‌ی همه‌فهم. جزئیات و اعداد دقیق در آموزش کامل داخل کد پایه (TUTORIAL-FA.md) است.

ربات یک جاروبرقی گرد با دو چرخ است. شما فقط سرعت چرخ چپ و راست را می‌دهید (از −۲۵ تا ۲۵؛ ۲۵ یعنی حدود یک متر بر ثانیه). برنامه‌ی شما ۱۰ بار در ثانیه از بالا تا پایین اجرا می‌شود: اول حسگرها را می‌خوانید، بعد دو چرخ را تنظیم می‌کنید. همین.

همه‌ی رده‌ها این‌ها را دارند:

  • سه چشمِ جلو (frontleft، front، frontright) — تا مانعِ روبه‌رو چند سانتی‌متر مانده؟ عدد کوچک‌تر = نزدیک‌تر، ۲۰۰ = چیزی نمی‌بیند.
  • سپر (bumper، bumperfront، bumperback) — به چیزی خورده‌ام؟ از جلو یا از پشت؟
  • حسگر رنگ (color) — کفِ جلوی ربات چه رنگی است؟ سفید = کاشی آزاد، قرمز/آبی = مال ربات‌ها، سبز = فرش بزرگِ کند، بنفش/نارنجی/فیروزه‌ای = فرش نشانه‌ی دمِ در، سیاه = دیوار.
  • خبرهای خانه (room، clean1 تا clean5) — الان در کدام اتاقم و هر اتاق چند درصد به رنگ من شده.
  • امتیاز و زمان (mytiles، rivaltiles، timeleft).

فرست‌استپ (۸ تا ۱۱ سال) همین‌ها را دارد و بس؛ خانه آرام است، گربه و سگ ندارد.

U14 به‌علاوه‌ی قطب‌نما (heading، ۰ تا ۳۵۹ درجه: ۰ راست، ۹۰ بالا) — رو به کدام طرفم؟ و خانه‌ی زنده با گربه و سگ که مانع متحرک‌اند.

U19 به‌علاوه‌ی چهار چشمِ بغل و عقب، حسگر موقعیت (GPS) (x و y به سانتی‌متر از گوشه‌ی پایین‌چپ) با دستورهای goto، distto و angleto، و باتری (battery) با یک پد شارژ ثابت (dockx، docky). باتری صفر ربات را خاموش نمی‌کند، ولی با ۱۵٪ سرعت می‌خزد. روی کف چند لکه‌ی آب هست که هر ورود ۱۰٪ باتری می‌گیرد.

از این‌ها چطور استفاده می‌کند؟ با سه چشم جلو قبل از دیوار می‌پیچد، با سپر از کنج فرار می‌کند، با حسگر رنگ دنبال کاشی‌های سفید می‌رود و فرش سبز را دور می‌زند، با شماره‌ی اتاق اتاقِ تمام‌شده را ترک می‌کند؛ در U14 با قطب‌نما به جهت مشخص می‌رود و در U19 با GPS فاصله و زاویه‌ی پد شارژ را با مثلث قائم‌الزاویه حساب می‌کند و به‌موقع برمی‌گردد. همه‌ی این‌ها با چند خط Python ساده نوشته می‌شود؛ کد پایه و آموزش مصور را از بخش دانلود بگیرید.

کانال لیگ

کانال تلگرام و بله لیگ Smart Home

برای دریافت فایل‌ها، اطلاعیه‌ها و پرسیدن سؤال از کمیته فنی جوین شوید.