این بخش محورهای حسگر، حسگرهای پایه و حسگرهای ترکیبی (فعالیت، نگرش، کالیبره نشده و تعامل) را توضیح میدهد.
محورهای حسگر
مقادیر رویداد سنسور از بسیاری از سنسورها در یک قاب خاص که نسبت به دستگاه ثابت است بیان می شود.
محورهای دستگاه سیار
سنسور API فقط نسبت به جهت طبیعی صفحه نمایش است (هنگامی که جهت صفحه دستگاه تغییر می کند محورها عوض نمی شوند.
محورهای خودرویی
در پیادهسازیهای Android Automotive، محورها با توجه به قاب بدنه خودرو تعریف میشوند. مبدا قاب مرجع خودرو مرکز محور عقب است. چارچوب مرجع خودرو به گونه ای است که:
- محور X به سمت راست و در یک صفحه افقی، عمود بر صفحه متقارن وسیله نقلیه قرار دارد.
- محور Y به سمت جلو و در یک صفحه افقی است.
چارچوب مرجع خودرو یک سیستم مختصات راست دست است. بنابراین، محور Z به سمت بالا اشاره می کند.
محور Z قاب مرجع با گرانش تراز است، به این معنی که محور X و محور Y هر دو افقی هستند. در نتیجه، محور Y ممکن است همیشه از محور جلو عبور نکند.
سنسورهای پایه
انواع حسگرهای پایه بر اساس حسگرهای فیزیکی که نشان می دهند نامگذاری می شوند. این حسگرها دادهها را از یک حسگر فیزیکی منفرد (در مقابل سنسورهای ترکیبی که دادهها را از سنسورهای دیگر تولید میکنند) رله میکنند. نمونه هایی از انواع سنسور پایه عبارتند از:
-
SENSOR_TYPE_ACCELEROMETER
-
SENSOR_TYPE_GYROSCOPE
-
SENSOR_TYPE_MAGNETOMETER
با این حال، سنسورهای پایه برابر نیستند و نباید با حسگر فیزیکی زیرین خود اشتباه گرفته شوند. داده های یک حسگر پایه خروجی خام حسگر فیزیکی نیستند زیرا اصلاحاتی (مانند جبران بایاس و جبران دما) اعمال می شود.
برای مثال، ویژگیهای یک حسگر پایه ممکن است با ویژگیهای حسگر فیزیکی زیرین آن در موارد استفاده زیر متفاوت باشد:
- یک تراشه ژیروسکوپ دارای محدوده بایاس 1 درجه در ثانیه است.
- پس از کالیبراسیون کارخانه، جبران دما و جبران بایاس اعمال می شود، بایاس واقعی سنسور اندروید کاهش می یابد، ممکن است به نقطه ای برسد که تضمین شود که بایاس زیر 0.01 درجه در ثانیه باشد.
- در این شرایط، ما می گوییم که سنسور اندروید دارای بایاس زیر 0.01 درجه در ثانیه است، حتی اگر برگه داده سنسور زیرین 1 درجه در ثانیه گفته شده باشد.
- فشارسنج با توان مصرفی 100 uW.
- از آنجا که داده های تولید شده باید از تراشه به SoC منتقل شوند، هزینه واقعی انرژی برای جمع آوری داده ها از سنسور فشارسنج اندروید ممکن است بسیار بیشتر باشد، به عنوان مثال 1000 uW.
- در این شرایط، می گوییم که سنسور اندروید دارای مصرف برق 1000 uW است، حتی اگر مصرف انرژی اندازه گیری شده در لیدهای تراشه فشارسنج 100uW باشد.
- یک مغناطیس سنج که هنگام کالیبره شدن 100uW مصرف می کند، اما هنگام کالیبره کردن مصرف آن بیشتر است.
- روال کالیبراسیون آن ممکن است نیازمند فعال کردن ژیروسکوپ، مصرف 5000 uW و اجرای برخی الگوریتم ها باشد که هزینه آن 900 uW دیگر است.
- در این شرایط می گوییم حداکثر توان مصرفی سنسور (مغناطیس سنج) اندروید 6000 uW است.
- در این مورد، میانگین مصرف برق معیار مفیدتری است و این همان چیزی است که در ویژگی های استاتیک سنسور از طریق HAL گزارش می شود.
شتاب سنج
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور شتاب سنج شتاب دستگاه را در امتداد سه محور سنسور گزارش می کند. شتاب اندازه گیری شده هم شامل شتاب فیزیکی (تغییر سرعت) و هم گرانش می شود. اندازه گیری در فیلدهای x، y و z sensors_event_t.acceleration گزارش شده است.
همه مقادیر بر حسب واحد SI (m/s^2) هستند و شتاب دستگاه منهای نیروی گرانش را در امتداد سه محور سنسور اندازه گیری می کنند.
در اینجا نمونه هایی وجود دارد:
- هنجار (x، y، z) باید نزدیک به 0 در هنگام سقوط آزاد باشد.
- هنگامی که دستگاه صاف روی میز قرار می گیرد و در سمت چپ آن به سمت راست فشار داده می شود، مقدار شتاب x مثبت است.
- هنگامی که دستگاه صاف روی میز قرار می گیرد، مقدار شتاب در امتداد z +9.81 alo است که مربوط به شتاب دستگاه (0 m/s^2) منهای نیروی گرانش (-9.81 m/s^2) است.
- هنگامی که دستگاه صاف روی میز قرار می گیرد و به سمت آسمان هل داده می شود، مقدار شتاب بیشتر از 9.81+ است که مربوط به شتاب دستگاه (+A m/s^2) منهای نیروی گرانش (9.81-m) است. /s^2).
خوانش ها با استفاده از موارد زیر کالیبره می شوند:
- جبران دما
- کالیبراسیون سوگیری آنلاین
- کالیبراسیون مقیاس آنلاین
بایاس و کالیبراسیون مقیاس باید فقط در زمانی که حسگر غیرفعال است به روز شود تا از ایجاد جهش در مقادیر در طول پخش جلوگیری شود.
شتابسنج همچنین گزارش میدهد که انتظار دارد خوانشهایش از طریق sensors_event_t.acceleration.status
چقدر دقیق باشد. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_*
SensorManager
مراجعه کنید.
دمای محیط
حالت گزارش: در حال تغییر
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
حسگر بدون بیدار شدن را برمیگرداند
این سنسور دمای محیط (اتاق) را بر حسب درجه سانتیگراد فراهم می کند.
سنسور میدان مغناطیسی
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
یک حسگر بدون بیدار شدن را برمی گرداند
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
یک حسگر میدان مغناطیسی (همچنین به عنوان مغناطیس سنج شناخته می شود) میدان مغناطیسی محیط را گزارش می دهد، همانطور که در امتداد سه محور سنسور اندازه گیری می شود.
اندازه گیری در فیلدهای x، y و z sensors_event_t.magnetic
گزارش شده است و همه مقادیر در میکرو تسلا (uT) هستند.
مغناطیسسنج همچنین گزارش میدهد که انتظار دارد خوانشهایش از طریق sensors_event_t.magnetic.status
چقدر دقیق باشد. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_*
SensorManager
مراجعه کنید.
خوانش ها با استفاده از موارد زیر کالیبره می شوند:
- جبران دما
- کالیبراسیون آهن نرم کارخانه (یا آنلاین).
- کالیبراسیون آنلاین آهن سخت
ژیروسکوپ
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
یک حسگر بدون بیدار شدن را برمی گرداند
یک سنسور ژیروسکوپ میزان چرخش دستگاه را حول سه محور سنسور گزارش می کند.
چرخش در جهت خلاف جهت عقربه های ساعت مثبت است (قانون سمت راست). یعنی ناظری که از نقطهای مثبت در محور x، y یا z به دستگاهی که در مبدا قرار دارد نگاه میکند، اگر به نظر میرسید که دستگاه در خلاف جهت عقربههای ساعت میچرخد، چرخش مثبت را گزارش میکند. توجه داشته باشید که این تعریف ریاضی استاندارد چرخش مثبت است و با تعریف هوافضا از رول موافق نیست.
اندازه گیری در فیلدهای x، y و z sensors_event_t.gyro
گزارش شده است و همه مقادیر بر حسب رادیان در ثانیه (rad/s) هستند.
خوانش ها با استفاده از موارد زیر کالیبره می شوند:
- جبران دما
- غرامت مقیاس کارخانه (یا آنلاین).
- کالیبراسیون بایاس آنلاین (برای حذف دریفت)
ژیروسکوپ همچنین گزارش میدهد که انتظار دارد خوانشهایش از طریق sensors_event_t.gyro.status
چقدر دقیق باشد. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_*
SensorManager
مراجعه کنید.
ژیروسکوپ را نمیتوان بر اساس مغناطیسسنجها و شتابسنجها شبیهسازی کرد، زیرا این امر باعث کاهش قوام محلی و پاسخگویی آن میشود. باید بر اساس یک تراشه ژیروسکوپ معمولی باشد.
ضربان قلب
حالت گزارش: در حال تغییر
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور ضربان قلب، ضربان قلب فعلی شخصی را که دستگاه را لمس می کند، گزارش می دهد.
ضربان قلب فعلی بر حسب ضربان در دقیقه (BPM) در sensors_event_t.heart_rate.bpm
و وضعیت سنسور در sensors_event_t.heart_rate.status
گزارش شده است. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_*
SensorManager
مراجعه کنید. به ویژه، در اولین فعالسازی، مگر اینکه مشخص شود دستگاه روی بدنه نیست، قسمت وضعیت رویداد اول باید روی SENSOR_STATUS_UNRELIABLE
تنظیم شود. از آنجایی که این حسگر در حال تغییر است، رویدادها زمانی و تنها زمانی ایجاد میشوند که heart_rate.bpm
یا heart_rate.status
از آخرین رویداد تغییر کرده باشد. رویدادها سریعتر از هر sampling_period
ایجاد نمی شوند.
sensor_t.requiredPermission
همیشه SENSOR_PERMISSION_BODY_SENSORS
است.
نور
حالت گزارش: در حال تغییر
getDefaultSensor(SENSOR_TYPE_LIGHT)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور نور، روشنایی فعلی را در واحدهای SI lux گزارش میکند.
اندازه گیری در sensors_event_t.light
گزارش شده است.
نزدیکی
حالت گزارش: در حال تغییر
معمولاً به عنوان یک سنسور بیداری تعریف می شود
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
حسگر بیدار شدن را برمی گرداند
یک سنسور مجاورت فاصله سنسور تا نزدیکترین سطح قابل مشاهده را گزارش می کند.
تا آندروید 4.4، سنسورهای مجاورت همیشه حسگرهای بیدارکننده بودند و SoC را با تشخیص تغییر نزدیکی بیدار می کردند. پس از اندروید 4.4، توصیه می کنیم ابتدا نسخه بیدار کننده این سنسور را اجرا کنید، زیرا این حسگر است که برای روشن و خاموش کردن صفحه هنگام برقراری تماس تلفنی استفاده می شود.
اندازه گیری بر حسب سانتی متر در sensors_event_t.distance
گزارش می شود. توجه داشته باشید که برخی از حسگرهای مجاورت فقط از اندازه گیری "نزدیک" یا "دور" باینری پشتیبانی می کنند. در این حالت، سنسور مقدار sensor_t.maxRange
خود را در حالت "دور" و مقداری کمتر از sensor_t.maxRange
در حالت "نزدیک" گزارش می دهد.
فشار
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_PRESSURE)
یک حسگر بدون بیدار شدن را برمی گرداند
یک سنسور فشار (همچنین به عنوان فشارسنج شناخته می شود) فشار اتمسفر را بر حسب هکتوپاسکال (hPa) گزارش می کند.
قرائت ها با استفاده از کالیبره می شوند
- جبران دما
- کالیبراسیون بایاس کارخانه
- کالیبراسیون مقیاس کارخانه
فشارسنج اغلب برای تخمین تغییرات ارتفاع استفاده می شود. برای تخمین ارتفاع مطلق، فشار سطح دریا (تغییر بسته به آب و هوا) باید به عنوان مرجع استفاده شود.
رطوبت نسبی
حالت گزارش: در حال تغییر
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
یک سنسور بدون بیدار شدن را برمی گرداند
یک سنسور رطوبت نسبی رطوبت نسبی هوای محیط را اندازه گیری می کند و مقداری را بر حسب درصد برمی گرداند.
انواع سنسور کامپوزیت
یک حسگر مرکب دادهها را با پردازش و/یا ترکیب دادههای یک یا چند حسگر فیزیکی تولید میکند. (هر سنسوری که سنسور پایه نباشد، سنسور ترکیبی نامیده می شود.) نمونه هایی از سنسورهای کامپوزیت عبارتند از:
- ردیاب استپ و حرکت قابل توجه که معمولاً مبتنی بر شتابسنج است، اما میتوان بر اساس سنسورهای دیگر نیز در صورت مصرف برق و دقت قابل قبول بود.
- بردار چرخش بازی ، بر اساس شتاب سنج و ژیروسکوپ.
- ژیروسکوپ کالیبره نشده ، که مشابه سنسور پایه ژیروسکوپ است، اما به جای اصلاح در اندازه گیری، کالیبراسیون بایاس به طور جداگانه گزارش می شود.
همانند سنسورهای پایه، ویژگیهای سنسورهای مرکب از ویژگیهای دادههای نهایی آنها ناشی میشود. برای مثال، توان مصرفی یک بردار چرخش بازی احتمالاً برابر است با مجموع توان مصرفی تراشه شتابسنج، تراشه ژیروسکوپ، تراشه پردازش دادهها و اتوبوسهای انتقال دادهها. به عنوان مثالی دیگر، رانش یک بردار چرخش بازی به همان اندازه که به ویژگیهای حسگر فیزیکی بستگی دارد، به کیفیت الگوریتم کالیبراسیون نیز بستگی دارد.
جدول زیر انواع سنسورهای مرکب موجود را فهرست می کند. هر حسگر مرکب به داده های یک یا چند حسگر فیزیکی متکی است. از انتخاب سایر حسگرهای فیزیکی زیربنایی برای تقریبی نتایج خودداری کنید زیرا تجربه کاربری ضعیفی را ارائه می دهند.
نوع سنسور | دسته بندی | حسگرهای فیزیکی زیرین | حالت گزارش |
---|---|---|---|
نگرش | شتاب سنج، ژیروسکوپ، نباید از مغناطیس سنج استفاده کنید | مستمر | |
نگرش | شتاب سنج، مغناطیس سنج، نباید از ژیروسکوپ استفاده کنید | مستمر | |
ژست نگاه | تعامل | تعریف نشده | تک شات |
نگرش | شتاب سنج، ژیروسکوپ | مستمر | |
کالیبره نشده | ژیروسکوپ | مستمر | |
فعالیت | شتاب سنج، ژیروسکوپ (در صورت وجود)، یا مغناطیس سنج (در صورت نبود ژیروسکوپ) | مستمر | |
کالیبره نشده | مغناطیس سنج | مستمر | |
جهت گیری (منسوخ شده) | نگرش | شتاب سنج، مغناطیس سنج، ژیروسکوپ (در صورت وجود) | مستمر |
تعامل | تعریف نشده | تک شات | |
نگرش | شتاب سنج، مغناطیس سنج، ژیروسکوپ | مستمر | |
فعالیت | شتاب سنج (یا شتاب سنج دیگر با قدرت بسیار کم) | تک شات | |
فعالیت | شتاب سنج | در حال تغییر | |
فعالیت | شتاب سنج | ویژه | |
فعالیت | شتاب سنج | ویژه | |
تعامل | تعریف نشده | تک شات |
= سنسور کم مصرف
فعالیت سنسورهای ترکیبی
شتاب خطی
حسگرهای فیزیکی زیرین: شتاب سنج و (در صورت وجود) ژیروسکوپ (یا مغناطیس سنج در صورت نبود ژیروسکوپ)
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور شتاب خطی، شتاب خطی دستگاه را در قاب حسگر، بدون احتساب گرانش، گزارش میکند.
خروجی به صورت مفهومی است: خروجی شتاب سنج منهای خروجی سنسور گرانش . در m/s^2 در فیلدهای x، y و z sensors_event_t.acceleration
گزارش شده است.
زمانی که دستگاه بی حرکت است، قرائت در همه محورها باید نزدیک به 0 باشد.
اگر دستگاه دارای ژیروسکوپ باشد، سنسور شتاب خطی باید از ژیروسکوپ و شتاب سنج به عنوان ورودی استفاده کند.
اگر دستگاه فاقد ژیروسکوپ باشد، سنسور شتاب خطی باید از شتاب سنج و مغناطیس سنج به عنوان ورودی استفاده کند.
حرکت قابل توجه
حسگر فیزیکی زیربنایی: شتاب سنج (یا حسگر دیگر تا زمانی که قدرت کم باشد)
حالت گزارش: تک شات
قدرت کم
فقط نسخه بیدار شدن این سنسور را اجرا کنید.
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
حسگر بیدار شدن را برمی گرداند
یک آشکارساز حرکت قابل توجه هنگام تشخیص یک حرکت قابل توجه فعال می شود: حرکتی که ممکن است منجر به تغییر در مکان کاربر شود.
نمونه هایی از این حرکات مهم عبارتند از:
- پیاده روی یا دوچرخه سواری
- نشستن در ماشین در حال حرکت، مربی یا قطار
نمونه هایی از موقعیت هایی که حرکت قابل توجهی را تحریک نمی کنند:
- تلفن در جیب است و شخص حرکت نمی کند
- تلفن روی میز است و به دلیل ترافیک نزدیک یا ماشین لباسشویی میز کمی تکان می خورد
در سطح بالا، آشکارساز حرکت قابل توجه برای کاهش مصرف برق تعیین مکان استفاده می شود. زمانی که الگوریتمهای محلیسازی تشخیص میدهند که دستگاه ثابت است، میتوانند به حالت کم مصرف سوئیچ کنند، جایی که به حرکت قابل توجهی تکیه میکنند تا وقتی کاربر در حال تغییر مکان است، دستگاه را بیدار کند.
این سنسور باید کم قدرت باشد. این یک معاوضه برای مصرف برق ایجاد می کند که ممکن است منجر به مقدار کمی منفی کاذب شود. این کار به چند دلیل انجام می شود:
- هدف این سنسور صرفه جویی در مصرف برق است.
- راه اندازی یک رویداد زمانی که کاربر در حال حرکت نیست (مثبت کاذب) از نظر قدرت پرهزینه است، بنابراین باید از آن اجتناب شود.
- راه اندازی نکردن یک رویداد در هنگام حرکت کاربر (منفی کاذب) تا زمانی که به طور مکرر انجام نشود قابل قبول است. اگر کاربر به مدت 10 ثانیه راه رفته باشد، راه اندازی نکردن یک رویداد در این 10 ثانیه قابل قبول نیست.
هر رویداد حسگر 1
در sensors_event_t.data[0]
گزارش میکند.
آشکارساز مرحله
حسگر فیزیکی زیربنایی: شتاب سنج (+احتمالاً سایر حسگرها تا زمانی که قدرت کم باشد)
حالت گزارش: ویژه (یک رویداد در هر مرحله برداشته شده)
قدرت کم
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
یک حسگر بدون بیدار شدن را برمی گرداند
یک ردیاب گام هر بار که یک قدم توسط کاربر برداشته می شود یک رویداد ایجاد می کند.
مهر زمانی رویداد sensors_event_t.timestamp
مربوط به زمانی است که پا با زمین برخورد می کند و باعث ایجاد تغییرات زیادی در شتاب می شود.
در مقایسه با گام شمار، آشکارساز گام باید تأخیر کمتری (کمتر از دو ثانیه) داشته باشد. هر دو ردیاب گام و شمارنده گام تشخیص می دهند که کاربر در حال راه رفتن، دویدن و بالا رفتن از پله ها است. زمانی که کاربر در حال دوچرخه سواری، رانندگی، یا در وسایل نقلیه دیگر است، آنها نباید فعال شوند.
این سنسور باید کم قدرت باشد. یعنی اگر تشخیص گام در سخت افزار قابل انجام نباشد، این سنسور نباید تعریف شود. به ویژه، زمانی که آشکارساز گام فعال است و شتابسنج فعال نیست، فقط مراحل باید باعث وقفه شوند (نه هر خواندن شتابسنج).
sampling_period_ns
هیچ تاثیری بر آشکارسازهای مرحله ندارد.
هر رویداد حسگر 1
در sensors_event_t.data[0]
گزارش میکند.
گام شمار
حسگر فیزیکی زیربنایی: شتاب سنج (+احتمالاً سایر حسگرها تا زمانی که قدرت کم باشد)
حالت گزارش: در حال تغییر
کم مصرف
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
یک حسگر بدون بیدار شدن را برمیگرداند
یک گام شمار تعداد گام های برداشته شده توسط کاربر از آخرین راه اندازی مجدد در حالی که فعال شده است را گزارش می دهد.
اندازهگیری بهعنوان uint64_t
در sensors_event_t.step_counter
گزارش میشود و تنها در راهاندازی مجدد سیستم به صفر بازنشانی میشود.
مهر زمانی رویداد به زمانی تنظیم می شود که آخرین گام برای آن رویداد برداشته شده است.
نوع سنسور آشکارساز مرحله را برای نشان دادن زمان یک مرحله ببینید.
در مقایسه با ردیاب استپ، گام شمار می تواند تاخیر بیشتری داشته باشد (تا 10 ثانیه). به لطف این تأخیر، این سنسور از دقت بالایی برخوردار است. تعداد گامها پس از یک روز کامل اقدامات باید در 10% تعداد گامهای واقعی باشد. هر دو ردیاب گام و شمارنده گام تشخیص می دهند که کاربر در حال راه رفتن، دویدن و بالا رفتن از پله ها است. زمانی که کاربر در حال دوچرخه سواری، رانندگی، یا در وسایل نقلیه دیگر است، آنها نباید فعال شوند.
سخت افزار باید اطمینان حاصل کند که تعداد گام های داخلی هرگز سرریز نمی شود. حداقل اندازه شمارنده داخلی سخت افزار باید 16 بیت باشد. در صورت سرریز قریب الوقوع (حداکثر هر ~2^16 مرحله)، SoC می تواند بیدار شود تا راننده بتواند تعمیر و نگهداری پیشخوان را انجام دهد.
همانطور که در Interaction بیان شد، در حالی که این سنسور کار می کند، نباید هیچ سنسور دیگری، به ویژه شتاب سنج را که ممکن است در حال استفاده باشد، مختل کند.
اگر دستگاه خاصی نمی تواند این حالت های عملکرد را پشتیبانی کند، این نوع سنسور نباید توسط HAL گزارش شود. یعنی "شبیه سازی" این سنسور در HAL قابل قبول نیست.
این سنسور باید کم قدرت باشد. یعنی اگر تشخیص گام در سخت افزار قابل انجام نباشد، این سنسور نباید تعریف شود. به طور خاص، زمانی که شمارنده گام فعال است و شتاب سنج فعال نیست، فقط مراحل باید باعث وقفه شوند (نه داده های شتاب سنج).
آشکارساز شیب
حسگر فیزیکی زیربنایی: شتاب سنج (+احتمالاً سایر حسگرها تا زمانی که قدرت کم باشد)
حالت گزارش: ویژه
کم مصرف
فقط نسخه بیدار شدن این سنسور را اجرا کنید.
getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR)
حسگر بیدار شدن را برمی گرداند
یک آشکارساز شیب هر بار که یک رویداد شیب شناسایی می شود یک رویداد ایجاد می کند.
یک رویداد شیب با تغییر جهت میانگین گرانش پنجره 2 ثانیه ای حداقل 35 درجه از زمان فعال سازی یا آخرین رویداد ایجاد شده توسط سنسور تعریف می شود. این الگوریتم است:
-
reference_estimated_gravity
= میانگین اندازهگیریهای شتابسنج در اولین ثانیه پس از فعالسازی یا گرانش تخمینی زمانی که آخرین رویداد شیب ایجاد شد. -
current_estimated_gravity
= میانگین اندازه گیری های شتاب سنج در 2 ثانیه گذشته. - هنگامی که
angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees
راه اندازی شود
شتابهای زیاد بدون تغییر جهت تلفن نباید باعث ایجاد یک رویداد شیب شوند. به عنوان مثال، یک پیچ تند یا شتاب شدید در هنگام رانندگی نباید باعث ایجاد یک رویداد شیب شود، حتی اگر زاویه شتاب متوسط ممکن است بیش از 35 درجه تغییر کند. به طور معمول، این سنسور تنها با کمک یک شتاب سنج اجرا می شود. در صورتی که مصرف برق را به میزان قابل توجهی افزایش ندهند می توان از سنسورهای دیگری نیز استفاده کرد. این یک سنسور کم مصرف است که باید به SoC اجازه دهد تا به حالت تعلیق برود. این سنسور را در HAL تقلید نکنید. هر رویداد حسگر 1
در sensors_event_t.data[0]
گزارش میکند.
سنسورهای ترکیبی نگرش
بردار چرخش
حسگرهای فیزیکی زیرین: شتاب سنج، مغناطیس سنج و ژیروسکوپ
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور بردار چرخشی جهت گیری دستگاه را نسبت به قاب مختصات شرق-شمال-بالا گزارش می کند. معمولاً با ادغام خوانش های شتاب سنج، ژیروسکوپ و مغناطیس سنج به دست می آید. سیستم مختصات شرق-شمال-بالا به عنوان یک مبنای متعارف مستقیم تعریف می شود که در آن:
- X به سمت شرق و مماس با زمین است.
- Y به سمت شمال و مماس با زمین است.
- Z به سمت آسمان و عمود بر زمین است.
جهت گیری تلفن با چرخش لازم برای تراز کردن مختصات شرق-شمال-بالا با مختصات تلفن نشان داده می شود. یعنی اعمال چرخش به فریم جهان (X,Y,Z) آنها را با مختصات تلفن (x,y,z) تراز می کند.
چرخش را میتوان بهعنوان چرخش تلفن با زاویه تتا حول محور rot_axis
برای رفتن از جهت دستگاه مرجع (تراز شرق-شمال-بالا) به جهت دستگاه فعلی دید. چرخش به صورت چهار جزء بدون واحد x، y، z، w یک کواترنیون واحد کدگذاری میشود:
-
sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
-
sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
-
sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
-
sensors_event_t.data[3] = cos(theta/2)
کجا:
- فیلدهای x، y و z
rot_axis
مختصات شرق-شمال-بالا بردار واحد طول هستند که محور چرخش را نشان می دهند. -
theta
زاویه چرخش است
کواترنیون یک کواترنیون واحد است: باید از هنجار 1
باشد. عدم اطمینان از این امر باعث رفتار نامنظم مشتری می شود.
علاوه بر این، این سنسور یک دقت عنوان تخمینی را گزارش می دهد:
sensors_event_t.data[4] = estimated_accuracy
(به رادیان)
خطای عنوان باید کمتر از estimated_accuracy
در ۹۵٪ مواقع باشد. این سنسور باید از ژیروسکوپ به عنوان ورودی اصلی تغییر جهت استفاده کند.
این سنسور همچنین از ورودی شتابسنج و مغناطیسسنج برای جبران رانش ژیروسکوپ استفاده میکند و تنها با استفاده از شتابسنج و مغناطیسسنج نمیتوان آن را پیادهسازی کرد.
بردار چرخش بازی
حسگرهای فیزیکی زیرین: شتاب سنج و ژیروسکوپ (بدون مغناطیس سنج)
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
یک حسگر بدون بیدار شدن را برمیگرداند
حسگر بردار چرخش بازی شبیه حسگر بردار چرخشی است اما از میدان ژئومغناطیسی استفاده نمی کند. بنابراین محور Y به شمال اشاره نمی کند بلکه به مرجع دیگری اشاره می کند. آن مرجع مجاز است به همان ترتیبی از بزرگی حرکت کند که ژیروسکوپ حول محور Z حرکت می کند.
برای جزئیات در مورد نحوه تنظیم sensors_event_t.data[0-3]
به حسگر برداری چرخش مراجعه کنید. این حسگر دقت عنوان تخمینی را گزارش نمیکند: sensors_event_t.data[4]
رزرو شده است و باید روی 0
تنظیم شود.
در یک حالت ایدهآل، تلفنی که میچرخد و به همان جهتگیری در دنیای واقعی باز میگردد، باید همان بردار چرخش بازی را گزارش کند.
این سنسور باید مبتنی بر ژیروسکوپ و شتاب سنج باشد. علاوه بر این، به طور غیر مستقیم، از طریق تخمین بایاس ژیروسکوپ، نمی تواند از مغناطیس سنج به عنوان ورودی استفاده کند.
جاذبه
حسگرهای فیزیکی زیرین: شتاب سنج و (در صورت وجود) ژیروسکوپ (یا مغناطیس سنج در صورت نبود ژیروسکوپ)
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_GRAVITY)
یک حسگر بدون بیدار شدن را برمی گرداند
یک سنسور گرانش جهت و مقدار گرانش را در مختصات دستگاه گزارش می دهد.
اجزای بردار گرانش بر حسب m/s^2 در فیلدهای x، y و z sensors_event_t.acceleration
گزارش میشوند.
هنگامی که دستگاه در حالت استراحت است، خروجی سنسور گرانش باید با شتاب سنج یکسان باشد. در زمین، قدر حدود 9.8 m/s^2 است.
اگر دستگاه دارای ژیروسکوپ باشد، حسگر جاذبه باید از ژیروسکوپ و شتاب سنج به عنوان ورودی استفاده کند.
اگر دستگاه فاقد ژیروسکوپ باشد، حسگر جاذبه باید از شتاب سنج و مغناطیس سنج به عنوان ورودی استفاده کند.
بردار چرخش ژئومغناطیسی
حسگرهای فیزیکی زیرین: شتاب سنج و مغناطیس سنج (بدون ژیروسکوپ)
حالت گزارش: پیوسته
کم مصرف
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
یک حسگر بدون بیدار شدن را برمی گرداند
بردار چرخش ژئومغناطیسی شبیه حسگر بردار چرخشی است اما از مغناطیسسنج و بدون ژیروسکوپ استفاده میکند.
این سنسور باید بر اساس یک مغناطیس سنج باشد. نمی توان آن را با استفاده از ژیروسکوپ پیاده سازی کرد و ورودی ژیروسکوپ نمی تواند توسط این سنسور استفاده شود.
برای جزئیات در مورد نحوه تنظیم sensors_event_t.data[0-4]
به حسگر برداری چرخش مراجعه کنید.
درست مانند سنسور بردار چرخش، خطای عنوان باید کمتر از دقت تخمینی ( sensors_event_t.data[4]
) در 95٪ مواقع باشد.
این سنسور باید کم قدرت باشد، بنابراین باید در سخت افزار پیاده سازی شود.
جهت (منسوخ شده)
حسگرهای فیزیکی زیرین: شتاب سنج، مغناطیس سنج و (در صورت وجود) ژیروسکوپ
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
یک حسگر بدون بیدار شدن را برمیگرداند
توجه: این یک نوع سنسور قدیمی است که در Android SDK منسوخ شده است. سنسور بردار چرخش جایگزین آن شده است که با وضوح بیشتری تعریف شده است. تا حد امکان از سنسور بردار چرخش روی سنسور جهت استفاده کنید.
یک حسگر جهت یابی وضعیت دستگاه را گزارش می کند. اندازهگیریها بر حسب درجه در فیلدهای x، y، و z sensors_event_t.orientation
گزارش میشوند:
-
sensors_event_t.orientation.x
: آزیموت، زاویه بین جهت مغناطیسی شمال و محور Y، حول محور Z (0<=azimuth<360
). 0=شمال، 90=شرق، 180=جنوب، 270=غرب. -
sensors_event_t.orientation.y
: گام، چرخش حول محور X (-180<=pitch<=180
)، با مقادیر مثبت زمانی که محور Z به سمت محور Y حرکت می کند. -
sensors_event_t.orientation.z
: چرخش، چرخش حول محور Y (-90<=roll<=90
)، با مقادیر مثبت زمانی که محور X به سمت محور Z حرکت می کند.
لطفا توجه داشته باشید، به دلایل تاریخی، زاویه چرخش در جهت عقربه های ساعت مثبت است. (از نظر ریاضی، باید در جهت خلاف جهت عقربه های ساعت مثبت باشد):
این تعریف با انحراف، گام و رول مورد استفاده در هوانوردی که در آن محور X در امتداد سمت طولانی هواپیما (دم به دماغه) است، متفاوت است.
حسگر جهتیابی همچنین گزارش میدهد که انتظار دارد خوانشهایش چقدر دقیق باشد از طریق sensors_event_t.orientation.status
. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_*
SensorManager
مراجعه کنید.
سنسورهای کالیبره نشده
حسگرهای کالیبره نشده نتایج خام بیشتری را ارائه می دهند و ممکن است دارای برخی سوگیری باشند، اما همچنین حاوی «پرش» کمتری از اصلاحات اعمال شده از طریق کالیبراسیون هستند. برخی از برنامهها ممکن است این نتایج کالیبرهنشده را روانتر و قابل اطمینانتر ترجیح دهند. به عنوان مثال، اگر یک برنامه سعی می کند ترکیب حسگر خود را انجام دهد، ارائه کالیبراسیون در واقع می تواند نتایج را مخدوش کند.
شتاب سنج کالیبره نشده
حسگر فیزیکی زیرین: شتاب سنج
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
یک حسگر بدون بیدار شدن را برمیگرداند
یک سنسور شتابسنج کالیبره نشده، شتاب دستگاه را در امتداد سه محور حسگر بدون هیچ گونه اصلاح بایاس گزارش میکند (بایاس کارخانه و جبران دما برای اندازهگیریهای کالیبره نشده اعمال میشود)، همراه با یک تخمین بایاس. همه مقادیر در واحدهای SI (m/s^2) هستند و در قسمتهای sensors_event_t.uncalibrated_accelerometer
گزارش میشوند:
-
x_uncalib
: شتاب (بدون جبران تعصب) در امتداد محور X -
y_uncalib
: شتاب (بدون جبران تعصب) در امتداد محور Y -
z_uncalib
: شتاب (بدون جبران تعصب) در امتداد محور Z -
x_bias
: بایاس تخمینی در امتداد محور X -
y_bias
: تعصب تخمینی در امتداد محور Y -
z_bias
: بایاس تخمینی در امتداد محور Z
ژیروسکوپ کالیبره نشده
حسگر فیزیکی زیرین: ژیروسکوپ
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED)
یک حسگر بدون بیدار شدن را برمی گرداند
یک ژیروسکوپ کالیبره نشده نرخ چرخش حول محورهای حسگر را بدون اعمال جبران بایاس به همراه یک تخمین بایاس گزارش می دهد. همه مقادیر بر حسب رادیان/ثانیه هستند و در فیلدهای sensors_event_t.uncalibrated_gyro
گزارش میشوند:
-
x_uncalib
: سرعت زاویه ای (بدون جبران رانش) حول محور X -
y_uncalib
: سرعت زاویه ای (بدون جبران رانش) حول محور Y -
z_uncalib
: سرعت زاویه ای (بدون جبران رانش) حول محور Z -
x_bias
: رانش تخمینی حول محور X -
y_bias
: رانش تخمینی حول محور Y -
z_bias
: رانش تخمینی حول محور Z
از لحاظ مفهومی، اندازهگیری کالیبرهنشده مجموع اندازهگیری کالیبرهشده و برآورد سوگیری است: _uncalibrated = _calibrated + _bias
.
انتظار می رود مقادیر x_bias
، y_bias
و z_bias
به محض تغییر تخمین بایاس، پرش کنند، و در بقیه زمان ها باید پایدار باشند.
برای جزئیات بیشتر در مورد سیستم مختصات مورد استفاده به تعریف سنسور ژیروسکوپ مراجعه کنید.
کالیبراسیون کارخانه و جبران دما باید در اندازه گیری ها اعمال شود. همچنین، تخمین دریفت ژیروسکوپ باید اجرا شود تا بتوان برآوردهای معقولی را در x_bias
، y_bias
و z_bias
گزارش کرد. اگر پیاده سازی قادر به تخمین دریفت نباشد، این سنسور نباید پیاده سازی شود.
اگر این سنسور وجود داشته باشد، حسگر ژیروسکوپ مربوطه نیز باید وجود داشته باشد و هر دو سنسور باید مقادیر sensor_t.name
و sensor_t.vendor
یکسانی داشته باشند.
میدان مغناطیسی کالیبره نشده
حسگر فیزیکی زیرین: مغناطیس سنج
حالت گزارش: پیوسته
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED)
یک حسگر بدون بیدار شدن را برمی گرداند
یک حسگر میدان مغناطیسی کالیبره نشده، میدان مغناطیسی محیط را همراه با تخمین کالیبراسیون آهن سخت گزارش میکند. همه مقادیر در میکرو تسلا (uT) هستند و در زمینههای sensors_event_t.uncalibrated_magnetic
گزارش میشوند:
-
x_uncalib
: میدان مغناطیسی (بدون جبران آهن سخت) در امتداد محور X -
y_uncalib
: میدان مغناطیسی (بدون جبران سختی آهن) در امتداد محور Y -
z_uncalib
: میدان مغناطیسی (بدون جبران آهن سخت) در امتداد محور Z -
x_bias
: بایاس آهن سخت تخمین زده شده در امتداد محور X -
y_bias
: بایاس آهن سخت تخمین زده شده در امتداد محور Y -
z_bias
: بایاس آهن سخت تخمین زده شده در امتداد محور Z
از لحاظ مفهومی، اندازهگیری کالیبرهنشده مجموع اندازهگیری کالیبرهشده و برآورد سوگیری است: _uncalibrated = _calibrated + _bias
.
مغناطیس سنج کالیبره نشده به الگوریتم های سطح بالاتر اجازه می دهد تا تخمین آهن سخت بد را انجام دهند. انتظار می رود مقادیر x_bias
، y_bias
و z_bias
به محض تغییر تخمین آهن سخت، جهش کنند و در بقیه زمان ها باید پایدار باشند.
کالیبراسیون آهن نرم و جبران دما باید در اندازه گیری ها اعمال شود. همچنین، تخمین سخت آهن باید اجرا شود تا بتوان برآوردهای معقولی را در x_bias
، y_bias
و z_bias
گزارش کرد. اگر پیاده سازی قادر به تخمین بایاس نباشد، این سنسور نباید پیاده سازی شود.
اگر این سنسور وجود داشته باشد، حسگر میدان مغناطیسی مربوطه باید وجود داشته باشد و هر دو سنسور باید مقادیر sensor_t.name
و sensor_t.vendor
یکسانی داشته باشند.
زاویه لولا
حالت گزارش: در حال تغییر
getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE)
حسگر بیدار شدن را برمی گرداند
یک سنسور زاویه لولا، زاویه بین دو قسمت جدایی ناپذیر دستگاه را بر حسب درجه اندازه گیری می کند. انتظار می رود که حرکت یک لولا که توسط این نوع سنسور اندازه گیری می شود، روش های تعامل کاربر با دستگاه را تغییر دهد، به عنوان مثال، با باز کردن یا آشکار کردن نمایشگر.
سنسورهای کامپوزیت تعاملی
برخی از سنسورها بیشتر برای تشخیص تعامل با کاربر استفاده می شوند. ما نحوه اجرای آن سنسورها را تعریف نمی کنیم، اما آنها باید کم قدرت باشند و این مسئولیت سازنده دستگاه است که کیفیت آنها را از نظر تجربه کاربری تأیید کند.
ژست بیدار شدن
حسگرهای فیزیکی زیربنایی: تعریف نشده (هر چیزی کم توان)
حالت گزارش: تک شات
کم مصرف
فقط نسخه بیدار شدن این سنسور را اجرا کنید.
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
یک حسگر بیدار شدن را برمی گرداند
حسگر ژست بیدار شدن، دستگاه را بر اساس یک حرکت خاص دستگاه بیدار می کند. هنگامی که این سنسور فعال می شود، دستگاه طوری رفتار می کند که گویی دکمه پاور فشار داده شده است و صفحه نمایش روشن می شود. این رفتار (روشن کردن صفحه هنگام فعال شدن این سنسور) ممکن است توسط کاربر در تنظیمات دستگاه غیرفعال شود. تغییرات در تنظیمات بر رفتار حسگر تأثیر نمیگذارد: فقط در صورتی که فریم ورک صفحه را هنگام فعال شدن روشن کند. ژست واقعی برای شناسایی مشخص نشده است و سازنده دستگاه می تواند آن را انتخاب کند.
این سنسور باید قدرت کم داشته باشد ، زیرا احتمالاً 24/7 فعال می شود.
هر رویداد سنسور 1
در sensors_event_t.data[0]
گزارش می کند.
ژست را انتخاب کنید
سنسورهای فیزیکی اساسی: نامشخص (هر چیزی کم قدرت)
گزارش دادن به حالت: یک شات
کم مصرف
فقط نسخه بیداری این سنسور را پیاده سازی کنید.
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
یک سنسور بیداری را برمی گرداند
یک سنسور حرکات وانت باعث می شود که دستگاه بدون در نظر گرفتن هر کجا که قبل از آن بود (میز ، جیب ، کیف) برداشت شود.
هر رویداد سنسور 1
در sensors_event_t.data[0]
گزارش می کند.
ژست نگاه
سنسورهای فیزیکی اساسی: نامشخص (هر چیزی کم قدرت)
گزارش دادن به حالت: یک شات
کم مصرف
فقط نسخه بیداری این سنسور را پیاده سازی کنید.
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
یک سنسور بیدارکننده را برمی گرداند
یک سنسور ژست نگاه به طور خلاصه صفحه را قادر می سازد تا کاربر را قادر به نگاه محتوا بر روی صفحه نمایش بر اساس یک حرکت خاص کند. هنگامی که این سنسور شروع می شود ، دستگاه لحظه ای صفحه را روشن می کند تا به کاربر اجازه دهد تا اعلان ها یا محتوای دیگر را نگاه کند در حالی که دستگاه در حالت غیر تعاملی قفل می شود (دوز) ، دوباره صفحه خاموش می شود. این رفتار (به طور خلاصه در هنگام ایجاد این سنسور ، صفحه نمایش را روشن می کند) ممکن است توسط کاربر در تنظیمات دستگاه غیرفعال شود. تغییر در تنظیمات بر رفتار سنسور تأثیر نمی گذارد: فقط اینکه این چارچوب به طور خلاصه هنگام ایجاد صفحه نمایش صفحه را روشن می کند. ژست واقعی که باید شناسایی شود مشخص نشده است و توسط سازنده دستگاه می تواند انتخاب شود.
این سنسور باید قدرت کم داشته باشد ، زیرا احتمالاً 24/7 فعال می شود. هر رویداد سنسور 1
در sensors_event_t.data[0]
گزارش می کند.
محورهای محدود سنسورهای IMU
در دسترس از Android 13 ، سنسورهای محورهای محدود IMU سنسورهایی هستند که از مواردی استفاده می کنند که در آن سه محور (x ، y ، z) در دسترس نیستند. انواع استاندارد IMU در اندروید (مانند SENSOR_TYPE_ACCELEROMETER
و SENSOR_TYPE_GYROSCOPE
) فرض می کنند که هر سه محور پشتیبانی می شوند. با این حال ، همه فاکتورها و دستگاه ها از شتاب سنج 3 محور و ژیروسکوپ های 3 محور پشتیبانی نمی کنند.
محورهای محدود شتاب سنج
سنسورهای فیزیکی زیرین: شتاب سنج
گزارش دادن به حالت: مداوم
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
یک سنسور غیر بیدار را برمی گرداند
یک سنسور محور محدود شتاب سنج معادل TYPE_ACCELEROMETER
است اما مواردی را پشتیبانی می کند که یک یا دو محور پشتیبانی نمی شوند.
سه مقدار رویداد سنسور آخر گزارش شده توسط سنسور نشان می دهد که آیا مقدار شتاب برای محورهای X ، Y و Z پشتیبانی می شود. مقدار 1.0
نشان می دهد که محور پشتیبانی می شود ، و مقدار 0
نشان می دهد که پشتیبانی نمی شود. تولید کنندگان دستگاه محورهای پشتیبانی شده را در زمان ساخت شناسایی می کنند و مقادیر در طول زمان تغییر نمی کنند.
تولید کنندگان دستگاه باید به جای داشتن مقادیر نامشخص ، مقادیر شتاب را برای محورهای بلااستفاده 0 بر روی 0
تنظیم کنند.
محورهای محدود ژیروسکوپ
سنسورهای فیزیکی اساسی: ژیروسکوپ
گزارش دادن به حالت: مداوم
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
یک سنسور غیر بیدار را برمی گرداند
یک سنسور محورهای محدود ژیروسکوپ معادل TYPE_GYROSCOPE
است اما مواردی را پشتیبانی می کند که یک یا دو محور از آن پشتیبانی نمی شوند.
سه مقدار رویداد سنسور آخر گزارش شده توسط سنسور نشان می دهد که آیا مقدار سرعت زاویه ای برای محورهای X ، Y و Z پشتیبانی می شود. مقدار 1.0
نشان می دهد که محور پشتیبانی می شود ، و مقدار 0
نشان می دهد که پشتیبانی نمی شود. تولید کنندگان دستگاه محورهای پشتیبانی شده را در زمان ساخت شناسایی می کنند و مقادیر در طول زمان تغییر نمی کنند.
تولید کنندگان دستگاه باید مقادیر سرعت زاویه ای را برای محورهای بلااستفاده روی 0
تنظیم کنند.
محورهای محدود شتاب سنج
سنسورهای فیزیکی زیرین: شتاب سنج
گزارش دادن به حالت: مداوم
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
یک سنسور غیر بیدار را برمی گرداند
یک سنسور محدود محورهای محدود شتاب سنج معادل TYPE_ACCELEROMETER_UNCALIBRATED
است اما مواردی را پشتیبانی می کند که یک یا دو محور پشتیبانی نمی شوند.
سه مقدار رویداد سنسور آخر گزارش شده توسط سنسور نشان می دهد که آیا مقادیر شتاب و تعصب برای محورهای X ، Y و Z پشتیبانی می شود. مقدار 1.0
نشان می دهد که محور پشتیبانی می شود ، و مقدار 0
نشان می دهد که پشتیبانی نمی شود. تولید کنندگان دستگاه محورهای پشتیبانی شده را در زمان ساخت شناسایی می کنند و مقادیر در طول زمان تغییر نمی کنند.
تولید کنندگان دستگاه باید مقادیر شتاب و تعصب را برای محورهای بلااستفاده 0
تنظیم کنند.
محورهای محدود ژیروسکوپ غیرقابل برگشت
سنسورهای فیزیکی اساسی: ژیروسکوپ
گزارش دادن به حالت: مداوم
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
یک سنسور غیر بیدار را برمی گرداند
یک سنسور محدود محورهای ژیروسکوپ معادل TYPE_GYROSCOPE_UNCALIBRATED
است اما مواردی را پشتیبانی می کند که یک یا دو محور پشتیبانی نمی شوند.
سه مقدار رویداد سنسور آخر گزارش شده توسط سنسور نشان می دهد که آیا سرعت زاویه ای و مقادیر رانش برای محورهای X ، Y و Z پشتیبانی می شود. مقدار 1.0
نشان می دهد که محور پشتیبانی می شود ، و مقدار 0
نشان می دهد که پشتیبانی نمی شود. تولید کنندگان دستگاه محورهای پشتیبانی شده را در زمان ساخت شناسایی می کنند و مقادیر در طول زمان تغییر نمی کنند.
تولید کنندگان دستگاه باید سرعت زاویه ای و مقادیر رانش را برای محورهای بلااستفاده روی 0
تنظیم کنند.
محورهای محدود کامپوزیت IMU
سنسورهای فیزیکی زیرین: هر ترکیبی از شتاب سنج 3 محوره ، ژیروسکوپ 3 محور ، شتاب سنج 3 محوره بدون کالیبره و سنسورهای غیر متعارف 3 محوره.
گزارش دادن به حالت: مداوم
یک سنسور IMU محور محدود کامپوزیت معادل یک سنسور IMU محور محدود است اما به جای پشتیبانی در HAL ، داده های سنسور 3 محور را به انواع محورهای محدود معادل تبدیل می کند. این سنسورهای کامپوزیت فقط برای دستگاه های خودرو فعال هستند.
جدول زیر تبدیل مثال از یک شتاب سنج استاندارد 3 محور به یک شتاب سنج محور محدود کامپوزیت را نشان می دهد.
مقادیر Sensorevent برای Sensor_Type_accelerometer | مثال sensor_type_accelerometer sensorevent | Composite Sensor_Type_Accelerometer_Limited_Axes Sensorevent |
---|---|---|
مقادیر [0] | -0.065 | -0.065 |
مقادیر [1] | 0.078 | 0.078 |
مقادیر [2] | 9.808 | 9.808 |
مقادیر [3] | N/A | 1.0 |
مقادیر [4] | N/A | 1.0 |
مقادیر [5] | N/A | 1.0 |
سنسورهای خودرو
سنسورها برای پشتیبانی از موارد استفاده از اتومبیل.
سرفصل
سنسورهای فیزیکی زیرین: هر ترکیبی از GPS ، مغناطیس سنج ، شتاب سنج و ژیروسکوپ.
گزارش دادن به حالت: مداوم
getDefaultSensor(SENSOR_TYPE_HEADING)
یک سنسور بدون بیدار را برمی گرداند
یک سنسور عنوان در دسترس از Android 13 ، جهت گیری از این دستگاه نسبت به North True North در درجه را نشان می دهد. سنسور عنوان شامل دو مقدار SensorEvent
است. یکی برای عنوان دستگاه اندازه گیری شده و دیگری برای صحت مقدار عنوان ارائه شده.
مقادیر عنوان گزارش شده توسط این سنسور باید بین 0.0
(فراگیر) و 360.0
(منحصر به فرد) باشد که 0
نشانگر شمال ، 90
شرقی ، 180
جنوب و 270
غربی است.
دقت این سنسور با اطمینان 68 درصد تعریف می شود. در موردی که توزیع اساسی گاوسی طبیعی باشد ، دقت یک انحراف استاندارد است. به عنوان مثال ، اگر سنسور عنوان مقدار عنوان 60 درجه و مقدار دقت 10 درجه را برگرداند ، احتمال 68 درصد از عنوان واقعی بین 50 درجه و 70 درجه وجود دارد.