8 באוגוסט 2011
לאחרונה, כמות עצומה של לקוחות פוטנציאליים הגיעו זמין עבור אדם רובוט מערכות אינטראקטיביות. במאמר זה אנו המתאר את השילוב של מכשיר רובוטי חדש עם תוכנות קוד פתוח שיכולות להפוך במהירות ספריה אפשרי של פונקציונליות אינטראקטיבית. לאחר מכן מתאר יישום קליני עבור יישום neurorehabilitation.
המטרה הכללית של פרוצדורה זו היא לשלב רובוט בתוך ספריית סביבה וירטואלית ולאחר מכן להשתמש ברובוט לטיפול בשבץ מוחי. דבר זה מושג תחילה על ידי יצירת מחלקת מעטפת (wrapper class) להרחבת ספריית ההפטיקה (haptics library), ולאחר מכן שילוב מחלקת המעטפת לתוך ספריית ההפטיקה. השלב הבא הוא יצירת מחלקת מעטפת להרחבת ספריית הגרפיקה ושילוב מחלקה זו לספריית הגרפיקה לאחר השלמת מחלקות המעטפת.
ממשק ה-H 3D API משמש להגדרת מכונת מצבים סופית (finite state machine) לבדיקת חולי שבץ. הרובוט המשולב משמש לאחר מכן לסיוע בשיקום של חולי שבץ. היתרון המרכזי של טכניקה זו הוא שאין צורך יותר לכתוב אפליקציית תוכנה נפרדת עבור כל רובוט.
בנוסף, יישומים אלה יכולים להיות מופעלים על ידי מדענים ברחבי העולם ללא קשר לרובוט שבו משתמשים במעבדה שלהם. שיטה זו יכולה לסייע במתן מענה לשאלות מפתח בתחומי השיקום, הרובוטיקה והבקרה המוטורית, כגון המידה שבה מערכת העצבים שלנו עשויה להפיק תועלת מהגברת שגיאות (error augmentation). שיטה זו יכולה לספק תובנות לגבי ליקויים לאחר שבץ מוחי, כמו כן להעמיק את הבנתנו לגבי תפקוד תקין.
בדרך כלל, חולי שבץ המגיעים לראשונה לשיקום רובוטי צריכים להתגבר על מכשולים מסוימים, כגון למידת האופן שבו יש לאחז בידית. הרעיון לשיטה זו עלה תחילה כאשר הבנו שאנו זקוקים לרובוט עם מרחב עבודה תפעולי רחב בפיצוי כבידה. כמו כן, ביקשנו למזער את הצורך בכתיבה מחדש של התוכנה, כדי שסטודנטים לתארים מתקדמים בעתיד יוכלו להפיק תועלת מעבודתם של קודמיהם מבלי לחזור על אותן פעולות.
סרטון זה מספק הנחיות לשילוב של רובוט למניפולציה של זרוע שלמה (whole arm manipulation או wham) עם קוד המקור הפתוח הזמין בכתובת www.hthreedpi.org. כדי לשלב רובוט חדש בספריית ההפטיקה, השלב הראשון הוא כתיבת מחלקת מעטפת (wrapper class) עבור HAP, מנוע הרינדור ההפטי, המשמש לשליטה בתנועת רובוט ה-WHAM. התחילו ביצירת קובץ CPP וקובץ כותרת (header file).
שמות הקבצים המשמשים לדוגמה זו הם happy, wham, cpp ו-happy wham h. מקם את הקובץ happy wham cpp בתיקיית המקור. Happy/source, ולאחר מכן מקם את happy.
העבירו את wham.h לספריית קבצי הכותרת (header file directory). happy/include/happy. בראש קובץ wham.h, כללו את קבצי הכותרת הראשיים של הרובוט.
שימו לב שנדרש שימוש ב-extern C כדי לפתור בעיות של שיבוש שמות על ידי הקומפילטור (compiler mangling), מכיוון שהספרייה הכלולה כתובה בשפת C ואילו ה-H 3D API כתוב בשפת ++c. בקובץ happy_wham.h צרו את המחלקה עבור הרובוט וכללו בה את ארבע הפונקציות: Haptics device release, haptics device, update device values, ו-send output. ודאו שהמחלקה יורשת באופן פומבי (publicly) ממחלקת ה-happy haptics device.
בשלב הבא, צרו מגן כותרת (header guard) עבור המחלקה. לאחר מכן, צרו את המאפיינים הסטטיים של פלט המכשיר (device output) ושל רישום מכשיר ההפטיקה תחת מחלקת happy WHAM. לבסוף, צרו את פונקציות האיבר הסטטיות עבור קריאות חוזרות (callbacks) הספציפיות לרובוט שלכם.
עבור רובוט WHAM, פונקציית ה-callback משמשת בפונקציית ה-haptics device. כעת, לאחר שהפרוטוטייפים הוגדרו בקובץ ה-header, פתחו את הקובץ happy wham dot cpp, וכללו את קבצי ה-header ומרחב השמות (namespace) המתאימים. לאחר מכן, הגדירו את הבנאי (constructor) והמהרס (destructor) ב-Happy Wam cpp.
לאחר מכן, רשמו את המכשיר ב-Happy Wam cpp. כעת הגדירו את ארבע הפונקציות הירושות ואת ה-callbacks ב-happy Wam cpp. פונקציית עדכון ערכי המכשיר (update device values) מודיעה למחשב על מיקומה של זרוע הרובוט ועל גודל הכוח שהרובוט מפעיל על הסביבה.
לאחר יצירת המחלקה Happy Wrapper, השלב הבא הוא בניית עטיפה (wrap) לתוך ספריית Happy. ה-WAM תלוי בספריות ש-H 3D API אינו תלוי בהן בצורתו הגולמית. לכן, יש להוסיף ספריות אלו ל-happy.
עברו לספריית H 3D 2.1/happy/build וערוכו את הקובץ C make lists text. הוסיפו את הספריות התלויות לאחר השורה המציינת Set optional libs. פתחו קונסולת פקודות, ניווטו לנתיב H 3D 2.1/happy/build והקלידו לפי הסדר: see make dot pseudo make ולאחר מכן pseudo make install כדי להשלים את האינטגרציה של הרובוט החדש עם קוד המקור הפתוח של H 3D.
כתוב מחלקת מעטפת (wrap class) שנייה עבור גרף הסצנה. API הנקרא H 3D API. דוגמה זו משתמשת במחלקת מעטפת הנקראת wam device.
עבור לספריה המקור, H 3D AP I/source, וצור את הקובץ WAM device.CPP ואת הקובץ wam device.Cpp. הוסף את מקור הקוד הסטנדרטי עבור כל התקני H 3D PI. לאחר מכן, מקם את Wam device H בספריית קובצי הכותרת (header files).
קובץ ה-H של מכשיר ה-Wam צריך להכיל את קובץ הכותרת הסטנדרטי עבור כל מכשורי ה-H 3D API. כעת, לאחר שקלאס המעטפת (wrapper class) נוצר, בנה מחדש את ספריית ה-H 3D PI על ידי עריכת טקסט ה-C make lists בספריה H three DPI slash build. לבסוף, בספריה H 3D PI slash build.
בנה מחדש את ספריית ה-H 3D API באמצעות הפקודות CMake ., make ו-make install. מחלקות העטיפה (wrapper classes) החדשות מוכנות כעת לשימוש עם רובוט. לאחר התקנת מחלקות העטיפה המתאימות, נוצרת מכונת מצבים סופית לשליטה בפרוטוקול הניסויי עבור משימת ההגעה למטרה המשמשת את רובוט ה-Barrett WHAM. המצבים של מכונת המצבים הם תחילת ניסוי, השקה למטרה וסיום ניסוי.
מצב תחילת הניסוי מתחיל בהקצאה של מטרה. מיקומי המטרות עשויים להיקבע באופן אקראי עבור כל ניסוי, או להיקבע מתוך קובץ. מצב תחילת הניסוי מסתיים ומצב השיגור מתחיל.
ברגע שכף ידו של הנבדק נעה לעבר המטרה במהירות העולה על סף המהירות, בדרך כלל 0.06 meters per second. מצב ההשקה מסתיים ומצב המגע עם המטרה מתחיל כאשר הסמן של המטופל נוגע במטרה. מרגע יצירת המגע, המטרה נעלמת, מצב המגע עם המטרה מסתיים ומצב סיום הניסוי מתחיל.
סיום מצב הניסוי מאותת לתוכנת איסוף הנתונים לסמן את קובץ הנתונים במפריד המציין את סוף הניסוי. כל עוד הניסוי האחרון לא הושלם, סיום מצב סוף הניסוי מאפשר את תחילת מצב תחילת הניסוי ומטרה חדשה מוקצית. סעיף זה מדגים רובוט שונה הנקרא phantom המשמש בשיקום חולי שבכה.
על ידי החלפת קוד מחלקת העטיפה (wrap class) של הפנטום בספריות המתאימות, ניתן לשלב את הרובוט החדש בסביבה הווירטואלית; כאן נעשה שימוש במערכת גרפית הבטית תלת-ממדית הנקראת virtual reality Robotic and optical operations machine או room. מערכת זו משלבת רינדור סטריאופוני מוקרן עם מעקב אחר הראש על תצוגת שכבה של מראה חצי-כסופה, יחד עם מערכת רובוטית המסוגלת להקליט את מיקום שורש כף היד ולהפיק וקטור כוח. מקרן דיגיטלי באיכות קולנועית מציג את התמונות הפרוסות על פני תצוגה ברוחב של 5 רגל, מה שיוצר זווית צפייה רחבה של 110 מעלות.
פולטי אינפרא-אדום מסנכרנים תמונות נפרדות לעין ימין ושמאל באמצעות משקפי תריס LCD. תנועת הראש מנוטרת באמצעות אלמנטים מגנטיים מסוג ascension flock of birds, כך שהתצוגה הוויזואלית מרונדרת עם פרספקטיבה מרכזית מתאימה של הראש. כפפת exo tendon עם סד למפרק כף היד מסייעת ביישור ניטרלי של כף היד והשורש.
מרכז ידית הרובוט ממוקם על האמה, posterior למפרק הרדיוקרפלי (radiocarpal joint). מיקום זה מאפשר לכוחותיו לפעול במיקום שורש כף היד, אך מאפשר תנועה חופשית בכף היד. משקלה של זרוע המטופל מופחת באמצעות סבך רובוטי חיצוני (exoskeleton) של Wilmington, המהווה אורתזה בעלת איזון כבידה המופעלת על ידי קפיץ.
המטפל היושב לצד המטופל משתמש במכשיר מעקב כדי להזיז סמן על גבי התצוגה. המטופל, העומד מולו, מונחה להשתמש בידית הרובוטית כדי לרדוף אחרי הסמן. הגברה של השגיאות (Error augmentation) מסופקת הן באופן חזותי והן באמצעות כוחות המיוצרים על ידי הרובוט.
כאשר הסמן של המטופל סוטה מהסמן של המטפל ונוצרת שגיאה רגעית, וקטור E נקבע כהפרש המיקום בין הסמן של המטפל לכף ידו של המטופל. השגיאה מוגברת חזותית במקדם של 1.5 E כחלק מהגברת השגיאה. בנוסף, כוח מגביר שגיאה של 100 E מופעל על זרועו של המטופל, אשר מתוכנת להגיע לרוויה בערך מקסימלי של ארבעה Newtons.
מסיבות בטיחותיות, הגברת השגיאה מגבירה את השגיאות הנתפסות על ידי המטופל, דבר המשפר את תהליך הלמידה מחדש. פרוטוקול הטיפול דורש מהמטופל לתרגל מספר תנועות ספציפיות, כולל הגעה קדימה והצדה תוך צימוד של הכתף והמרפק, והגעה אלכסונית לרוחב הגוף. להדגמה הבאה, קוד המחלקה העליונה מוחלף ונעשה שימוש ברובוט Barrett WHAM.
מטרת המשימה הבאה היא שנסיינים בריאים או חולי שבץ יתפסו גוף וירטואלי בתוך הכדור הירוק השקוף למחצה. אם ידיו של המטופל יוצאות מגבולות הכדור, הכדור הופך לאדום וזרועו של המטופל מקבלת משוב של הגברת שגיאה (error augmentation) מהרובוט. כאשר המטופל תופס את הגוף בהצלחה בתוך המרחב שהוגדר, הכדור נשאר ירוק.
איור זה מציג את חציון שגיאת ההגעה. כל נקודה מייצגת את חציון השגיאה שנמדדה עבור בלוק של שתי דקות של תנועות תפקודיות סטריאוטיפיות. בעוד שהמטופלים מראים התקדמות לאורך תקופה של שבועיים, לא תמיד חל שיפור בכל יום.
איור זה מציג את התועלת שהופקה מהגברת השגיאה (error augmentation) בהפחתה סלקטיבית של השונות בין תנועה לתנועה. הגרפים העליונים מציגים נתונים מקבוצת הביקורת והגרפים התחתונים מציגים נתונים מקבוצת הטיפול. כל צבע מייצג נבדק אחר.
שני הקווים האופקיים מציגים את מיקומי הגבולות עבור המטלה. מטרת הנבדק הייתה לתפוס את הקליע הווירטואלי בתוך גבולות אלו. מיקום הנקודה מראה את הנקודה שבה נבדק מסוים הגיע למגע הקרוב ביותר.
במישחק, ההיסטוגרמות הכחולות והחלקריות המונחות מעל תצוגת הנתונים הגולמיים מציגות את התפלגות התנועה של הקבוצה. לאורך הציר הקדמי, חולי השבץ ביצעו 600 ניסיונות של משימת התפיסה; עבור 200 הניסיונות הראשוניים, ועבור ניסיונות 201 עד 400, לא סופק משוב של הגברה של שגיאות (error augmentation). הרובוט סיפק משוב של הגברה של שגיאות למטופל, מה שהוביל לשיפור משמעותי ביכולתו של המטופל לתפוס את המטרה בתוך הגבולות המוגדרים.
בעקבות הליך זה, ניתן להמשיך ולבצע שיטות שיקום מסורתיות, אך באמצעות הרובוט אנו יכולים לכמת את מיקום יד המטופל בכל רגע נתון לאורך ניסויים חוזרים רבים. טכניקה זו סללה את הדרך למחקרים חדשים בתחום ההנדסה העצבית, שבהם ניתן לבחון הגעה (reaching) מדומית בתוך אזור מסוים כך שיהיו פתרונות אפשריים רבים. לאחר צפייה בסרטון זה, תהיה לכם הבנה כיצד להשתמש בספריית H 3D API עבור רובוט שיקום נבחר ולהחיל מגוון ממשקי גרפיקה הפטיים להערכה וטיפול בחולי שבץ מוחי.
העבודה עם רובוטים עלולה להיות מסוכנת, ולכן יש להקדיש מחשבה מעמיקה בעת בחירת רובוט המיועד לאינטראקציות אנושיות מסוג זה. בחרנו ב-Barrett WHAM עבור הפרויקט האחרון שלנו מכיוון שהוא עוצמתי יותר ובעל יכולת הנעה לאחור (back drivable). יכולת הנעה לאחור פירושה שניתן להגדיר אותו כך שירגיש כמעט חסר התנגדות, ואף על כך הוא אחת האפשרויות הבטוחות ביותר הזמינות לאינטראקציה בין אדם למכונה.
מחשב ניטור נפרד (watchdog computer) עוקב אחר המחשב הראשי ויכול להשבית את המערכת אם משהו משתבש, והבלימה הדינמית מבטיחה שהמערכת תפעל כבולם בכל פעם שהיא אינה פעילה. למרות שרובוטים רבים פועלים באופן שונה, פונקציות רבות שלהם חופפות. לכן, יכולת ההעברה של הטכניקות שלנו בין רובוטים עשויה לעודד שיתופי פעולה חדשים בין מעבדות.
ניכר כי טיפולי אימון כגון אלו שהודגמו במחקר זה מספקים ראיות מעודדות להשבת התפקוד אצל מטופלים, וכן לשיפור האימון בספורט, בהטסת כלי טיס בשליחוק מרחוק, בביצועי מוזיקה, בטכניקות כירורגיות ובכל משימה אחרת הדורשת תרגול חוזר.
מאמר זה דן בשילוב של התקן רובוטי עם תוכנה בקוד פתוח עבור יישומים של שיקום נוירולוגי, עם דגש מיוחד על טיפול בשבץ מוחי. גישה זו מאפשרת שימוש בספרייה של פונקציונליות אינטראקטיבית בתוך סביבה וירטואלית.
עבודה זו מטפלת בצוואר בקבוק מרכזי במדעי העצבים התרגומיים ובהנדסת שיקום: המחסור בתאימות תוכנתית בין פלטפורמות רובוטיות. על ידי מתן אפשרות לקוד מקור יחיד להתממשק עם מכשירים הפטיים מגוונים, הגישה מפחיתה את נטל הפיתוח ותומכת בהערכה פרה-קלינית הניתנת לשחזור של התערבויות ללמידה מוטורית. יכולת זו מגבירה את הביטחון החזוי בתיקוף יעדים בשלבים מוקדמים של טיפולי שיקום נוירולוגי, וזאת באמצעות סטנדרטיזציה של מדדי התנהגות בין מעבדות שונות.
השיטה משתלבת ברצף שבין הגילוי לשלב הפרה-קליני על ידי הפיכת מערכות רובוטיות לכלי פנוטיפיים סטנדרטיים למודולציה של מעגלים מוטוריים, עם יישום ישיר לזיהוי מולקולות מובילות (lead identification) בפיתוח תרופות לשיקום נוירולוגי.