Kinect for Windows v2 – הדור הבא של אפליקציות PC

7 בינואר 2015

תגיות: ,
2 תגובות

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

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

בקונסולת המשחקים החדשה של Microsot הידועה בשם XBOX One, חיישן ה-Kinect תוכנן ופותח מחדש.
מחד הוא קיבל מספר יכולות חדשות ומעניינות ומאידך קיבל יכולות משופרות משמעותית ליכולות הקיימות עוד מגרסתו הראשונה.

החיישן החדש כולל מצלמת צבע ברזולוציית Full HD, חיישן עומק, חיישני IR ומערך של 4 מיקרופונים חכמים:

 k1

לשמחתנו, גם גרסה זו של ה-Kinect זמינה למפתחי WIndows, הן כחיישן נפרד (Kinect for Windows v2) והן כתצורה של מתאם המאפשר לנו לחבר את חיישן ה-Kinect המקורי של XBOX One למחשב האישי ולהתחיל לפתח.

כדי לעבוד עם KInect for Windows v2, אנו צריכים לעמוד בדרישות הבאות:

  • מומלץ מחשב עם מעבד Intel i7 ו-4GB זיכרון פנימי.
  • כרטיס מסך התומך ב-DirectX 11.
  • USB 3.0.
  • מערכת הפעלה WIndows 8/8.1.
  • Visual Studio 2013 עם דוטנט 4.5.

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

  • SDK Browser v2.0 – אפליקציה הכוללת דוגמאות שונות ומגוונות, כלים וספריות תומכות.
  • Kinect Studio v2.0 – כלי המאפשר לנו לנטר, להקליט, לנגן, לנתח ולדבג מידע המגיע לנו מחיישן ה-Kinect.
  • Visual Gesture Builder – כלי המאפשר לנו ללמד את ה-Kinect פעולות חיווי חדשות עפ”י צרכינו וצרכי האפליקציה שלנו (Machine Learning).

ה-API החדש של ה-Kinect מאפשר לנו לפתח סוגי אפליקציות שונות: לסביבת Desktop עם WPF, אפליקציות לסביבת Windows Store ואף אפליקציות Native בשפת ++C.
כל סביבות הפיתוח מדברות ועוברות תחת צינור אחד המהווה תשתית אחידה ליכולות החיישן ולמידע שהוא רואה ושומע.

 k2 

מה ה-Kinect רואה ושומע?

ה-KInect החדש רואה ושומע הרבה(!) יותר מגרסתו הראשונה וטווח הקליטה שלו גדל ל-70 מעלות אופקית ו–60 מעלות אנכית.

החיישן מצוייד במצלמת צבע איכותית ברזולוציית Full HD – 1920×1080 המסוגלת להעביר את המידע בקצב של 30fps.
הוא כולל חיישני IR מתוחכמים המאפשרים לו לראות בחושך בצורה מדוייקת יותר, כאשר המידע מגיע ברזולוציה של 512×414 בקצב של 30fps (יכול להתשנות בהתאם לתנאים).
בנוסף, ה-Kinect כולל גם חיישן עומק המאפשר לו לדעת היכן האלמנטים ממוקמים במרחב.
מעבר למידע הויזואלי הרב שה-Kinect רואה, הוא גם מסוגל לשמוע לא מעט. הוא מצוייד בבסיסו במערך של 4 מיקרופונים המאפשרים לו לקלוט את מקור הרעש ולהתמקד בו בצורה מיטבית.

כל הרכיבים הנ”ל שמהם הוא מורכב מאפשרים לו לראות ולשמוע הרבה יותר מידע ובצורה הרבה יותר מדוייקת.
ה-KInect החדש מסוגל לזהות עד 6 אנשים במקביל, כאשר בכל “גוף” הוא מזהה 25 נקודות מפתח שונות ונפרדות בעמידה ו-10 נקודות במצב ישיבה.
מעבר לנקודות השונות, הוא מסוגל לזהות תנועה של הטיית גוף ואף 3 מצבים קבועים של כף היד (עד 2 אנשים שונים):  כף יד פתוחה, סגורה ולאסו (2 אצבעות צמודות ומורמות).

k3

מודל הפיתוח

מודל הפיתוח הבסיסי של ה-Kinect הוא מאוד פשוט.
ראשית, עלינו לבחור מקור אחד או יותר של ערוצי קלט (Streams), כגון: Color, IR, Body וכ”ו.
לאחר מכן עלינו להירשם ל-Event אשר דרכו נקבל את המידע בתצורה של Frame’ים.
לבסוף, נקבל את אוביקט ה-Frame המכיל את כל המידע ונעבד אותו בהתאם עפ”י צרכינו.

על מנת לפתוח פרויקט Windows Store עם תמיכה בסיסית ב-Kinect API, בצעו את הצעדים הבאים:

  1. ראשית, פתחו פרויקט של WIndows Store מסוג Windows Apps.
  2. הוסיפו Reference ל-WindowsPreview.Kinect. תוכלו למצוא זאת תחת הטאב Extensions (שימו לב שהשם עתיד להשתנות בגרסת ה-RTM של ה-SDK).
    Kinect API כולל כמה References נוספים אך הם לא דרושים לנו לעבודה הבסיסית.
  3. בטאב ה-Build של הגדרות הפרויקט,  עדכנו את ה-Platform target ל-x86 או x64. ה-API אינו תומך במעבדי ARM.
  4. הוסיפו את ה-Namespace הבא בקוד שלכם: WindowsPreview.Kinect.

זהו, עכשיו אתם יכולים להתחיל לעבוד עם ה-Kinect foe Windows v2!
(שימו לב שבפרויקטים מסוגים אחרים, כמו WPF, הצעדים יהיו טיפה שונים).

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

KinectSensor kinectSensor = KinectSensor.GetDefault();

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

לאחר מכן, אנו נגדיר את סוג המידע/ערוץ הקלט (Stream) שנרצה לקבל, במקרה שלנו אנו נקבל מידע בתצורה של IR.
אנו מקבלים הפניה לאוביקט Reader שאיתו אנו נעבוד כדי לקבל את המידע בהתאם.

InfraredFrameReader irReader = kinectSensor.InfraredFrameSource.OpenReader();

לאחר מכן, עלינו להירשם לאירוע FrameArrived של אוביקט ה-Reader כדי לקבל את המידע, Frame אחר Frame:

irReader.FrameArrived += irReader_FrameArrived;

 

void irReader_FrameArrived(InfraredFrameReader sender, InfraredFrameArrivedEventArgs args)

{

} 

 

לבסוף, עלינו לקבל את אוביקט ה-Frame עצמו ולעבד את המידע!

void irReader_FrameArrived(InfraredFrameReader sender, InfraredFrameArrivedEventArgs args)

{

    using (InfraredFrame currentFrame = args.FrameReference.AcquireFrame())

    {

        if (currentFrame != null)

        {

            //Using frame data...

        }

    }

} 

שימו לב: יש לדאוג לשחרר את אוביקט ה-Frame כפי שהודגם בקוד הנ”ל, אחרת לא תמשיכו לקבל מידע נוסף מה-Kinect!

סיכום או התחלה חדשה?!

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

ה-Kinect החדש כולל יכולות רבות ומגוונות אשר לא נסקרו במאמר זה כגון: Face API, Fusion, Body tracking, Speech ועוד.
אתם מוזמנים לעקוב אחר הבלוג שלי למאמרים וקטעי קוד נוספים בנושא בעתיד הקרוב!

Build great apps! 🙂

 

שאלה בנושאי פיתוח? כנסו לפורום שלנו בעברית ומומחי הקהילה יסייעו לכם!

 

 

p1

הפוסט נכתב ע”י לירון רצבי, יועץ ומרצה בקבוצת סלע (Sela Group).

לירון יועץ, מפתח ומרצה בארגונים ובאקדמיה על תחומים שונים ומגוונים, כגון: ארכיטקטורה, Windows Phone, Windows 8/8.1, Web וכל מה שנגזר מכך.

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

בלוג / LinkedIn

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

כתיבת תגובה

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

2 תגובות

  1. יוסי7 בינואר 2015 ב 12:45

    וואו מהמאמר ממש טוב!

    הגב
  2. יוני16 בינואר 2015 ב 18:14

    מאמר מעולה!

    הגב