סימולציות ומעבדה היברידית עם MATLAB ו-Simulink | איך נחתתי מהחלל היישר אל סיסטמטיקס?
אני זוכר את העבודה עם MATLAB במהלך התואר שלי – זכיתי לעשות כמה פרויקטים מעניינים, כמו ניווט של רובוט במרחב דו-ממדי סגור, זרוע רובוטית בעלת 6 מפרקים סיבוביים וכדומה. אז כמובן, כשסיימתי את הלימודים חשבתי שאני מכיר MATLAB (הרגשתי מאוד בנוח לרשום fluent in MATLAB בקו"ח). רק כשהתחלתי לעבוד הבנתי שמה שאני מכיר זה רק שבריר מהיכולות של MATLAB.
התחלתי את הקריירה ההנדסית שלי בתור מהנדס וריפיקציה לאלגוריתמי הניווט והבקרה של SpaceIL, שם קצת מפוצץ אבל בפשטות, אני הייתי צריך לקחת את תוכנת הטייס האוטונומי של החללית (שנכתבה כולה ב-MATLAB) ולבדוק אותה בסימולטור real-time מבוסס Linux, ובמעבדה היברידית (כלומר מול חומרה).
זו עבודה מדהימה לבוגר בלי ניסיון, והגישה של המנהל שלי הייתה try and cry. כמובן שהייתה לי תמיכה מלאה מהצוות, אבל נכנסתי למשבצת שאף אחד עוד לא פיתח. הציעו לי פשוט לשבת ולהתחיל לשחק (ראש בקיר עד שהקיר יישבר). ובאמת ככה זה עבד, והפכתי מבוגר חסר ניסיון לאדם שאליו פנו כאשר היו תקלות לא ברורות במהלך המשימה, לא כדי לפתור את התקלות, אלא כדי לאבחן אותן ולהפנות אותן לגורם המקצועי, ולאחר מכן להזין את התיקון חזרה לחללית.
קרדיט: לספייס אי אל, צולם ע"י בראשית
אז איך קרה כל המסע הזה?
הכל התחיל ממשימה אחת, לעבוד ביחד עם הטכניון ולהביא שולחן טייס עובד למעבדה ההיברידית ביהוד, כבר שם אמרו לי שאני צריך תחילה להכין מודל של שולחן הטייס ב-SimScape, כדי שנראה שאנחנו מבקרים אותו כמו שצריך (בלי לשבור את גלגלי השיניים בשולחן האמיתי אחר כך).
בשלב הזה עוד לא ידעתי מה זה SimScape אפילו, וכשהתחלתי קצת ללמוד, אני זוכר שמאוד התלהבתי מהרעיון. בתור בוגר הנדסת מכונות שמתעסק בבקרה, החיבור הזה בין CAD ל-MATLAB נראה פתאום כל כך הגיוני, וטוב שיש את היכולת לקחת מודל מוכן או לתכנן בעצמי ואז לבקר אותו ב-Simulink (למידע נוסף על SimScape – לחצו כאן).
לקח מספר שבועות (בכל זאת, פעם ראשונה), אבל הגענו למודל מלא של השולחן, ופתאום הפכתי להיות איש ה-SimScape, ואפילו הכנתי מודל מפושט של תנועת הדלק במיכלי החללית, נושא שבפני עצמו מעסיק מדענים רבות. (לקריאה נוספת על שכשוך הסביבה חסרת כבידה – לחצו כאן).
משם עברתי לעבודה בסימולטור ובמעבדה ההיברידית, המטרה הייתה "להתעלל" בטייס האוטונומי, לנסות לראות איפה הוא נופל. אבל מצד שני, הבדיקות צריכות להיות הגיוניות, יכולתי להגיד שהוא נופל בשנייה ברגע שהוא מקבל מסה שלילית, אבל נכון להיום (וכנראה גם בעתיד) דבר כזה לא לגמרי מסכים עם חוקי הפיסיקה, והרי סימולטור יכול לספוג הכל.
אז ישבתי ביחד עם אריאל רובננקו, איש הניווט שהגיע מסיסטמטיקס (לסיפורו של אריאל לחצו כאן), והכנו ביחד רשימה של בדיקות (שהלכה וגדלה), אבל כל בדיקה מבוצעת ב-Linux, והתחקירים כולם קורים ב-MATLAB. למזלי יכולתי לייצר קבצי txt מה-MATLAB שהוזנו ישירות ל-Linux, ככה נוצר הקישור הראשון. כמובן שהיה צריך גם לקחת את המידע מה-Linux ולפענח אותו ב-Simulink, שוב למזלי (או יותר נכון, לבקשתי) הסימולטור הוציא קבצי CSV עם כל הפרמטרים שביקשנו (והיו לא מעט), ואז יכולנו לייבא את הקובץ פנימה, להכניס אותו ל-Simulink ולהוציא תוצאות, ואחרי זה לנתח תרחישים שקרו בreal-time בסימולטור, באמצעות ה-data-inspector של ה-Simulink (למידע נוסף – לחצו כאן). בזכות היכולות של MATLAB כל התהליך הזה הפך לכמעט אוטומטי, ויכולנו למצוא הרבה באגים, שאחרי זה שיפרו משמעותית את הביצועים שלנו במשימה המבצעית.
קרדיט: ויזואליזציה של הסימולטור המערכתי אשר פותח ע"י אסף לוין, אמיר נוטע וצוות הסימולטור של ספייס אי אל.
בסימולטור קל לתחקר יחסית, שם באמת יש גישה לכל הפרמטרים באיזו תדירות שנרצה, אבל כשעובדים במעבדה היברידית, עם המחשב המוטס (או בהמשך, עם החללית), המידע יותר מוגבל. המידע מתקבל כתלות בתקשורת, ואי אפשר לשדר את כל הפרמטרים כל הזמן, רק את הפרמטרים שהוגדרו מראש. ולהגדיר פרמטרים חדשים כבר היה יותר מורכב.
אז חזרנו לשולחן השרטוט וחשבנו איך לתחקר תרחישים מהמעבדה ההיברידית?
ה-Simulink כבר לא עזר לנו, כי המידע לא רציף ולא באינטרוולים קבועים של זמן.
עברנו ל-MATLAB, שוב ניצלנו את יכולות ה-Import/Export שלו, והכנסנו את המידע שמגיע מטלמטריה (בגודל אקראי עם פרמטרים חסרים לעיתים ושמות מקודדים) ישירות ל-MATLAB, שם עשינו סידור אוטומטי והזנו את הכל ל-struct אחד נוח שאפשר להסתכל עליו.
אבל להסתכל על מידע בטבלה זה לא ממש הכי נוח, נכון? המידע הרי צריך להיות בצורה שתאפשר להסתכל עליו ולהסיק מסקנות.
אז בנינו קובץ PDF מה-MATLAB עם כל הגרפים והמספרים שרצינו (או יותר נכון, שיכולנו), ככה ששוב תהיה מקסימום אוטומציה בתהליך הבדיקה.
שוב, ה-MATLAB מייצר קובץ תיחול למעבדה ההיברידית, מניעים אותה, יורד קובץ טלמטריה, מוזן ל-MATLAB, ה-MATLAB מפיק דוח אוטומטי, ולפי הדוח מסיקים מסקנות.
פשוט נכון?
והרי אם זה עובד עם המחשב המוטס, אפשר כבר להכניס את החיישנים, וכך התווספו להם מד תאוצה (IMU) שזז לפי השולחן טייס שסיפרתי עליו מקודם, עוקב כוכבים (STR) וגלגל תנע.
לבסוף כלי הבדיקה הוכיחו את עצמם כל כך יעילים, שבמהלך המשימה כל מידע שהתקבל בטלמטריה מהחללית עבר דרך ה-MATLAB להפקת דוחות אוטומטית, ככה שאם קרה אירוע לא צפוי (והיו לא מעט כאלה), יכולתי כמעט מיידית להסתכל על דוח מסודר שמתאר את האירוע ולהגיד בגזרה של מי זה נמצא (ניווט, בקרה, מערכת, תוכנה מוטסת).
קרדיט: ספייס אי אל, צולם ע"י בראשית
ובאשר אליי, אני הבנתי שגם אחרי העבודה ב-SpaceIL רק התחלתי לגרד את פני הקרקע בMATLAB-. נכון שהתנסיתי בכלים השימושיים Simulink, Stateflow, SimScape ועוד, אבל אפשר ללמוד עוד כל כך הרבה. ומאז אני רק מחפש איך לשחק עם ה-MATLAB ולקחת עוד ועוד דברים מורכבים ולפשט אותם. אני מניח שככה גם מצאתי את עצמי בסיסטמטיקס.
תותח!
שאפו