הפקולטה להנדסה - המגמה להנדסה מכנית

 

יולי 2002

 

 

תקשורת לרובוט ראם

 

תקציר לספר הפרוייקטים

 

פרוייקט גמר

 

 

 

הכין:      רמי צפיר

 

מנחה:       ד"ר אבנר קלונובר

 

ייעוץ:        ד"ר עמירם מושיוב


נושא ומטרה

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

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

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

בשלב התכנון הוחלט על מבנה מערכת הרובוט. מבנה זה מתואר בסכימת המערכת שבפרק הנספחים. המודולים השונים של הרובוט נחלקים לרכיבי חומרה ולאפליקציות תוכנה. אפליקציות התוכנה רצות על מחשבי PC ואילו רכיבי החומרה הם עצמאיים ומחוברים בממשק תקשורת טורית למחשב PC לצורך העברת נתונים. מבנה עבודת אפליקציות התוכנה מתבסס על שיטת התקשרות בין האפליקציות בעזרת מערכת ה-Robot Messenger המתוארת בהמשך. אחת מאפליקציות התוכנה המכונה Serial Communicator היא האחראית לביצוע התקשורת עם רכיבי החומרה.

חלק זה של הרובוט (מערכת ההפעלה ותקשורת) בוצע מלבדי ע"י עוד שני סטודנטים. לאחר אפיון המערכת שבוצע יחדיו חולקה בינינו העבודה בדרך שהם אחראים על ה-Serial Communicator ואילו אני הייתי אחראי לפיתוח ה-Robot Messenger.

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

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

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

מהות העבודה

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

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

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

הפתרון הנבחר

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

·                     הפעלת כל הרובוט תחת אפליקציה אחת העושה שימוש בספריות DLL.

·                     כל אפליקציה תפעל בנפרד וחיבורה לאחרות יעשה באמצעות ה-Robot Messenger.

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

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

מערכת זו מנצלת את טכנולוגיית ה-Com (המוכרת גם כ-ActiveX או Automation Objects). תחת אפליקצית ה-Robot Messenger כתובה מחלקה (Class) בשם RobotMessengerClass. כל אפליקציה הכתובה בשפה התומכת ב-Com Object (תמיכה זו קיימת בכל שפות התכנות המקובלות כיום) יכולה ליצור אובייקט מסוג RobotMessengerClass. אובייקט זה מקנן תחת אפליקצית ה-Robot Messenger וכאשר אפליקציה תרצה לשלוח הודעה לאפליקציה אחרת, היא תעשה זאת תוך שימוש באותו אובייקט.

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

תוצאות ומסקנות

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

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

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

ניתן לשפר את הטווח ע"י משיכת אנטנה חיצונית עם מגבר מהרובוט. אנטנה זו הנה תוספת המוצעת למכירה ע"י יצרן ה-Wireless LAN.

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

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