פרויקט RoboComp

בדף הזה מפורטים פרטי פרויקט של כתיבה טכנית שאושר להשתתפות בתוכנית Google Season of Docs.

סיכום הפרויקט

ארגון קוד פתוח:
RoboComp
כותבים טכניים:
Le Thai An
שם הפרויקט:
הרכיבים הבסיסיים של RoboComp
אורך הפרויקט:
אורך סטנדרטי (3 חודשים)

תיאור הפרויקט

למה בחרנו לעשות זאת?

RoboComp היא אחת ממסגרות הרובוטיקה המוכרות ביותר לצורכי מחקר ושימוש מעשי. המאגר robocomp כולל מגוון רחב של רכיבים (שמנוהלים במאגר קטן יותר בשם robocomp-robolab) לאפליקציות רובוטיות שונות, כמו בקרת מנועים, לוקליזציה ומיפוי, ניווט, זיהוי וכו'. עם זאת, במאגר הרכיבים אין מסמכי תיעוד מפורטים לגבי הידור או שימוש בכל רכיב, ולכן השימושיות שלו מוגבלת למפתחים חדשים. מטרת ההצעה הזו היא לפתור את הבעיה הזו על ידי תיעוד של רכיבים חיוניים של RoboComp, וכן על ידי הכנת מסמך לדוגמה לשימוש בשילוב של רכיבים שונים כדי לפתור משימה ספציפית בתחום הרובוטיקה. פרטי תהליך התיעוד ידונו בקטע הבא, ולאחר מכן ידונו יעדים לצורך תכנון מסגרת הזמן להשלמת הפרויקט. בסיום, מופיעות כמה הערות לגבי תהליך התיעוד.

תיאור

כפי שצוין, לפרויקט הזה יש שני יעדים עיקריים:

  • תיאור של פרטי מסמך, הידור והתקנה, תצורה, שימושים ובעיות ידועות בקשר לכל רכיב ב-RoboComp
  • כתבו מדריך לדוגמה שמשתמש ברכיבים שונים בסביבת RoboComp כדי לפתור משימה רובוטית ספציפית, כלומר לוקליזציה.

רוב הרכיבים הבסיסיים במאגר robocomp-robolab חסרים כרגע הוראות מפורטות לגבי איך לבצע הידור ואיך להשתמש בהם בתצורות פרמטרים שונות. המצב הזה יוצר מכשול ענק למפתחים חדשים שרוצים להשתמש ברכיבים בפרויקט שלהם או לתרום ל-framework. הסיבה לכך היא שרכיבים רבים הם מעטפת של ספריות או דרייברים חיצוניים שיש להם הרבה יחסי תלות, מה שמקשה על המשימה של הידור והתקנה. בנוסף, רכיבים רבים עוטפים מנהל התקן מכשיר מורכב (למשל hokuyoComp כללי) כדי לספק ממשק הודעות ב-RoboComp, שדורש ידע ספציפי למכשיר כדי לכוונן את הפרמטרים.

לכן, הצורך בתיעוד מפורט, שכולל תיאורים של מכשירים, פתרון יחסי תלות ושימושים, חיוני לתרומות לקוד פתוח. בקישור הבא אפשר למצוא דוגמה למסמך הרכיב hokuyoComp לעבודה שלי:

https://github.com/anindex/robocomp-robolab/tree/master/components/hokuyoComp

כדי לכתוב תיעוד קונקרטי ומפורט של רכיבים באמצעות גישה מלמעלה-למטה, צריך לפחות להיות מסוגלים לחוות את התוכן שמופיע במסמך, כי המטרה הסופית של התיעוד היא להעביר ידע בעבודה למפתחים שעברו בירושה. המבנה המוצע לכל מסמך רכיב מוצג כך:

  • תיאור
  • הידור והתקנה
  • פרמטרים של הגדרות
  • הפעלת הרכיב (שימושים)
  • בעיות מוכרות

בדוגמה הזו, קודם אוספים מידע על מפרט החיישן של Hokuyo, קוראים את קוד הרכיב כדי להבין את התמונה של פונקציות הרכיב וכתוב תיאורים של הרכיבים. לאחר מכן, הבנה של סביבת RoboComp והיכרות עם פרמטרים ספציפיים למכשיר, וכן יחסי התלות בספריות, יעזרו לתעד את תהליך הידור, ההתקנה וההגדרה של הרכיב. לדוגמה, כדי לבצע הידור של hokuyoComp צריך את חבילת ה-deb הישנה של liburg0-dev מ-Ubuntu 14.04, אבל חבילת ה-deb הוסרה מ-Ubuntu PPA בגרסה מאוחרת יותר, לכן צריך לבצע את הפתרון החלופי להידור כפי שמפורט במסמך. בתהליך הזה, אנחנו יכולים גם לתעד בעיות ידועות כדי לזרז את ניפוי הבאגים למפתחים חדשים. לבסוף, מתועדים שימושים ברכיבים בתרחישי שימוש שונים, כדי שתוכלו לשלב בקלות את הרכיבים בסביבת RoboComp למשימות שונות של רובוטיקה.

אבני דרך

בקטע הזה מתוכנן מסגרת זמן ראשונית להשגת היעדים שצוינו בפרויקט. נבחר את המסמכים על רכיבים שנעביר לכתיבה על סמך קטגוריות (למשל רכיבי מצלמה, רכיבי לייזר). ההערכה הנוכחית של הזמן להשלמת מסמך הרכיבים מבוססת על הזמן להשלמת מסמכי hokuyoComp לדוגמה. לוח הזמנים הוא:

  • 1 באוגוסט עד 1 בספטמבר: גיבוש הקהילה:

    1. קביעת פגישות שבועיות כדי לקבוע את היקפי הפרויקטים ואת הציפיות מהכותבים ומהמנטורים.
    2. הבנה מעמיקה של מסגרת RoboComp.
  • 2 בספטמבר עד 2 בנובמבר: כתיבת מסמכי עזרה לכל רכיב במאגר robocomp-robolab, עם שיפורים אבולוציוניים בין המנטורים לכותב באמצעות פגישות (צפוי להשלים את רוב המסמכים ללא תיעוד)

  • 2 בנובמבר עד 26 בנובמבר: כתיבת מסמך כללי לדוגמה לשימוש ברכיבים שונים כדי לפתור משימה בתחום הרובוטיקה.

  • 27 עד 29 בנובמבר: סיום הדוחות של הפרויקטים.

  • אחרי GSoD 2019: אני רוצה להמשיך להיות בקשר עם RoboComp כדי לשפר ולתחזק את העבודות שלי.

הערות סופיות

חשוב לכתוב דוגמה כללית לשילוב רכיבים שונים בסביבת RoboComp כדי שהמשתמשים יבינו את התמונה הגדולה של הפונקציות של RoboComp. נמשיך לדון במסמך הדוגמה הזה עם המנטורים כדי להחליט איזו משימה בתחום הרובוטיקה מתאימה, בהתאם להטמעה הנוכחית של RoboComp.