490 likes | 740 Views
פרויקט "גיזמו" הצגת חלק א '. מנחה: מר קובי כוחיי מבצעים: עמית יוספזון יובל ורד. מבנה המצגת. מטרת הפרויקט סקירת הבעיה - אומנות הטופיארי עבודות קודמות בתחום "גיזמו" - ארכיטקטורת המערכת "גיזמו" - מכניקה "גיזמו" - ארכיטקטורת התוכנה וממשק המשתמש תוצאות - הדגמת המערכת מסקנות
E N D
פרויקט "גיזמו" הצגת חלק א' • מנחה: • מר קובי כוחיי • מבצעים: • עמית יוספזון • יובל ורד
מבנה המצגת • מטרת הפרויקט • סקירת הבעיה - אומנות הטופיארי • עבודות קודמות בתחום • "גיזמו" - ארכיטקטורת המערכת • "גיזמו" - מכניקה • "גיזמו" - ארכיטקטורת התוכנה וממשק המשתמש • תוצאות - הדגמת המערכת • מסקנות • משימות להמשך - פרויקט ב'
מטרת פרויקט "גיזמו" • המשתמש מניח עציץ (צמח) לא מעוצב על המעמד. • "גיזמו" מנתח את מבנה העציץ, ומציע למשתמש צורות אפשריות לעיצוב העציץ, כגון פירמידה, ספירה או לב. • המשתמש בוחר צורה, ו"גיזמו" גוזם את העציץ ע"פ הצורה שנבחרה. Choose a shape for your plant:
מטרת פרויקט א' • תכנון ומימוש מלא של פלאטפורמת חומרה, מכאניקה וממשקי חומרה-תוכנה ל"גיזמו" - רובוט גיזום אוטומטי. • תכנון ארכיטקטורת מערכת. • חקר ובחירת רכיבי המערכת. • הפעלת הרכיבים ובניית ממשקי תוכנה. • אינטגרציית מערכת.
סקירת הבעיה – אומנות הטופיארי • טופיארי – topiarius - אומנות עיצוב צמחייה בצורות דקורטיביות ע"י גיזום של עצים ושיחים. • הצמחים שבשימוש ירוקי-עד, עציים ובעלי עלווה צפופה. • טופיארי הוא תהליך ארוך ורציף • גידול ואימון הצמח להגעה לצורה הרצויה. • שימור הצורה הרצויה. • מיקוד הפרויקט הוא בגיזום ישיר לצורה הרצויה של צמח במימדים מתאימים, ובשימור הצורה הרצויה.
הצמח הנבחר לפרויקט – הדס ננסי • שם מדעי - Myrtus communis . • ממשפחת ההדסיים (Myrtaceae). • צמח עצי ירוק עד. • עלווה צפופה ועמוקה. • גובה ממוצע - 30 ס"מ. • גודל עלה ממוצע – 75 מ"מ X 50 מ"מ. • נפוץ בארץ, עלותו זולה. • פופולארי כצמח טופיארי. • אחד מארבעת המינים...
עבודות קודמות בתחום • מדפסת תלת מימדית. • רובוט קטיף. • רובוט השקיית צמחייה. • רובוט לכיסוח דשא.
הזרוע הרובוטית – RV-E3J • בדיקת התאמת הזרוע לפרויקט • חישוב טווח התנועה האפקטיבי של הזרוע. • בדיקת הדיוק האבסולוטי - 1 מ"מ. • לימוד מבנה המערכת והבקר. • לימוד פרוטוקול התקשורת עם הבקר (RS-232). • כתיבת ממשק מלא ל-Matlab. • השמשת הזרוע וטיפול בתקלות שוטפות (סוללות גיבוי, ENCODER, EEPROM).
מערכת הסרוו – PTU-46-17 • בדיקת ההתאמה לדרישות המערכת: • טווח תזוזה של 78 מעלות בהגבהה ו-318 מעלות בצידוד. • יכולת נשיאה של 1.81 ק"ג ללא השפעה על רמת הדיוק. • שגיאה מקסימלית במיקום הצמח לאחר תזוזת הסרוו: • לימוד מבנה המערכת והבקר. • לימוד פרוטוקול התקשורת עם הבקר (RS-232). • כתיבת ממשק מלא ל-Matlab. • טיפול בתקלות שוטפות (חיווט, כיול).
הסנסורים –PrimeSensor “Kinect” • הסנסור יוצר תמונת RGB בה לכל פיקסל "מוצמד" ערך המרחק של הנקודה ממוקד הסנסור (באמצעות חיישן IR). • מערכת של שני סנסורים המאונכים זה לזה מאפשרת יצירת פרופיל תלת-מימדי מדויק של גזרת הצמח בזמן אמת. • דיוק הסנסור - 1ס"מ X 3 מ"מ X 3 מ"מ. • חקירת יכולות הסנסור והתאמתו לפרויקט. • עריכת ממשק למטלב ע"ב דרייבר קיים.
מכניקה – אמצעי החיתוך • מערכת משולבת של שני אמצעי חיתוך - • מאפשרת חיתוך גס וחיתוך עדין. • חיבור אורתוגונאלי של האמצעים מאפשר עבודה במקביל. • המזמרה - • מותאמת על ה-Gripper של הזרוע הרובוטית. • חדה ומדויקת, בשימוש אומני טופיארי. • המסור - • Dremel-300, עד 35,000 סיבובים לדקה. • בקצהו חוט ניילון דק, בדומה לחרמש.
מכניקה – פלטפורמת המערכת • קיבוע הזרוע הרובוטית ע"ג שולחן כבד • המערכת יציבה למרות המומנטים של הזרוע. • בשולחן מדף תחתון לחומרה ההיקפית. • חסימת שטח העבודה ע"י קירות לבנים • מפשט את ניתוח התמונה התלת מימדית. • על הקירות ימוקם לוח קליברציה לסנסורים. • זרועות נשיאה לסנסורי "קינקט" • מאפשרות כיול וקיבוע של המרחק ושל זווית ההסתכלות האופטימליים. • מעמד לעציץ המורכב על מערכת הסרוו • מערכת ברגים המאפשרת קיבוע פשוט ויציב של עציצים בכל הגדלים.
הממשק למשתמש • ממשק ידידותי המאפשר שליטה מלאה על כל רכיבי המערכת. • מומש באמצעות כלי ה-GUIDE ב-MATLAB (לימוד עצמי). • סגירת מעגל הבקרה - ניתן "לדקור" נקודה על התמונה שמפיק הקינקט והזרוע הרובוטית תנוע אליה. • ישמש בחלק השני של הפרויקט ככלי לבדיקה וקליבראציה של החומרה. • מהווה פלטפורמה שלמה לפרויקטיםעתידיים ע"ב רכיבי החומרה של "גיזמו".
מסקנות • חלקו הראשון של הפרויקט השיג את מטרתו – הוקמה פלטפורמה יציבה ומדויקת שתאפשר תכנות אבטיפוס פועל ל"גיזמו" - רובוט הגיזום האוטומטי. • עלויות מערכת "גיזמו" מצדיקות את רכישתו עבור משתלות המוכרות סדר גודל של אלפי צמחים מעוצבים.(תמחור מלא יינתן בסוף הפרויקט).
משימות להמשך • תכנות אבטיפוס פועל של רובוט הגיזום האוטומטי "גיזמו" עבור צורות גיאומטריות בסיסיות - • בניית מודל תלת מימדי של הצמח באמצעות שני הסנסורים. • בניית מודל תלת מימדי של צורה מבוקשת וחסימתה בתוך המודל המיוצר על ידי הקינקטים. • בניית מודל של איזורים הנדרשים לחיתוך ושל איזורים אסורים למעבר ע"י הזרוע. • תרגום האיזורים לפקודות תנועה וחיתוך מדוייקות לקבלת הצורה הרצויה.
פרויקט "גיזמו" הצגת חלק ב' • מנחה: • מר דמיטרי רודוי • מבצעים: • עמית יוספזון • יובל ורד
מבנה המצגת • מטרת הפרויקט • ארכיטקטורת המערכת • פירוט האלגוריתם – המודולים במערכת • תוצאות • מסקנות
מטרת פרויקט "גיזמו" • המשתמש מניח עציץ (צמח) לא מעוצב על המעמד. • "גיזמו" מנתח את מבנה העציץ, ומציע למשתמש צורות אפשריות לעיצוב העציץ, כגון פירמידה, ספירה או לב. • המשתמש בוחר צורה, ו"גיזמו" גוזם את העציץ ע"פ הצורה שנבחרה. Choose a shape for your plant:
מטרות פרויקט ב' • תכנון ארכיטקטורת תוכנה למערכת "גיזמו". • כתיבת אלגוריתמים למודולים של המערכת. • מימוש המערכת בסביבת מטלב. • אינטגרציה למערכת וביצוע חיתוך מוצלח של צמח.
ארכיטקטורת המערכת Voxel Library Calibration Module Sector Cut Module Optimal Reference Selector 3D Model Generator Bulk Cut Module H.W. Interface Kinect (x2) Robotic Arm Servo (PTU)
Voxel Data Representation • נייצג את המודל התלת מימדי של הצמח, ואובייקטים תלת מימדיים נוספים, כווקסל, כלומר "פיקסל" תלת מימדי. • כיוון שרזולוציית הזרוע הרובוטית והקינקטים היא מילימטר, כל ווקסל יהיה בגודל של מ"מ מעוקב ((1mmx1mmx1mm. • הווקסלים יקבלו ערך בוליאני, כש-‘1’ מייצג ווקסל קיים. • ה"עולם" הוירטואלי בו נעבוד הוא קובייה בגודל 300 מ"מ מעוקב. • נייצג כל מודל תלת מימדי איתו נעבוד כמטריצה תלת-מימדית בוליאנית Aבגודל 300x300x300, כאשר • לכן האינדקסים של המטריצה (x, y, z) הם קואורדינטות ה"עולם" הוירטואלי.
Voxel Library • טרנספורמציות אפיניות • רוטציה, טרנזלציה, ו-Rescaling. • לדוגמא עבור Rescaling: • שרטוט אובייקט • שרטוט ווקסל רק כאשר הוא לא מוסתר לחלוטין ע"י איזשהו ווקסל שכן. • חישוב מרכז המסה של אובייקט • חישוב נפח אובייקט
Voxel Library • פעולות מתורת הקבוצות • אובייקט חיתוך או אובייקט איחוד C בין 2 אובייקטים A ו-B. • לדוגמא עבור איחוד: • מסנן חציון LPF • לדוגמא עבור גרעין 3: • יצירת מודלים של צורות גיאומטריות • הספריה מכילה את הצורות לב, ספרה וקוביה. לדוגמא עבור ספרה:
קליברציה - מערכות הצירים Kinect • כל מערכות הצירים באותה אוריינטציה –כך כיוונו את הקינקט. • המרה בין מערכות הצירים ע"י טרנזלציה: Lab K z x z P A z x x y y y Arm
Calibration Module • הכיול מתבצע ידנית באמצעות GUI נוח. • הכיול מתבצע פעם אחת לאחר קיבוע הקינקט (ולא לכל עציץ). • הכיול כולל ארבעה פרמטרים: • כיול ראשית הצירים של הזרוע - הבאת בסיס המספריים לראשית הצירים של המעבדה, ושמירת הקואורדינטות. זהו הוקטור A. • כיול ראשית הצירים של הקינקט - דקירת ראשית הצירים של המעבדה מתצלום הקינקט, ושמירת הקואורדינטות. זהו הוקטור K. • כיול מיקום ה"בית" של הזרוע – הבאת הזרוע אל המיקום אליו רוצים שתחזור לאחר סיום סדרת חיתוכים. • כיול איזור הצמח בתמונה – צמצום התמונה של הקינקט לאיזור בו יכול להיות צמח (בין ה"קירות הלבנים). חוסך זמן חישוב רב.
3D Model Generator • יצירת מודל תלת מימדי לצמח בשיטת Visual Hull. • נצלם את הצמח באמצעות מצלמת העומק של הקינקט (CMOS Infra-Red) מזוויות רבות, ע"י סיבוב הצמח באמצעות מנוע הסרוו. • נבצע חיתוך של היטלי תמונות העומק שקיבלנו לקבלת המודל התלת מימדי.
3D Model Generator נבצע Visual Hull עבור 18 גזרות של הצמח (20 מעלות הפרש בין גזרה לגזרה): • סיבוב הסרוו – כדי לצלם את הגזרה, מנוע הסרוו יסובב את הצמח לזווית המתאימה. המערכת תמתין להתייצבות הסרוו ע"י קריאת הזווית עד לקבלת הזווית הרצויה. • צילום התמונות בגזרה - ביצוע 5 צילומי עומק באמצעות הקינקט של הצמח בגזרה. • סינון קואורדינטות לא רלוונטיות – נסנן ממפת העומק את כל הקואורדינטות שאינן באיזור הצמח שסומן בכיול. לאחר מכן נסנן את כל הקואורדינטות שמרחקן הוא מרחק הקיר הלבן מהקינקט. • המרת הקואורדינטות למרחב העבודה – נמיר את הקואורדינטות ממערכת הצירים של הקינקט למערכת צירי המעבדה ע"י טרנזלציה בלבד (חיסור וקטורי), כיוון שוקטורי הצירים של מערכת המעבדה ושל מערכת הקינקט מתלכדים.
3D Model Generator • יצירת אובייקט היטל מתמונת עומק – עבור כל אחת מקורדינטות העומק, ניצור אובייקט באופן הבא: • מיצוע בזמן - ע"מ להתגבר על רעשי Salt & Pepper של חיישן ה-IR בקינקט, נבצע מיצוע לחמשת ההיטלים שחישבנו. כלומר, אם ווקסל מופיע ב-3 או יותר מן ההיטלים, הוא יופיע בהיטל הגזרה. • סיבוב היטל הגזרה - נסובב את היטל הגזרה לזווית המתאימה, כלומר לזווית הסרוו. • חיתוך היטלי הגזרות – לבסוף, נבצע חיתוך של 18 ההיטלים שחישבנו. ווקסל יופיע במודל התלת-מימדי רק אם הוא מופיע בכל 18 ההיטלים.
Optimal Reference Selector • המודול בודק מאגר של מודלים תלת-מימדיים מוכנים (ספירה, קוביה ולב), ובודק עבור כל מודל: • האם ניתן לחתוך את הצמח ע"פ מודל הרפרנס. • אם כן, מהם פרמטרי מודל הרפרנס האופטימליים – המיקום, הגודל והאוריאנטציה. • המודול פועל ע"י חישוב פונקציית ציון חוסר-התאמה בין מודל הצמח לבין מודל הרפרנס בעל פרמטרי מיקום, גודל ואוריאנטציה נתונים. • המודול מוצא את הפרמטרים האופטימליים של המודל ע"י מציאת מינימום מקומי של פונקציית ההתאמה בשיטת Gradient Descent. • לאחר שלכל מאגר המודלים נמצאו הפרמטרים האופטימליים, המשתמש בוחר את המודל המועדף עליו מבין המודלים האפשריים.
Optimal Reference Selector נמצא מודל רפרנס אופטימלי: • ראשית יש להסיר את החלק התחתון של מודל הצמח (כלומר, הגזע ובסיס הגבעולים) כיוון שאסור לחתוך אותם. זאת ע"י: • מציאת השטח של הצמח בחתך קואורדינטות ה-z ע"י סכימת הווקסלים כל הווקסלים בכל קואורדינטה. • מציאת קואורדינטת ה-z בעלת שטח מקסימלי. • מקואורדינטה זו חיפוש כלפי מטה של הקואורדינטה בה השטח קטן מ- 4.5 סמ"ר. • כעת עבור מאגר מודלי הרפרנס, נמצא לכל מודל פרמטרים אופטימליים ע"י Gradient Descent.
Gradient Descent • נסמן את פרמטרי מודל רפרנס R נתון כוקטור ממימד 7: • ראשית נבדוק האם מודל הרפרנס R מוכל בתוך מודל הצמח P ע"י בדיקה האם מתקיים: • נגדיר איזור אסור לחיתוך בצמח כמודל הצמח המוקטן ל-0.4 ממודל הצמח המקורי. נבדוק האם מודל הרפרנס R מכיל את האיזור האסור לחיתוך באותו אופן. • נגדיר את פונקציית ציון אי-ההתאמה בין מודל הרפרנס למודל הצמח:
Gradient Descent • כעת נמצא את F המינימלי באמצעות Gradient Descent: • ה"ניחוש" ל-X0 הוא: • חישוב הגרדיאנט ע"י נגזרות סימטריות בזמן בדיד. • נבצע 5 איטרציות למציאת המינימום המקומי.
Sector Cut Module פעולת המודול בכל גזרה. מתבצע באופן מחזורי עד לסיום החיתוך: • הבא את הזרוע למיקום הבית. • סובב את הסרוו לגזרה המתאימה. • עדכן את המודל התלת מימדי בגזרה הנוכחית. • צור מודל רפרנס חדש ע"מ שלא לחתוך עמוק מדי לתוך הצמח. • סובב את מודל הצמח ומודל הרפרנס לזווית הגזרה. • שלח תת-גזרה לחיתוך – Bulk Cut Module. • בדוק האם החיתוך בוצע בהצלחה. • בדוק האם חיתוך שגוי דורש מודל רפרנס חדש.
Sector Cut Module פירוט שלבי האלגוריתם: • עדכן את המודל התלת מימדי בגזרה הנוכחית • בצע 5 רכישות קינקט בגזרה וצור אובייקט היטל עבור הגזרה הנוכחית. • בצע חיתוך לאובייקט ההיטל החדש עם יתר האובייקטים הישנים ליצירת המודל. • צור מודל רפרנס חדש ע"מ שלא לחתוך עמוק מדי לתוך הצמח • ניסיון לחתוך בבת אחת לעומק של יותר מ-3 ס"מ אל תוך הצמח יוביל ל"התנגשות" הזרוע עם הצמח, הזזת הצמח, וחיתוך לא מדוייק. • הפתרון הוא יצירת מודל רפרנס זמני חדש ע"י הקטנת מודל הצמח ל-0.7 מגודלו המקורי, וביצע איחוד של מודל הצמח המוקטן עם מודל הרפרנס. • סובב את מודל הצמח ומודל הרפרנס לזווית הגזרה • ע"מ לשלוח קואורדינטות חיתוך נכונות לזרוע, תמיד נניח שאנו נמצאים בזווית אפס, לכן נסובב את מודל הצמח ומודל הרפרנס לזווית הגזרה.
Sector Cut Module • שלח תת גזרה לחיתוך – Bulk Cut Module • נשלח תת גזרה לחיתוך. תת הגזרה היא המחצית העליונה או התחתונה של הגזרה. • בדוק האם החיתוך בוצע בהצלחה • במערכת המעבדה, נתבונן בתת-הגזרה הרלוונטית באמצעות מעבר לקואורדינטות ספריות. • נסכום את כל הווקסלים בתת-גזרת הספרה הקיימים במודל הצמח ולא במודל הרפרנס המקורי. אם קיימים יותר מ-4,000 ווקסלים(4 סמ"ק), נדרשת איטרציית חיתוך נוספת. • בדוק האם חיתוך שגוי דורש מודל רפרנס חדש • באותו אופן, אם קיימים יותר מ-6,000 ווקסלים (6 סמ"ק) במודל הרפרנס המקורי ולא במודל הצמח, הצמח נחתך יותר מדי ונדרש למצוא מודל רפרנס חדש – Optimal Reference Selector.
Bulk Cut Module שלבי האלגוריתם: • צור ממודל הרפרנס משולשים לחיתוך בשיטת Marching Cubes. • מצא את כל המשולשים רלוונטיים לגזרה ומיין אותם (מלמעלה למטה ומשמאל לימין – מציר Z חיובי לשלילי ואז מציר Y חיובי לשלילי). • עבור כל משולש (מתוך ה- isomesh) : • בדוק אם הוא אכן נדרש לחיתוך ביחס למודל הצמח. • תרגם את המשולש לפקודת חיתוך לזרוע. • בצע חיתוך עם הזרוע. • החזר את הזרוע הרובוטית 4 ס"מ לאחור.
Marching Cubes • ראשית נבצע downsampling בפקטור 10 למודל הרפרנס, כיוון שחיתוך המזמרה הוא ברזולוציה של סנטימטר. • כעת נייצר את המשטח העוטף את מודל הרפרנס (ה- isosurface). • נבצע זאת בשיטת Marching Cube עבור isosurface=0.5, כלומר במעבר מ-0 ל-1. • בשיטה זו נתבונן בערכי 8 הווקסלים השכנים (באנלוגיה ל-8 קודקודי קובייה), ונקבע ע"פ אינטרפולציה של ערכי הווקסלים מהי צורת המשטח שעובר דרכם. צורת המשטח תיבחר מתוך 256 סוגי משטחים מוגדרים.
בדיקה האם משולש נדרש לחיתוך • נמצא את שלושת הנקודות בקצה העולם הווירטואלי, המתקבלות מהמשך שלושת נקודות המשולש לכיוון הנורמל שיוצר מישור המשולש. • ניצור מסיכה של הצורה התלת ממדית המתקבלת מ-6 הנקודות הנ"ל, כלומר אובייקט תלת מימדי. • נמצא את אובייקט החיתוך של המסכה עם מודל הצמח. • אם נפח אובייקט החיתוך גדול מ-0.5 סמ"ק, נדרש חיתוך במשולש הנ"ל.
תרגום המשולש לפקודת חיתוך • הזרוע כוילה כך שפקודת תנועה לזרוע מביאה את בסיס המזמרה לקואורדינטה הרצויה. • נקודה a במשולש היא הנקודה אליה תנוע הזרוע. ההכוון הזוויתי של הזרוע, ה- Roll וה-Pitch, ייקבעו ע"פ הנורמל למשולש באופן הבא: החישוב זהה עבור Rollו-Pitch.
תוצאות • סרטון המדגים את פעולת מערכת "גיזמו":
מסקנות • תכנון המערכת, כתיבת האלגוריתמים ומימושו הושלמו בהצלחה. • אינטגרציית המערכת בוצעה בהצלחה חלקית: • יצירת מודל צמח תלת מימדי ובחירת צורת רפרנס אופטימלית נבדקו במעבדה בהצלחה – הושלם. • חיתוך הצמח לא נבדק בהצלחה במעבדה, עקב תקלות מכאניות וחוסר יציבות של הזרוע הרובוטית (RV-E3J). • ניתן להשלים את אינטגרציית מערכת "גיזמו" ולהוסיף לה מודול בחירת מסלולי זרוע אופטימליים. במקרה זה מומלץ לא להשתמש בזרוע הרובוטית הקיימת, אלא להחליפה לזרוע חדשה ויציבה יותר. • ניתן להשתמש בפלטפורמת החומרה והתוכנה שפותחה לביצוע פרויקטים רבים נוספים, כדוגמת: מספרה אוטומטית, שחקן שחמט ממוחשב ע"ג לוח אמיתי, צבע פסלי גבס אוטומטיוכו'. • למערכת "גיזמו" פוטנציאל מסחרי ככלי אוטומציה למשתלות גדולות, אך נדרש להפוך את האבטיפוס למערכת מהירה, זולה ואמינה יותר.