Kinect for Windows Version 2 מציג יכולות חיישן מתקדמות ומרשימות

16 ביולי 2014

תגיות: ,
אין תגובות

קרוב לוודאי שכולכם שמעתם על המכשיר המהפכני שהופך את הגוף האנושי להתקן שליטה במשחקים בקונסולה של מיקרוסופט – ה-Xbox. הקינקט המקורי מבוסס על טכנולוגיה מתוצרת PrimeSense הישראלית. הקינקט היה המכשיר האלקטרוני הנמכר ביותר בזמן נתון והוא הקפיץ את מכירות ה- Xbox 360. במקביל להצלחה המסחררת של הקינקט ל- Xbox, מיקרוסופט הקימה צוות אשר עסק ועוסק בהתאמת הקינקט לשימושים מסחריים כמו גם למערכת ההפעלה Windows ולמכשירים השונים התומכים בה ולא רק לקונסולת המשחקים. עד עתה ניתן היה לרכוש את הקינקט מהדור הראשון מותאם ל- Windows בכ- 250 דולר, להוריד את ה- Kinect V1 SDK ולהתחיל לפתח. היום ניתן כבר לרכוש (לא בישראל) ב- 199 דולר את הקינקט בגרסה החדשה והמשופרת ולהתחיל לפתח אפליקציות מתקדמות יותר בצורה משמעותית הודות לחיישנים משופרים.  במאמר מוסגר אומר, שערכת הפיתוח של הדור השני עדיין בפיתוח ומחודש לחודש אנו רואים שיפור משמעותי ביכולות שניתן לבצע עם המכשיר. החל מה- 15 ליולי מיקרוסופט מאפשרת גם למי שלא השתתף בתוכנית הבטא להתנסות בפיתוח אל מול הקינקט החדש.

אז מה זה בעצם ה- Kinect for Windows?

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

קינקט 1 מבוסס על טכנולוגיה של הקרנת תבנית נקודות באור תת-אדום, זיהוי התפשטות התבנית על העצמים במרחב המאפשר את מדידת העומק. בשנת 2009 מיקרוסופט קנתה את חברת 3DV Systems, חברה ישראלית מיוקנעם שפיתחה מצלמות עומק ובשנת 2010 השלימה מיקרוסופט קניה נוספת של חברת קנסטה שעסקה בפיתוח צ'יפים לזיהוי מחוות (Gesture). שילוב של שתי הטכנולוגיות האלו מהווה את הבסיס ליכולות הקינקט של Xbox One, קינקט דור 2. הקינקט החדש משתמש בטכנולוגיה המבוססת על מדידת זמן התנועה של האור וזיהוי הפאזה של האור המוחזר מהעצמים במרחב. הטכנולוגיה החדשה מאפשרת לקינקט להיות מהיר יותר בזיהוי ומעקב אחר דמויות, לדגום את המרחב בהפרדה גבוהה ובפחות רעש ולהשתמש במספר מכשירי קינקט בו זמנית מבלי שיפריעו אחד לשני.

טבלת השוואת תכונות:

Capture

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

התקנת ערכת הפיתוח (ה SDK)

יש לציין שההתקנה שאני מתאר פה היא עדיין של גרסת ה Dev Preview. כדאי לקרוא את הבעיות הקיימות בגרסה הנוכחית של ה- SDK  וכן את דרישות המינימום של החומרה כגון דרישה לחיבור USB 3.0 עבור הקינקט וכרטיס מסך תומך DirectX 11.

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

ערכת ההתקנה כוללת את כל מה שנדרש על מנת לעבוד עם הקינקט, הווה אומר הדרייברים, עדכון קושחה (Firmware) , מסמך העזרה, הספריות עבור הפיתוח ב ++C, .NET ו WinRT, דוגמאות הקוד, ה- Kinect Studio וה- Kinect Service שמאפשר להריץ מספר אפליקציות שונות שמקבלות בו זמנית מידע מאותו קינקט.

לאחר התקנת ערכת הפיתוח יש לחבר את הקינקט – חיבור אחד אל החשמל (דרך מתאמים) וחיבור שני לכניסת USB 3.0. ניתן לוודא במנהל ההתקנים שהקינקט מותקן כראוי:

1

הרצת ה Kinect Studio

imageאפליקצית ה-Kinect Studio מאפשרת להקליט את זרם המידע שמגיע לקינקט ולאחר מכן לנגן אותו שוב ושוב. ללא האפליקציה הזו, תהליך ה Debug דורש התרוצצות רצינית של עמידה מול הקינקט, ישיבה לטובת בדיקה, ועמידה חוזרת – טוב לכושר גופני אבל מעייף לאורך זמן. האפליקציה מראה את העולם בדו מימד ובתלת מימד כולל נתוני עקיבה. בתמונות למטה ניתן לראות את מצב הגוף שלי במרחב, את העקיבה של השלד, ואת מצב הידיים – יד ימין סגורה (באדום) ואילו יד שמאל פתוחה (בירוק).

 

1

1

דוגמאות קוד

כדאי להתחיל "לשחק" ולחקור את ערכת הפיתוח ע"י הרצת הדוגמאות, וצפייה בקוד. לשם כך הריצו את האפליקציה SDK Browser V2.0:

1

כאן תוכלו למצוא דוגמאות ב C#, C++, WinRT XAML ו WinRT HTML.

תיאור ערכת הפיתוח

בניגוד לגרסת ה SDK של הקינקט הראשון, בגרסה זו צוות הקינקט ל- Windows יצר חוויה דומה בממשק ה .NET וממשק ה Native – מבוסס ה COM. ז"א שמי שיודע לפתח בשפות שונות לא צריך ללמוד סט שונה של APIs. ניתן לפתח ב C#, ב ++C, לדסקטופ, ול Windows 8.1 כולל ב HTML. כמו כן יש תוסף ל Unity3d.

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

קבלת האובייקט שמייצג את הקינקט ופתיחת הקשר אליו:

kinectSensor = KinectSensor.GetDefault();

kinectSensor.Open();

קבלת אובייקט שמאפשר לקרוא פריימים (לדוגמא ColorFrameReader או BodyFrameReader):

reader = kinectSensor.ColorFrameSource.OpenReader();


ה – Reader מאפשר לקרוא את הפריים האחרון שהגיע במשיכה (AcquireLatestFrame) או להירשם לאירוע (FrameArrived) אם רוצים לקבל איתות בכל פעם שפריים חדש מגיע:

reader.FrameArrived += ReaderFrameArrived;

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

void ReaderFrameArrived(object snd, ColorFrameArrivedEventArgs e)

{

    ColorFrameReference frameReference = e.FrameReference;

    ColorFrame frame = frameReference.AcquireFrame();

}

מקורות המידע שהקינקט מספק

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

מקור תמונות הצבע מאפשר שימוש בפורמטים שונים (RGBA, BGRA, YUY2,…). מקור תמונות התת-אדום מספק תמונות בגווני אפור בהפרדה של 16 ביט לכל פיקסל, כאשר ניתן לבקש חשיפה מהירה של פריים בודד, או חשיפה איטית של שלושה פריימים ברצף.

מקור תמונות העומק מספק 16 ביטים לכל פיקסל ממרחק של חצי מטר עד ארבעה מטרים מהמכשיר. מפת השיוך של פיקסל לגוף (Body Index) , מערך דו-מימדי, בו יש בייט לכל פיקסל המתאר את הגוף של השחקן אליו הוא מתייחס: -1 מציין שהפיקסל לא משויך לאף שחקן בעוד המספרים אפס עד חמש משייכים את הפיקסל לגוף הנעקב ממספר אפס עד מספר חמש – אינדקס הכניסה של הגוף במערך העקיבה של כל הגופים.

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

1

יכולות העקיבה החדשות

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

1

בנוסף ניתן לקבל את האוריינטציה של העצמות בין המפרקים – זווית הסיבוב של כל עצם.

יכולת עיקוב משופרת לתנועות ידיים והבעות פנים

ה- SDK החדש מספק לנו מידע נוסף שבעבר היינו צריכים לעמול קשה על מנת לקבלו:

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

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

אנחנו יודעים האם האדם חובש משקפיים, האם הוא שמח, האם הוא מתעניין במכשיר ומהי תנוחת הגוף – כמה הגוף נשען (וקטור דו מימדי – מוט היגוי אנושי).

1

2

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

יכולות ניתוח קול משופרות

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

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

ה SDK מוסיף כלי חדש לטובת בניית מחוות (Gesture Builder) המבוסס על טכנולוגית מערכת לומדת (Machine Learning) וכן ספריית זמן ריצה המאפשרת לזהות את המחוות ולהגיב אליהן.

בחודשים הקרובים אנחנו נקבל תוספות ל SDK, נקבל את ה Kinect Fusion שהיה קיים בגרסה הקודמת אבל הפעם עם יכולות מוגברות, נקבל גרסאות עם פחות באגים, התיעוד יהיה מלא יותר וגרסאות ה API יתייצבו. בנוסף בעתיד אפליקציות קינקט ל Windows 8.1 ((WinRT יוכלו לעבור הסמכה ונוכל להעלות אותם לחנות.

סיכום

קינקט דור 2 מציג יכולות מרשימות. השילוב של יכולות המכשיר, ה-SDK העשיר והנוח, החוזק של ה-PC וכשרון ההמצאה שלך יאפשר לפתח אפליקציות מגוונות ופורצות דרך!

 

Alon Fliss 2הפוסט נכתב על ידי אלון פליס, ארכיטקט ראשי בחברת CodeValue. אלון הוא מיקרוסופט MVP ו- MRD.
אלון משתתף בתוכניות הבטא של צוות ה- Kinect for Windows של מיקרוסופט.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *