תוכן עניינים:

נעו רובוט מחקה תנועות באמצעות Kinect: 7 שלבים
נעו רובוט מחקה תנועות באמצעות Kinect: 7 שלבים

וִידֵאוֹ: נעו רובוט מחקה תנועות באמצעות Kinect: 7 שלבים

וִידֵאוֹ: נעו רובוט מחקה תנועות באמצעות Kinect: 7 שלבים
וִידֵאוֹ: אייל גולן, אני קורא לך! 2024, סֶפּטֶמבֶּר
Anonim
נאו רובוט מחקה תנועות באמצעות Kinect
נאו רובוט מחקה תנועות באמצעות Kinect

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

זהו פרויקט הקשור לבית ספר (NMCT @ Howest, Kortrijk).

שלב 1: ידע בסיסי

כדי לשחזר את הפרויקט הזה עליך להיות בעל ידע בסיסי כלשהו:

- ידע בסיסי בפייתון

- ידע בסיסי ב- C# (WPF)

- ידע בסיסי בטריגונומטריה

- ידע כיצד להגדיר MQTT על פטל פטל

שלב 2: רכישת החומרים הדרושים

החומרים הדרושים לפרויקט זה:

- פאי פטל

- חיישן Kinect v1.8 (Xbox 360)

- רובוט נאו או רובוט ויראלי (כורגרף)

שלב 3: איך זה עובד

Image
Image
איך זה עובד
איך זה עובד

חיישן קינקט מחובר למחשב שמריץ את יישום WPF. יישום WPF שולח נתונים ליישום Python (רובוט) באמצעות MQTT. קבצים מקומיים נשמרים אם המשתמש בוחר בכך.

הסבר מפורט:

לפני שנתחיל להקליט, על המשתמש להזין את כתובת ה- ip של מתווך MQTT. חוץ מזה, אנו זקוקים גם לנושא עליו אנו רוצים לפרסם את הנתונים. לאחר לחיצה על התחל, האפליקציה תבדוק אם ניתן ליצור חיבור עם המתווך והיא תיתן לנו משוב. בדיקה אם קיים נושא אינה אפשרית, כך שאתה אחראי באופן מלא על נושא זה. כאשר שתי הכניסות תקינות, האפליקציה תתחיל לשלוח נתונים (קואורדינטות x, y & z יוצרות כל מפרק) מהשלד שעוקבים אחר הנושא על מתווך MQTT.

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

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

שלב 4: הגדרת מתווך MQTT

הגדרת מתווך MQTT
הגדרת מתווך MQTT

לתקשורת בין הקינקט (פרוייקט WPF) והרובוט (פרויקט פייתון) השתמשנו ב- MQTT. MQTT מורכב מתווך (מחשב לינוקס שעליו פועלת תוכנת mqtt (למשל Mosquitto) ונושא שעליו לקוחות יכולים להירשם (הם מקבלים הודעה מהנושא) ומפרסמים (הם מפרסמים הודעה בנושא).

כדי להגדיר את מתווך MQTT פשוט הורד את כל תמונת הג'סי הזו. זוהי התקנה נקייה עבורך Raspberry Pi עם מתווך MQTT עליה. הנושא הוא "/סנדרו".

שלב 5: התקנת Kinect SDK V1.8

כדי שהקינקט יפעל במחשב שלך, עליך להתקין את SDK של Microsoft Kinect.

אתה יכול להוריד אותו כאן:

www.microsoft.com/en-us/download/details.a…

שלב 6: התקנת Python V2.7

הרובוט עובד עם מסגרת NaoQi, מסגרת זו זמינה רק עבור פייתון 2.7 (לא 3.x), אז בדוק איזו גירסת פיתון התקנת.

אתה יכול להוריד את פייתון 2.7 כאן:

www.python.org/downloads/release/python-27…

שלב 7: קידוד

סִמוּל
סִמוּל
סִמוּל
סִמוּל
סִמוּל
סִמוּל

Github:

הערות:

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

- במציאות זה באמת זרם השלד שעושה את העבודה. הפעלת זרם השלד פירושה שמעקב אחר השלד של האדם. מהשלד הזה אתה מקבל כל מיני מידע, למשל. כיווני עצמות, מידע משותף, … המפתח לפרויקט שלנו היה המידע המשותף. באמצעות הקואורדינטות x-y & z של כל אחד מהמפרקים מהשלד המעקב, ידענו שנוכל לגרום לרובוט לזוז. לכן, כל.8 שניות (באמצעות טיימר) אנו מפרסמים את הקואורדינטות x, y & z של כל אחד מהפרקים למתווך mqtt.

- מכיוון שלפרויקט הפיתון יש מנוי על מתווך mqtt אנו יכולים כעת לגשת לנתונים בתוך הפרויקט הזה. בתוך כל מפרק של הרובוט נמצאים שני מנועים. לא ניתן לכוון מנועים אלה באמצעות קואורדינטות x, y & z ישירות. לכן, בעזרת הטריגונומטריה וקצת השכל הישר, הפכנו את קואורדינטות x, y & z של המפרקים לזוויות שאינן ניתנות להבנה לרובוטים.

אז בעצם כל.8 שניות מפרסם פרוייקט WPF x, y & z קואורדינטות של כל אחד מהמפרקים. כתוצאה מכך, בתוך פרויקט הפיתון הקואורדיאנטים האלה מומרים לזוויות, שנשלחות לאחר מכן למנועים המתאימים של הרובוט.

מוּמלָץ: