פרויקט RoboComp

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

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

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

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

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

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

התיאור

כפי שצוין, לפרויקט הזה יש שתי מטרות עיקריות:

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

לרוב הרכיבים הבסיסיים במאגר robocomp-robolab אין כרגע הוראות מפורטות לביצוע הידור ולשימוש בתצורות פרמטרים שונות. זה מכשול עצום למפתחים חדשים שרוצים להשתמש ברכיבים בפרויקט שלהם או לתרום ל-framework. הסיבה לכך היא שרכיבים רבים מהווים wrapper של ספריות או מנהלי התקן חיצוניים שיש להם יחסי תלות רבים, דבר שמקשה על ההידור וההתקנה של המשימה. בנוסף, רכיבים רבים כוללים את מנהל התקן המכשיר המורכב (כמו 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 framework.
  • 2 בספטמבר עד 2 בנובמבר: כתיבת מסמכים לכל רכיב במאגר robocomp-robolab עם שיפורים חוזרים ונשנים בין המנטורים לבין הכותב באמצעות פגישות (צפוי להשלים את רוב המסמכים הלא מתועדים)

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

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

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

הערות סופיות

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