‏הצגת רשומות עם תוויות SimMechanics. הצג את כל הרשומות
‏הצגת רשומות עם תוויות SimMechanics. הצג את כל הרשומות

יום שני, 15 באוקטובר 2012

הבחירות כבר כאן | אפשר לבחור בין שתי טכנולוגיות של SimMechanics

"הרשו לי לפנות את הבמה בפוסט הזה פעם נוספת לטובת רוני פאר, אשר עובד יחד עמי בחברת סיסטמטיקס והתארח בבלוג הזה מספר פעמים, האחרונה שבהן – לפני חודש וחצי".

אם אתם משלבים מערכות מכניות/אלקטרוניקה/בקרה או עובדים בתחום המכשור התעשייתי, בתעשייה הבטחונית, בתעשיית הרכב, בתחום המכשור הרפואי או בעולם הרובוטיקה - כדאי לכם להמשיך לקרוא. בגרסת R2012a בוצע עדכון משמעותי למוצר SimMechanics, ונוספה לו טכנולוגיה המהווה למעשה תחליף מלא לטכנולוגיה הישנה של המוצר הזה. כיום, מוצר זה כולל את שתי הטכנולוגיות, תחת שתי ספריות שונות, והמשתמשים יכולים לבחור באיזו גרסה לעבוד (השמות שלהן הם 1G עבור הטכנולוגיה הישנה ו-2G עבור החדשה). פוסט זה יעסוק בעיקר בטכנולוגיה החדשה.

רק רגע, מה זה בכלל ה-SimMechanics הזה?

SimMechanics הוא חלק מכלי המידול הפיסי של MathWorks, ואחד מהכלים הותיקים שלה (משנת 1996 לערך). מטרת המוצר הזה היא להקל על מידול וסימולציה של מערכות מכניות קשיחות תלת-מימדיות. הדוגמה הפשוטה ביותר היא זרוע רובוטית – כלומר מספר חלקים מכניים המחוברים ביניהם במפרקים סיבוביים – היכולה לנוע במרחב התלת-מימדי. SimMechanics מאפשר לאפיין את החלקים השונים (מסה, אינרציה ותכונות מכניות אחרות), את צירי החופש והתנועה (סיבוב, תנועה קווית, בורג וכו'), את הסביבה (גרביטציה למשל) ואת האינטראקציה עם הסביבה (כוחות המופעלים על החלקים, חיכוך/שיכוך ועוד). והיתרון הגדול ביותר של SimMechanics הוא שהכלי מאפשר למתכנן להתמקד ב"בעיה" ולא ב"מתמטיקה". כלומר במקום לכתוב הרבה נוסחאות – פשוט גוררים בלוקים, מחברים אותם ולבסוף מריצים את הסימולציה, וכל המשוואות נפתרות בעזרת המנוע של SimMechanics "מאחורי הקלעים".

למה MathWorks הוסיפה טכנולוגיה חדשה לכלי?

הטכנולוגיה הישנה פותחה בצורה מאד בעייתית, שהקשתה על הוספת יכולות ומודולים חדשים שביקשו המשתמשים בכלי (ויזואליזציה טובה יותר, יכולות של שילוב גופים גמישים, הוספת מתמטיקה של "התנגשויות" בין חלקים וכו'). לאנשי הפיתוח של MathWorks לקח הרבה זמן לעשות אפילו שדרוג קטן במוצר, ולכן במקום להמשיך ולהשקיע את הזמן הזה, הוחלט לעשות "cut" ולהחליף את כל המנוע המתמטי במנוע חדש, אשר נעזר בטכנולוגיה של Simscape – התשתית לכל כלי המידול הפיסי של MathWorks.

מה החידושים בטכנולוגיה החדשה?

• הגדרה פשוטה ונוחה יותר של גופים - יש מגוון של גופים מוכנים (גליל, אליפסה, כדור וכו').

• חישוב מסה ואינרציה בצורה אוטומטית ופשוטה.

• המערכת רצה חלק ומהר יותר.

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

• חיבור גופים בסיסיים ליצירת אחד חדש, ללא שימוש ב"ריתוך" ביניהם. אין צורך להגדיר משוואות.

• אנימציה משופרת באמצעות ה-Mechanics Explorer, אשר בין יתרונותיה:
.     o מספר Views שונים בו-זמנית.
.     o האנימציה נשמרת ללא צורך בהרצה חוזרת של המודל.
.     o אפשר לשלוט על מהירות העדכון של האנימציה, אפשר לעשות Rewind, להריץ צעד-צעד וכו'.
.     o שמירה של סרטונים.
.     o "עץ גרפי" של חיבור החלקים וכיצד הם משוייכים אחד לשני, המזכיר את ה-Browser של Windows.

• שמירה אוטומטית (Logging) של כל הנתונים של ריצת הסימולציה, ללא חיבור חיישנים וסנסורים!

• דרגות החופש (ה-Joints) מכילות כבר בתוכן את החיישנים, ולכן אין צורך בהרבה בלוקים חיצוניים.

• ניתן לחבר בין בלוקים של הגרסה הישנה לבלוקים של הגרסה החדשה – עם כמה מגבלות.

מה המגבלות בהשוואה לגרסה הקודמת?

נכון לגרסה השניה של הטכנולוגיה החדשה (זו שנכללת בגרסת R2012b של כלי MathWorks) מרבית היכולות הקיימות בטכנולוגיה הישנה קיימות גם בחדשה. בגרסה השניה, למשל, ניתן כבר לייצר קוד C מתוך המודלים (באמצעות ה-Simulink Coder) ואף ניתן לייבא מודלים מתוך תוכנת תיב"מ (כמו SolidWorks).

עם זאת עדיין יש מספר חוסרים:
1. מגוון נמוך יותר של Joints (דרגות חופש).
2. לא ניתן להגדיר תנועה, ואז לפתור את הבעיה ההופכית, אלא רק להפעיל באמצעות כוחות.
3. אין שיטה אוטומטית לשדרוג מודלים מהטכנולוגיה הקודמת לחדשה, אך אנשי הפיתוח עובדים על כך.

 לסיכום, יותר מאי פעם, השימוש ב-SimMechanics מאפשר כעת:

• חסכון אדיר בזמן – במקום לכתוב משוואות ניתן פשוט לחבר חלקים.

• יבוא מודלים קיימים מתוכנת תיב"מ, לשם יצירת מודל מערכתי רחב יותר, הכולל גם מערכות אלקטרוניות ומערכות בקרה.

• שימוש חוזר במודלים שפותחו בעזרת כלי זה.

• ויזואליזציה מדהימה המאפשרת לראות בדיוק מה קורה בכל שלב נתון.

• בחירה בין שתי טכנולוגיות שונות.

• חיבור פשוט ל-MATLAB, Simulink ו-Simscape.

• אפשרות למקבל סימולציות, להשתמש בסקריפט לשינוי פרמטרים ולייצר קוד C מתוך המודלים.


האם אתם משתמשים ב-SimMechanics ? אם כן, האם כבר עברתם לטכנולוגיה החדשה ?

יום חמישי, 1 במרץ 2012

CAD קטן | על המרת מידע בין תוכנות CAD ותוכנת MATLAB


"הרשו לי לפנות את הבמה בפוסט הזה לטובת בלוגר אורח – רוני פאר, אשר התארח בבלוג הזה מספר פעמים, האחרונה שבהן - לפני חצי שנה. רוני עובד יחד עמי בחברת סיסטמטיקס, ומתמחה בכלי MathWorks לתחומי מערכות הבקרה והמידול הפיסי"


בתור מהנדס מכונות, יוצא לי לעבוד מפעם לפעם עם תוכנות גרפיקה תלת-מימדיות, דוגמת SolidWorks. לפני מספר ימים הייתי צריך לקחת מודל תלת-מימדי שבניתי ולהעביר אותו למשתמש אחר שעובד באמצעות MATLAB. לצורך ביצוע המשימה קיימות מספר דרכים, כתלות במטרה הסופית.

אם המטרה היא לחבר את המודל למערכת בקרה או ליצור סימולציה מערכתית רחבה יותר, אזי ניתן להשתמש בכלי של MathWorks שנקרא SimMechanics, אשר מאפשר יצירת מודלים של Simulink מתוך מודל ה-CAD. התוצאה היא מודל Simulink לא ליניארי, אשר מכיל את כל התכונות של מודל ה-CAD, לרבות שמות החלקים, תכונות פיסיקליות כמו מסה ואינרציה, אופן חיבור החלקים וכו'. אופציה זו משמשת מהנדסי בקרה ומהנדסי מערכת רבים לתכנון מערכות בקרה אופטימליות.

אם המטרה היא להעביר רק את התוצר הגרפי של המודל, למשל בכדי להציג אותו כחלק מסימולצית MATLAB רחבה יותר, אזי ישנה דרך פשוטה למדי לעשות זאת:

1. בתוכנת ה-CAD, יש לבצע שמירה של המודל בפורמט STL. פורמט סטנדרטי זה מכיל את כל הנתונים הגרפיים הדרושים להצגת החלק בצורה תלת-מימדית.

תמונה 1: שמירת המודל בפורמט STL

2. יש להוריד מתוך אתר שיתוף הקבצים של MathWorks את הקובץ stlread.m

תמונה 2: הורדת הקובץ מאתר שיתוף הקבצים של MathWorks

3. הפונקציה stlread מתועדת היטב, וקל לעקוב אחרי הוראות השימוש בה. ייבוא הנתונים פשוט מאוד, כפי שניתן לראות בתוכנית הקצרה הבאה שכתבתי:

תמונה 3: קוד המשמש לקריאת הנתונים והצגת המודל בתוך MATLAB

ועל ידי השימוש בפונקציה patch, התוצאות ב-MATLAB נראות כך:

תמונה 4: הצגת הנתונים ב-MATLAB על ידי שימוש בפקודת patch

אגב, לא מעט פעמים יוצא לי להישאל גם על הכיוון ההפוך, כלומר כיצד ניתן לטעון תוצרים תלת מימדיים של MATLAB לתוך תוכנת CAD. זה אולי רעיון לפוסט עתידי בנושא, אבל רק כדי לגרום לכם לרצות לעשות זאת בעצמכם, הנה התוצאה הסופית של התהליך הזה עבור גוף תלת-מימדי מוכר:

תמונה 5: צילום מסך מתוך SolidWorks

האם העליתם פונקציה משלכם לאתר שיתוף הקבצים של MathWorks? האם יש פונקציה מסויימת שהורדתם והפכה את החיים שלכם לקלים יותר? האם השתמשתם בעבר ב-SimMechanics? ומה לגבי פונקציית patch?