الحصول على معلومات من أجهزة الاستشعار المغناطيسية

StackOverflow https://stackoverflow.com/questions/4294449

  •  28-09-2019
  •  | 
  •  

سؤال

أنا أستمع إلى قيم المستشعر ، وأجعلها على ما يرام في معالجتي

    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
       for (i=0;i<3; i++) mag[i] = event.values[i];

تقول مستندات المطور لـ sensor.type_magnetic_field ستحصل عليها: "جميع القيم في Micro-Tesla (UT) وقياس المجال المغناطيسي المحيط في محور X و Y و Z."

كيف يمكنني تحويل هذه المعلومات إلى السمت والملعب واللف؟ كيف يمكنني تحويلها إلى عنوان مغناطيسي للبوصلة؟

هل فقط توفير نفس المعلومات التي يمكنك الحصول عليها من مستشعر التوجيه ، ومن مستشعر التسارع بمجرد القيام بتحويل المصفوفة؟

هل كانت مفيدة؟

المحلول

إذا كان لديك وصول إلى مقياس التسارع ، يمكنك استخدام getorientation ()الطريقة ، التي تُرجع السمت ، الملعب ، ولفها محدد من المستشعرين ، ويحسب عبر getrotationMatrix () طريقة.

تعديلات

الرد على التعليقات ... أرى سؤالك الآن. آسف. باستخدام مقياس المغنطيسي المكون من 3 محاور فقط ، لا يمكنك الحصول على السمت والملعب واللف بدقة إلا عندما يكون الجهاز موازيًا لسطح الأرض. تذكر استخدام بوصلة الإبرة ووجودها إما أ) على المغزل حتى تتمكن من رؤية وتعويض يدويًا عن الميل ، أو ب) مختومة في السائل حتى تتمكن من الوصول إلى مستوى الفقاعة إلى المركز؟ للحصول على السمت:

azimuth = arctan(y/x)

الآن ، إذا قمت بميل الهاتف ، فإن الأخطاء في استشعار المستوى X/Y يمكن أن تصبح كبيرة. تحتاج الآن إلى معرفة الميل (مع مقياس التسارع) ، ثم قياس القوة المغناطيسية للمحور z ، ثم استخدم الثلاثة للتعويض. هذا هو ما تعرفه بشكل أساسي باسم getrotationmatrix () و getorientation ().

جزء من السبب في أنني أعتقد أن sensor.type_orientitation تم إهماله في API 8 لأنه لا يوجد مستشعر توجيه منفصل في حد ذاته. إنه مزيج من المجال المغناطيسي وتسارع الاستشعار.

ورقة جيدة حفرتها تغطي كل شيء:

http://www.ssec.honeywell.com/position-sensors/datashets/sae.pdf

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top