רובוטמקבילי - 6 ניסוימס`
Transcription
רובוטמקבילי - 6 ניסוימס`
ניסוימס'6-רובוטמקבילי מטרה:הכרת רובוט מקבילי ,קינמטיקה הפוכה ,הפעלה. מכשור :רובוט מקבילי ,שולחן מגנטי -משטח עבודה של הרובוט ,בקרים ,מחשב ,PCתוכנת .C הקדמה: רובוט מקבילי המוצג בציור פותח ונבנה במעבדה לרובוטיקה כחלק מעבודת מגיסטר בשנת 1996 רובוט זה מורכב מ 7 -חלקים נעים :שלשה מנועים הנעים על משטח מגנטי 3 ,מוטות ופלטה .ניתן לשלוט על מיקום Y ,Xשל המנועים על המישור המגנטי .המוטות מחוברים לפלטה ע"י 3מפרקים כדוריים ולמנועים ע"י מפרקים סיבוביים. מרכז המפרקים הכדוריים נמצא במרחק של 60mmממרכז הפלטה. אורד המוטות 200mm : המפרקים הסיבוביים נמצאים בגובה 31mmמעל המשטח המגנטי .נתון סימון מערכות צירים ווקטורים על גבי הרובוט : עבודת-הכנה .1חשב את מספר דרגות החופש של הרובוט. .2בהינתן מיקום qואוריינטציה rשל הפלטה :חשב את מיקום המנועים על מישור ה.XY - (קינמטיקה הפוכה). .3כמה פתרונות יש לבעיית הקינמטיקה ההפוכה ? .4במהלך הניסוי יהיה עליכם את התוכנה המפעילה את הרובוט .עיין בקוד (מצורף בנספח). .5יש לכתוב בשפת C++פונקציה (אשר תבניתה מופיעה בעמוד הבא) המשתמשת בערכים הגלובליים הבאים: -qוקטור 3xlהמהווה מיקום מרכז הפלטה במע' העולם. -rmמטריצת אוריינטציה 3x3של הפלטה במע' העולם. ומחזירה : -targetמטריצה 6xNשכל עמודה בה היא קואורדינטות Y ,Xשל שלושת המנועים '[ . ]x1,y1,x2,y2,x3,y3הגודל Nמייצג את מספר הנקודות בהן יעבור הרובוט. כל שיש עליכם לעשות הוא לפתור את בעיית הקינמטיקה ההפוכה ,ולהכניס בכל צעד של הלולאה את ה X i , Yi -המתאימים לאותו המפרק. הערה :ריבוי הנקודות (המיוצג על ידי האינדקס ) iיתקבל מה ,GUI-ולכן אין סיבה לדאוג לגביו בשלב זה. . 6הדפס גרפים של מיקום שלושת המנועים כאשר הרובוט מבצע תנועת בציר Y ,Xוסיבוב סביב ציר Zו( .Y -גרף אחד לכל המנועים במישור .XYסה"כ 4גרפים). ) ( בפונקציה זו תשתמשו במהלך הניסוי:הגדרת הפונקציה #include #include #include #include "stdafx.h" <math.h> "globals.h" "inverse_kin.h" /**************** Variables for inverse kinematics *************************************************/ /*#define N 10 #define Z 31 #define L 200 #define R 60 #define pi 3.14159265 volatile volatile volatile volatile volatile volatile float target[6][N+1]; //holds all the motors possitions in motion plan int i; //holds the number of moves in the motion plan int state; //1 - direct control, 2 - inverse kinematics float q[3][N+1]; //holds all the translation vectors in motion plan float n[3][N+1]; //holds all the rotation vectors in motion plan - not normalized float rm[3][2]; //holds the rotation matrix /***************************************************************************************** ************/ void inverse_kin() { static float theta[]={-1.04719755,3.14159265,1.04719755}; static float alpha[]={2.09439510,0,4.18879020}; float px, py, pz, beta; int j; double Xi,Yi; //[rad] //[rad] /************************************* student's code******************************/ for (j=0;j<=2;j++) { Xi = Yi = /************************************* end of student's code *****************************************/ // System information - do not change target[2*j][i]= Xi; target[2*j+1][i]=Yi; } } /* end of InverseKinematics */ //xi //yi תרגילי-מעבדה: .1הכנת הרובוט להפעלה א .הדלק מחשב .הורד מהרובוט אמצעי הגנה נגד לחות. ב .פתח ווסת לחץ אוויר עד לקבלת לחץ של ( 3barלפי מדיד לחץ) ג .וודא (ע"י הזזה ידנית של המנועים) שהמנועים נעים על המשטח המגנטי ללאחיכוך! ד .הצמד את שלשת המנועים (לפי ציור המצורף) והפעל את הבקרים .וודא שכל הבקרים נמצאים במצב פעיל (נדלקה מנורה ירוקה על כל בקר). ה .הפעלת הרובוט – רק באישור סופי של המתרגל. .2הפעל תוכנת Lab6שמצאת על שולחן העבודה. .3לחץ על כפתור .homing and start using direct controlשיטת השליטה במנועים תהיה ישירה ושדה השליטה הישירה יהפוך לזמין .במצב זה ,עבור כל נקודה שתרצו להניע את הרובוט עליה יש להזין את ערכי הקורדינטות הרצויות של כל מנוע וללחוץ על כפתור ה .insert-לחיצה על כפתור זה תבצע השמה של הקורדינטות שיהיו כתובות בשדה זה כצעד הבא בתור בתכנון המסלול .לאחר סיום הכנסת הנקודות יש ללחוץ על כפתור move the robotבכדי להניע את הרובוט. .4הוסף לשם תנועה של הרובוט mm 08בכיוון 100mm ,Xבכיוון ,Yעליה וירידה של 20mmבציר Zהדגם את פעולת הרובוט למדריך המעבדה. .5סגור את תוכנת .Lab6 .6שמור את תוכן התיקייה C:\Lab6לתיקייה . C:\Students\your_name .7פתח את הקובץ C:\Students\your_name\parallel_arik_dotan.sln .0יופיע על המסך חלון של סביבת העבודה .Microsoft Visual Studio : בצורה הבאהInverseKinematics.cpp יש לפתוח את הפונקציה.9 2 3 4 1 .solution Explorer ללחוץ על לשונית.1 .parallel_arik_dotan להרחיב את.2 .Source Files להרחיב את.3 .InverseKinematics.cpp ללחוץ לחיצה כפולה על.4 .18לאחר שפתחת את הפונקציה InverseKinematics.cppהוסף את הקוד הדרוש (מדו"ח הכנה). .11לאחר שהוספת את הקוד יש ללחוץ על כפתור בצרת חץ ירוק (או )F5כדי לקמפל את כל הקוד ובנוסף להריץ אותו. .12לאחר שהצלחת יפתח לך ה GUI -כמו בחלק הראשון של המעבדה רק שהפעם יש אפשרות לבחור להפעיל את .homing and start using inverse kinematics .13עתה יש לחזור על סעיף ( 4השתמש בפונקציה )InverseKinematicsוהוסף סיבוב של 20מעלות סביב ציר Zוציר .Y הדגם את פעולת הרובוט למדריך המעבדה. דו"חסיכום: .1פרט את המקורות לשגיאות של הרובוט ,כיצד ניתן להתגבר עליהן? .2הסתכל באטלס של רובוטים מקבילים של ( Jean-Pierre Merletדרך אתר המעבדה). .3הסבר בקצרה מהם ההבדלים בין רובוטים טורים ורובוטים מקבילים. השווה בין התכונות של רובוטים טורים ומקבילים .4הצע דרך לפתרון הקינמטיקה הישירה של הרובוט( .אין צורד לפתור). .5צרף לדו"ח את הקוד של פונקציות InverseKinematics : חומרעזררלוונטילניסוי: עבודת מסטר של מר בן-חורין רונן " -מניפולטור מקבילי בעל שש דרגות חופש עם שלוש חוליות מונעות מישורית" ,הנמצאת בספרית להנדסת מכונות.