אוניברסיטת תל-אביב הפקולטה להנדסה המחלקה להנדסת תעשיה המעבדה ליצור בעזרת מחשב רובוטיקה מבוא נושאי המעבדה: מבנה הרובוט מערכת קואורדינאטות: עולם הרובוט ופרקי הנעה תכנות הרובוט שימוש בקופסת הבקרה ותכנות off-line מטרות המעבדה: לימוד מבנה כללי של הרובוט תכנות פשוט בשפת,ACL תוך שימוש במערכת קואורדינאטות שונות טרום מעבדה חומר רקע תיאורטי: Nanua Singh, "Computer-Integrated Design and Manufacturing", chapter 8 'Robotic Systems' (ניתן להשאלה במעבדה ולהורדה מהאתר) נספח תיאור תחנת העבודה. תקציר פקודות ACL (מצורף לתדריך זה) עבודת הכנה: חובה לקרא את הרקע התיאורטי המפורט לעיל. יש לענות על השאלות הבאות: 1. מהו רובוט תעשייתי? עריכה אחרונה 9/2010 ע"י חבצלת טרייסטר
הדיוק של תנועת הרובוט מוגדר על ידי שלוש תכונות בסיסיות. ציין/י והסבר כל אחת מהן. מהם מפרקי הרובוט? מה הן התנועות הבסיסיות הדרושות עבור תנועה רצופה ברוב הרובוטים התעשייתיים? הסבר/י לפי מה מסווגים את הרובוטים. פרט/י כל סיווג. מספר דרגות החופש הנדרשות לרובוט תלוי ביישום. הגדר ותאר יישום עבורו מספיקות שתיים, שלוש, ארבע, חמש ושש דרגות חופש. פרט/י לכל דוגמא את דרגות החופש הנדרשות. הסבר/י מדוע התנועה המהירה ביותר מנקודה לנקודה של הרובוט אינה לאורך קו ישר. מה הקושי בתנועה במסלול מעגלי? בקר הרובוט הינו למעשה מחשב, המסוגל להריץ מספר תוכניות במקביל. לשם מה נדרשת יכולת זו של הרצה במקביל, ומה הבעייתיות בכך?.2.3.4.5.6.7 2
מהלך המעבדה: במהלך מעבדה זו עליכם לבצע שתי מטלות: מטלה ראשונה תוכנית מיון בסיסית אשר תמיין 3 סוגי חלקים לפי גודלם. מטלה שנייה בקרת תנועה הרובוט (אוחז בטוש) יצייר ציור, שינתן על ידי המדריכים במעבדה. שימו לב: עיקר מעבדה זו היא בתיכנות הרובוט. לכן חשוב לעבור על פקודות ה- ACL ולהבין אותם לפני תחילת העבודה. להלן סדר הפעולות כפי שתידרשו לעשות במהלך המעבדה. לכל פעולה ישנה הפניה לפירוט והסבר בהמשך התדריך. איפוס הרובוט (עמ' 4) התחלת עבודה ממשק למשתמש (עמ' 4) מטלה ראשונה תוכנית מיון (עמ' 6).1.2.3 3.1. הגדרת נקודות במרחב (עמ' 6) 3.2. מדידת גודלי החלקים למיון ע"י הרובוט ** (עמ' 8) 3.3. כתיבת תוכנית מיון והרצה (עמ' 9) 4. מטלה שנייה בקרת תנועה (עמ' 9) ** יש מספר רובוטים במעבדה אשר אינם מסוגלים למדוד את החלקים. יש לפנות למדריך לבירור טרם תחילת העבודה. הוראות לשימוש ברובוט אשר לא מסוגל למדוד את החלקים נמצא בעמ' 9. שימו לב: בעמ' 10 ישנם הנחיות לכתיבת דו"ח מסכם. 3
1. איפוס הרובוט את הרובוט יש לאפס במצבים הבאים: לפני תחילת העבודה עם הרובוט כאשר הרובוט נתקל בדבר מה תוך כדי תנועה (לדוגמא בשולחן). היתקלות של הרובוט בשולחן (או בכל עצם אחר) גורמת להסטה של הרובוט מהנקודה שבה התכוון להיות, ולכן הרובוט לא "יידע" איפה הוא נמצא במרחב. לכן יש לאפס אותו. איפוס הרובוט יכול להיעשות בשתי דרכים: ע"י לחיצה בקופסת הבקרה (השלט) enter Run + 0 + ע"י כתיבה בטרמינל home Run חשוב! מומלץ מאוד לאפס את הרובוט עם הכניסה למעבדה, מאחר ואיפוס הרובוט דורש מספר דקות. בסוף תהליך האיפוס תתקבל הודעה במסך של קופסת הבקרה (השלט) על סיום האיפוס. 2. התחלת עבודה ממשק למשתמש על מנת להפעיל את הרובוט באמצעות המחשב נבנתה תוכנית המאפשרת הן מתן פקודות ישירות לרובוט והן כתיבת תוכנית. לתוכנית זו יש אייקון על שולחן העבודה של המחשב בשם.download יש להיכנס לתוכנית זו. יופיע המסך הבא: 4
1 מסך ראשי מתוך מסך זה יש לנו גישה לשתי סביבות עבודה: טרמינל (Terminal) Editor (לשם כתיבת תוכניות) כניסה לטרמינל מתבצעת ע"י לחיצה על מקש F4 ממסך זה. הטרמינל נותן את האפשרות לתת לרובוט פקודות לביצוע מיידי מהמחשב. (לא דרך השלט) ה- Editor נותן את האפשרות לכתוב תוכנית עם סדרת פקודות לרובוט (בשפת.(ACL לאחר כתיבת התוכנית ניתן להוריד את התוכנית לבקר, ולהריץ. כתיבת תוכנית כדי לכתוב תוכנית, יש למלא בשורת File name שם קובץ קצר לדוגמא -.abc.dnl לאישור, לחצו.Enter (3 אותיות) עם סיומת.dnl קודם כתיבת התוכנית, יש להגדיר את תוכנת ה- Editor איתה נרצה לעבוד. יש ללחוץ על.Shift+F10 ייפתח החלון הבא: יש לשנות את שם ה- Editor ל- Notepad (עורך הטקסט המובנה בחלונות). לאישור, לחצו.Enter 5
כעת, כדי להיכנס לקובץ ולערוך את התוכנית, יש ללחוץ על המקש F2. ייפתח חלון של Notepad ריק. (אם קיים כבר קובץ בשם זה, ייפתח הקובץ הקיים עם התוכנית הקיימת, במקרה זה, יש לצאת ולהגדיר שם קובץ אחר.) כתיבת התוכנית תיעשה לפי נספח 2 שפת ACL תקציר פקודות. ביציאה מהקובץ, יש לשמור (שימו לב שאתם שומרים בתור קובץ dnl ולא קובץ (txt לאחר כתיבת התוכנית יש לבצע קומפילציה ולהוריד לבקר. מהמסך הראשי יש ללחוץ F1. פעולה זו תריץ את התוכנית על המסך. אם יש שגיאות יתקבלו הודעות שגיאה, אחרת תתקבל הודעה שהתוכנית ולידית. כדי להריץ את התוכנית יש לעבור ל- terminal. הרצת התוכנית נעשית ע"י הפקודה (run abc (לדוגמא Run <program name> שימוש בטרמינל מצב ה- terminal מאפשר לנו לתת פקודות ישירות לרובוט (כגון Move p1 המורה לרובוט לנוע לנקודה p1). כניסה לטרמינל נעשית ע"י לחיצה על מקש F4 מהמסך הראשי. פקודות רלוונטיות לשימוש בטרמינל ניתן למצוא בנספח שני שפת ACL תקציר פקודות. 3. תוכנית מיון בסיסית תיאור התוכנית עם הרצת התוכנית, ייגש הרובוט לנקודה ידועה מראש, יתפוס חלק הממתין לו שם ויניחו במקום המיועד לכך. הרובוט 'יכיר' 3 סוגי חלקים שונים (עפ"י גודלם), כך שכל חלק יונח (ולא ייזרק!) במקום המיועד לו מראש. במקביל תודפס על המסך הודעה מתאימה ('נמצא חלק מסוג.('XXXX המיון יתבצע 5 פעמים. 3.1. הגדרת נקודות במרחב בשלב הראשון יש להגדיר נקודות במרחב אותם הרובוט יכיר. נדרשים 4 נקודות בסיסיות על השולחן: נקודת איסוף, ושלוש נקודות פיזור אחד עבור כל סוג חלק. בנוסף, כדי למנוע היתקלויות בשולחן העבודה ולאפשר פתיחה של מלקחי הרובוט, יש להגדיר נקודה כ- 10 ס"מ מעל כל נקודה על השולחן (בציר Z). סה"כ יש להגדיר 8 נקודות. 6
שי( הגדרת הנקודות יכולה להיעשות במספר דרכים: דרך ראשונה - הגדרת מערך ניתן להגדיר בטרמינל מערך של נקודות ע"י הפקודה Dimp arr[size] פקודה זו תגדיר מערך בגודל size להכניס מספר שלם). שם המערך.arr לאחר מכן יש להורות לטרמינל לקבל נתונים מקופסת הבקרה (השלט). יש להקליד את הפקודה: Attach arr פקודה זו כעת מכינה את הבקר לקבל את תוכן המערך מהשלט. בעזרת השלט יש לכוון את הרובוט למיקום הרצוי עבור כל נקודה וללחוץ על הכפתורים: Record Position # והמיקום יישמר לתוך מערך arr במיקום ה-# שנבחר. כך ניתן במהלך התוכנית לשלוח את הרובוט בעזרת הפקודה Move arr[1] לנקודה השמורה במקום הראשון בתוך המערך.arr דרך שנייה עבור כל נקודה יש להגדיר דרך הטרמינל את המשתנה אשר יכיל את ערך הנקודה בעזרת הפקודה DEFP P1 פקודה זו תיצור משתנה בשם P1. לאחר מכן יש לכוון את הרובוט בעזרת השלט למיקום הרצוי עבור נקודה זו ולרשום בטרמינל HERE P1 כך יש לעשות עבור כל הנקודות. 7
3.2. מדידת גדלי החלקים למיון ע"י הרובוט שימו לב: שלב זה בעבודה רלוונטי רק לחלק מהרובוטים במעבדה. יש לברר עם המדריך לפני תחילת המעבדה את סוג הרובוט. בשלב זה יש 'להכיר' לרובוט את סוגי החלקים אותם עליו למיין. לצורך כך, יש להציב בתוך התפסן של הרובוט חלק כלשהו ולבקש מדידה. כדי לקבל את הנתון על גודל החלק, יש ליצור משתנה אשר לתוכו ניתן יהיה להציב את ערך המרחק בין המלקחיים של הרובוט. הגדרת משתנה נעשית באמצעות הפקודה: DEFINE N פקודה זו יוצרת משתנה בשם N. המשתנה N מקבל מספרים טבעיים ואפס בלבד. כאשר רוצים לקבל את גודל החלק אשר נמצא בתפסן של הרובוט, יש לבצע השמה: SET N=ABS ENC[6] פקודה זו מבקשת לשים בתוך המשתנה N את הערך המוחלט של המרחק של הציר ה- 6 הוא התפסן. עבור כל חלק יש לרשום לעצמכם את מידות החלק לשם שימוש בתוך התוכנית. לחילופין, ניתן לעבוד בצורה דינאמית עם הפקודה: SHOW ENCO פקודה זו מציגה באופן דינמי את הערכים של כל מפרקי הרובוט (כולל מלקחי הרובוט). כך ניתן לרשום לעצמכם את מידות כל חלק עבור שימוש בתוכנית. 8
עבור רובוטים שאינם מסוגלים למדוד את גודל החלק - עבור רובוטים אשר לא מסוגלים למדוד את גודל החלק, אין אפשרות "להכיר" לרובוט את החלקים השונים. לכן, במהלך ריצת התוכנית, לאחר שהרובוט יתפוס חלק, התוכנית תבקש לקבל קלט מהמשתמש אודות סוג החלק אשר נמצא בתפסן (סוג 1/2/3) (ע"י הפקודה.(read לאחר קבלת הקלט מהמשתמש, הרובוט יעביר את החלק למקום המיועד. 3.3. כתיבת תוכנית מיון והרצה כעת, כשהרובוט מכיר את כל הנקודות החשובות לו במרחב, ואת סוגי החלקים אותם עליו למיין, יש לכתוב תוכנית לפיה הרובוט ייגש לנקודת האיסוף, יתפוס חלק הממתין לו שם, ועל פי מידותיו, יעביר למקום המיועד. במקביל, על התוכנית להדפיס למסך הודעה מתאימה ('נמצא חלק מסוג.('XXXX המיון יתבצע 5 פעמים. (הוראות לכתיבת תוכניות ב- ACL יש למצוא בנספח (ACL המלצה ניתן להשתמש בפקודות Label ו- Goto כדי לקפוץ ממקום אחד בתוכנית למקום אחר. לדוגמא - אם יש מספר תנאי if על אותו ערך, ואחד התנאים כבר התקיים, ניתן לקפוץ למקום אחר בתוכנית במקום שהתוכנית תמשיך לבדוק את תנאי ה- if שכבר בבירור אינם מתקיימים. 4. מטלה שנייה בקרת תנועה במטלה זו, תקבלו מהמדריכים במעבדה ציור אותו יצייר הרובוט האוחז בטוש. דגשים לכתיבת התוכנית יש ללמד את הרובוט נקודה אחת בלבד במרחב (דרך הטרמינל). נקודה נוספת תוגדר במהלך התוכנית באופן יחסי לנקודה זו. יש להשתמש בשתי נקודות אלה בלבד על מנת לצייר את הציור. השתמשו בפקודות המופיעות בנספח על מנת לשנות את הקואורדינאטות של הנקודות שהגדרתם. מהירות תנועת הרובוט תהיה 15. לסטודנטים קיימת יד חופשית במידות הציור, כל עוד נשמרת 'רוח' הציור והציור הינו בערך כגודל דף A4. 9
דו"ח מסכם יש להגיש דוח מסכם שיכלול (בנוסף לסעיפים הרגילים): מדוע קיים צורך בהשהיות בתוכנית בין ביצוע פקודות תנועה? תיאור מצבים בהם יש צורך להגדיר נקודות ביניים במסלול הרובוט. הסבר מדוע נדרשות נקודות אלו. הסבר מדוע התנועה המהירה ביותר מנקודה לנקודה של הרובוט אינה לאורך קו ישר. מה הקושי בתנועה במסלול מעגלי? תאירו מפורט של ביצוע המטלות תדפיס של התוכניות..1.2.3.4.5 10
נספח ראשון - תיאור תחנת העבודה במעבדה מצויים חמש תחנות עבודה רובוטיות. בכל אחת מתחנות העבודה מותקן מחשב, רובוט, בקר וקופסת בקרה Pendant),(Teach לעתים כוללת תחנת העבודה אמצעים נוספים (מכונת עיבוד שבבי, מחסן חו"ג, מצלמה). ניתן להפעיל את הרובוט ישירות ע"י קופסת הבקרה או באמצעות המחשב. מבנה ה- Pendant :Teach להלן מבנה קופסת הבקרה המחוברת לכל אחת מתחנות העבודה: הסבר (על הכפתורים החשובים): - ניתן לשלוט ברובוט בשני אופנים - JOINTS - שליטה על כל דרגת חופש (מפרק) בנפרד, או - XYZ תנועה בו זמנית של כל דרגות החופש לאורך הצירים העיקריים. מקש זה מאפשר לעבור מצורת שליטה אחת לשנייה (כפי שניתן לראות ע"ג תצוגת ה- LC של המכשיר, כרגע הוא במצב.(JOINTS 11
- זוג הכפתורים הזה מאפשר לשלוט במפרק ה- BASE, אם הרובוט במצב JOINTS או להניע בציר ה- X, אם במצב XYZ - זוג הכפתורים הזה מאפשר לשלוט במפרק ה- SHOULDER, אם הרובוט במצב JOINTS או להניע בציר ה- Y, אם במצב XYZ - זוג הכפתורים הזה מאפשר לשלוט במפרק ה- ELBOW, אם הרובוט במצב JOINTS או להניע בציר ה- Z, אם במצב XYZ - זוג הכפתורים הזה מאפשר לשלוט במפרק ה- PITCH, ללא תלות במצב הרובוט. - זוג הכפתורים הזה מאפשר לשלוט במפרק ה- ROLL, ללא תלות במצב הרובוט. - פתיחה/סגירה של התפסנית (Gripper) - כאשר הרובוט 'נתקע' ניתן לשחררו באמצעות מקש זה. 12
נספח שני - שפת ACL - תקציר פקודות (Advanced Control Language) שפת ACL שפה הנה לשליטה ברובוט המבוססת על (חלקית).BASIC תוכנית ACL מתחילה בפקודה: <Name> ומסתיימת בפקודה: END להלן פקודות שימושיות לצורך התוכניות (לשם לשאול ניתן השפה, של מלא לימוד במעבדה מדריך לשפה): פקודה מקום השימוש הסבר הגדרת נקודה בזיכרון (מתבצע לפני התוכנית) TERMINAL DEFP P1 מתן ערך לנקודה בזיכרון (מצב נוכחי של הרובוט) TERMINAL HERE P1 פקודה לנוע לנקודה P1 /TERMINAL MOVE P1 הגדרת משתנה (הערה: מספרים טבעיים ו 0 - בלבד) DEFINE N בתוך P1 הצבת P2 /TERMINAL SETP P1=P2 N בתוך Q הצבת משתנה /TERMINAL SET N=Q התחלת לולאה בתוכנית משתנה ומקודם I) FOR I=1 TO 100 אוטומטית) סיום לולאה ENDFOR התחלת תנאי IF X=5 ביצוע אם התנאי לא מתקיים ELSE 13
סיום תנאי ENDIF שילוב AND ב- IF ANDIF שילוב OR ב- IF ORIF /TERMINAL פקודת תנועה לאורך קו ישר MOVEL P1 פקודת תנועה, והמתנה לסיום התנועה לפני המעבר לפקודה הבאה /TERMINAL MOVED P1 פקודת תנועה לאורך קשת מעגלית לנקודה P1 דרך נקודה P2 /TERMINAL MOVEC P1 P2 שינוי קואורדינטת ה- X של נקודה ב 100 - יח' מרחק (באופן דומה (Z,Y /TERMINAL SHIFTC P1 BY X 100 איפוס הרובוט יש לבצע כאשר הרובוט אינו מגיב כראוי (יצא מאיפוס TERMINAL RUN HOMES השהיה ) < VAR >במאיות שניה) DELAY <VAR> /TERMINAL הגדרת מערך של נקודות DIMP VEC[n] הגדרת משתנים 12) בתוכניות אחרות (עד כגלובליים, לשימוש /TERMINAL GLOBAL var1 var2.. הגדרת כתובת בתוכנית (9999=>n=>0) LABEL n 'קפיצה' לכתובת n GOTO n מעבר ל- n עד לסיום הביצוע של הרוטינה GOSUB n הודעה של הדפסה רוצים, אם המסך. על (string) /TERMINAL PRINT "string" <var> ניתן גם להדפיס ערך של משתנה.var 14
הדפסה בשורה חדשה PRINTLN /TERMINAL קביעת מהירות תנועת הרובוט SPEED n /TERMINAL פתיחת וסגירת מלקחי הרובוט OPEN/CLOSE ANDIF מחזיר את ערך מפתח מלקחי הרובוט (ללא יחידות). דרוש להשתמש בפקודת ABS בשילוב עם פקודה זו. /TERMINAL ENC[6] ABS ENC[6] מציג בצורה דינמית את הערכים הרובוט (כולל מלקחי הרובוט) מפרקי של TERMINAL SHOW ENCO הסרת התוכנית בסיום המעבדה) מהזיכרון (חשוב לעשות זאת TERMINAL REMOVE <NAME> קליטת input מהמשתמש לתוך משתנה שם המשתנה.var READ "string" <var> הודעה למשתמש הקלט מה לו המורה String הצפוי. 15