پرش به محتوای اصلی
آزمایشگاه‌های مجازی یادگیری با شبیه‌سازی ورود ثبت‌نام
درس ۲ از ۶ مقدماتی ۲۰ دقیقه

دستگاه مختصات و حرکت گام‌به‌گام

مکان و جهت ربات را با مختصات توصیف می‌کنی و مسیر، جابه‌جایی و زمان اجرای برنامه را حساب می‌کنی.

در پایان این درس می‌توانید

  • حالت ربات را به‌صورت مکان و جهت بنویسی.
  • اثر دستورهای F و R و L را روی مختصات و زاویه پیش‌بینی کنی.
  • فاصلهٔ منهتنی و جابه‌جایی مستقیم را از هم تشخیص بدهی و حساب کنی.
  • زمان اجرای یک برنامه را از روی تعداد گام‌ها و چرخش‌ها به دست بیاوری.

ربات روی زمین مسابقه بدون «آدرس» گم می‌شود. برای اینکه بتوانی به او بگویی کجاست و باید به کجا برود، به یک دستگاه مختصات نیاز داری. زمین را به خانه‌های مربعیِ هم‌اندازه تقسیم می‌کنیم و هر خانه را با یک زوج عدد به شکل (x, y) نام‌گذاری می‌کنیم؛ x شمارهٔ ستون و y شمارهٔ سطر است. اما مکان به‌تنهایی کافی نیست: دو رباتی که در یک خانه ایستاده‌اند ولی یکی رو به شمال و دیگری رو به شرق است، با اجرای یک برنامهٔ یکسان به دو جای کاملاً متفاوت می‌رسند.

حالت ربات: مکان به‌علاوهٔ جهت

سه‌تایی (x, y, θ) را حالت ربات می‌نامیم. دستور F ربات را یک خانه در امتداد جهت فعلی جلو می‌برد و فقط یکی از دو مؤلفهٔ x یا y را یک واحد کم یا زیاد می‌کند. دستورهای R و L مکان را دست‌نخورده می‌گذارند و تنها جهت را ۹۰ درجه می‌چرخانند. اگر شمال را ۰ درجه بگیریم، شرق ۹۰، جنوب ۱۸۰ و غرب ۲۷۰ درجه می‌شود؛ هر R نود درجه به θ اضافه می‌کند و هر L نود درجه کم می‌کند. چون جهت‌ها دوره‌ای‌اند، نتیجه را به پیمانهٔ ۳۶۰ می‌گیریم؛ مثلاً از ۲۷۰ درجه یک R تو را به ۳۶۰ یعنی همان ۰ درجه می‌رساند.

دو معنای متفاوت از «فاصله»

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

مثال عددی حل‌شده

ربات از خانهٔ (۰، ۰) رو به شمال شروع می‌کند و برنامهٔ F,F,F,R,F,F را اجرا می‌کند. حالت را گام‌به‌گام ردگیری می‌کنیم:

گامدستورمکانجهت
۱F(۰، ۱)شمال
۲F(۰، ۲)شمال
۳F(۰، ۳)شمال
۴R(۰، ۳)شرق
۵F(۱، ۳)شرق
۶F(۲، ۳)شرق

ربات در خانهٔ (۲، ۳) رو به شرق می‌ایستد. طول مسیرِ پیموده‌شده ۵ خانه است، ولی جابه‌جایی مستقیم برابر جذر (۲ به توان ۲ + ۳ به توان ۲) یعنی جذر ۱۳ و تقریباً ۳٫۶۱ خانه است. اگر هر خانه ۲۰ سانتی‌متر باشد، ربات ۵ × ۲۰ = ۱۰۰ سانتی‌متر راه رفته ولی فقط ۳٫۶۱ × ۲۰ = ۷۲٫۱ سانتی‌متر از نقطهٔ شروع دور شده است؛ نسبت این دو برابر ۷۲٫۱ ÷ ۱۰۰ = ۰٫۷۲ است.

حالا زمان را حساب کنیم. اگر هر گام F مدت ۰٫۸ ثانیه و هر چرخش ۰٫۵ ثانیه طول بکشد، برنامه ۵ گام و ۱ چرخش دارد، پس زمان کل برابر ۵ × ۰٫۸ + ۱ × ۰٫۵ = ۴ + ۰٫۵ = ۴٫۵ ثانیه می‌شود. فاصلهٔ منهتنی از (۰، ۰) تا (۲، ۳) برابر ۲ + ۳ = ۵ است و دقیقاً با تعداد F‌های برنامه برابر است؛ یعنی این برنامه هیچ گام هدررفته‌ای ندارد.

همیشه پیش از نوشتن برنامه، مختصات شروع و مختصات هدف را روی کاغذ بنویس و فاصلهٔ منهتنی را حساب کن. اگر تعداد F‌های برنامه‌ات از این عدد بیشتر شد، یعنی جایی راه را دور رفته‌ای.

یک کاربرد واقعی

ربات‌های نقشه‌بردار داخل ساختمان دقیقاً همین کار را می‌کنند: چون سیگنال ماهواره‌ای به داخل ساختمان نمی‌رسد، ربات از یک نقطهٔ معلوم شروع می‌کند و با شمردن دورِ چرخ‌ها و خواندن ژیروسکوپ، مختصات و زاویهٔ خود را گام‌به‌گام به‌روزرسانی می‌کند. به این روش «حساب مرده» یا مسیریابی تجمعی می‌گویند و پایهٔ کار ربات‌های جاروبرقی خانگی است.

در شبیه‌ساز چه می‌بینی

برنامهٔ پیش‌فرض را اجرا کن و شمارندهٔ گام‌ها را با تعداد F‌های برنامه مقایسه کن؛ خواهی دید که چرخش‌ها روی شمارندهٔ خانه اثر ندارند ولی زمان مسابقه را بالا می‌برند.

رابطه‌های کلیدی

theta_R = (theta + 90) mod 360اثر دستور R بر جهت ربات بر حسب درجه
theta_L = (theta - 90) mod 360اثر دستور L بر جهت ربات بر حسب درجه
d_M = |x2 - x1| + |y2 - y1|فاصلهٔ منهتنی؛ کمینهٔ تعداد دستورهای F
d = sqrt((x2 - x1)^2 + (y2 - y1)^2)جابه‌جایی مستقیم میان خانهٔ شروع و خانهٔ پایان
t = n_F × t_F + n_T × t_Tزمان اجرای برنامه از روی تعداد گام‌ها و چرخش‌ها
درس قبلی

مأموریت شبیه‌سازی

برنامهٔ پیش‌فرض را گام‌به‌گام دنبال کن و مختصات و جهت ربات را بعد از هر دستور روی کاغذ بنویس.

  1. پیش از اجرا، جدول ردگیری برنامهٔ F,F,F,R,F,F را کامل کن و خانهٔ پایانی را حدس بزن.
  2. برنامه را اجرا کن و حدس خود را با خانهٔ واقعی مقایسه کن.
  3. برنامه را به F,F,F,L,F,F تغییر بده و ببین خانهٔ پایانی نسبت به قبل چگونه قرینه می‌شود.
  4. برنامه را به F,R,F,F,F,F تغییر بده و بگو چرا تعداد گام‌ها ثابت مانده ولی مقصد عوض شده است.
انتظار می‌رود: ربات پس از سه گام رو به شمال یک چرخش راست انجام می‌دهد و با دو گام دیگر در خانه‌ای می‌ایستد که دو ستون و سه سطر از نقطهٔ شروع فاصله دارد.
برنامه‌نویسی ربات دنبالهٔ دستورها را بنویسید و ربات را تا هدف هدایت کنید.
پارامترها را تغییر دهید تا نتیجه زنده به‌روز شود
حالت تمام‌صفحه

آزمون این درس

۵ پرسش چهارگزینه‌ای. پس از ثبت، پاسخ درست و توضیح هر پرسش را می‌بینید. می‌توانید هر چند بار که خواستید تلاش کنید؛ بهترین نمره در کارنامه ثبت می‌شود.