קינמטיקה הפוכה (Inverse Kinematics)

רובוטיקה

הגדרה

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

הפער שהחישוב הזה סוגר

קינמטיקה הפוכה (Inverse Kinematics), ובראשי-תיבות IK, היא התהליך המתמטי שמחשב את ערכי המפרקים המשתנים הדרושים כדי להציב את קצה השרשרת הקינמטית — מניפולטור של רובוט, למשל — במיקום ובזווית נתונים ביחס לתחילת השרשרת. הצורך בה נובע מפער אחד: משימות של רובוט מבוצעות במפעילי-הקצה שלו, ואילו מאמץ-הבקרה מופעל על המפרקים. מי שמפעיל את הזרוע יודע לאן הוא רוצה שהתפסן יגיע ובאיזו זווית, והמנועים יודעים לקבל פקודות של זוויות-מפרק בלבד. בסדר הפעולות הקינמטיקה ההפוכה באה אחרי תכנון תנועה ולא במקומו: קביעת התנועה שתעביר את מפעילי-הקצה מתצורה התחלתית לתצורה רצויה היא תכנון תנועה, והקינמטיקה ההפוכה מתרגמת את התוכנית הזאת למסלולי המפעילים במפרקים.

קדמית והפוכה: אותה שרשרת, שני כיוונים

תנועתה של שרשרת קינמטית ממודלת במשוואות הקינמטיקה שלה, המגדירות את תצורתה באמצעות ערכי המפרקים. קינמטיקה קדמית (Forward Kinematics) לוקחת את ערכי המפרקים ומחשבת מהם את התצורה; הקינמטיקה ההפוכה מהפכת את החישוב ומוצאת את הערכים שישיגו תצורה רצויה. שני הכיוונים אינם שקולים במאמץ: פעולות של קינמטיקה הפוכה מורכבות חישובית הרבה יותר מקינמטיקה קדמית, שבה ערכי המפרקים מחושבים טריגונומטרית. הסיבה מבנית — משוואות הלולאה של מערכת מפרקית מורכבת הן אילוצים לא-ליניאריים על פרמטרי התצורה, והפרמטרים הבלתי-תלויים שבהן הם דרגות-החופש של המערכת. העיסוק השיטתי בבעיה ברובוטיקה ותיק: עבודת-הדוקטורט של דונלד פייפר (Donald L. Pieper), "The kinematics of manipulators under computer control", הוגשה במחלקה להנדסת מכונות של אוניברסיטת סטנפורד ב-24 באוקטובר 1968.

כמה פתרונות יש: אינסוף, שישה-עשר — או אפס

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

אנליטי מול נומרי

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

שיטות היוריסטיות, ומה קורה בתוך לולאת-בקרה

אפשר גם לקרב את הבעיה בשיטות היוריסטיות, שמבצעות פעולות פשוטות וחוזרות המובילות בהדרגה לקירוב הפתרון. עלותן החישובית נמוכה — הן מחזירות את התנוחה הסופית מהר מאוד — ובדרך-כלל הן תומכות באילוצי-מפרק. שתי הפופולריות שבהן הן ירידה מחזורית לפי קואורדינטות (Cyclic Coordinate Descent, ובקיצור CCD) וקינמטיקה הפוכה בהגעה קדימה ואחורה (Forward And Backward Reaching Inverse Kinematics, ובקיצור FABRIK). קיימות תוכנות רבות שפותרות בעיות כאלה במהירות, ובהן התוכנות החופשיות IKFast ו-Inverse Kinematics Library, ולהן חיסרון מוכר: ידוע עליהן שאינן מחזירות בהכרח פתרונות חלקים מקומית בין שתי תצורות סמוכות, וזה עלול לגרום לאי-יציבות כשהחישוב רץ בתוך לולאת-בקרה בקצב גבוה.

סינגולריות, ולמה זה מתחיל כבר בשלב התכנון

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

שאלות נפוצות ❓

מה ההבדל בין קינמטיקה קדמית לקינמטיקה הפוכה?

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

למה לפעמים יש אינסוף פתרונות לאותה בעיה?

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

מה עדיף — פתרון אנליטי או פתרון נומרי?

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

מה זו תצורה סינגולרית ולמה היא בעיה?

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

האם קינמטיקה הפוכה משמשת רק ברובוטיקה?

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