220 likes | 422 Views
פרויקט ROBOCUP מצגת סופית. מגישים: אופיר יוסף רועי זיגלר. תכן עניינים. מטרת הפרויקט מהלך העבודה ייצוג תמונה זיהוי הרובוטים והמגרש אלגוריתמים קצת קוד על קצה המזלג שליחת הנתונים לרובוט. מטרת הפרויקט. מטרת הפרויקט היא זיהויים של רובוטים המשחקים בכדור על פני מגרש.
E N D
פרויקטROBOCUPמצגת סופית מגישים: אופיר יוסף רועי זיגלר
תכן עניינים • מטרת הפרויקט • מהלך העבודה • ייצוג תמונה • זיהוי הרובוטים והמגרש • אלגוריתמים • קצת קוד על קצה המזלג • שליחת הנתונים לרובוט
מטרת הפרויקט • מטרת הפרויקט היא זיהויים של רובוטים המשחקים בכדור על פני מגרש. • אמצעים: מצלמה עילית המשדרת לכרטיס ,FRAME GRABBER עיבוד הנתונים נעשה ע"ג מחשב PC.
ייצוג תמונה • כרטיס לוכד התמונה שאיתו אנו עובדים ברזולוציה מקסימאלית של 576*768*4 פיקסלים בפריים וזאת בפורמט RGB. • ייצוג הנתונים מתבצע בצורת מערך חד מימדי של טיפוסי BYTE כאשר הסידור הפנימי במערך הינו כזה שכל שלישית תאים סמוכים מייצגים את ה BGR לכל פיקסל. • נוח לעבוד בפורמט זה מאחר ואנו שואפים לעבודה בזמן אמת וכל התמרה של המרחב תפגום במהירות העבודה.
מהלך העבודה • כתיבת קוד בתוכנת מטלב תוך שימוש בTOOLBOX של עיבוד תמונה. • בחירת הקודים המתאימים ביותר ומימושם בשפת C++ • שיפור ביצועי התוכנה ע"י אלגוריתמים ייעודים המתאימים לחומרת הפרויקט הממומש. • הרחבת התוכנה לתמיכה בריבוי שחקנים, סינון רעשים ברמה גבוהה. • מתן דגש על גמישות הקוד לשינוי מאפייני שחקנים וסביבת משחק.
פירוק עפ"י RGB וסינון רעשי רקע • אתחול המערכת ע"י שמירה תמונת המגרש לפני תחילת המשחק, ודגימת תנאי התאורה בסביבה. • הפחתת התמונה המקורית מהתמונה הנדגמת בכל FRAME • חיתוך עפ"י סף גמיש המחושב בכל FRAME לצבעי הRGB-.
סינון נוסף ומציאת האובייקטים • סינון בעזרת מסנן אופטימאלי SOBEL. • שימוש בפונקצית הlabeling וזיהוי אובייקטים ע"פ גודל,צורה וצבע. • שיוך האובייקטים שזוהו לשחקנים השונים , לכדור ולגבולות המגרש. • מציאת מרכז המסה של כל אובייקט שנמצא. • בתמונה ניתן לראות את האובייקטים שזוהו ע"י נקודה במרכזם.
רובוט ראשון חלק קדמי רובוט ראשון חלק אחורי רובוט שני חלק אחורי רובוט שני חלק אחורי כדור תוצר סופי
ניסיונות נוספים: מרחב HSV ניתן לראות כי ניסיונות זיהוי במרחבים אחרים נכשלו.
האלגוריתם הממומש ב C++ • דגימת המגרש לפני עליית השחקנים. • דגימת המגרש והפחתת התמונה המקורית. • סינון רעשי מצלמה והתאמת תאורה. • זיהוי גבולות המגרש. • חיתוך עפ"י סף RGB של הצורות במגרש. • זיהוי שפות הצורות.
האלגוריתם הממומש ב C++ (המשך) • ביצוע LABELING לצורות כלומר שיוך לאובייקטים. • חישוב גדלי האובייקטים. • זיהוי השחקנים והכדור עפ"י הפרמטרים שחושבו לעיל ונתוני המשתמש לגבי השחקנים. • חישוב זוויות מרכזי מסה ומיקום יחסי למגרש. • שידור הנתונים.
אלגוריתם הLABELING- • הבעיה: • לאחד את הפיקסלים לאובייקטים שונים תוך שימת דגש על סיבוכיות מינימאלית לשם שמירה על עבודה בזמן אמת. • פתרון: • אלגוריתם בסיבוכיות ליניארית הסורק את המערך (התמונה) לאחר זיהוי השפות, עד למציאת פיקסל שאינו משויך עדיין לאובייקט, עובר על פיקסלים סמוכים, ומחליט בזמן אמת האם לשייכם לאובייקט הנוכחי. • קיימים אלגוריתמים רקורסיביים פשוטים לכתיבה אך הם אינם יעילים (סיבוכיות ריבועית לכל הפחות) ומביאים למצב בו הקוד לא עובד בזמן אמת על כל פריים.
צורת אובייקט אפשרית • לאחר זיהוי שפת הצורה (מצויין בצהוב) יש לשייך את כל שפת הצורה לאובייקט יחיד בצורה יעילה ומהירה. • בגוף הקוד מצוין הסבר מפורט של האלגוריתם. • "צביעת" (שיוך) חלקו הפנימי של האובייקט לצורכי חישוב גדלים וצורה.
סינון רעשי סביבה • הבעיה: • בשל אופי המשחק בו יתכנו הפרעות במהלכו נדרש לסננן להמשכו התקין של המשחק. • פתרון: • אלגוריתם המסנן אובייקטים הנמצאים בחלקם בתוך המגרש ובחלקם מחוצה לו (כגון גפיים, מקלות וכו'). אלגוריתם זה מאפשר למשתמש להיות במגע עם הרובוטים בזמן המשחק בלי לפגוע במהלכו כל עוד אינו מסתיר למצלמה העילית את השחקנים עצמם.
שחקנים וסביבת משחק • הפרויקט תומך ב-2 סוגי משחק, 1X1 ו2X2. • צבעי השחקנים שבהם השתמשו הינם כבאיור. • גמישות הקוד מאפשרת לבחור צורות (עיגול ריבוע מתומן) וקונפיגורציות צבעים בקלות, כל עוד כל שחקן הינו שונה בפרמטר אחד לפחות. 1X1
#define GAME2X2 1 #define MAX_CAPTURE_SIZE 768*576*4 #define GLOB_THRESHOLD 400 #define OUTCOURT_COLOR 0 #define DIFF_COLOR 20 #define ROBOT_NUM 10 #define REAL_ROB 4 #define MAX_DIST_SQR 64 קביעת סוג המשחק 1X1 או 2X2. אפשרות לעבודה עם או בלי סינון רעשי סביבה. אפשרות לעבודה ברזולוציות שונה כתלות בלוכד התמונה. אפשרות לסינון רעשים שונה במצבי תאורה קיצוניים. אפשרות לשינוי גדלי האובייקטים בכדי שיתאימו לגודל הרובוט הסופי. קצת קוד על קצה המזלג
שליחת הנתונים לרובוט • הנתונים על מיקום הרובוטים נכתבים לפורט חיצוני • פורמט כתיבת הנתונים הינו גמיש וניתן לשינוי בקלות • כרגע נשלח מערך חד מימדי המציין את גבולות המגרש עליון תחתון (על ציר Y) וימיני שמאלי (על ציר X) לאחריו מיקומי הרובוטים (חלק קדמי XY, חלק אחוריXY) ולבסוף מיקום הכדור (XY).
תודות • הפרויקט נעשה במעבדה לVISL בהנחיית יוחנן ארז. • חלקים מהעבודה על הפרויקט בוצעו במעבדה לרובוטיקה שם נמצא המגרש והרובוטים בתמיכתם של קובי כוחי ואורלי וינגרזון.