الگوریتمهای ربات جاروبرقی: چطور تصمیم میگیرد کجا برود؟
سختترین بخش ساخت ربات جاروبرقی، مکش نیست؛ تصمیمگیری است. این مقاله همهی الگوریتمهای رایج جاروکشی را از ساده به پیچیده مرور میکند — همان الگوریتمهایی که دانشآموزان در مسابقات لیگ خانه هوشمند با پایتون پیادهسازی میکنند.
صورت مسئله
فرض کنید کف خانه به کاشیهای کوچک تقسیم شده است. ربات باید از روی همهی کاشیهای قابل دسترسی عبور کند، در کمترین زمان، بدون برخورد با موانع و بدون تکرار بیمورد. این مسئله در رباتیک نام مشخصی دارد: برنامهریزی مسیر پوششی (Coverage Path Planning).
سه معیار سنجش وجود دارد: چند درصد فضا پوشش داده شد، چقدر طول کشید، و چقدر مسیر تکراری طی شد. الگوریتم خوب، تعادل بین این سه است.
الگوریتمهای ساده و بدون نقشه
۱. حرکت تصادفی (Random Bounce)
مستقیم برو؛ به مانع خوردی، با زاویهای تصادفی بچرخ و ادامه بده. هیچ حافظه و نقشهای لازم نیست و پیادهسازی آن چند خط کد است. عیب بزرگش این است که پوشش کامل تضمین نمیشود و زمان زیادی میبرد؛ اما به یک دلیل مهم هنوز استفاده میشود: هرگز بهطور کامل شکست نمیخورد و به هیچ سنسور دقیقی نیاز ندارد.
۲. مارپیچ (Spiral)
ربات از یک نقطه شروع میکند و در دایرههایی با شعاع فزاینده میچرخد. برای تمیز کردن یک لکهی متمرکز عالی است و معمولاً وقتی سنسور تشخیص خاک، نقطهی کثیفی پیدا کند فعال میشود.
۳. دیوارگردی (Wall Following)
ربات کنار دیوار حرکت میکند و فاصلهی ثابتی از آن نگه میدارد. برای تمیز کردن دور اتاق و لبهها ضروری است و در عمل، همیشه با روشهای دیگر ترکیب میشود.
ترکیب این سه، همان کاری است که نسل اول رباتهای خانگی میکردند: بیشتر وقتها تصادفی، هر از گاهی مارپیچ، و در انتها یک دور دیوارگردی.
الگوریتمهای منظم
۴. پوشش رفتوبرگشتی (Boustrophedon)
همان الگوی شخم زدن زمین: یک خط مستقیم برو، کمی کنار بکش، خط بعدی را برگرد. اسم علمی آن از یونانی به معنی «مثل گاو نر که شخم میزند» میآید. این روش، کارآمدترین الگوی پوشش برای یک فضای باز مستطیلی است.
پیشنیاز آن این است که ربات بداند چقدر چرخیده — یعنی به ژیروسکوپ نیاز دارد. اگر خانه موانع زیادی داشته باشد، فضا به چند ناحیه تقسیم میشود و هر ناحیه جداگانه رفتوبرگشتی پوشش داده میشود.
۵. تقسیم فضا به سلول
ربات فضا را به شبکهای از خانههای کوچک تقسیم میکند و برای هر خانه یک وضعیت نگه میدارد: تمیز نشده، تمیز شده، مانع. حالا مسئله به یک مسئلهی جستوجوی کلاسیک تبدیل میشود.
الگوریتمهای نقشهمحور
۶. SLAM — نقشهسازی و مکانیابی همزمان
مسئلهی مرغ و تخممرغ رباتیک: برای ساختن نقشه باید بدانی کجایی، و برای دانستن اینکه کجایی باید نقشه داشته باشی. الگوریتمهای SLAM هر دو را همزمان و بهصورت تخمینی حل میکنند. هر ربات نقشهکشی که امروز میخرید، نسخهای از SLAM را اجرا میکند.
۷. مسیریابی با A*
وقتی نقشه داشته باشید، پیدا کردن کوتاهترین مسیر از نقطهی فعلی تا یک هدف (مثلاً نزدیکترین نقطهی تمیزنشده یا ایستگاه شارژ) با الگوریتمهایی مثل A* یا دایکسترا انجام میشود. این دقیقاً همان الگوریتمهای جستوجویی است که در خبر ایسنا هم به آن اشاره شده بود.
۸. جستوجوی مرزی (Frontier Exploration)
ربات مرز بین «ناحیهی شناختهشده» و «ناحیهی ناشناخته» را پیدا میکند و به سمت نزدیکترین نقطهی این مرز میرود. با تکرار این کار، کل فضا بهصورت هوشمندانه کشف میشود.
مقایسهی روشها
| روش | پیشنیاز | کیفیت پوشش | سختی پیادهسازی |
|---|---|---|---|
| حرکت تصادفی | سنسور برخورد | پایین | خیلی کم |
| مارپیچ | ژیروسکوپ | موضعی | کم |
| دیوارگردی | سنسور فاصلهی جانبی | فقط لبهها | کم |
| رفتوبرگشتی | ژیروسکوپ و اودومتری | خوب | متوسط |
| SLAM و A* | لیدار یا دوربین | عالی | زیاد |
توصیهی عملی برای کسی که تازه شروع کرده: از پایین جدول شروع نکنید. اول یک ربات تصادفی بنویسید که هرگز گیر نکند، بعد دیوارگردی اضافه کنید، بعد ژیروسکوپ را وارد کنید و به الگوی منظم برسید.
همین الگوریتمها در مسابقات
در لیگ ربات جاروبرقی هوشمند، دانشآموزان دقیقاً همین مسئله را حل میکنند. طبق گزارش خبرگزاری ایسنا از دورهی برگزارشده در المپیک فناوری، نیما نظری مسئول این لیگ توضیح داده است که تیمها با زبان پایتون برای ربات جاروبرقی هوشمند خود کد مینویسند و ربات باید بتواند «کل زمین را با بهرهگیری از الگوریتمهای جستوجو (searching) جارو کند».
نکات دیگری که در آن گزارش آمده و تصویر خوبی از فضای مسابقه میدهد:
- رقابت در سه ردهی دبستانی، زیر ۱۴ سال و زیر ۱۹ سال برگزار میشود.
- تیمها در گروههای ۲ تا ۶ نفره و بدون دخالت معلمان برنامهنویسی میکنند.
- هر روز نقشهی جدیدی از خانه به تیمها داده میشود تا الگوریتم فقط برای یک نقشه بهینه نشده باشد.
- همهی اجزای رقابت شبیهسازیشده است و هیچ ربات فیزیکی ساخته نمیشود.
- امتیازها بر اساس تعداد کاشیهای جاروشده محاسبه میشود؛ هرچه بیشتر، امتیاز بالاتر.
الگوریتم خودت را در مرورگر تست کنآموزش پیادهسازی با پایتون
سوالات پرتکرار
بهترین الگوریتم برای ربات جاروبرقی کدام است؟
اگر ربات لیدار یا دوربین داشته باشد، ترکیب SLAM برای نقشهسازی با مسیریابی A* و پوشش رفتوبرگشتی بهترین نتیجه را میدهد. اما اگر فقط سنسور برخورد و ژیروسکوپ در اختیار باشد، پوشش رفتوبرگشتی همراه با دیوارگردی بهترین انتخاب عملی است.
الگوریتم حرکت تصادفی چرا هنوز استفاده میشود؟
چون به هیچ سنسور دقیقی نیاز ندارد، پیادهسازیاش چند خط کد است و هرگز بهطور کامل شکست نمیخورد. در فضاهای کوچک و با زمان کافی، پوشش قابل قبولی میدهد و هزینهی ساخت ربات را بسیار پایین نگه میدارد.
SLAM دقیقاً یعنی چه؟
یعنی نقشهسازی و مکانیابی همزمان. ربات در حالی که نقشهی محیط را میسازد، موقعیت خودش را هم در همان نقشه تخمین میزند. این دو مسئله به هم وابستهاند و الگوریتمهای SLAM هر دو را با هم و بهصورت آماری حل میکنند.
برای شروع، کدام الگوریتم را اول پیاده کنم؟
ابتدا یک ربات ساده بنویسید که مستقیم میرود و هنگام برخورد میچرخد و هرگز گیر نمیکند. سپس دیوارگردی را اضافه کنید و در مرحلهی بعد با کمک ژیروسکوپ به الگوی منظم رفتوبرگشتی برسید. رسیدن به SLAM از همان ابتدا معمولاً به شکست میانجامد.
امتیاز در مسابقات لیگ خانه هوشمند چطور حساب میشود؟
بر اساس میزان تمیزکاری؛ یعنی تعداد کاشیهای کف که ربات در زمان مشخص مسابقه جارو کرده است. هرچه ربات کاشی بیشتری را پوشش دهد، امتیاز تیم بیشتر میشود.
مقالات مرتبط
میخواهی خودت امتحان کنی؟
لیگ خانه هوشمند یک مسابقهی رباتیک دانشآموزی است که در آن ربات جاروبرقی را با پایتون برنامهنویسی میکنید — بدون نیاز به هیچ سختافزاری.
