****** 1 - הטכניון
Download
Report
Transcript ****** 1 - הטכניון
הטכניון – מכון טכנולוגי לישראל
הפקולטה להנדסת חשמל
המעבדה לבקרה
מאת :שגיא סטון ועדי אמויאל
בהנחיית קובי כוחיי
בפרויקט זה מימשנו מערכת זיהוי ועקיבה אחר פני אדם ע"י רחפן
מסוג ). (Ar.Drone 1.0
למימוש מערכת זו כמה אספקטים עליהם נרחיב בהמשך:
• ניתוח תמונה
• בקרה
• תוכנה
•למידה
• אינטגרציה
המערכת הכוללת
אופן הפעולה
המערכת מורכבת מרחפן אשר מצויד במצלמה קדמית ותקשורת
אלחוטית ( ,)Wi-Fiבנוסף מחשב עליו מותקן SDKאשר מאפשר
לשלוט ולתקשר עם הרחפן.
המימוש מורכב משני שלבים ,שלב הזיהוי ושלב העקיבה.
שלב הזיהוי
• הרחפן ממריא תוך כדי סריקת החדר
• כאשר מגיע לגובה ממוצע של פני אדם בוגר מתחיל להסתובב סביב צירו
• כל זמן זה שולח הרחפן תמונות אל יחידת השליטה (המחשב) אשר
משתמש באלגוריתם זיהוי פנים לניתוח התמונות
אופן הפעולה -המשך
שלב העקיבה
• לאחר שהמערכת מזהה פנים ,היא מורה ליחידת השליטה להתחיל
לשלוח פקודות עקיבה אחר הפנים.
• בזמן העקיבה ממשיך הרחפן לשדר תמונות ליחידת השליטה
שמנתחת את התמונות ומספקת מידע על מיקום הפנים אשר
אחריהם אנו עוקבים.
• המעקב מתבצע ע"י סגירת שלושה חוגי בקרה,שהם גובה ,מרחק
ומרכוז .כאשר הגובה והמרכוז מבוקרים ע"י מיקום הפנים
בתמונה ,ואילו המרחק ע"י גודל שטח הפנים.
Face detection
האלגוריתם מבוסס על האלגוריתם לאיתור פנים של & viola
.jonesובו כמה אלמנטים עיקריים:
שימוש במלבני haarבתור מסווגים חלשים
שימוש "בתמונות אינטגרל" להאצת הזיהוי
אלגוריתם הלמידה adaboost
מסווג cascade
איחוד תוצאות חופפות לפי קריטריון השכן הקרוב
מלבני haar
שימוש במסננים קטנים יחסית כדי לקבוע ציון לכל איזור בתמונה
ציון כל איזור הוא ע"י חיסור רמות האפור שבחלק הלבן מהשחור
כל אלמנט כזה מוגדר בתור מסווג "חלש" אשר החיזוי שלו לבד
נותן אחוזי חיזוי קצת יותר טובים ממטבע ()50/50
אלגוריתם הלמידה adaboost
עושה שימוש בצירוף ליניארי של
כמה מסווגים חלשים
רץ על סט הבוחן בכמה וכמה
איטרציות
עוצר כאשר אין ירידה משמעותית
בטעות וכך קובע ערך סף
תמונת אינטגרל
טכניקה שפותחה ע"מ לשפר את
זמן הריצה של האלגוריתם
כל פיקסל מחזיק את סכום רמות
האפור שנמצאים בריבוע השמאלי
העליון
כך ניתן לאחר מעבר בודד על
התמונה לחשב בקלות את סכום
רמות האפור בכל ריבוע שנרצה
מסווג cascade
עוד דרך להאיץ את האלגוריתם היא שימוש בכמה מעברים על
איזורים שונים בתמונה כאשר כל מעבר הוא עם רמת סף שנותנת
שגיאה לא קטנה אך כזאת שמספיק טוב לסווג נכון כמעט את כל
סט הלימוד.
כך עושים מיון של אזורים לא רלוונטים ומשקיעים בהם פחות זמן
ואילו באזורים רלוונטים משקיעם עוד זמן ע"מ לקבל תוצאות
יותר טובות.
איחוד תוצאות
לאחר כמה מעברים על התמונה עם כמה גדלי פנים שונים יש צורך
לאחד זיהוי פנים חופפות מפני שהם בעצם אותו זיהוי של כמה
פנים שהתקבל ממעברים שונים
סיכום גילוי פנים
למידה offline
מעבר על כל תמונה
איחוד של ממצאים חופפים ומיצוע
החזרת תוצאה
בקרה
קריטריונים לבחירת בקר:
בקר שיפיק ביצועי תעופה טובים -ימקסם את יכולות העקיבה
כך שהמעוף אחר האובייקט יהיה חלק ובעל תגובה מהירה כאשר
האובייקט משנה את כיוונו או מהירותו
פשטות המימוש
על כן בחרנו להשתמש בבקר PIDשהוא הנפוץ ביותר בבקרת
מערכות ליניאריות.
מימוש הבקר
להבדיל מכלי תחבורה יבשתיים הרחפן יכול לנוע בשלושה צירים
במרחב .על כן יש לממש חוגי בקרה עבור כל הצירים .אנו מימשנו
בקר עבור 3ציריםZ,Y,X :
הבקר בציר Xאחראי על פקודה הגלגול – .ROLL
הבקר בציר Yאחראי על פקודת שינוי הגובה – .GAZ
הבקר בציר Zאחראי על פקודת העלרוד PITCH -
* כל ההסברים בהמשך מתייחסים לציר Xבלבד אבל זהים לשלושת הצירים
מימוש הבקר -המשך
המידע שנשלח לבקר הינו עבור תמונה יחידה בכל יחידת זמן,
בנוסף יכולת העיבוד של המחשב היא סופית ועל כן מימשנו
את הבקר בזמן בדיד
הסבר על חישוב "השגיאה" err -יגיע בהמשך
:P
:I
:D
) Up(nT) = Kp*err(nT
)) Ui (nT) = Ki*(Ui_prev + err(nT
Ud(nT) = Kd *( err(nT) - err(n(T-1))) /T
) Uc = Up(nT) + Ui (nT) + Ud(nT
מימוש הבקר – חישוב השגיאה
חישוב השגיאה -המשך
"השגיאה" – "err ",ההפרש בין מרכז הפריים של
מצלמת הרחפן למיקום האובייקט (על מסך הרחפן).
errX = Xm – Xc
errY = Ym – Yc
מימוש הבקר -המשך
עבור פריים בודד שמגיע ממצלמת הרחפן ,נקבל את מיקום האובייקט בפריים ונחשב
את "השגיאה" כפי שתואר לעיל.
הבקר מקבל את השגיאה ומחשב את הפקודה הבאה שעל הרחפן לבצע על מנת למזער
את השגיאה כלומר להביא את האובייקט למרכז הפריים.
כאשר האובייקט זז ממקומו הוא כבר לא יהיה במרכז הפריים ושוב תחושב השגיאה
ותתקבל פקודה חדשה
מימוש הבקר -פרמטרים
על מנת לקבל פרמטרים עבור הבקר כך שיתאימו בצורה
אופטימאלית לתעופת הרחפן ביצענו את הפעולות הבאות:
מידול הרחפן ע"י מודל מתמטי פשטני שמצאנו ע"י מדידות
שערכנו ברחפן.
הכנסת פונקציות הלם שונות לרחפן (פקודה יחידה בכמה
הגברים שונים)
מדידה של שינוי מיקום הרחפן
וקיבלנו את התוצאות הבאות:
מודל פיסיקלי של מיקום הרחפן
בציר X
80
60
40
תזוזה
[מספר
פיקסלים]
20
0
-1.5
-1
0
-0.5
-20
y = -49.711x
-40
-60
הגבר הפקודה
0.5
1
1.5
מימוש הבקר -פרמטרים
ביצענו את המדידות עבור שלושת הצירים וע"י רגרסיה ליניארית הוצאנו את המודל
הפיסיקלי של כל ציר בקרה.
לאחר מכן הוצאנו מ matlabאת הפרמטרים לבקר PIDהמתאים ע"י שימוש במודל
הרחפן שבנינו.
בגרף מתואר זמן ההתכנסות לכניסת מדרגה עבור הפרמטרים האידיאלים
Step Response
מה.matlab -
1.02
1.01
1
0.98
0.97
12
10
8
6
)Time (seconds
4
2
Amplitude
System: T
Time (seconds): 0.98
Amplitude: 0.98
0.99
מימוש הבקר -פרמטרים
הביצועים שקיבלנו עבור הפרמטרים שקיבלנו מ MATLAB-לא
היו מספיק טובים -העקיבה לא היית חלקה מספיק לדרישות
שלנו.
לאחר כינון ידני של הפרמטרים הגענו לבקר PIDשנותן תוצאות
טובות יותר בפועל.
אופטימיזצית התוצאות
לאחר ניסיונות רבים הגענו לפרמטרים האופטימלים עבור יחידת זיהוי הפנים
אשר נתנו לנו את תוצאות המעקב הטובות ביותר.
שיפרנו ב 100%את תדר העבודה המקורי -מ frame/sec 4ל 8 frame/sec
ע"י מעבר מהפרמטרים הדיפולטים לפרמטרים האופטימלים שמצאנו.
לאחר ניתוח צוואר הבקבוק של ריצת התוכנה מצאנו שאנו לא מנצלים נכון
את ממשק ה ,OpenCVמפני שלמחשב שעבדנו איתו לא היה כרטיס מסך
אלה רק יחידת עיבוד במעבד .לכן עברנו לעבוד עם מחשב בעל מאיץ גרפי ,מה
שהביא לשיפור של עוד 50%בתדר העבודה מ frame/sec 8ל .frame/sec 12
התקרבנו מאוד לתדר העבודה המקסימאלי שמוגבל ע"י תדר העבודה של
המצלמה .15 frame/sec -
תוצאות ואופטימיזצית התוצאות
מלבד הבקר ,גם לאלגוריתם הזיהוי יש השפעה על איכות
התוצאות וזמן הריצה.
-Scale פרמטר שמגדיר באיזה רזולוציה לדגום את התמונה
המקורית שמקבלים מהרחפן .ככל שהוא גדול יותר כך נדגום את
התמונה המקורית ברזולוציה קטנה יותר ,מצד אחד התמונה
תהייה פחות אמינה אך הריצה תהייה יותר מהירה.
–ScaleFactor פרמטר שמגדיר במתודולוגית ה cascadeאת
גודל הקפיצה בין כל חוליה של השרשרת .ככל שפרמטר זה יהיה
קטן יותר נבצע יותר איטרציות ,דבר שייקח יותר זמן אך ישפר את
אמינות המשערך.
סיכום ומסקנות
מטרת הפרויקט הייתה זיהוי פנים ע"י רחפן תוך כדי שימוש
בערוץ הוידיאו שלו ולאחר מכן עקיבה .כאשר כל השלבים
מתבצעים באופן אוטונומי ובקורלציה גבוהה בין האלמנטים
השונים.
איכות מעגלי הבקרה הושפעו ישירות מתדר העבודה של המערכת
שהושפע מכמה סיבות .תדר תקשורת הוידיאו בין הרחפן למערכת
הבקרה הוא 15תמונות לשנייה .על כל תמונה בודדת נעשתה
עבודה של אלגוריתם זיהוי הפנים דבר שמאט את תדר העבודה
עוד יותר
מסקנות -המשך
מודל הרחפן היה פשטני מדי שכן לא התייחס לכל משוואות
התנועה ולחוקי הפיסיקה אלה התקבל אמפירית.
הפרויקט נעשה בתנאים מסוימים והפעלתו בתנאים אחרים לא
בהכרח יניבו תוצאות טובות כמו שהתקבלו בתנאים בהם עבדו.
כגון תנאי תאורה ,מזג האוויר ,הרוח שמדחפי הרחפן מייצרים
וכו'.
מקור אנרגיה – מעט סוללות +זמן טעינה ארוך ,מגביל מאוד את
זמן העבודה על הרחפן.
מסקנות -המשך
לאלגוריתם זיהוי הפנים כמה פרמטרים שניתנים לכיוון ,אשר משפיעים
על איכות התוצאות ומהירות הריצה .לאחר אופטימיזציה לפרמטרים
קיבלנו שיפור ב 100%בתדר העבודה ,מ 4ל 8תמונות בשנייה.
לב האלגוריתם מבוסס על OpenCVשעושה שימוש רציני ביחידות
העיבוד הגרפי של המחשב .מעבר בין מחשב שיש לו מאיץ גרפי מאחד
בלי מאיץ גרפי נתן שיפור בתדר העבודה ב 50%מ 8ל 12תמונות
בשנייה.
לאחר שימוש במחשב עם מאיץ גרפי צוואר הבקבוק עבר מהשימוש ב
OpenCVלזמן מעבד .בעידן בו כל המעבדים מרובי ליבות יש מקום
לשפר את הביצועים ע"י מקבול הקוד.