جلسه میدانی علوم کامپیوتر

CG_GUI_19

پیش‌زمینه

در طول تابستان ۲۰۲۰، من درس CSCI370 یا «مهندسی نرم‌افزار پیشرفته» را به‌عنوان بخشی از برنامهٔ کارشناسی علوم کامپیوترم در Colorado School of Mines گذراندم. CSCI370 درسی است که دانشجویان را وادار می‌کند برای یک شرکت، راه‌حل‌های مرتبط با نرم‌افزار را طراحی، پیاده‌سازی و مستندسازی کنند. این درس به دانشجویان اجازه می‌دهد دانشِ حاصل از دروسشان را برای مسائل واقعی علوم کامپیوتر به کار بگیرند. می‌توانید دربارهٔ این درس اینجا بیشتر بدانید.

در این درس، شما می‌توانید تصمیم بگیرید که روی چه پروژه/شرکتی کار خواهید کرد. این درس PDFهایی ارائه می‌کرد که هر پروژه و شرکت را توضیح می‌دادند. در نهایت تصمیم گرفتم روی پروژه‌ای که توسط شرکتی به نام Lunar Outpost منتشر شده بود و Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation نام داشت کار کنم. چون نام پروژه طولانی است، بیایید برای آن نام مستعار «تشخیص لغزش چرخ» را در نظر بگیریم.

مسئله

Lunar Outpost یک استارتاپ است که تلاش می‌کند مریخ‌نوردهای ماه‌نشینِ خودکار بسازد. روی ماه، گردوغبار زیادی وجود دارد که به‌دلیل ایجاد لغزش زیاد چرخ‌ها شناخته شده است. این وضعیت ایده‌آل نیست، زیرا لغزش چرخ می‌تواند باعث شود سامانه‌های خودکار موقعیت واقعی خود را گم کنند. روی زمین، این مشکل با استفاده از داده‌های GPS برای اصلاح هرگونه انحراف ناشی از لغزش چرخ حل می‌شود. اما مشکل GPS این است که فقط با داشتن ۳۰+ ماهوارهٔ ناوبری که به‌طور مداوم به دور زمین در مدار می‌چرخند و سیگنال‌های منحصربه‌فردی را ارسال می‌کنند کار می‌کند؛ سیگنال‌هایی که به رایانه‌ها اجازه می‌دهند موقعیتشان را محاسبه کنند. اما روی ماه، در حال حاضر چیزی به نام GPS وجود ندارد. با دانستن این موضوع، باید از روشی دیگر غیر از GPS برای تشخیص لغزش چرخ استفاده شود. یک گزارش مفصل‌تر از مسئلهٔ این پروژه را می‌توان اینجا دید.

هم‌تیمی‌ها

این پروژه یک پروژهٔ ساده نبود، بنابراین باید در قالب یک تیم انجام می‌شد. تیم از پنج دانشجوی دیگر Colorado School of Mines تشکیل شده بود:

  • Mehmet Yilmaz
  • Kane Bruce
  • Braedon O’Callaghan
  • Liam Dempsey
  • Kevin Grant

این پروژه از ما می‌خواست با برخی از ROS، C++، Python، Linux، Raspberry Pi و Arduino آشنا باشیم. بیشتر ما در یک یا چند مورد از این فناوری‌ها تجربه داشتیم، اما من تنها کسی بودم که در ROS تجربه داشتم، چون در ترم بهار ۲۰۲۰ از ROS در کلاس رباتیک انسان‌محورم (CSC470) استفاده کرده بودم. به همین دلیل، در همان ابتدای کار به همه کمک کردم تا با ROS و نحوهٔ توسعه برای آن آشنا شوند.

چالش‌ها

در این پروژه چالش‌های زیادی وجود داشت. اما بزرگ‌ترین چالشی که با آن روبه‌رو شدیم نداشتن دسترسی به یک ربات واقعی برای آزمایش بود. این به‌دلیل COVID بود که همه‌چیز را از راه دور کرد و مانع شد بتوانیم در آزمایشگاه/ساختمان‌های Lunar Outpost کار کنیم. به همین دلیل، مجبور شدیم از شبیه‌سازی‌ها استفاده کنیم.

همچنین، ما برخی پژوهش‌های دانشگاهی از WVU Navigation Lab را بررسی کردیم تا ایده‌ای از این‌که مسئلهٔ لغزش چرخ چگونه می‌تواند برای مورد استفادهٔ Lunar Outpost حل شود به دست آوریم. این کار برای ما، به‌عنوان دانشجویان کارشناسی سال‌های دوم و سوم، دشوارتر از چیزی بود که انتظار داشتیم.

چالش دیگر، مقدار زمانی بود که برای کار روی این پروژه داشتیم. CSCI370 یک درس یک‌ماهه است. اما خودِ مسئله یک مسئلهٔ عظیم است که بسیاری از شرکت‌ها و پژوهشگران دانشگاهی دهه‌هاست در تلاش‌اند آن را حل/کامل کنند. بنابراین یک ماه به‌هیچ‌وجه برای حل این مسئله کافی نیست. با این حال، با وجود همهٔ این چالش‌ها ما ادامه دادیم و مطمئن شدیم که کار را تحویل می‌دهیم.

نتیجه‌گیری

در این نوشته، دوست داشتم توضیحی مفصل‌تر از راه‌حل‌های خود ارائه بدهم. همچنین یک نتیجه‌گیری مناسب ارائه کنم که توضیح دهد چه چیزهایی کشف کردیم و نتایج نهایی چه بودند. اما متأسفانه من و هم‌تیمی‌هایم همگی یک Non-Disclosure Agreement (NDA) امضا کردیم که مانع می‌شود هرگونه اطلاعات محرمانه‌ای دربارهٔ این پروژه را به اشتراک بگذاریم. تمام اطلاعاتی که در بالا ارائه کردم عمومی هستند و از اینترنت قابل دسترسی‌اند.

در طول این پروژه، واقعاً یاد گرفتیم چگونه از ROS استفاده کنیم و با استفاده از ROS و Gazebo شبیه‌سازی بسازیم. همچنین درک بهتری از حوزهٔ پژوهشی تشخیص لغزش چرخ به دست آوردیم. ما همچنین این افتخار را داشتیم که با برخی از دانشگاهیان/پژوهشگران از WVU Navigation Lab دیدار کنیم.

با دانستن همهٔ این‌ها، باید بگویم این پروژه به من اجازه داد در تیم نقش رهبری بگیرم، به‌عنوان آموزگار به همتایانم کمک کنم تا ROS را بهتر درک کنند، و تجربهٔ بیشتری در ROS، Gazebo و Python به دست آورم. این پروژه همچنین مرا با مسئلهٔ لغزش چرخ آشنا کرد؛ مسئله‌ای که تا پیش از کار روی این پروژه از آن آگاه نبودم. در مجموع، از Lunar Outpost سپاسگزارم که با وجود برنامهٔ کاری شلوغشان، به‌ویژه در دوران COVID، وقت گذاشتند تا به ما اجازه دهند روی این پروژه کار کنیم. همچنین بابت داشتن هم‌تیمی‌های فوق‌العاده‌ای که خیلی سخت روی این پروژه کار کردند، قدردانم.