Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

أجهزة استشعار الروبوت في العمق: القرب وجيروسكوب

by
Read Time:10 minsLanguages:

Arabic (العربية/عربي) translation by Ratnawati (you can also view the original English article)

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

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

يمكنك الحصول على لمحة عامة عن أجهزة الاستشعار للروبوت بقراءة ما يلي البرنامج التعليمي:

المتطلبات الأساسية

لمتابعة على طول، ستحتاج إلى ما يلي:

1-المشروع الإعداد

إذا كان التطبيق الخاص بك ببساطة غير قابلة للاستخدام على الأجهزة التي لا تملك جميع أجهزة استشعار الأجهزة يحتاج إليها، لا ينبغي للتثبيت على هذه الأجهزة. يمكنك أن تدع اللعب Google ومعرفة الأسواق التطبيق الأخرى حول متطلبات الأجهزة للتطبيق الخاص بك عن طريق إضافة واحد أو أكثر <uses-feature>العلامات إلى ملف بيان مشروع "استوديو الروبوت" الخاص بك-</uses-feature>

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

نلاحظ، مع ذلك، أنه نظراً لأن <uses-feature>العلامة لا يساعد في حالة قيام مستخدم بتثبيت التطبيق الخاص بك يدوياً باستخدام ملف أية بي كيه به، يجب عليك لا يزال برمجياً التحقق إذا كان يتوفر جهاز استشعار قبل استخدام عليه.</uses-feature>

2-استخدام مستشعر القرب

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

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

الخطوة 1: الحصول على مستشعر القرب

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

يمكنك الآن إنشاء كائن جهاز استشعار مستشعر القرب قبل استدعاء الأسلوب getDefaultSensor() وتمرير ثابت TYPE_PROXIMITY إليها.

قبل المتابعة، دائماً التأكد من أن الكائن استشعار غير null. إذا، فهذا يعني أن مستشعر القرب غير متوفر.

خطوة 2: تسجيل وحدة إصغاء

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

التعليمة البرمجية التالية يسجل مستمع الذي يسمح لك بقراءة بيانات مستشعر القرب مرة كل ثانيتين:

اقترح عليك دائماً المستمع داخل الأسلوب onResume() للنشاط الخاص بك تسجيل وإلغاء تسجيل من داخل الأسلوب onPause(). هنا كيف يمكن إلغاء تسجيل وحدة الإصغاء:

الخطوة 3: استخدام البيانات الخام

الكائن سينسوريفينت، ومتاح داخل الأسلوب onSensorChanged()، لديه مجموعة قيم التي تحتوي على جميع البيانات الخام التي تنتجها الاستشعار المرتبطة بها. في حالة استشعار القرب، يحتوي الصفيف على قيمة واحدة تحدد المسافة بين أجهزة الاستشعار وكائن قريب بالسنتيمتر.

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

لتغيير لون الخلفية للنشاط على أساس بيانات مستشعر القرب فعلا، يمكنك استخدام الأسلوب setBackgroundColor() لعرض ديكور الإطار المستوى الأعلى.

وبناء على ذلك، أضف التعليمات البرمجية التالية داخل الأسلوب onSensorChanged() الذي قمت بإنشائه في الخطوة السابقة:

إذا قمت بتشغيل التطبيق الآن وتحوم يدك قريبة من الحافة العلوية من الهاتف الخاص بك، يجب أن تشاهد الشاشة يتحول اللون الأحمر.

Background color changes when an object is detected nearbyBackground color changes when an object is detected nearbyBackground color changes when an object is detected nearby

3-استخدام جيروسكوب

الجيروسكوب يسمح لك بتحديد السرعة الزاوية لجهاز الروبوت في أي لحظة معينة. في أبسط الشروط، فإنه يخبرك مدى سرعة الجهاز يدور حول المحاور X و Y و Z به. في الآونة الأخيرة، يجري تصنيع الهواتف الميزانية حتى مع جيروسكوب بني، ما مع واقع زيادة وتطبيقات الواقع الافتراضي أصبحت شعبية جداً.

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

الخطوة 1: الحصول على جيروسكوب

لإنشاء كائن جهاز استشعار الجيروسكوب، كل ما عليك القيام به تمرير ثابت TYPE_GYROSCOPE إلى الأسلوب getDefaultSensor() للكائن سينسورماناجير.

خطوة 2: تسجيل وحدة إصغاء

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

الخطوة 3: استخدام البيانات الخام

البيانات الخام لاستشعار جيروسكوب يتكون من القيم float الثلاثة، تحديد السرعة الزاوية للجهاز على طول المحاور X و Y و Z. ووحدة لكل قيمة راديان في الثانية الواحدة. في حالة الفيلتر التناوب على طول أي محور، ستكون القيمة المرتبطة بهذا المحور الإيجابي. في حالة دوران مع عقارب الساعة، وستكون سلبية.

لأننا مهتمون حاليا فقط في التناوب على طول محور ع، سوف نعمل فقط مع العنصر الثالث في صفيف قيم الكائن سينسوريفينت. إذا كان أكثر من0 .5f، ونحن يمكن، إلى حد كبير، يجب التأكد من أن التناوب الفيلتر، وتعيين لون الخلفية إلى اللون الأزرق. وبالمثل، إذا كان أقل من-0.5f، ونحن تعيين لون الخلفية إلى اللون الأصفر.

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

Background color changes based on angular velocityBackground color changes based on angular velocityBackground color changes based on angular velocity

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

4-استخدام الاستشعار ناقلات التناوب

اليوم تفضل معظم مطوري البرمجيات، وأجهزة الاستشعار المركبة على أجهزة الاستشعار. جهاز استشعار برمجيات يجمع البيانات الخام، ومستوى منخفض من أجهزة استشعار متعددة الأجهزة لتوليد البيانات الجديدة التي سهلة الاستخدام، ليس فقط ولكن أيضا أكثر دقة. مستشعر القرب ليس له برنامج بديل. الجيروسكوب، ومع ذلك، قد اثنين: لعبة التناوب ناقلات استشعار وناقلات التناوب. في هذا البرنامج التعليمي، سوف نركز فقط على هذه الأخيرة.

في المثال في الخطوة السابقة، قمنا بتغيير لون الخلفية للنشاط في كل مرة كانت السرعة الزاوية على طول محور ع أكثر من 0.5 rad/s في اتجاه عقارب الساعة أو الفيلتر. العمل مع سرعات الزاوي، مع ذلك، ليست بديهية. وعلاوة على ذلك، لم يكن لدينا فكرة ما كانت زاوية الفعلية للجهاز قبل أو بعد التناوب.

باستخدام الاستشعار ناقلات التناوب، دعونا الآن إنشاء نشاط يتغير لون الخلفية التي فقط عند فإنه يتم استدارة بزاوية معينة. على سبيل المثال، يمكن أن ننتقل من الأصفر كل مرة التناوب – على طول المحور Z--هو أكثر من 45° والأبيض عندما تكون التناوب بين-10 و 10 درجة، والأزرق عند التناوب هو أقل من-45 °.

الخطوة 1: إعداد استشعار ناقلات التناوب

للحصول على استشعار ناقلات التناوب، يجب تمرير ثابت TYPE_ROTATION_VECTOR إلى الأسلوب getDefaultSensor() للكائن سينسورماناجير.

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

الخطوة 2: استخدام البيانات

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

  • مكونات الكواتيرنيون X، Y و Z و W
  • دقة العنوان

يمكنك تحويل الكواتيرنيون إلى مصفوفة تناوب، مصفوفة 4 × 4، باستخدام أسلوب getRotationMatrixFromVector() للفئة سينسورماناجير.

إذا كنت تقوم بتطوير تطبيق OpenGL، يمكنك استخدام مصفوفة التناوب مباشرة لتحويل الكائنات في المشهد الخاص بك 3D. الآن، ومع ذلك، فلتحويل مصفوفة التناوب في مجموعة توجهات، تحديد تناوب الجهاز على طول المحاور Z و X و Y. للقيام بذلك، يمكننا استخدام الأسلوب getOrientation() للفئة سينسورماناجير.

قبل استدعاء الأسلوب getOrientation()، يجب أن تقوم بإعادة تعيين تنسيق نظام مصفوفة التناوب. أكثر تحديداً، يجب أن تقوم بتدوير مصفوفة التناوب أن محور ع نظام إحداثيات جديد يتزامن مع المحور الصادي لنظام الإحداثيات الأصلية.

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

يمكنك الآن تغيير لون الخلفية للنشاط استناداً إلى العنصر الثالث من الصفيف التوجهات.

إذا قمت بتشغيل التطبيق الآن، عقد الهاتف الخاص بك في الوضع العمودي، وآماله، فإنه بعكس اتجاه عقارب الساعة أكثر من 45° أو أنتيكلوكويسي، يجب أن تشاهد تغيير لون الخلفية.

Background color changes based on angleBackground color changes based on angleBackground color changes based on angle

الاستنتاج

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

لمزيد من المعلومات حول أجهزة استشعار الأجهزة والبيانات التي تولدها، يمكنك الرجوع إلى الدليل API أجهزة الاستشعار الرسمية. وتحقق بعض لدينا الأجهزة وأجهزة الاستشعار المحتويات الأخرى هنا في Envato Tuts +!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.