1 / 24

פרויקט ב- COROBOT

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

eljah
Download Presentation

פרויקט ב- COROBOT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. פרויקט ב- COROBOT מנחה : קובי כוחיי מגישים: אייל אסולין ויהודה שטיין

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

  3. COROBOT

  4. COROBOT • ה CoroBot הוא למעשה מחשב PC על גלגלים. • בעזרת דרייברים ותוכנות מתאימות ניתן לשלוט על החלק הרובוטי באמצעות ה PC. • הPC חלש יחסית ((1.5Ghz, 448 MB RAM – מה שיצר בעיות אליהן נגיע בהמשך. • רובוט: 4 גלגלים, שני חיישני IR (מקדימה ומאחורה) ומצלמה שפונה כלפי התקרה. • PC: יציאות למסך (VGA), מקלדת ועכבר(2PS), וכניסות USBFIREWIRE ו-.COM • תאימות הן ל Windows והן ל Linux. • אין זרוע רובוטית בגרסא זו של ה CoroBot

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

  6. מטרת הפרוייקט: • מטרתנו היא למצוא פתרון זול לבעיה הנ"ל, כלומר, לכתוב אלגוריתם ניווט על פי קואורדינאטות, תחת התנאי שהעלות של כל אמצעי פיזי שיידרש על לדעת את המיקום, תהיה זולה מאוד. • הרעיון הוא להשתמש במדבקות צבעוניות שעולות פרוטות על מנת שהרובוט יזהה את מיקומו. • עבור כל נ"צ נחליט על צירוף ייחודי של צבעים ונדביק על התקרה מעל הנ"צ מדבקות בצבעים שהחלטנו. • לפי הפתרון המוצע, המטרה היא לתכנת את הרובוט כך שידע לצלם ולנתח את מה שצילם מבחינת איתור וזיהוי צבעים כך שיוכל להתאים רצפי צבעים שמצא לנ"צ.

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

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

  9. בחירת סביבת העבודה • הCOROBOT מגיע עם שתי מערכות הפעלה שמותקנות עליו:Windows ו-Linux. תוכנת player שמיועדת לעבודה עם הCOROBOT מותאמת אך ורק ללינוקס. • בהרט (הסטודנט מהודו שעבד על הפרוייקט לפנינו) עבד בלינוקס ומתוך מחשבה שנוכל להעזר בעבודתו ניסינו לעבוד בלינוקס. הניסיון לא עלה יפה מאחר שכדי לעבוד תחת מערכת לינוקס (למשל התקנת דרייברים) , היינו צריכים ידע נרחב - מה שלא היה לנו. • החלטנו לעבוד תחת Windows בניגוד לסטודנט הקודם. לאחר מעשה, אנו יכולים לומר שהיתה זו החלטה חכמה.

  10. סביבת עבודה: MRDS • בסביבת Windows ישנה תוכנה לשליטה על רובוטים הנקראת Microsoft Robotics Developer Studio (MRDS). • החברה CoroWare (שמייצרת את ה (CoroBot פיתחה את השליטה על הרובוט בעזרת התוכנה MRDS וכמו כן פתחה אתר שעוזר לתכנת את הרובוט ע"י תוכנה זו. • אנו החלטנו לא להשתמש ב MRDS למרות הפיתוח ההתחלתי. • מסתבר שהPC החלש בשום אופן לא מסוגל להריץ את התוכנה הזו אע"פ שהתקנו את גרסת הLite. • כמו כן הסתמכנו על פרוייקט קודם שנעשה במעבדה זו (ע"י יצחק וויטלי) והמליץ חד משמעית לא להשתמש ב MRDS. • מאוחר יותר שמנו לב שגם החברה CoroWare הורידה את ההמלצה להשתמש בתוכנה זו...

  11. C-API:סביבת עבודה • אחרי חיפושים מצאנו באחד הפורומים C-language API עבור הCOROBOT. זהו למעשה ממשק להפעלת הרובוט בשפת C. בעזרת פונקציות הממשק ניתן לקבוע את מהירות הגלגלים, לצלם תמונות (בצורה מאוד מסורבלת), לקבל נתונים מה-IR וכו'. • ה C-API הוא ממשק בסיסי לתכנות ושליטה על הרובוט, ממשק זה נמצא רק בשלבים ראשוניים של הפיתוח ע"י החברה CoroWare. • עבדנו קשה כדי להתקין את הספריות הנדרשות וגם להגיע למצב שה C-API ידע לגשת אליהם.

  12. - המשךC-API • בניגוד לplayer, הCAPI לא עשיר בפונקציות. לדוגמא, בקבצי הממשק שאחראים על הנסיעה יש הצהרות על מגוון רחב של פונקציות (קביעת מהירות, קביעת תאוצה, קביעת מהירות זוויתית, קביעת תאוצה זוויתית וכו') כאשר בפועל רק הפונקציה שמאפשרת קביעת הספק חשמלי לכל זוג גלגלים ממומשת. • לכן, לאט ובביטחה, יצרנו פונקציות בסיסיות לשליטה על הרובוט. • עיקר התכנות שקשור לממשק זה היה בנושא התנועה של הרובוט.

  13. - תכנותC-API • ראשית כל היינו צריכים לכייל את התנועה של ה CoroBot. • ה CAPI נתן לנו שליטה רק על עוצמת המנועים ולא על מהירות. • למעשה ישנם שני כיולים שצריך לעשות –כיול של מרחק נסיעה וכיול זוויתי. • כידוע, המציאות תמיד שונה מהתאוריה והיינו צריכים להתמודד עם בעיות שונות בכיול למשל חוסר סינכרון בין מהירויות הגלגלים או כיול של עצירת הנהיגה. • לאחר הכיול יכולנו בקלות ליצור פונקציות של סיבוב בזווית מסויימת ,נסיעה למרחק מסויים נסיעה בריבוע וכדומה.

  14. OpenCV: • כעת היה עלינו לעבד תמונה בצורה שתתאים לממשק שלנו לשליטה על הרובוט כלומר לעבד תמונה בשפת C. • לשם כך השתמשנו ב OpenCV –ממשק של ספריות בשפת C המאפשר עבודה נוחה עם תמונות. • היו לנו קשיים בהתקנת מערכת סיפריות זו וגם בקישור בין ה C-API ל OpenCV. • מה שעשינו לבסוף היה לנטרל לחלוטין את המצלמה באיתחול של ה C-API ולהסתמך על הצילום רק דרך ה OpenCV. • בעצם הרווחנו פעמיים, גם פתרנו בעיית קישורים בין ממשקים וגם הצילום דרך ה OpenCV הרבה יותר נח ופחות מסורבל.

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

  16. האתגרים בעיבוד תמונה: • ניתוח צבעים- לקבוע טווח מסויים לכל צבע כך שלא יהיו חפיפות ושיהיה ניתן לדעת להבחין בצבע גם אם הוא בגוון לא אחיד (כלומר לקבוע מס'גווניםלאותוצבע). • ניתוח גודל ומרכז של כתם צבע. • יכולת להבחין במספרצבעיםשונים ובמספר כתמיםמאותוהצבע. • זמן ניתוח מינימלי כדי לא לעכב יותר מידי את תנועת הרובוט => הצורך באלגוריתמים יעילים.

  17. ניתוחצבעים • כל צבע מיוצג ע"י שילוב של RGB . • בתחילה ניסינו לקבוע טווחי צבעים ע"י טווחים פשוטים ב BGRשל כל פיקסל. • במהרה נוכחנו לדעת שזו דרך מאוד לא יעילה להבחנה בין טווחי צבעים, כיוון שקשה לנו לחשוב על צבע מסוים בתור ערבוב עוצמות של אדום-ירוק-כחול, מה גם ששינוי קטן בכל אחת מעוצמות צבעי היסוד משנה באופן ניכר את הצבע המתקבל. • לכן עברנו ליצוג ע"י H S L בשיטה זו יש 3 פרמטרים לקביעת צבע –גוון, טוהר ובהירות. • שיטה זו יותר אינטואטיבית והרבה יותר יעילה בהגדרת טווח של צבע

  18. ניתוחצבעים -המשך • המעבר מRBG לHSL נעשה ע"י אלגוריתם פשוט שמימשנו. • את הגוונים עצמם קבענו ע"פ תמונות שצילמנו על תקרת המעבדה, וניתחנו את הצבעים בכל כתם בתמונה. • בפרוייקט א' השתמשנו רק ב 4 צבעים אך בכך זאת התאמנו את הטווחים ל 7-8 צבעים בשביל החלק הבא של הפרוייקט (מה שמצריך יותר דיוק!).

  19. שילוב של כל המאפיינים (סיכום) • לאחר שמימשנו כל חלק בנפרד היינו צריכים ליצור ממשק שיאגד את השליטה על כל המאפיינים של הרובוט והמצלמה ביחד ובזמן אמת. • לבסוף יצרנו מערכת קבצים (ב (Visual Stodio שבה יש אתחולים למצלמה ולפונקציות של הרובוט, התוכנה מצלמת תמונות ומנתחת אותם ע"י ה OpenCV לאחר מכן ע"פ הנתונים מחליטה איך לזוז ע"י ממשק הרובוט – ה C-API . • היינו צריכים להיות זהירים בשילובים בין הממשקים.

  20. בעיות במהלך העבודה במהלך העבודה היו לנו הרבה מאוד בעיות נפרט את חלקם. • חוסר מידע על הרובוט מפרוייקטים קודמים – היה סטודנט שעבד על ה CoroBot אך הוא לא פירט את עבודתו בצורה מספקת וחזר להודו; כמו כן הוא עבר תחת Linux ואילו אנחנו תחת Windows. • לאור זה החלטנו לפרט את מה שעשינו בצורה מעמיקה בשביל הסטודנטים הבאים. • חוסר מידע ברשת על הרובוט –אין הרבה פיתוחים ומימושים על רובוט זה. • בעיה בהתקנות תוכנות ודרייברים –הרבה דברים לא עבדו בהתחלה והיינו צריכים להזיע בשביל רק להפעיל את המצלמה או להפעיל את הגלגלים • הרבה בעיות בעבודה עם ספריות ובקישורים בין הספריות השונות (בעיות בקישוריות לכל ספריה בנפרד ואז עוד בעיות בשילוב בין הספריות).

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

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

  23. דוגמא לעיוות של תמונה • תמונה זו צולמה ע"י הרובוט בחזרות לקראת המצגת. • משום מה יש איזה קפיצה בצילום בצבע וורוד • מתי שהרובוט יצלם תמונה כזו הוא יראה מולו צבע וורוד ויפעל בצורה שגויה. • הפתרון לצרה זו הוא ע"י הגבלה של טווח הצבע הוורוד, כמו שיש לנו בחלק השני של הפרוייקט; בשביל המצגת הגדלנו במעט את הטווחים בגלל שהצבעים לא בתנאים רגילים (כלומר לא על התקרה). כמו כן פתרון נוסף הוא ע"י הבנה שגודל הכתם גדול מהרגיל (ממומש גם בחלק השני ולא פה –בגלל שהכתמים לא על התקרה)

  24. השגת המטרה • בסוף פרוייקט זה יצרנו תוכנת הדגמה שמדגימה את היכולות של הרובוט כפי שעשינו ותיארנו במצגת. • התוכנה (PROJECT_A) מצלמת את התקרה ומזהה 4 צבעים שונים (בשביל ההדגמה) כאשר לכל צבע היא בוחרת פעולה נסיעה שונה לרובוט. • השקענו הרבה בפרוייקט ועשינו עבודה יסודית, אנו מרגישים שהשגנו את המטרות הנדרשות.

More Related