מה חדש במערכות אוטונומיות בגרסה R2022a

רובוטיקה

ב-Robotics System Toolbox תוכלו למצוא אלגוריתמים עבור יישומי רובוטיים ניידים ומניפולטורים. הכלי מספק תהליך עבודה שלם מקצה לקצה, עם דוגמאות, חיבור סימולציות3D  וממשק לחומרות שנמצאות בשימוש רחב. עבור מניפולטורים הכלי מכיל אלגוריתמים לבדיקת התנגשות, תכנון נתיבים, יצירת מסלול, קינמטיקה קדמית והפוכה (forward and inverse kinematics), וייצוג דינמיקה באמצעות rigid body tree. עבור רובוטים ניידים הכלי מכיל אלגוריתמים למיפוי, לוקליזציה, תכנון מסלול, עקיבה אחר מסלול ובקרת תנועה.

לעיתים קרובות, מתחילים את התהליך ביצירת אובייקט של rigid body tree robot model, ויש כמה דרכים לעשות זאת:

  • בניית מודל באופן ישר בשימוש באובייקטים של MATLAB (כמו rigidBodyTree)
  • ייבוא מודל מוכן מקובץ חיצוני כמו URDF או מודל Simscape Multibody. מגרסה R2021b ניתן לייבא גם קובץ SDF או Gazebo.
  • שימוש באובייקט קיים מה-robot library, (שימוש ב-loadrobot על מנת לטעון מודל מוכן של רובוט)

בגרסאות החדשות הורחבה הספרייה בצורה משמעותית, והוספו שלל מודלים של רובוטים שונים. בנוסף, בגרסה R2022a, הושקה חבילת הרחבה בשם Robot Library Data, המכילה mesh data files  שמקושרים לאותם אובייקטים (לשם ייבוא של המודלים מ-Simscape Multibody או מ-Gazebo).

איור 1 מודלים מתוך Robot Library Data

ישנה אפליקציה חדשה עבור פיתוח של זרועות רובוטיות, Inverse Kinematics Designer App, המאפשרת למשתמשים לקבוע בצורה אינטראקטיבית איפה הרובוט נמצא, ולתכנן waypoints ו-trajectories בשימוש בקינמטיקה הפוכה. המשתמש יכול להגדיר את המיקום והאוריינטציה של הרובוט באופן ישיר, ליצור קונפיגורציות, לכוון ולצפות בפותרנים (solvers) של קינמטיקה הפוכה, לנהל מספר רב של אילוצים במקביל ולבדוק התנגשויות עם אובייקטים בסביבה. לבסוף ניתן לייבא את המידע ל-Workspace של MATLAB.

איור 2 אפליקציית Inverse Kinematics Designer

על מנת לבחון תרחישים שונים ניתן לחבר את המודל לסימולטורים שונים כגון Unreal Engine או Gazebo. אחד הכלים המשמעותיים שהוספו ב-R2022a הוא Cuboid Simulator, שהיה קיים עבור מודלים של Automated Driving ו-UAV וכעת הוא אפשרי גם עבור רובוטים ניידים!

סימולטור זה מאפשר לבנות תרחישים עבור רובוטיים (Robot Scenarios), למדל סנסורים (כמו GPS, INS וענן נקודות מ-Lidar) ולשלב את הקריאות שלהם בחוג הבקרה.

תעופה

בגרסה R2020b הושק UAV Toolbox, התומך ביישומים עבור מערכות מוטסות אוטונומיות כגון מל"טים ורחפנים. הכלי מאפשר תכנון, סימולציה, ביצוע טסטים, ופריסה על פלטפורמות UAV. הוא מכיל סט אלגוריתמי UAV, מודלים מופשטים שיכולים לשמש כ-baseline להתחיל ממנו (שמטרתם לבחון את אלגוריתם האוטונומיה כבר בשלבים ראשונים של הפיתוח), בלוקים לעקיבה אחר נקודות ציון (Waypoint Follower) או מסלול מעגלי (Orbit Follower). בנוסף, אפשר באמצעותו לסמלץ תרחישים בשימוש בסימולטורים שונים כגון Cuboid Simulation, או ביצוע קו-סימולציה עם Unreal Engine, שבו ניתן למדל מצלמה ו-Lidar באמינות גבוהה יותר ובסביבה מפורטת יותר ביחס ל-Cuboid scenario. שימוש אינטראקטיבי ב-Flight Log Analyzer App עבור יבוא נתוני טיסה, וויזואליזציה וניתוח של נתונים אלו.

הכלי כולל תמיכה בפרוטוקולי תקשורת של MAVLink, כמו גם התחברות ופריסה לחומרה של הטייס האוטומטי הנפוץ PX4.

איור 3 היכולות הקיימות ב-UAV Toolbox

בגרסה R2022a נוספה היכולת לבצע סימולציית Hardware-in-the-loop (HIL) עם הטייס האוטומטי של Pixhawk ומודל Simulink של ה-plant – מה שמאפשר לבחון את האלגוריתמים על החומרה לפני ביצוע ניסויים בשטח. עבור אלגוריתמים שמוסיפים יכולות אוטונומיה (שהם מורכבים מבחינה חישובית), ניתן להשתמש במחשב מובנה על ה-UAV יחד עם הטייס האוטומטי. באמצעות Simulink ניתן לתכנן אלגוריתם אוטונומי מורכב ולפרוס אותו ישירות לפלטפורמת NVIDIA Jetson, שגם נהיית נפוצה לשימוש ברחפנים.

לצפייה בסיפור לקוח ישראלי על בניית פרויקטי בקרת טיסה עם Simulink ו-Pixhawk – תקציר (4:10):

וכאן להרצאה המלאה (37:14).

ניתן להשתמש ב-UAV Toolbox Support Package for PX4 Autopilots על מנת לבחון פריסת אלגוריתם אוטונומי על פלטפורמה כגון NVIDIA Jetson, לצד חומרה של Pixhawk, ב-HIL עם דינאמיקת UAV שממודלת ב-Simulink, כשלב תיקוף מקדים לניסויים בשטח.

איור 4 ארכיטקטורה אפשרית לסימולציית HIL

בגירסה R2022a נוספה אפליקציה חדשה לתכנון תרחישים – UAV Scenario Designer App. אפליקציה זאת מאפשרת תכנון אינטראקטיבי, ו-ויזואליזציה וסימולציה של תרחישי UAV, באמצעות הגדרת פני שטח, פלטפורמות שונות וסנסורים. ניתן לייבא, לייצא, ליצור ולערוך תרחישים, אובייקטים בזירה, מסלולים ועוד.

איור 5 אפליקציית UAV Scenario Designer

נהיגה אוטונומית

בגירסה R2022a הושק מוצר חדש בשם RoadRunner Scenario, המאפשר יצירה ובחינה של תרחישים עבור סימולציית נהיגה אוטומטית. כעת ניתן לבצע קו-סימולציה עם RoadRunner באמצעות מודלים של MATLAB ו-Simulink.

RoadRunner Scenario הוא עורך אינטראקטיבי המאפשר לתכנן תרחישים להדמיה ובדיקה של מערכות נהיגה אוטומטיות. הוא מאפשר להוסיף רכבים, נתיבים, מסלולים, להגדיר לוגיקה ולהגדיר פרמטרים של תרחישים, התחברות לסימולטורים אחרים וביצוע קו-סימולציה. ניתן לייצא את התרחישים שניבנו ל-ASAM OpenSCENARIO. אותם תרחישים שיוצאו יכולים לשמש לאחר מכן בסימולטורים אחרים. משתמשים יכולים לבחור בין שחקנים (actors) מובנים (רכבים, הולכי רגל, אופנועים ועוד) או לתכנן בעצמם את ה"שחקנים" שבסימולציה באמצעות MATLAB ו-Simulink, או CARLA.

איור 6 RoudRunner Scenerio

להרחבה על החידושים הנ"ל ועוד הרבה ניתן לפנות ל-Release Highlights ול-Release Notes.

מה חדש בתחום עיבוד האותות בסביבת MATLAB בגרסה R2022a?

 חידושים באפליקציית Signal Analyzer App

אפליקציית Signal Analyzer App היא כלי אינטראקטיבי לצרכי וויזואליזציה, עיבוד, מדידה, ניתוח והשוואה של אותות במרחב הזמן, התדר, והזמן-תדר.

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

הצגת סטטיסטיקות באפליקציית Signal Analyzer

  • מצב עריכת האותות החדש באפליקציה מאפשר לערוך את האות באופן אינטראקטיבי, לקצץ אזורים וערכים שונים מהאות (clipping & trimming), להסיר אזורים לא רצויים, או לבחור אזורי עניין ספציפיים ולהשאיר רק אותם כחלק מהאות.

מצב עריכת אותות באפליקציית  Signal Analyzer

  • האפליקציה תומכת החל מגרסה זו גם באותות המכילים ערכי NaN ו-Inf.

חידושים באפליקציית Signal Labeler App

אפליקציית Signal Labeler היא כלי אינטראקטיבי שמאפשר לתייג אותות לצורך למידה.

  • החל מגרסה זו האפליקציה יכולה לזהות באופן אוטומטי אזורי דיבור באותות שמע ולתייג את המלים (מצריך בנוסף את Audio Toolbox).
    • על מנת לבצע תמלול של הדיבור לטקסט יש צורך בהתממשקות לאחד מה-APIs דיבור לטקסט הבאים:
      • Google® Speech API
      • IBM® Watson Speech API
      • Microsoft® Azure Speech API

אפליקציית Signal Labeler מאפשרת זיהוי ותיוג אוטומטי של דיבור באותות שמע

  • החל מגרסה זו, האפליקציה מאפשרת לחלץ מאפייני אותות, הן בממד הזמן והן בממד התדר, ולשמור אותם כתגיות (labels). בנוסף, ניתן לייצא את המאפיינים ל-workspace או לאפליקציית Classification Learner (לצורך כך נדרש Statistics and Machine Learning Toolbox).

דוגמאות חדשות לשימוש בלמידה עמוקה לעיבוד אותות

דוגמא המראה שימוש באובייקט denoiser יחד עם ארכיטקטורת adversarial learning לצורך סינון רעשים באותות אלקטרואנצפלוגרמה (EEG) ואלקטרודיאגרמה (EKG) רועשים.

ביצוע סיווג sequence-to-sequence לתנועות זרוע, תוך שימוש באותות אלקטרומיוגרפיה (EMG) ורשתות LSTM
(Long short-term memory).

הוספת תמיכה ביצירת קוד ++C/C עבור הפונקציות הבאות (מצריך בנוסף את MATLAB Coder):

הוספת תמיכת GPU עבור הפונקציות הבאות (מצריך בנוסף Parallel Computing Toolbox):

מידע נוסף נמצא כאן.

רשימת הפונקציות התומכות בהרצה ב-GPU, לפי גרסה, נמצאת כאן.

נתראה בפוסט הבא,

ינון

שדרוג העבודה באמצעות שימוש בגרסה העדכנית ביותר של MATLAB

MATLAB היא פלטפורמה חיה ודינמית שלעולם לא עוצרת במקום.

מדי שנה ישנם שני עדכונים, העדכון הראשון יוצא לאור בסביבות חודש מרץ (גרסה a ), וכחצי שנה לאחר מכן, בסביבות ספטמבר, יוצאת הגרסה השנייה (גרסה b).

הפיתוח של MATLAB החל בשנת 1984, ומטבע הדברים מאז ועד היום חלו שינויים מרחיקי לכת. אך גם אם נעשה zoom in ונסתכל על עדכונים בין גרסה אחת לזו שאחריה, נגלה כי ישנן תוספות חשובות לא פחות.

Figure 1 אבולוציה של נירמול מטריצה

לכן, ישנה חשיבות גדולה מאוד לעבוד עם הגרסה המעודכנת ביותר.

על ידי שדרוג קבוע, אפשר לנצל את התכונות החדשות מבלי לבזבז זמן רב בתהליך השדרוג.

תהליך השדרוג הוא נוח ומהיר, ויכול להיעשות דרך האתר של MathWorks  או ישירות מתוך MATLAB.

למה כדאי לעדכן גרסאות?

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

האצת הביצועים יכולה לבוא לידי ביטוי בכמה היבטים:

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

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

Figure 2 האצת ביצועים אינהרנטית במנוע של MATLAB לאורך הזמן

עובד טוב – לא נוגעים?

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

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

בשביל להפיג את החשש הזה, ולהקטין את חוסר הוודאות, קיים הכלי Code Compatibility Report.

כשמו כן הוא – הכלי סורק את הקוד ומציג דוח ובו חיווי של כל הבעיות העלולות לצוץ כתוצאה משינוי הגרסה. כלומר, הוא בודק לנו האם ישנן בעיות syntax, האם ישנה פונקציונליות שירדה בגרסה החדשה, האם פונקציונליות מסוימת שינתה את ההתנהגות שלה או אם יש משהו שכבר אינו נתמך.

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

Figure 3 הדוח (החדש!) שנוצר לאחר סריקת קוד לפני שדרוג גרסה

אותי תמיד לימדו שיש להעשיר את הידע ולהרחיב את האופקים ולכן עם כל השקה של גרסה חדשה אני אגלוש אל הדף MATLAB Release Notes ואעבור על העדכונים החדשים.

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

אוכל לעבור על כל העדכונים החשובים, כל השינויים הקריטיים לקוד שלי, ואף אגלה כמה תכונות חדשות שנוספו שלא ידעתי עליהן ואשר ללא בדיקה אולי לא הייתי מגלה. תמיד נחמד להעשיר את הקוד שלי ולהשתמש בכל יכולות MATLAB העומדות לרשותי!

לאחר מעבר על העדכונים ב-Release Notes ובדיקה של הקוד ב-Code Compatibility Report, אפשר ליהנות בלי חשש מכל החידושים הקיימים.

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

אל תישארו מאחור.