מה משותף ל"טסלה" ול"רומבה"? נפרק את המערכות האוטונומיות השונות לאבני בניין משותפות ונסביר אותן בקצרה.
בשנים האחרונות אנו שומעים רבות על רכבים אוטונומיים. רכב אוטונומי הוא מערכת רובוטית המסוגלת לנסוע מנקודה לנקודה ללא התערבות נהג אנושי, תוך קבלת מגוון החלטות מורכבות, כמו ציות לתמרורים והימנעות מרכבים מזגזגים ומהולכי רגל סוררים. רכב רובוטי אפילו לא יקלל אותם – פלא טכנולוגי אמיתי! האוטונומיה של הרובוט מתמקדת ביכולתו לקבל החלטות בתרחישים שלא תוכנתו לו מראש במפורש. למשל, לזהות מכשול ולהחליט מתי לעצור ומתי לתכנן ולבצע עקיפה. זאת בניגוד למערכות אוטומטיות – כמו רוב מכונות הכביסה ומדיחי הכלים הביתיים – שלהם סדר פעולות מתוכנן מראש: הדלק, כבה, סובב מנוע ימינה וכו'.
דוגמה נוספת למערכת אוטונומית ותיקה ומוכרת היא שואב האבק הרובוטי [1], שמסתובב לנו בין הרגליים מזה 20 שנה ואינו מכיר מראש את הבית שלנו ואת הרהיטים שהוא צריך להימנע מהם. אבל כיום האוטונומיה מצויה כבר במגוון אפליקציות ותחומים, ממשיכה להתפתח לתחומים נוספים ומייתרת בהם את הצורך במפעילים אנושיים, לרבות בענפי הבנייה והחקלאות, במחסנים לוגיסטיים ובפלטפורמות ביטחוניות.
להלן כמה אבני בניין המשותפות לרוב המערכות המבצעות פעולות אוטונומיות (כאן אפשר ללמוד על כל אחת מהן בהרחבה [3]). החלוקה שלפניכם היא "ארכיטקטורת על" כללית ומקובלת יחסית, אך כל אפליקציה דורשת התאמות מיוחדות שיכולות לשנות חלק מהמרכיבים.
תפיסה (Perception): בכל מערכת רובוטית יש סנסורים לתפיסת המציאות/המרחב – מצלמות, מד לייזר (LiDAR) ומכ"ם (Radar). באמצעות אלגוריתמי עיבוד תמונה ולמידה ממוחשבת [4] המערכת האוטונומית מעבדת את התמונה למידע שימושי עבור הרובוט.
נסביר באמצעות אנלוגיה: דמיינו כי התעוררתם באמצע חדר בעיניים עצומות. המשימה שלכם היא (כמובן) להגיע למקרר. אתם פוקחים עיניים – איזה עיבוד נדרש לעשות על התמונה שמולכם? ראשית, נזהה מכשולים, סטטיים (כמו שידה שמאיימת על הזרת שלנו), או דינמיים (כמו אדם אחר) [5]. אחר כך ננסה לזהות את המיקום שלנו ביחס למפת החדר ששמורה לנו במוח בהתבסס על מאפיינים (פיצ'רים) – חפצים מוכרים ודברים בסיסיים כמו פינות החדר. נזהה גם את המטרה שלנו, המקרר, על ידי השוואה בין ההיכרות שלנו עם מראה של מקרר לתמונה שאנו רואים כעת.
איבדתם אותנו? באיור 1 יש סיכום גרפי.
איור 1 – סיכום גרפי של רכיבי מערכת אוטונומית (אייר: בני גאמוס)
מיקום/הַמְקָמָה (Localization): כשהתעוררנו בחדר מייד ניסינו למקם את עצמנו. גם למערכת רובוטית חשוב להבין בכל רגע נתון היכן היא נמצאת ביחס לנקודת ההתחלה, למטרה ולמכשולים בצורה אמינה. כדי לעשות זאת הרובוט משתמש בכל החיישנים שברשותו. כל חיישן מספק מידע חלקי הרגיש לאופן המדידה ולרעשים שלו, אבל אלגוריתם המיקום משתמש בהיתוך חיישנים (sensor fusion) כדי לקבל תמונה כוללת מדויקת יותר.
ראשית, אנו יודעים אילו פקודות נתנו לגוף – כמה צעדים פקדנו עליו להתקדם ולהסתובב. באמצעות מידע זה ומודל התנועה שלנו נוכל לבצע חיזוי (prediction) של השתנות המיקום שלנו, ולאחר מכן לתקן אותו בעזרת המידע מהחיישנים.
בדוגמה שלנו הרובוט מנווט בחלל סגור (indoor), ומנסה למקם את עצמו על ידי השוואת התמונה שהוא רואה למפת החדר השמורה אצלו. בניווט בשטח פתוח (outdoor) הוא נעזר גם ב-GPS, מערכת ניווט גלובלית [6], שמאפשרת לקבל מיקום ולפעמים גם אוריינטציה מוחלטת בעולם.
לצורך המיקום ניעזר גם בחיישני תאוצה שמודדים את התאוצות הלינאריות והסיבוביות של הרובוט, ולעיתים אף נייצר חיישן תנועה מהמצלמות – נחשב עד כמה התקרבה אלינו השידה ועד כמה השתנתה הזווית שלה, ומכך נשערך את השינוי במיקום ובאוריינטציה של הרובוט.
תכנון (Planning): נגיד שיש ברשותנו מפה שממקמת אותנו, את המטרה שלנו – המקרר – ואת המכשולים שבדרך. כעת נרצה לבנות מסלול הליכה שמוביל אל היעד באוריינטציה נכונה (אי אפשר לפתוח את המקרר עם הגב), עוקף את הסרוויס של אמא וחומק משלל איומים על הזרתות שלנו (ע"ע מכשולים). ככל הנראה יש מספר מסלולים אפשריים כאלה, ולכן נשאף לעבור מרחק קצר ככל האפשר בעזרת אלגוריתמי אופטימיזציה וחיפוש גרפים [7, 8].
מקובל לחלק את משימת התכנון למתכנן גלובלי ולוקלי. הגלובלי יתכנן את המשימה "בגסות" – למשל יבחר באילו כבישים ניסע מחיפה לתל-אביב – והלוקלי ייתן מענה לבעיות אזוריות יותר – כמו נסיעה בין שני קווי ההפרדה בכביש [9] או במעבר שבין מדפים במחסן (גם כאן באמצעות אלגוריתמי תפיסה).
בקרה (Control): כעת שיש לנו מסלול משימה ומיקום שלנו ביחס אליו, הבקרה הגבוהה (HLC – High Level Control) דואגת לעקוב אחריו. אלגוריתם זה מתרגם את המשימה לאוסף של פיקודים כמו מהירויות וזוויות גלגלים.
הבקרה הנמוכה (LLC - Low Level Control) דואגת לקיום הפקודות הנ"ל – מהירויות, זוויות וכו' – על ידי תרגומן לפיקודי מתח למנועים הרלוונטיים.
בפוסט זה סקרנו את זרימת המידע במערכת אוטונומית, ממגוון חיישניה דרך שערוך מיקומה, ועד לתכנון המסלול והעקיבה אחריו. מכאן עולות שאלות המשך רבות ואנו מקווים שנותרתם סקרנים לגלות: מה אם הרובוט פועל בחדר לא מוכר, ואין ברשותו מפה? כיצד לבנות מסלול לרובוט בעל אילוצים, כמו רכב עם נגרר? ואיך מתכננים מסלול ואופן אחיזה לזרועות רובוטיות אוטונומיות? שאלות מצוינות לפוסטים נוספים.
עריכה: שיר רוזנבלום-מן
מקורות לקריאה נוספת:
[3] קורס רכבים אוטונומיים (אפשר להירשם גם בחינם)
[5] פוסט על זיהוי תנועה בתמונה
[6] פוסט על מערכת איכון עולמית - GPS
[9] פוסט על זיהוי נתיב באמצעות ראיה ממוחשבת