الخبرة الشخصية باستخدام مستشعرات القرب في التطوير

يوم جيد للجميع! اسمي مكسيم ، أنا مطور رائد في Habilect.

في حياة كل مبرمج ، تأتي لحظة عندما تريد مشاركة ما تم إنفاقه على 2/3 من حياتك - وصف للعمل والمشاريع :)

تاريخيا ، كان المجال الرئيسي لنشاطي هو تطوير أنظمة تعتمد على أجهزة استشعار تماس.

منذ ما يقرب من 7 سنوات ، تم تجربة العديد من الخيارات - Microsoft Kinect (كل من إصدار XBOX 360 و Kinect One لنظام التشغيل Windows) ، و Intel RealSense (بدءًا من الإصدار الأول المتاح في السوق - F200 ، واستمرار SR300 ، وفي الوقت الحالي ، تم إطلاق آخر إصدار - D435) ، Orbbec (Astra and Persee) ، Leap Motion (التي كتبت عنها هنا حول معالجة الإيماءات المخصصة). بطبيعة الحال ، لا يمكن الاستغناء عن كاميرات الويب العادية - تحليل الصور ، OpenCV ، إلخ.

المهتمون - أطلب قطة.

فقط في حالة وجود برنامج تعليمي موجز حول هذا الموضوع من أجهزة الاستشعار غير الملامسة:

تخيل الموقف الذي تحتاجه لتتبع أفعال شخص معين برمجيًا.

بالطبع ، يمكنك استخدام كاميرا ويب عادية ، والتي يمكن شراؤها من أي متجر. ولكن مع حالة الاستخدام هذه ، تحتاج إلى تحليل الصور ، التي تتطلب موارد كثيرة ، وبصراحة ، مهمة (مشكلة تخصيص الذاكرة في نفس OpenCV لا تزال ذات صلة).

لذلك ، من الأفضل التعرف على الأشخاص ليس كجزء من صورة الكاميرا ، ولكن كـ "هيكل عظمي" تم الحصول عليه بواسطة مستشعر متخصص يستخدم محدد المدى النشط. هذا يسمح لك بتتبع شخص (أو عدة أشخاص) ، والعمل مع الأجزاء الفردية من "الهيكل العظمي".

في مصطلحات Microsoft Kinect SDK ، تسمى هذه الأجزاء الفردية "المفاصل". في حالة المستشعر افتراضيًا ، يتم تحديث حالته كل 30 مللي ثانية.

يحتوي كل وصلة على:

  • بيانات عن موضع نقطة الهيكل العظمي المقابلة في الفضاء (إحداثيات X و Y و Z) بالنسبة للمحور البصري لجهاز الاستشعار ،
  • حالة رؤية النقطة (يتم تحديدها ، وليس تحديدها ، ويحسبها المستشعر) ،
  • رباعي الدوران بالنسبة للنقطة السابقة

يوضح الشكل المفاصل التي تمت معالجتها بواسطة Kinect v2 باستخدام ليوناردو دافنشي فيتروفيان مان كمثال.

KinectV2 المفاصل

وبالتالي ، من خلال العمل مع مستشعر غير متصل ، يحصل المطور على فرصة لتحليل تصرفات شخص أو مجموعة من الأشخاص (على سبيل المثال ، مع Kinect ، من الممكن تتبع 6 أشخاص في إطار واحد). وما يجب القيام به مع مجموعة البيانات المستلمة يعتمد على التطبيق المحدد.

تطبيقات هذه المستشعرات لا حصر لها. المجالات الرئيسية في عملي هي الإعلان والطب.

ادرس الاتجاه الإعلاني . الآن ، لتشغيل منصات الإعلانات التفاعلية ، هناك حاجة إلى العديد من الوحدات الأساسية ، وهي:

  1. المواد الإعلانية نفسها
  2. جمع إحصائيات عن درجة جذب انتباه الزائرين لعرض أحد الإعلانات ، وهو أمر يثير اهتمام المعلن
  3. إمكانية التكوين عن بعد لحامل الإعلان
  4. التأثير الجذاب الذي يميز الحامل التفاعلي عن التلفزيونات التقليدية مع الإعلانات التجارية واللافتات المطبوعة

إذا كان كل شيء واضحًا مع المواد الإعلانية نفسها ، فسيتم استخدام أجهزة الاستشعار لجمع الإحصاءات. على سبيل المثال ، أي معلن يهتم بعدد الأشخاص الذين اهتموا بإعلانه؟ الرجال والنساء أو الأطفال؟ في أي وقت يتوقفون في أغلب الأحيان؟ كم من الوقت ينظرون إلى الإعلانات ، وليس فقط الوقوف بجانب الحامل ، والحفر في الهاتف؟ باستخدام مستشعر ، يمكن تتبع ذلك وإعداد تقرير في شكل مناسب للمعلن.

للتكوين عن بعد ، يتم استخدام النموذج الأكثر بسيطة وواضحة - تقويم Google. يتم إرفاق كل تقويم بموقف معين ، وكونك في سان بطرسبرج ، يمكنك إدارة المواقف في أي مكان في العالم.

والتأثير الجذاب هو الوظيفة نفسها ، التي يطلق عليها المنصة تفاعلية. يمكنك إنشاء لعبة يديرها شخص يحمل شعار الراعي ، وتحقق صوتًا ترحيبيًا عندما يظهر شخص ما في مجال رؤية المستشعر ، وصنع رمز QR مع قسيمة خصم في متجر المعلن إذا ، على سبيل المثال ، وقف شخص لمدة دقيقة وشاهد إعلانًا. الخيارات محدودة بشكل أساسي بالخيال ، وليس بالتقنية.

لماذا استخدام أجهزة الاستشعار في الطب ؟ الإجابة على هذا السؤال بسيطة وبسيطة - يتم تقليل تكلفة الامتحانات وإعادة التأهيل مع الحفاظ على الدقة.

أحد الأمثلة البارزة هو التطور في مجال قياس الاستقرار - علم انحرافات مركز الجاذبية عند المشي ، مما يؤثر على الوضع ، والعمود الفقري ووظيفة العضلات المناسبة. يمكنك الذهاب إلى مراكز خاصة لمحاكاة خاصة ، وهو إجراء مكلف للغاية ، ومع ذلك ، لا يتم توفيره دائمًا. ويمكنك شراء جهاز استشعار وبرنامج منزل ، والاتصال بالتلفزيون وإجراء اختبارات تشخيصية ، يتم إرسال نتائجها تلقائيًا إلى طبيبك.

مثال آخر هو إعادة تأهيل المنزل. لا يخفى على أحد أن هناك مشكلتين رئيسيتين في إعادة التأهيل: دعوة الطبيب الباهظة الثمن إلى المنزل (ما يلزم القيام به عدة مرات في الأسبوع) وإحجام الشخص الذي تم تأهيله عن أداء تمارين مماثلة لفترة طويلة. لهذا ، تم تطوير العديد من المسلمات الأساسية للنظام ، وهي:

  1. التجميع عن بعد لبرامج إعادة التأهيل من قبل الطبيب لرصد التنفيذ عن بعد. على سبيل المثال ، يمكن لطبيب من سانت بطرسبرغ مراقبة عن بعد مسار التمارين الموصوفة لمريض من فلاديفوستوك ، وإذا لزم الأمر ، قم بتغيير التمارين ، أو زيادة أو تقليل تعقيد وشدة الفصول الدراسية ، إحصائيات الدراسة في الوقت الحقيقي ، إلخ.
  2. عملية تمرين جامد. إذا كانت المحاكيات الحديثة تركز بشكل رئيسي على أداء الحركات الأساسية لتطوير العضلات والمفاصل التالفة ، فإن نظام إعادة التأهيل التفاعلي يسمح لك بأداء التمارين ، حرفيا ، دون عناء. على سبيل المثال ، بمساعدة Tetris المعروفة ، والتي ، بدلاً من الضغط على الأزرار ، يتم التحكم فيها بواسطة الحركات التي يحددها الطبيب (رفع اليد اليسرى ، تحريك الساق اليمنى ، إمالة الرأس إلى الأمام وما إلى ذلك).
  3. تطبيق معايير أداء التمرين. عند العمل جنبًا إلى جنب مع المريض ، يراقب الطبيب التمرين بمساعدة النصائح والمساعدة اللمسية (على سبيل المثال ، لا يمكنك ثني ذراعك عند الكوع عند تحريك ذراعك - وهذا يؤثر على عمل مفصل الكتف). يقوم النظام التفاعلي بتقدير الزوايا النسبية بين المفاصل ، وفي حالة تجاوز النطاق المقبول ، يقوم بتحذير المستخدم ولا يأخذ في الاعتبار التنفيذ غير الصحيح للتمرين.

يسمح لك هذا النظام بتقليص الوقت (كلاً من الطبيب والمريض - للسفر معًا) ، والحفاظ على دقة التمارين اللازمة للتقدم.

لتنفيذ المشاريع باستخدام مكدس تقنية .NET. أنا أعمل Windows فقط :). نعم ، وبسبب هذا ، اضطررت إلى كتابة أغلفة لحزمة SDK الأصلية عدة مرات (كمثال حي ، قمت بعمل محولات لـ Intel RealSense SDK ، حيث كانت في ذلك الوقت رمزًا غير مُدار). يكلف الكثير من الوقت والأعصاب والشعر الرمادي ، ولكن يسمح لربط المكتبة بمشاريع مختلفة تم تطويرها على نظام Windows الأساسي.

تجدر الإشارة إلى أن أجهزة الاستشعار الرئيسية (Kinect و RealSense) تتطلب دقة x64 للتطوير.

لتبسيط عمل تطبيقات العميل ، تم تنفيذ خدمة منفصلة ، تعمل مع جهاز استشعار ، بيانات التعبئة في تنسيق مناسب لنا وإرسال البيانات إلى المشتركين باستخدام بروتوكول TCP. بالمناسبة ، سمح لنا ذلك بإنشاء نظام يعمل مع العديد من أجهزة الاستشعار ، والتي يمكن أن تحسن بشكل كبير من دقة التعرف.

KinectMultiSensorModel
يوضح الرسم البياني المبسط فوائد استخدام أجهزة استشعار متعددة لتتبع جسم ما. يتم تحديد النقاط الزرقاء (المفاصل) بشكل ثابت بواسطة المستشعرين الأول والثاني ، والأخضر - فقط بالثاني. وبطبيعة الحال ، يتم تنفيذ الحل المطور تحت "نموذج استشعار N".

KinectMultiSensorWorkflow
يتم عرض عملية تفصيلية لمعالجة البيانات من العديد من أجهزة الاستشعار في الرسم البياني أعلاه.

مع أي تطور تقريبًا ، يعد الاهتمام أحد المعايير الرئيسية لفنان الأداء. بعد ذلك ، لعدة سنوات متتالية ، قمت بتطبيق نفس نوع تطبيق الويب في ASP.NET و PHP ، أردت شيئًا جديدًا وأكثر ، دعنا نقول ، ذكي. في تطوير الويب (مع استثناءات نادرة) ، تم اختراع كل شيء بالفعل. موقع جيد ، خدمة جيدة ، قاعدة بيانات جيدة. في حالة العمل مع المستشعرات ، تنشأ دائمًا مهام مثيرة للاهتمام ومثيرة للجدل ، على سبيل المثال ، "كيف يمكنني نقل الفيديو عالي الدقة من المستشعر عبر TCP حتى لا يعلق هذا النظام؟" (مثال من الحياة ، على الرغم من أنه تم القيام به منذ فترة طويلة جدًا). ومن الصعب التنبؤ بالحاجة إلى ما يلي لتحسين النظام وتطويره. من الواضح أن هناك سباق تنمية رئيسي حيث يتم وصف التحسينات العالمية والمخطط لها مسبقًا. لكن هذه المهام الفرعية المحلية هي واحدة من أكثر المهام إثارة للاهتمام في حرفة المبرمج.

مثل هذه الوظيفة ليست بالتأكيد روتينية. إذا كان شخص ما مهتمًا بالتعلم بمزيد من التفاصيل ، أو إذا كان شخصًا ما يريد أن يعرف من أين يبدأ في هذا المجال ، فأنا منفتح على التواصل. على استعداد للرد على أي أسئلة :) وقد تكون القوة معك!

Source: https://habr.com/ru/post/ar430418/


All Articles