এই বিভাগটি সেন্সর অক্ষ, বেস সেন্সর এবং যৌগিক সেন্সর (ক্রিয়াকলাপ, মনোভাব, আনক্যালিব্রেটেড, এবং মিথস্ক্রিয়া) বর্ণনা করে।
সেন্সর অক্ষ
অনেক সেন্সর থেকে সেন্সর ইভেন্ট মানগুলি একটি নির্দিষ্ট ফ্রেমে প্রকাশ করা হয় যা ডিভাইসের সাথে স্থির।
মোবাইল ডিভাইস অক্ষ
সেন্সর এপিআই শুধুমাত্র স্ক্রিনের স্বাভাবিক স্থিতির সাথে আপেক্ষিক (যখন ডিভাইসের স্ক্রীনের অভিযোজন পরিবর্তন হয় তখন অক্ষগুলি অদলবদল করা হয় না।

চিত্র 1. সেন্সর API দ্বারা ব্যবহৃত সমন্বয় সিস্টেম (একটি মোবাইল ডিভাইসের সাথে সম্পর্কিত)
স্বয়ংচালিত অক্ষ
অ্যান্ড্রয়েড অটোমোটিভ বাস্তবায়নে, গাড়ির বডি ফ্রেমের ক্ষেত্রে অক্ষগুলিকে সংজ্ঞায়িত করা হয়। গাড়ির রেফারেন্স ফ্রেমের উৎপত্তি হল পিছনের এক্সেলের কেন্দ্র। গাড়ির রেফারেন্স ফ্রেমটি ভিত্তিক যাতে:
- X-অক্ষ ডানদিকে নির্দেশ করে এবং একটি অনুভূমিক সমতলে রয়েছে, যা প্রতিসাম্যের যানবাহনের সমতলের লম্ব।
- Y-অক্ষ সামনের দিকে নির্দেশ করে এবং একটি অনুভূমিক সমতলে রয়েছে।

চিত্র 2. সেন্সর API দ্বারা ব্যবহৃত সমন্বয় সিস্টেম (একটি স্বয়ংচালিত ডিভাইসের সাথে সম্পর্কিত)
গাড়ির রেফারেন্স ফ্রেম হল একটি ডান হাতের সমন্বয় ব্যবস্থা। অতএব, Z-অক্ষ উপরে নির্দেশ করে।
রেফারেন্স ফ্রেমের Z-অক্ষ মহাকর্ষের সাথে সারিবদ্ধ, যার অর্থ হল X-অক্ষ এবং Y-অক্ষ উভয়ই অনুভূমিক। ফলস্বরূপ, Y-অক্ষটি সর্বদা সামনের অক্ষের মধ্য দিয়ে যেতে পারে না।
বেস সেন্সর
বেস সেন্সর প্রকারের নামকরণ করা হয় তাদের প্রতিনিধিত্ব করা শারীরিক সেন্সরগুলির নামানুসারে। এই সেন্সরগুলি একটি একক শারীরিক সেন্সর থেকে ডেটা রিলে করে (যৌগিক সেন্সরগুলির বিপরীতে যা অন্যান্য সেন্সর থেকে ডেটা তৈরি করে)। বেস সেন্সর ধরনের উদাহরণ অন্তর্ভুক্ত:
-
SENSOR_TYPE_ACCELEROMETER
-
SENSOR_TYPE_GYROSCOPE
-
SENSOR_TYPE_MAGNETOMETER
যাইহোক, বেস সেন্সর সমান নয় এবং তাদের অন্তর্নিহিত শারীরিক সেন্সরের সাথে বিভ্রান্ত হওয়া উচিত নয়। একটি বেস সেন্সর থেকে পাওয়া ডেটা শারীরিক সেন্সরের কাঁচা আউটপুট নয় কারণ সংশোধনগুলি (যেমন পক্ষপাতের ক্ষতিপূরণ এবং তাপমাত্রা ক্ষতিপূরণ) প্রয়োগ করা হয়।
উদাহরণস্বরূপ, একটি বেস সেন্সরের বৈশিষ্ট্যগুলি নিম্নলিখিত ব্যবহারের ক্ষেত্রে তার অন্তর্নিহিত শারীরিক সেন্সরের বৈশিষ্ট্য থেকে আলাদা হতে পারে:
- একটি জাইরোস্কোপ চিপ 1 ডিগ্রী/সেকেন্ডের বায়াস রেঞ্জের জন্য রেট করা হয়েছে।
- ফ্যাক্টরি ক্রমাঙ্কন, তাপমাত্রা ক্ষতিপূরণ এবং পক্ষপাতের ক্ষতিপূরণ প্রয়োগ করার পরে, Android সেন্সরের প্রকৃত পক্ষপাত হ্রাস করা হবে, এমন একটি বিন্দুতে হতে পারে যেখানে পক্ষপাতটি 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)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি অ্যাক্সিলোমিটার সেন্সর তিনটি সেন্সর অক্ষ বরাবর ডিভাইসের ত্বরণ রিপোর্ট করে। পরিমাপ করা ত্বরণের মধ্যে শারীরিক ত্বরণ (বেগের পরিবর্তন) এবং অভিকর্ষ উভয়ই অন্তর্ভুক্ত। sensors_event_t.acceleration-এর x, y, এবং z ক্ষেত্রে পরিমাপ রিপোর্ট করা হয়।
সমস্ত মান SI ইউনিটে (m/s^2) এবং তিনটি সেন্সর অক্ষ বরাবর মাধ্যাকর্ষণ বল বিয়োগ করে ডিভাইসের ত্বরণ পরিমাপ করে।
এখানে উদাহরণ আছে:
- (x, y, z) এর আদর্শ শূন্যের কাছাকাছি থাকা উচিত।
- যখন ডিভাইসটি টেবিলের উপর সমতল থাকে এবং তার বাম দিকে ডান দিকে ঠেলে দেওয়া হয়, তখন 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
এর মাধ্যমে রিডিং হবে। এই ক্ষেত্রের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য সেন্সর ম্যানেজার এর SensorManager
SENSOR_STATUS_*
ধ্রুবক দেখুন।
পরিবেষ্টিত তাপমাত্রা
রিপোর্টিং-মোড: অন-চেঞ্জ
getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
এই সেন্সর ডিগ্রী সেলসিয়াসে পরিবেষ্টিত (রুম) তাপমাত্রা প্রদান করে।
চৌম্বক ক্ষেত্র সেন্সর
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD
একটি চৌম্বক ক্ষেত্র সেন্সর (এটি ম্যাগনেটোমিটার নামেও পরিচিত) পরিবেষ্টিত চৌম্বক ক্ষেত্র রিপোর্ট করে, যেমনটি তিনটি সেন্সর অক্ষ বরাবর পরিমাপ করা হয়।
sensors_event_t.magnetic
এর x, y, এবং z ক্ষেত্রগুলিতে পরিমাপ করা হয়েছে এবং সমস্ত মান মাইক্রো-টেসলা (uT) এ রয়েছে।
sensors_event_t.magnetic.status
এর মাধ্যমে এটির রিডিং কতটা সঠিক বলে আশা করে ম্যাগনেটোমিটারও রিপোর্ট করে। এই ক্ষেত্রের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য সেন্সর ম্যানেজার এর SensorManager
SENSOR_STATUS_*
ধ্রুবক দেখুন।
রিডিংগুলি ব্যবহার করে ক্রমাঙ্কিত করা হয়:
- তাপমাত্রা ক্ষতিপূরণ
- কারখানা (বা অনলাইন) নরম-লোহা ক্রমাঙ্কন
- অনলাইন হার্ড-লোহা ক্রমাঙ্কন
জাইরোস্কোপ
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_GYROSCOPE)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি জাইরোস্কোপ সেন্সর তিনটি সেন্সর অক্ষের চারপাশে ডিভাইসের ঘূর্ণনের হার রিপোর্ট করে।
ঘূর্ণন ঘড়ির কাঁটার বিপরীত দিকে ধনাত্মক (ডান-হাতের নিয়ম)। অর্থাৎ, উৎপত্তিস্থলে অবস্থানরত কোনো ডিভাইসে x, y, বা z অক্ষের কিছু ইতিবাচক অবস্থান থেকে দেখে একজন পর্যবেক্ষক ইতিবাচক ঘূর্ণন রিপোর্ট করবে যদি ডিভাইসটিকে ঘড়ির কাঁটার বিপরীতে ঘোরানো হয়। মনে রাখবেন যে এটি ইতিবাচক ঘূর্ণনের মানক গাণিতিক সংজ্ঞা এবং রোলের মহাকাশ সংজ্ঞার সাথে একমত নয়।
sensors_event_t.gyro
এর x, y, এবং z ক্ষেত্রগুলিতে পরিমাপ রিপোর্ট করা হয়েছে এবং সমস্ত মান রেডিয়ান প্রতি সেকেন্ডে (rad/s)।
রিডিংগুলি ব্যবহার করে ক্রমাঙ্কিত করা হয়:
- তাপমাত্রা ক্ষতিপূরণ
- কারখানা (বা অনলাইন) স্কেল ক্ষতিপূরণ
- অনলাইন পক্ষপাত ক্রমাঙ্কন (ড্রিফট অপসারণ করতে)
gyroscope এছাড়াও রিপোর্ট করে যে এটি sensors_event_t.gyro.status
এর মাধ্যমে এর রিডিং কতটা সঠিক বলে আশা করে। এই ক্ষেত্রের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য সেন্সর ম্যানেজার এর SensorManager
SENSOR_STATUS_*
ধ্রুবক দেখুন।
ম্যাগনেটোমিটার এবং অ্যাক্সিলোমিটারের উপর ভিত্তি করে জাইরোস্কোপকে অনুকরণ করা যায় না, কারণ এটি স্থানীয় সামঞ্জস্যতা এবং প্রতিক্রিয়াশীলতা হ্রাস করতে পারে। এটি অবশ্যই একটি সাধারণ জাইরোস্কোপ চিপের উপর ভিত্তি করে তৈরি করা উচিত।
হৃদ কম্পন
রিপোর্টিং-মোড: অন-চেঞ্জ
getDefaultSensor(SENSOR_TYPE_HEART_RATE)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি হার্ট রেট সেন্সর ডিভাইসটি স্পর্শকারী ব্যক্তির বর্তমান হার্ট রেট রিপোর্ট করে।
প্রতি মিনিটে স্পন্দনের বর্তমান হার্ট রেট (BPM) sensors_event_t.heart_rate.bpm
এ রিপোর্ট করা হয় এবং সেন্সরের স্থিতি sensors_event_t.heart_rate.status
এ রিপোর্ট করা হয়। এই ক্ষেত্রের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য সেন্সর ম্যানেজার এর SensorManager
SENSOR_STATUS_*
ধ্রুবক দেখুন। বিশেষ করে, প্রথম অ্যাক্টিভেশনের সময়, ডিভাইসটি বডিতে নেই বলে জানা না থাকলে, প্রথম ইভেন্টের স্থিতি ক্ষেত্রটি SENSOR_STATUS_UNRELIABLE
সেট করতে হবে। যেহেতু এই সেন্সরটি অন-চেঞ্জ, ইভেন্টগুলি তৈরি হয় যখন এবং শুধুমাত্র যখন heart_rate.bpm
বা heart_rate.status
শেষ ইভেন্ট থেকে পরিবর্তিত হয়। ইভেন্টগুলি প্রতিটি sampling_period
চেয়ে দ্রুত তৈরি হয় না।
sensor_t.requiredPermission
সর্বদা SENSOR_PERMISSION_BODY_SENSORS
হয়।
আলো
রিপোর্টিং-মোড: অন-চেঞ্জ
getDefaultSensor(SENSOR_TYPE_LIGHT)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি লাইট সেন্সর এসআই লাক্স ইউনিটে বর্তমান আলোকসজ্জার প্রতিবেদন করে।
পরিমাপ sensors_event_t.light
এ রিপোর্ট করা হয়েছে।
নৈকট্য
রিপোর্টিং-মোড: অন-চেঞ্জ
সাধারণত একটি জেগে ওঠা সেন্সর হিসাবে সংজ্ঞায়িত করা হয়
getDefaultSensor(SENSOR_TYPE_PROXIMITY)
একটি ওয়েক-আপ সেন্সর প্রদান করে
একটি প্রক্সিমিটি সেন্সর সেন্সর থেকে নিকটতম দৃশ্যমান পৃষ্ঠের দূরত্ব রিপোর্ট করে।
অ্যান্ড্রয়েড 4.4 পর্যন্ত, প্রক্সিমিটি সেন্সরগুলি সর্বদা ওয়েক-আপ সেন্সর ছিল, যখন প্রক্সিমিটি পরিবর্তন শনাক্ত করে তখন SoC কে জাগিয়ে তোলে। Android 4.4-এর পরে, আমরা প্রথমে এই সেন্সরের ওয়েক-আপ সংস্করণটি প্রয়োগ করার পরামর্শ দিই, কারণ এটি ফোন কল করার সময় স্ক্রিন চালু এবং বন্ধ করতে ব্যবহৃত হয়।
পরিমাপটি sensors_event_t.distance
. দূরত্বে সেন্টিমিটারে রিপোর্ট করা হয়েছে। মনে রাখবেন যে কিছু প্রক্সিমিটি সেন্সর শুধুমাত্র একটি বাইনারি "কাছের" বা "দূর" পরিমাপ সমর্থন করে। এই ক্ষেত্রে, সেন্সর "দূর" অবস্থায় তার sensor_t.maxRange
মান এবং "নিকট" অবস্থায় sensor_t.maxRange
থেকে কম একটি মান রিপোর্ট করে।
চাপ
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_PRESSURE)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি চাপ সেন্সর (ব্যারোমিটার নামেও পরিচিত) হেক্টোপাস্কাল (এইচপিএ) এ বায়ুমণ্ডলীয় চাপ রিপোর্ট করে।
রিডিং ব্যবহার করে ক্রমাঙ্কিত করা হয়
- তাপমাত্রা ক্ষতিপূরণ
- কারখানার পক্ষপাত ক্রমাঙ্কন
- কারখানার স্কেল ক্রমাঙ্কন
ব্যারোমিটার প্রায়ই উচ্চতার পরিবর্তন অনুমান করতে ব্যবহৃত হয়। পরম উচ্চতা অনুমান করার জন্য, সমুদ্রপৃষ্ঠের চাপ (আবহাওয়ার উপর নির্ভর করে পরিবর্তিত) একটি রেফারেন্স হিসাবে ব্যবহার করা আবশ্যক।
আপেক্ষিক আদ্রতা
রিপোর্টিং-মোড: অন-চেঞ্জ
getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি আপেক্ষিক আর্দ্রতা সেন্সর আপেক্ষিক পরিবেষ্টিত বায়ু আর্দ্রতা পরিমাপ করে এবং শতাংশে একটি মান প্রদান করে।
কম্পোজিট সেন্সর প্রকার
একটি যৌগিক সেন্সর এক বা একাধিক শারীরিক সেন্সর থেকে ডেটা প্রক্রিয়াকরণ এবং/অথবা ফিউজ করে ডেটা তৈরি করে। (যেকোন সেন্সর যেটি বেস সেন্সর নয় তাকে একটি যৌগিক সেন্সর বলা হয়।) যৌগিক সেন্সরগুলির উদাহরণগুলির মধ্যে রয়েছে:
- স্টেপ ডিটেক্টর এবং উল্লেখযোগ্য গতি , যা সাধারণত একটি অ্যাক্সিলোমিটারের উপর ভিত্তি করে থাকে, তবে অন্যান্য সেন্সরগুলির উপরও ভিত্তি করে হতে পারে, যদি শক্তি খরচ এবং নির্ভুলতা গ্রহণযোগ্য হয়।
- গেম রোটেশন ভেক্টর , একটি অ্যাক্সিলোমিটার এবং একটি জাইরোস্কোপের উপর ভিত্তি করে।
- আন-ক্যালিব্রেটেড জাইরোস্কোপ , যা জাইরোস্কোপ বেস সেন্সরের মতো, কিন্তু বায়াস ক্রমাঙ্কন পরিমাপে সংশোধন করার পরিবর্তে আলাদাভাবে রিপোর্ট করা হচ্ছে।
বেস সেন্সরগুলির মতো, যৌগিক সেন্সরগুলির বৈশিষ্ট্যগুলি তাদের চূড়ান্ত ডেটার বৈশিষ্ট্যগুলি থেকে আসে। উদাহরণস্বরূপ, একটি গেম রোটেশন ভেক্টরের শক্তি খরচ সম্ভবত অ্যাক্সিলোমিটার চিপ, জাইরোস্কোপ চিপ, ডেটা প্রক্রিয়াকরণকারী চিপ এবং ডেটা পরিবহনকারী বাসগুলির শক্তি খরচের সমষ্টির সমান। আরেকটি উদাহরণ হিসাবে, একটি গেম রোটেশন ভেক্টরের ড্রিফ্ট শারীরিক সেন্সরের বৈশিষ্ট্যগুলির মতো ক্রমাঙ্কন অ্যালগরিদমের মানের উপর নির্ভর করে।
নিম্নলিখিত সারণী উপলব্ধ যৌগিক সেন্সর প্রকারের তালিকা করে। প্রতিটি যৌগিক সেন্সর এক বা একাধিক শারীরিক সেন্সর থেকে ডেটার উপর নির্ভর করে। আনুমানিক ফলাফলের জন্য অন্যান্য অন্তর্নিহিত শারীরিক সেন্সর নির্বাচন করা এড়িয়ে চলুন কারণ তারা একটি দুর্বল ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
সেন্সর প্রকার | শ্রেণী | অন্তর্নিহিত শারীরিক সেন্সর | রিপোর্টিং মোড |
---|---|---|---|
মনোভাব | অ্যাক্সিলোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার ব্যবহার করা উচিত নয় | একটানা | |
মনোভাব | অ্যাক্সিলোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ ব্যবহার করা উচিত নয় | একটানা | |
দৃষ্টিভঙ্গি ![]() | মিথষ্ক্রিয়া | অনির্ধারিত | এক সুযোগ |
মনোভাব | অ্যাক্সিলোমিটার, জাইরোস্কোপ | একটানা | |
ক্যালিব্রেটেড | জাইরোস্কোপ | একটানা | |
কার্যকলাপ | অ্যাক্সিলোমিটার, জাইরোস্কোপ (যদি উপস্থিত থাকে), বা ম্যাগনেটোমিটার (যদি গাইরো উপস্থিত না থাকে) | একটানা | |
ক্যালিব্রেটেড | ম্যাগনেটোমিটার | একটানা | |
ওরিয়েন্টেশন (অবঞ্চিত) | মনোভাব | অ্যাক্সিলোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ (যদি উপস্থিত থাকে) | একটানা |
মিথষ্ক্রিয়া | অনির্ধারিত | এক সুযোগ | |
মনোভাব | অ্যাক্সিলোমিটার, ম্যাগনেটোমিটার, জাইরোস্কোপ | একটানা | |
কার্যকলাপ | অ্যাক্সিলোমিটার (অথবা খুব কম শক্তি পর্যন্ত অন্য) | এক সুযোগ | |
কার্যকলাপ | অ্যাক্সিলোমিটার | পরিবর্তন বিষয়ক | |
কার্যকলাপ | অ্যাক্সিলোমিটার | বিশেষ | |
কার্যকলাপ | অ্যাক্সিলোমিটার | বিশেষ | |
মিথষ্ক্রিয়া | অনির্ধারিত | এক সুযোগ |
= কম শক্তির সেন্সর
কার্যকলাপ যৌগিক সেন্সর
রৈখিক ত্বরণ
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার এবং (যদি উপস্থিত থাকে) জাইরোস্কোপ (বা ম্যাগনেটোমিটার যদি জাইরোস্কোপ না থাকে)
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি রৈখিক ত্বরণ সেন্সর সেন্সর ফ্রেমে ডিভাইসের রৈখিক ত্বরণ রিপোর্ট করে, মাধ্যাকর্ষণ সহ নয়।
আউটপুটটি ধারণাগতভাবে: অ্যাক্সিলোমিটারের আউটপুট বিয়োগ মাধ্যাকর্ষণ সেন্সরের আউটপুট। এটি sensors_event_t.acceleration
এর x, y, এবং z ক্ষেত্রে m/s^2 এ রিপোর্ট করা হয়েছে।
যখন ডিভাইসটি অচল থাকে তখন সমস্ত অক্ষের রিডিং 0 এর কাছাকাছি হওয়া উচিত।
যদি ডিভাইসটিতে একটি জাইরোস্কোপ থাকে, তবে লিনিয়ার অ্যাক্সিলারেশন সেন্সরকে অবশ্যই জাইরোস্কোপ এবং অ্যাক্সিলোমিটারকে ইনপুট হিসাবে ব্যবহার করতে হবে।
যদি ডিভাইসে জাইরোস্কোপ না থাকে, তাহলে রৈখিক ত্বরণ সেন্সরকে অবশ্যই অ্যাক্সিলোমিটার এবং ম্যাগনেটোমিটারকে ইনপুট হিসেবে ব্যবহার করতে হবে।
উল্লেখযোগ্য গতি
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার (অথবা কম শক্তি হিসাবে অন্য)
রিপোর্টিং-মোড: এক-শট
স্বল্প শক্তি
এই সেন্সরের শুধুমাত্র জাগ্রত সংস্করণ প্রয়োগ করুন।
getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)
একটি ওয়েক-আপ সেন্সর প্রদান করে
একটি উল্লেখযোগ্য গতি শনাক্ত করার সময় একটি উল্লেখযোগ্য গতি আবিষ্কারক ট্রিগার করে: একটি গতি যা ব্যবহারকারীর অবস্থানে পরিবর্তন আনতে পারে।
এই ধরনের উল্লেখযোগ্য গতির উদাহরণ হল:
- হাঁটা বা বাইক চালানো
- চলন্ত গাড়ি, কোচ বা ট্রেনে বসা
এমন পরিস্থিতির উদাহরণ যা উল্লেখযোগ্য গতিকে ট্রিগার করে না:
- পকেটে ফোন এবং ব্যক্তি নড়ছে না
- ফোনটি একটি টেবিলে রয়েছে এবং কাছাকাছি ট্র্যাফিক বা ওয়াশিং মেশিনের কারণে টেবিলটি কিছুটা কাঁপছে৷
উচ্চ স্তরে, অবস্থান নির্ধারণের শক্তি খরচ কমাতে উল্লেখযোগ্য গতি আবিষ্কারক ব্যবহার করা হয়। যখন স্থানীয়করণ অ্যালগরিদমগুলি সনাক্ত করে যে ডিভাইসটি স্থির, তারা একটি কম-পাওয়ার মোডে স্যুইচ করতে পারে, যেখানে ব্যবহারকারীর অবস্থান পরিবর্তন করার সময় তারা ডিভাইসটিকে জাগানোর জন্য উল্লেখযোগ্য গতির উপর নির্ভর করে।
এই সেন্সর কম শক্তি হতে হবে. এটি পাওয়ার খরচের জন্য একটি ট্রেডঅফ করে যার ফলে অল্প পরিমাণে মিথ্যা নেতিবাচক হতে পারে। এটি কয়েকটি কারণে করা হয়:
- এই সেন্সরের লক্ষ্য শক্তি সঞ্চয় করা।
- একটি ইভেন্ট ট্রিগার করা যখন ব্যবহারকারী নড়ছে না (ফলস ইতিবাচক) ক্ষমতার দিক থেকে ব্যয়বহুল, তাই এটি এড়ানো উচিত।
- ব্যবহারকারী যখন সরে যাচ্ছেন তখন কোনো ইভেন্ট ট্রিগার না করা (মিথ্যা নেতিবাচক) গ্রহণযোগ্য যতক্ষণ না এটি বারবার করা হয়। ব্যবহারকারী যদি 10 সেকেন্ড ধরে হাঁটতে থাকে, তাহলে সেই 10 সেকেন্ডের মধ্যে কোনো ইভেন্ট ট্রিগার না করা গ্রহণযোগ্য নয়।
প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0]
এ 1
টি রিপোর্ট করে।
স্টেপ ডিটেক্টর
অন্তর্নিহিত ফিজিক্যাল সেন্সর: অ্যাক্সিলোমিটার (+ সম্ভবত কম শক্তি যতক্ষণ পর্যন্ত অন্য)
রিপোর্টিং-মোড: বিশেষ (প্রতি পদক্ষেপে একটি ইভেন্ট নেওয়া)
স্বল্প শক্তি
getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি স্টেপ ডিটেক্টর প্রতিবার ব্যবহারকারীর দ্বারা একটি পদক্ষেপ নেওয়ার সময় একটি ইভেন্ট তৈরি করে।
ইভেন্ট sensors_event_t.timestamp
এর টাইমস্ট্যাম্প যখন পা মাটিতে আঘাত করে তখন ত্বরণে একটি উচ্চ বৈচিত্র তৈরি করে।
স্টেপ কাউন্টারের তুলনায়, স্টেপ ডিটেক্টরের কম লেটেন্সি থাকা উচিত (দুই সেকেন্ডের কম)। স্টেপ ডিটেক্টর এবং স্টেপ কাউন্টার উভয়ই শনাক্ত করে যে ব্যবহারকারী কখন হাঁটছেন, দৌড়াচ্ছেন এবং সিঁড়ি বেয়ে উঠছেন। ব্যবহারকারী যখন বাইক চালাচ্ছেন, গাড়ি চালাচ্ছেন বা অন্য যানবাহনে যাচ্ছেন তখন তাদের ট্রিগার করা উচিত নয়৷
এই সেন্সর কম শক্তি হতে হবে. অর্থাৎ, যদি ধাপ সনাক্তকরণ হার্ডওয়্যারে করা না যায় তবে এই সেন্সরটি সংজ্ঞায়িত করা উচিত নয়। বিশেষ করে, যখন স্টেপ ডিটেক্টর সক্রিয় থাকে এবং অ্যাক্সিলোমিটার না থাকে, তখন শুধুমাত্র ধাপগুলি বাধা সৃষ্টি করে (প্রতিটি অ্যাক্সিলোমিটার রিডিং নয়)।
sampling_period_ns
স্টেপ ডিটেক্টরের উপর কোন প্রভাব ফেলে না।
প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0]
এ 1
টি রিপোর্ট করে।
ধাপ কাউন্টার
অন্তর্নিহিত ফিজিক্যাল সেন্সর: অ্যাক্সিলোমিটার (+ সম্ভবত কম শক্তি যতক্ষণ পর্যন্ত অন্য)
রিপোর্টিং-মোড: অন-চেঞ্জ
স্বল্প শক্তি
getDefaultSensor(SENSOR_TYPE_STEP_COUNTER)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি স্টেপ কাউন্টার সক্রিয় করার সময় শেষ রিবুট করার পর থেকে ব্যবহারকারীর দ্বারা নেওয়া পদক্ষেপের সংখ্যা রিপোর্ট করে।
পরিমাপটি uint64_t
এ sensors_event_t.step_counter
হিসাবে রিপোর্ট করা হয়েছে এবং শুধুমাত্র একটি সিস্টেম রিবুটে শূন্যে রিসেট করা হয়েছে।
ইভেন্টের টাইমস্ট্যাম্প সেই সময়ে সেট করা হয় যখন সেই ইভেন্টের জন্য শেষ পদক্ষেপ নেওয়া হয়েছিল।
একটি ধাপের সময় বোঝার জন্য স্টেপ ডিটেক্টর সেন্সর টাইপ দেখুন।
স্টেপ ডিটেক্টরের তুলনায়, স্টেপ কাউন্টারে উচ্চতর লেটেন্সি থাকতে পারে (10 সেকেন্ড পর্যন্ত)। এই লেটেন্সি ধন্যবাদ, এই সেন্সর একটি উচ্চ নির্ভুলতা আছে; পুরো দিনের ব্যবস্থার পর ধাপ গণনা প্রকৃত ধাপ গণনার 10% এর মধ্যে হওয়া উচিত। স্টেপ ডিটেক্টর এবং স্টেপ কাউন্টার উভয়ই শনাক্ত করে যে ব্যবহারকারী কখন হাঁটছেন, দৌড়াচ্ছেন এবং সিঁড়ি বেয়ে উঠছেন। ব্যবহারকারী যখন বাইক চালাচ্ছেন, গাড়ি চালাচ্ছেন বা অন্য যানবাহনে যাচ্ছেন তখন তাদের ট্রিগার করা উচিত নয়৷
হার্ডওয়্যারকে অবশ্যই নিশ্চিত করতে হবে যে অভ্যন্তরীণ ধাপের সংখ্যা কখনই ওভারফ্লো না হয়। হার্ডওয়্যারের অভ্যন্তরীণ কাউন্টারের সর্বনিম্ন আকার 16 বিট হতে হবে। আসন্ন ওভারফ্লোর ক্ষেত্রে (সর্বাধিক প্রতি ~2^16 ধাপে), SoC জাগ্রত করা যেতে পারে যাতে ড্রাইভার কাউন্টার রক্ষণাবেক্ষণ করতে পারে।
ইন্টারঅ্যাকশনে যেমন বলা হয়েছে, এই সেন্সরটি কাজ করার সময়, এটি অন্য কোনো সেন্সর, বিশেষ করে, অ্যাক্সিলোমিটার, যা খুব ভালোভাবে ব্যবহার করা যেতে পারে, ব্যাহত করবে না।
যদি একটি নির্দিষ্ট ডিভাইস অপারেশনের এই মোডগুলিকে সমর্থন করতে না পারে, তাহলে এই সেন্সর প্রকারটি 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 কে সাসপেন্ড মোডে যেতে দেয়। এইচএএল-এ এই সেন্সরটি অনুকরণ করবেন না। প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0]
এ 1
টি রিপোর্ট করে।
মনোভাব যৌগিক সেন্সর
ঘূর্ণন ভেক্টর
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার, ম্যাগনেটোমিটার এবং জাইরোস্কোপ
রিপোর্টিং-মোড: ক্রমাগত
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)
কোথায়:
-
rot_axis
এর x, y, এবং z ক্ষেত্রগুলি হল ঘূর্ণন অক্ষের প্রতিনিধিত্বকারী একক দৈর্ঘ্যের ভেক্টরের পূর্ব-উত্তর-উপরের স্থানাঙ্ক -
theta
হল ঘূর্ণন কোণ
কোয়াটারনিয়ন একটি ইউনিট চতুর্ভুজ: এটি অবশ্যই আদর্শ 1
হতে হবে। এটি নিশ্চিত করতে ব্যর্থ হলে ক্লায়েন্টের আচরণ অনিয়মিত হবে।
উপরন্তু, এই সেন্সর একটি আনুমানিক শিরোনাম নির্ভুলতা রিপোর্ট করে:
sensors_event_t.data[4] = estimated_accuracy
(রেডিয়ানে)
শিরোনাম ত্রুটি estimated_accuracy
95% সময়ের চেয়ে কম হতে হবে। এই সেন্সরটিকে অবশ্যই একটি gyroscope ব্যবহার করতে হবে প্রধান অভিযোজন পরিবর্তন ইনপুট হিসাবে।
এই সেন্সরটি জাইরোস্কোপ ড্রিফ্ট তৈরি করতে অ্যাক্সিলোমিটার এবং ম্যাগনেটোমিটার ইনপুটও ব্যবহার করে এবং এটি শুধুমাত্র অ্যাক্সিলোমিটার এবং ম্যাগনেটোমিটার ব্যবহার করে প্রয়োগ করা যায় না।
খেলা ঘূর্ণন ভেক্টর
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার এবং জাইরোস্কোপ (কোন ম্যাগনেটোমিটার নয়)
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি গেম ঘূর্ণন ভেক্টর সেন্সর একটি ঘূর্ণন ভেক্টর সেন্সর অনুরূপ কিন্তু জিওম্যাগনেটিক ক্ষেত্র ব্যবহার করে না। তাই Y অক্ষ উত্তরে নির্দেশ করে না বরং অন্য কোনো রেফারেন্সে। জাইরোস্কোপ জেড অক্ষের চারপাশে প্রবাহিত হওয়ার মতো মাত্রার একই ক্রম অনুসারে সেই রেফারেন্সটিকে প্রবাহিত করার অনুমতি দেওয়া হয়।
কিভাবে sensors_event_t.data[0-3]
সেট করতে হয় তার বিস্তারিত জানার জন্য ঘূর্ণন ভেক্টর সেন্সর দেখুন। এই সেন্সর একটি আনুমানিক শিরোনাম নির্ভুলতা রিপোর্ট করে না: sensors_event_t.data[4]
সংরক্ষিত এবং 0
এ সেট করা উচিত।
একটি আদর্শ ক্ষেত্রে, একটি ফোন ঘোরানো এবং একই বাস্তব-বিশ্বের অভিযোজনে ফিরে আসা একই গেম রোটেশন ভেক্টরের রিপোর্ট করা উচিত।
এই সেন্সরটি অবশ্যই একটি জাইরোস্কোপ এবং একটি অ্যাক্সিলোমিটারের উপর ভিত্তি করে হতে হবে। এটি ম্যাগনেটোমিটারকে ইনপুট হিসাবে ব্যবহার করতে পারে না, পাশাপাশি, পরোক্ষভাবে, জাইরোস্কোপের পক্ষপাতের অনুমানের মাধ্যমে।
মহাকর্ষ
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার এবং (যদি উপস্থিত থাকে) জাইরোস্কোপ (বা ম্যাগনেটোমিটার যদি জাইরোস্কোপ না থাকে)
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_GRAVITY)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি মাধ্যাকর্ষণ সেন্সর ডিভাইসের স্থানাঙ্কে অভিকর্ষের দিক এবং মাত্রা রিপোর্ট করে।
sensors_event_t.acceleration
এর x, y, এবং z ক্ষেত্রে মাধ্যাকর্ষণ ভেক্টর উপাদানগুলি m/s^2 এ রিপোর্ট করা হয়।
যখন ডিভাইসটি বিশ্রামে থাকে, তখন মাধ্যাকর্ষণ সেন্সরের আউটপুট অ্যাক্সিলোমিটারের মতো হওয়া উচিত। পৃথিবীতে, মাত্রা প্রায় 9.8 m/s^2।
যদি ডিভাইসটিতে একটি জাইরোস্কোপ থাকে, তবে মাধ্যাকর্ষণ সেন্সরকে অবশ্যই ইনপুট হিসাবে জাইরোস্কোপ এবং অ্যাক্সিলোমিটার ব্যবহার করতে হবে।
যদি ডিভাইসে জাইরোস্কোপ না থাকে, তাহলে অভিকর্ষ সেন্সরকে অবশ্যই অ্যাক্সিলোমিটার এবং ম্যাগনেটোমিটারকে ইনপুট হিসেবে ব্যবহার করতে হবে।
ভূ-চৌম্বকীয় ঘূর্ণন ভেক্টর
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার এবং ম্যাগনেটোমিটার (কোন জাইরোস্কোপ নেই)
রিপোর্টিং-মোড: ক্রমাগত
স্বল্প শক্তি
getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি ভূ-চৌম্বকীয় ঘূর্ণন ভেক্টর একটি ঘূর্ণন ভেক্টর সেন্সরের অনুরূপ কিন্তু একটি ম্যাগনেটোমিটার ব্যবহার করে এবং কোন জাইরোস্কোপ ব্যবহার করে না।
এই সেন্সর একটি ম্যাগনেটোমিটার উপর ভিত্তি করে করা আবশ্যক. এটি একটি gyroscope ব্যবহার করে প্রয়োগ করা যাবে না, এবং gyroscope ইনপুট এই সেন্সর দ্বারা ব্যবহার করা যাবে না.
কিভাবে sensors_event_t.data[0-4]
সেট করতে হয় তার বিস্তারিত জানার জন্য ঘূর্ণন ভেক্টর সেন্সর দেখুন।
ঘূর্ণন ভেক্টর সেন্সরের মতোই, শিরোনাম ত্রুটি অবশ্যই আনুমানিক নির্ভুলতার চেয়ে কম হতে হবে ( sensors_event_t.data[4]
) 95% সময়ের।
এই সেন্সরটি অবশ্যই কম শক্তির হতে হবে, তাই এটি হার্ডওয়্যারে প্রয়োগ করতে হবে।
ওরিয়েন্টেশন (অবঞ্চিত)
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার, ম্যাগনেটোমিটার এবং (যদি উপস্থিত থাকে) জাইরোস্কোপ
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_ORIENTATION)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
দ্রষ্টব্য: এটি একটি পুরানো সেন্সর প্রকার যা Android SDK-এ অবচয় করা হয়েছে৷ এটি ঘূর্ণন ভেক্টর সেন্সর দ্বারা প্রতিস্থাপিত হয়েছে, যা আরও স্পষ্টভাবে সংজ্ঞায়িত করা হয়েছে। যখনই সম্ভব ওরিয়েন্টেশন সেন্সরের উপর ঘূর্ণন ভেক্টর সেন্সর ব্যবহার করুন।
একটি ওরিয়েন্টেশন সেন্সর ডিভাইসের মনোভাব রিপোর্ট করে। sensors_event_t.orientation
এর x, y, এবং z ক্ষেত্রের ডিগ্রীতে পরিমাপ রিপোর্ট করা হয়:
-
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 অক্ষের দিকে চলে যায়।
অনুগ্রহ করে মনে রাখবেন, ঐতিহাসিক কারণে রোল কোণ ঘড়ির কাঁটার দিকে ধনাত্মক। (গাণিতিকভাবে বলতে গেলে, এটি ঘড়ির কাঁটার বিপরীত দিকে ইতিবাচক হওয়া উচিত):

চিত্র 3. একটি ডিভাইসের সাথে সম্পর্কিত ওরিয়েন্টেশন
এই সংজ্ঞাটি বিমান চালনায় ব্যবহৃত ইয়াও, পিচ এবং রোল থেকে ভিন্ন যেখানে X অক্ষটি সমতলের দীর্ঘ পাশে (লেজ থেকে নাক পর্যন্ত)।
ওরিয়েন্টেশন সেন্সরও রিপোর্ট করে যে এটি sensors_event_t.orientation.status
এর মাধ্যমে তার রিডিং কতটা সঠিক বলে আশা করে। এই ক্ষেত্রের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য সেন্সর ম্যানেজার এর SensorManager
SENSOR_STATUS_*
ধ্রুবক দেখুন।
ক্যালিব্রেটেড সেন্সর
আনক্যালিব্রেটেড সেন্সরগুলি আরও কাঁচা ফলাফল প্রদান করে এবং এতে কিছু পক্ষপাত থাকতে পারে তবে ক্রমাঙ্কনের মাধ্যমে প্রয়োগ করা সংশোধন থেকে কম "জাম্প"ও থাকতে পারে। কিছু অ্যাপ এই অক্যালিব্রেটেড ফলাফলগুলিকে মসৃণ এবং আরও নির্ভরযোগ্য হিসাবে পছন্দ করতে পারে। উদাহরণস্বরূপ, যদি একটি অ্যাপ তার নিজস্ব সেন্সর ফিউশন পরিচালনা করার চেষ্টা করে, তাহলে ক্রমাঙ্কন প্রবর্তন আসলে ফলাফলকে বিকৃত করতে পারে।
অ্যাক্সিলোমিটার আনক্যালিব্রেটেড
অন্তর্নিহিত শারীরিক সেন্সর: অ্যাক্সিলোমিটার
রিপোর্টিং-মোড: ক্রমাগত
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED)
একটি নন-ওয়েক-আপ সেন্সর প্রদান করে
একটি ক্যালিব্রেটেড অ্যাক্সিলোমিটার সেন্সর কোনো পক্ষপাত সংশোধন ছাড়াই তিনটি সেন্সর অক্ষ বরাবর ডিভাইসের ত্বরণ রিপোর্ট করে (ফ্যাক্টরি পক্ষপাত এবং তাপমাত্রা ক্ষতিপূরণ অক্যালিব্রেটেড পরিমাপের জন্য প্রয়োগ করা হয়), সাথে একটি পক্ষপাত অনুমান। সমস্ত মান SI ইউনিটে রয়েছে (m/s^2) এবং sensors_event_t.uncalibrated_accelerometer
এর ক্ষেত্রে রিপোর্ট করা হয়েছে :
-
x_uncalib
: এক্স অক্ষ বরাবর ত্বরণ (পক্ষপাতের ক্ষতিপূরণ ছাড়া) -
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)
একটি জেগে ওঠা সেন্সর প্রদান করে
একটি কব্জা কোণ সেন্সর ডিভাইসের দুটি অবিচ্ছেদ্য অংশের মধ্যে ডিগ্রীতে কোণ পরিমাপ করে। এই সেন্সর টাইপ দ্বারা পরিমাপ করা একটি কব্জা চলাফেরার মাধ্যমে ব্যবহারকারী ডিভাইসের সাথে ইন্টারঅ্যাক্ট করতে পারে এমন উপায়গুলিকে পরিবর্তন করবে বলে আশা করা হচ্ছে, উদাহরণস্বরূপ, একটি ডিসপ্লে উন্মোচন বা প্রকাশ করে৷
মিথস্ক্রিয়া যৌগিক সেন্সর
কিছু সেন্সর বেশিরভাগ ব্যবহারকারীর সাথে মিথস্ক্রিয়া সনাক্ত করতে ব্যবহৃত হয়। We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.
Wake up gesture
Underlying physical sensors: Undefined (anything low power)
Reporting-mode: One-shot
Low-power
Implement only the wake-up version of this sensor.
getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE)
returns a wake-up sensor
A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.
This sensor must be low power, as it's likely to be activated 24/7.
Each sensor event reports 1
in sensors_event_t.data[0]
.
Pick up gesture
Underlying physical sensors: Undefined (anything low power)
Reporting-mode: One-shot
Low-power
Implement only the wake-up version of this sensor.
getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE)
returns a wake-up sensor
A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).
Each sensor event reports 1
in sensors_event_t.data[0]
.
Glance gesture
Underlying physical sensors: Undefined (anything low power)
Reporting-mode: One-shot
Low-power
Implement only the wake-up version of this sensor.
getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE)
returns a wake-up sensor
A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.
This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1
in sensors_event_t.data[0]
.
Limited axes IMU sensors
Available from Android 13, limited axes IMU sensors are sensors that support use cases where not all three axes (x, y, z) are available. Standard IMU types in Android (such as SENSOR_TYPE_ACCELEROMETER
and SENSOR_TYPE_GYROSCOPE
) assume that all three axes are supported. However, not all form factors and devices support 3-axis accelerometers and 3-axis gyroscopes.
Accelerometer limited axes
Underlying physical sensors: Accelerometer
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES)
returns a non-wake-up sensor
An accelerometer limited axes sensor is equivalent to TYPE_ACCELEROMETER
but supports cases where one or two axes aren't supported.
The last three sensor event values reported by the sensor represent whether the acceleration value for the x, y, and z axes are supported. A value of 1.0
indicates that the axis is supported, and a value of 0
indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.
Device manufacturers must set the acceleration values for unused axes to 0
, instead of having undefined values.
Gyroscope limited axes
Underlying physical sensors: Gyroscope
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES)
returns a non-wake-up sensor
A gyroscope limited axes sensor is equivalent to TYPE_GYROSCOPE
but supports cases where one or two axes aren't supported.
The last three sensor event values reported by the sensor represent whether the angular speed value for the x, y, and z axes are supported. A value of 1.0
indicates that the axis is supported, and a value of 0
indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.
Device manufacturers must set the angular speed values for unused axes to 0
.
Accelerometer limited axes uncalibrated
Underlying physical sensors: Accelerometer
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED)
returns a non-wake-up sensor
An accelerometer limited axes uncalibrated sensor is equivalent to TYPE_ACCELEROMETER_UNCALIBRATED
but supports cases where one or two axes aren't supported.
The last three sensor event values reported by the sensor represent whether the acceleration and bias values for the x, y, and z axes are supported. A value of 1.0
indicates that the axis is supported, and a value of 0
indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.
Device manufacturers must set the acceleration and bias values for unused axes to 0
.
Gyroscope limited axes uncalibrated
Underlying physical sensors: Gyroscope
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED)
returns a non-wake-up sensor
A gyroscope limited axes uncalibrated sensor is equivalent to TYPE_GYROSCOPE_UNCALIBRATED
but supports cases where one or two axes aren't supported.
The last three sensor event values reported by the sensor represent whether the angular speed and drift values for the x, y, and z axes are supported. A value of 1.0
indicates that the axis is supported, and a value of 0
indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.
Device manufacturers must set the angular speed and drift values for unused axes to 0
.
Composite limited axes IMU
Underlying physical sensors: Any combination of 3-axis accelerometer, 3-axis gyroscope, 3-axis accelerometer uncalibrated, and 3-axis gyroscope uncalibrated sensors.
Reporting-mode: Continuous
A composite limited axes IMU sensor is equivalent to a limited axes IMU sensor but instead of being supported at the HAL, it converts the 3-axis sensor data into the equivalent limited axes variants. These composite sensors are only enabled for automotive devices.
The following table shows an example conversion from a standard 3-axis accelerometer to a composite limited axes accelerometer.
SensorEvent Values for SENSOR_TYPE_ACCELEROMETER | Example SENSOR_TYPE_ACCELEROMETER SensorEvent | Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent |
---|---|---|
values[0] | -0.065 | -0.065 |
values[1] | 0.078 | 0.078 |
values[2] | 9.808 | 9.808 |
values[3] | N/A | 1.0 |
values[4] | N/A | 1.0 |
values[5] | N/A | 1.0 |
Automotive sensors
Sensors to support automotive use cases.
Heading
Underlying physical sensors: Any combination of GPS, magnetometer, accelerometer, and gyroscope.
Reporting-mode: Continuous
getDefaultSensor(SENSOR_TYPE_HEADING)
returns a non-wake-up sensor
Available from Android 13, a heading sensor measures the direction in which the device is pointing relative to true north in degrees. The heading sensor includes two SensorEvent
values. One for the measured device heading and one for the accuracy of the provided heading value.
Heading values reported by this sensor must be between 0.0
(inclusive) and 360.0
(exclusive), with 0
indicating north, 90
east, 180
south, and 270
west.
Accuracy for this sensor is defined at 68 percent confidence. In the case where the underlying distribution is Gaussian normal, the accuracy is one standard deviation. For example, if the heading sensor returns a heading value of 60 degrees and an accuracy value of 10 degrees, there's a 68 percent probability of the true heading being between 50 degrees and 70 degrees.