সেন্সরের ধরন

এই বিভাগে সেন্সর অ্যাক্সিস, বেস সেন্সর ও কম্পোজিট সেন্সর (অ্যাক্টিভিটি, এটিটিউড, আনক্যালিব্রেটেড ও ইন্ট্যার‍্যাকশন) সম্পর্কে বর্ণনা করা হয়েছে।

সেন্সর অ্যাক্সিস

অনেক সেন্সর থেকে পাওয়া সেন্সর ইভেন্ট ভ্যালু একটি নির্দিষ্ট ফ্রেমে প্রকাশ করা হয় যা ডিভাইসের সাপেক্ষে স্ট্যাটিক হয়।

মোবাইল ডিভাইস অক্ষ

সেন্সর API শুধুমাত্র স্ক্রিনের স্বাভাবিক অরিয়েন্টেশনের সাথে সম্পর্কিত (ডিভাইসের স্ক্রিন অরিয়েন্টেশন পরিবর্তন হলে অ্যাক্সিস অদল-বদল করা হয় না।

মোবাইল ডিভাইসের জন্য সেন্সর API-এর
কোঅর্ডিনেট সিস্টেম

ছবি ১. Sensor API-এর ব্যবহার করা কোঅর্ডিনেট সিস্টেম (মোবাইল ডিভাইসের সাপেক্ষে)

অটোমোটিভ অ্যাক্সেল

Android Automotive প্রয়োগে, অ্যাক্সিসকে গাড়ির বডি ফ্রেমের সাপেক্ষে সংজ্ঞায়িত করা হয়। গাড়ির রেফারেন্স ফ্রেমের মূল বিন্দু হল পিছনের অ্যাক্সেলের কেন্দ্র। গাড়ির রেফারেন্স ফ্রেম এমনভাবে ওরিয়েন্ট করা হয় যাতে:

  • X-অক্ষ ডানদিকে নির্দেশ করে এবং এটি একটি অনুভূমিক সমতলে থাকে, যা গাড়ির প্রতিসাম্য সমতলের সাথে লম্বভাবে অবস্থিত।
  • Y-অক্ষ সামনের দিকে নির্দেশ করে এবং এটি একটি অনুভূমিক প্লেনে থাকে।
অটোমোটিভ ডিভাইসের জন্য
সেন্সর API-এর কোঅর্ডিনেট সিস্টেম

ছবি ২. Sensor API-এর ব্যবহার করা কোঅর্ডিনেট সিস্টেম (অটোমোটিভ ডিভাইসের তুলনায়)

গাড়ির রেফারেন্স ফ্রেম হল ডান-হাতের কোঅর্ডিনেট সিস্টেম। তাই, Z-অক্ষ উপরের দিকে পয়েন্ট করে।

রেফারেন্স ফ্রেমের Z-অক্ষটি মাধ্যাকর্ষণ শক্তির সাথে অ্যালাইন করা থাকে, যার অর্থ হল X-অক্ষ এবং Y-অক্ষ দুটিই অনুভূমিক। এর ফলে, Y-অ্যাক্সিস সবসময় ফ্রন্ট অ্যাক্সেলের মধ্যে দিয়ে নাও যেতে পারে।

বেস সেন্সর

বেস সেন্সরের ধরনগুলি যে ফিজিক্যাল সেন্সরকে উপস্থাপন করে তার নামানুসারে নামকরণ করা হয়। এইসব সেন্সর একটি ফিজিক্যাল সেন্সর থেকে ডেটা রিলে করে (কম্পোজিট সেন্সর অন্য সেন্সর থেকে ডেটা তৈরি করে)। বেস সেন্সর ধরনের উদাহরণের মধ্যে রয়েছে:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

যেমন, নিম্নলিখিত ব্যবহারের ক্ষেত্রে, কোনও বেস সেন্সরের বৈশিষ্ট্য তার অন্তর্নিহিত ফিজিক্যাল সেন্সরের বৈশিষ্ট্য থেকে আলাদা হতে পারে:

  • ১ ডিগ্রি/সেকেন্ডের বায়াস রেঞ্জ সহ রেটিং প্রাপ্ত জাইরোস্কোপ চিপ।
    • ফ্যাক্টরি ক্যালিব্রেশন, তাপমাত্রা ক্ষতিপূরণ ও বায়াস ক্ষতিপূরণ প্রয়োগ করার পরে, Android সেন্সরের আসল বায়াস কমে যাবে, হয়ত এমন এক পয়েন্টে পৌঁছাবে যেখানে বায়াস ০.০১ ডিগ্রি/সেকেন্ডের কম হবে।
    • এই পরিস্থিতিতে, আমরা বলি যে Android সেন্সরের বায়াস ০.০১ ডিগ্রি/সেকেন্ডের নিচে, যদিও অন্তর্নিহিত সেন্সরের ডেটা শিটে ১ ডিগ্রি/সেকেন্ড বলা হয়েছে।
  • ১০০ uW বিদ্যুৎ খরচ সহ একটি ব্যারোমিটার।
    • কারণ, জেনারেট করা ডেটা চিপ থেকে SoC-তে ট্রান্সপোর্ট করতে হয়, তাই ব্যারোমিটার Android সেন্সর থেকে ডেটা সংগ্রহ করার প্রকৃত পাওয়ার খরচ অনেক বেশি হতে পারে, যেমন ১০০০ uW.
    • এই পরিস্থিতিতে, আমরা বলি যে Android সেন্সরের পাওয়ার কনজাম্পশন হল ১০০০ uW, যদিও ব্যারোমিটার চিপের লিডে পরিমাপ করা পাওয়ার কনজাম্পশন হল ১০০uW.
  • ক্যালিব্রেট করা হলে ম্যাগনেটোমিটার ১০০uW ব্যবহার করে, কিন্তু ক্যালিব্রেট করার সময় আরও বেশি ব্যবহার করে।
    • এর ক্যালিব্রেশন রুটিনে জাইরোস্কোপ অ্যাক্টিভেট করা, ৫০০০ uW খরচ করা এবং কিছু অ্যালগরিদম চালানো প্রয়োজন হতে পারে, যার জন্য আরও ৯০০ uW খরচ হয়।
    • এই পরিস্থিতিতে, আমরা বলি যে (ম্যাগনেটোমিটার) Android সেন্সরের সর্বাধিক বিদ্যুৎ খরচ হল ৬০০০ uW।
    • এই ক্ষেত্রে, বিদ্যুতের গড় খরচ হল আরও বেশি উপযোগী পরিমাপ, এবং এটিই HAL-এর মাধ্যমে সেন্সর স্ট্যাটিক বৈশিষ্ট্যতে রিপোর্ট করা হয়।

অ্যাকসিলরোমিটার

রিপোর্টিং-মোড: অবিরাম

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) ওয়েক-আপ সেন্সর ছাড়া অন্য কিছু রিটার্ন করে

অ্যাক্সিলরোমিটার সেন্সর, তিনটি সেন্সর অ্যাক্সিস বরাবর ডিভাইসের অ্যাক্সিলারেশন রিপোর্ট করে। পরিমাপ করা অ্যাক্সিলারেশনের মধ্যে ভৌত অ্যাক্সিলারেশন (বেগের পরিবর্তন) ও গ্র্যাভিটি, দুটিই অন্তর্ভুক্ত। x, y, এবং z ফিল্ডে পরিমাপ রিপোর্ট করা হয়।

সব মান SI একক (m/s^2)-এ আছে এবং তিনটি সেন্সর অ্যাক্সিস বরাবর মাধ্যাকর্ষণ শক্তির প্রভাব বাদ দিয়ে ডিভাইসের ত্বরণ পরিমাপ করে।

এখানে উদাহরণ দেওয়া হল:

  • ফ্রি ফল অবস্থায় (x, y, z)-এর মান ০-এর কাছাকাছি হওয়া উচিত।
  • ডিভাইসটি কোনও টেবিলে ফ্ল্যাট করে রাখা হলে এবং এর বাঁদিক থেকে ডানদিকে ধাক্কা দেওয়া হলে, x অ্যাক্সিলারেশন ভ্যালু পজিটিভ হয়।
  • ডিভাইসটি টেবিলে সমতলভাবে রাখা হলে, z-অক্ষ বরাবর ত্বরণের মান হল +৯.৮১ alo, যা ডিভাইসের ত্বরণ (০ m/s^2) থেকে অভিকর্ষজ বল (-৯.৮১ m/s^2) বিয়োগ করে পাওয়া যায়।
  • ডিভাইসটি টেবিলে ফ্ল্যাটভাবে রাখা হলে এবং আকাশের দিকে ঠেলে দেওয়া হলে, অ্যাক্সিলারেশন ভ্যালু +৯.৮১-এর বেশি হয়, যা ডিভাইসের অ্যাক্সিলারেশন (+A m/s^2) থেকে অভিকর্ষজ বল (-৯.৮১ 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) থাকে।

এইসব ব্যবহার করে রিডিং ক্যালিব্রেট করা হয়:

  • তাপমাত্রা ক্ষতিপূরণ
  • ফ্যাক্টরি (বা অনলাইন) স্কেল ক্ষতিপূরণ
  • অনলাইন বায়াস ক্যালিব্রেশন (ড্রিপ্ট সরানোর জন্য)

এছাড়াও, জাইরোস্কোপ 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-কে উপযুক্ত অনুমতি দিয়ে ওভাররাইড করে। ফ্রেমওয়ার্ক Android 16 ও তার পরবর্তী যেকোনও ভার্সনের জন্য SENSOR_PERMISSION_READ_HEART_RATE পারমিশন এবং Android 15 ও তার আগের যেকোনও ভার্সনের জন্য SENSOR_PERMISSION_BODY_SENSORS পারমিশন ব্যবহার করে।

লাইট

রিপোর্টিং-মোড: পরিবর্তন-হলে

getDefaultSensor(SENSOR_TYPE_LIGHT) ওয়েক-আপ সেন্সর ছাড়া অন্য কিছু রিটার্ন করে

লাইট সেন্সর SI লাক্স ইউনিটে বর্তমান আলোকসজ্জা রিপোর্ট করে।

sensors_event_t.light-এ পরিমাপের তথ্য রিপোর্ট করা হয়।

প্রক্সিমিটি

রিপোর্টিং-মোড: পরিবর্তন-হলে

সাধারণত এটিকে 'ওয়েক-আপ' সেন্সর হিসেবে সংজ্ঞায়িত করা হয়

getDefaultSensor(SENSOR_TYPE_PROXIMITY) ওয়েক-আপ সেন্সর রিটার্ন করে

প্রক্সিমিটি সেন্সর, সেন্সর থেকে সবচেয়ে কাছে থাকা দৃশ্যমান সারফেসের দূরত্ব রিপোর্ট করে।

Android 4.4 পর্যন্ত, প্রক্সিমিটি সেন্সর সবসময়ই ওয়েক-আপ সেন্সর ছিল, যা প্রক্সিমিটিতে কোনও পরিবর্তন শনাক্ত করলে SoC-কে ওয়েক-আপ করত। Android 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) নন-ওয়েক-আপ সেন্সর রিটার্ন করে

লিনিয়ার অ্যাক্সিলারেশন সেন্সর ডিভাইসের লিনিয়ার অ্যাক্সিলারেশন রিপোর্ট করে সেন্সর ফ্রেমে, এতে গ্র্যাভিটি অন্তর্ভুক্ত থাকে না।

আউটপুটটি হল: অ্যাক্সিলরোমিটারের আউটপুট থেকে গ্র্যাভিটি সেন্সরের আউটপুট বিয়োগ করা। এটি sensors_event_t.acceleration-এর x, y এবং z ফিল্ডে m/s^2 হিসেবে রিপোর্ট করা হয়।

ডিভাইস স্থির থাকলে, সব অ্যাক্সিসের রিডিং ০-এর কাছাকাছি হওয়া উচিত।

ডিভাইসে জাইরোস্কোপ থাকলে, লিনিয়ার অ্যাক্সিলারেশন সেন্সরকে ইনপুট হিসেবে জাইরোস্কোপ ও অ্যাক্সিলারোমিটার ব্যবহার করতে হবে।

ডিভাইসে জাইরোস্কোপ না থাকলে, লিনিয়ার অ্যাক্সিলারেশন সেন্সরকে ইনপুট হিসেবে অ্যাক্সিলারোমিটার ও ম্যাগনেটোমিটার ব্যবহার করতে হবে।

উল্লেখযোগ্য মোশন

আসল ফিজিক্যাল সেন্সর: অ্যাকসিলরোমিটার (বা অন্য কোনও সেন্সর যা কম পাওয়ার ব্যবহার করে)

রিপোর্টিং-মোড: ওয়ান-শট

কম পাওয়ার

এই সেন্সরের শুধুমাত্র ওয়েক-আপ ভার্সন প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) ওয়েক-আপ সেন্সর রিটার্ন করে

উল্লেখযোগ্য মোশন শনাক্ত করার সময় উল্লেখযোগ্য মোশন ডিটেক্টর ট্রিগার করে: এমন একটি মোশন যা ব্যবহারকারীর লোকেশনে পরিবর্তন করতে পারে।

এই ধরনের উল্লেখযোগ্য মোশনের উদাহরণ হল:

  • হাঁটা বা সাইকেল চালানো
  • চলন্ত গাড়ি, কোচ বা ট্রেনে বসে থাকা

গুরুত্বপূর্ণ মোশন ট্রিগার করে না এমন পরিস্থিতির উদাহরণ:

  • ফোন পকেটে আছে এবং ব্যক্তিটি নড়াচড়া করছেন না
  • ফোনটি টেবিলে রাখা আছে এবং কাছাকাছি ট্রাফিক বা ওয়াশিং মেশিনের কারণে টেবিলটি সামান্য কাঁপছে

উচ্চ লেভেলে, লোকেশন নির্ধারণের জন্য বিদ্যুতের ব্যবহার কমাতে সিগনিফিক্যান্ট মোশন ডিটেক্টর ব্যবহার করা হয়। লোকালাইজেশন অ্যালগরিদম যখন শনাক্ত করে যে ডিভাইসটি স্থির আছে, তখন সেটি কম পাওয়ার মোডে সুইচ করতে পারে, যেখানে ব্যবহারকারী লোকেশন পরিবর্তন করলে ডিভাইসটি চালু করার জন্য উল্লেখযোগ্য মোশনের উপর নির্ভর করে।

এই সেন্সরটি অবশ্যই কম পাওয়ারের হতে হবে। এটি বিদ্যুৎ খরচ কমানোর জন্য একটি ট্রেডঅফ করে যা কিছু ক্ষেত্রে ভুল নেগেটিভ ফলাফল দিতে পারে। এটি কয়েকটি কারণে করা হয়:

  • এই সেন্সরের উদ্দেশ্য হল ব্যাটারির চার্জ সাশ্রয় করা।
  • ব্যবহারকারী যখন নড়াচড়া করছেন না (ফলস পজিটিভ) তখন কোনও ইভেন্ট ট্রিগার করলে ব্যাটারি বেশি খরচ হয়, তাই এটি এড়িয়ে চলা উচিত।
  • ব্যবহারকারী মুভ করার সময় কোনও ইভেন্ট ট্রিগার না করা (ফলস নেগেটিভ) হল গ্রহণযোগ্য, তবে এটি বারবার করা হলে চলবে না। ব্যবহারকারী যদি ১০ সেকেন্ড ধরে হাঁটেন, তাহলে সেই ১০ সেকেন্ডের মধ্যে কোনও ইভেন্ট ট্রিগার না করা গ্রহণযোগ্য নয়।

প্রতিটি সেন্সর ইভেন্ট sensors_event_t.data[0]-এ 1 রিপোর্ট করে।

স্টেপ ডিটেক্টর

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাক্সিলরোমিটার (+ সম্ভবত অন্যান্য, যতক্ষণ না কম পাওয়ার থাকে)

রিপোর্টিং-মোড: বিশেষ (প্রতিটি ধাপের জন্য একটি করে ইভেন্ট)

কম পাওয়ার

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 এবং সিস্টেম রিবুট করলেই শুধু শূন্যে রিসেট করা হয়।

ইভেন্টের টাইমস্ট্যাম্প সেই সময়ে সেট করা হয় যখন সেই ইভেন্টের শেষ ধাপটি নেওয়া হয়।

ধাপের সময়সীমা বোঝার জন্য ধাপ ডিটেক্টর সেন্সরের ধরন দেখুন।

ধাপ শনাক্তকারীর তুলনায়, ধাপ গণনকারীর ল্যাটেন্সি বেশি হতে পারে (১০ সেকেন্ড পর্যন্ত)। এই লেটেন্সির কারণে, এই সেন্সরটি খুব নিখুঁতভাবে কাজ করে; পুরো দিন ধরে পরিমাপ করার পরে ধাপে গণনা করা সংখ্যাটি প্রকৃত ধাপে গণনা করা সংখ্যার ১০% এর মধ্যে থাকা উচিত। ব্যবহারকারী কখন হাঁটছেন, দৌড়াচ্ছেন এবং সিঁড়ি দিয়ে উপরে উঠছেন তা স্টেপ ডিটেক্টর ও স্টেপ কাউন্টার, দুটিই শনাক্ত করে। ব্যবহারকারী বাইক, গাড়ি বা অন্য কোনও যানবাহনে থাকলে এগুলি ট্রিগার করা উচিত নয়।

হার্ডওয়্যারকে অবশ্যই নিশ্চিত করতে হবে যে ইন্টার্নাল স্টেপ কাউন্ট কখনও ওভারফ্লো হয় না। হার্ডওয়্যারের ইন্টার্নাল কাউন্টারের ন্যূনতম সাইজ ১৬ বিট হতে হবে। অবিলম্বে ওভারফ্লো (সর্বাধিক প্রতিটি ~২^১৬টি ধাপ) হলে, SoC-কে জাগিয়ে তোলা যেতে পারে যাতে ড্রাইভার কাউন্টার রক্ষণাবেক্ষণ করতে পারে।

ইন্টার‍্যাকশন বিভাগে যেমন বলা হয়েছে, এই সেন্সর কাজ করার সময়, এটি অন্য কোনও সেন্সরকে বিঘ্নিত করবে না, বিশেষ করে, অ্যাকসিলরোমিটার, যা খুব ভালভাবে ব্যবহার করা যেতে পারে।

কোনও নির্দিষ্ট ডিভাইস যদি এই মোডগুলির কোনওটিতে কাজ করতে না পারে, তাহলে HAL-কে এই সেন্সর টাইপ সম্পর্কে রিপোর্ট করা যাবে না। অর্থাৎ, HAL-এ এই সেন্সর "এমুলেট" করা গ্রহণযোগ্য নয়।

এই সেন্সরটি অবশ্যই কম পাওয়ারের হতে হবে। অর্থাৎ, হার্ডওয়্যারে যদি স্টেপ ডিটেকশন করা না যায়, তাহলে এই সেন্সরকে ডিফাইন করা উচিত নয়। বিশেষ করে, স্টেপ কাউন্টার চালু থাকলে এবং অ্যাকসিলরোমিটার চালু না থাকলে, শুধুমাত্র স্টেপ ইন্টারাপ্ট ট্রিগার করবে (অ্যাকসিলরোমিটার ডেটা নয়)।

টিল্ট ডিটেক্টর

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাক্সিলরোমিটার (+ সম্ভবত অন্যান্য, যতক্ষণ না কম পাওয়ার থাকে)

রিপোর্টিং-মোড: বিশেষ

কম পাওয়ার

এই সেন্সরের শুধুমাত্র 'ওয়েক-আপ' ভার্সন প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) ওয়েক-আপ সেন্সর রিটার্ন করে

টিল্ট ইভেন্ট শনাক্ত করা হলে, টিল্ট ডিটেক্টর প্রতিবার একটি ইভেন্ট তৈরি করে।

টিল্ট ইভেন্টকে ২-সেকেন্ড উইন্ডো অ্যাভারেজের দিকনির্দেশ দ্বারা সংজ্ঞায়িত করা হয় সেন্সর অ্যাক্টিভেট হওয়ার পর থেকে বা শেষ ইভেন্ট থেকে গ্র্যাভিটি অন্তত ৩৫ ডিগ্রি পরিবর্তিত হয় জেনারেট করা হয়েছে। অ্যালগরিদমটি এখানে দেওয়া হল:

  • reference_estimated_gravity = অ্যাক্টিভেশনের পরে প্রথম সেকেন্ডে অ্যাক্সিলরোমিটার পরিমাপের গড় অথবা শেষবার টিল্ট ইভেন্ট জেনারেট করার সময় আনুমানিক গ্র্যাভিটি।
  • current_estimated_gravity = গত ২ সেকেন্ডে অ্যাকসিলারোমিটার পরিমাপের গড়।
  • ট্রিগার করুন যখন angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

ফোন অরিয়েন্টেশনে কোনও পরিবর্তন না করে বড় ধরনের অ্যাক্সিলারেশন হলে, তা টিল্ট ইভেন্ট ট্রিগার করবে না। যেমন, গাড়ি চালানোর সময় হঠাৎ করে মোড় নেওয়া বা খুব জোরে অ্যাক্সিলারেট করলে টিল্ট ইভেন্ট ট্রিগার হওয়ার কথা নয়, যদিও গড় অ্যাক্সিলারেশনের অ্যাঙ্গেল ৩৫ ডিগ্রির বেশি পরিবর্তিত হতে পারে। সাধারণত, এই সেন্সরটি শুধুমাত্র অ্যাক্সিলোমিটারের সাহায্যে প্রয়োগ করা হয়। অন্যান্য সেন্সরও ব্যবহার করা যেতে পারে যদি সেগুলি বিদ্যুতের খরচ উল্লেখযোগ্যভাবে না বাড়ায়। এটি একটি কম পাওয়ারের সেন্সর যা SoC-কে সাসপেন্ড মোডে যেতে দেয়। HAL-এ এই সেন্সরটি এমুলেট করবেন না। প্রতিটি সেন্সর ইভেন্ট 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 ৯৫%-এর কম হতে হবে প্রতিবার। এই সেন্সরকে অবশ্যই প্রধান ওরিয়েন্টেশন পরিবর্তন ইনপুট হিসেবে জাইরোস্কোপ ব্যবহার করতে হবে।

এছাড়াও, এই সেন্সর জাইরোস্কোপের ড্রাফ্ট পূরণ করতে অ্যাক্সিলরোমিটার ও ম্যাগনেটোমিটার ইনপুট ব্যবহার করে এবং এটি শুধুমাত্র অ্যাক্সিলরোমিটার ও ম্যাগনেটোমিটার ব্যবহার করে ইমপ্লিমেন্ট করা যায় না।

গেম রোটেশন ভেক্টর

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাকসিলরোমিটার ও জাইরোস্কোপ (ম্যাগনেটোমিটার নেই)

রিপোর্টিং-মোড: অবিরাম

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) নন-ওয়েক-আপ সেন্সর রিটার্ন করে

গেম রোটেশন ভেক্টর সেন্সর, রোটেশন ভেক্টর সেন্সরের মতোই, তবে এটি জিওম্যাগনেটিক ফিল্ড ব্যবহার করে না। তাই Y অক্ষ উত্তর দিকে নির্দেশ করে না, বরং অন্য কোনও রেফারেন্সের দিকে নির্দেশ করে। Z অক্ষের চারপাশে জাইরোস্কোপের ড্রিফ্টের মতো একই অর্ডারের ম্যাগনিটিউড দ্বারা সেই রেফারেন্সকে ড্রিফ্ট করার অনুমতি দেওয়া হয়।

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 হিসেবে রিপোর্ট করা হয়।

ডিভাইসটি স্থির অবস্থায় থাকলে, গ্র্যাভিটি সেন্সরের আউটপুট অ্যাকসিলরোমিটারের আউটপুটের মতোই হতে হবে। পৃথিবীতে, এর মান হল প্রায় ৯.৮ মি/সেকেন্ড^২।

ডিভাইসে জাইরোস্কোপ থাকলে, গ্র্যাভিটি সেন্সরকে ইনপুট হিসেবে জাইরোস্কোপ ও অ্যাক্সিলরোমিটার ব্যবহার করতে হবে।

ডিভাইসে জাইরোস্কোপ না থাকলে, গ্র্যাভিটি সেন্সরকে ইনপুট হিসেবে অ্যাক্সিলরোমিটার ও ম্যাগনেটোমিটার ব্যবহার করতে হবে।

ভূচুম্বকীয় ঘূর্ণন ভেক্টর

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাকসিলরোমিটার ও ম্যাগনেটোমিটার (কোনও জাইরোস্কোপ নেই)

রিপোর্টিং-মোড: নিরবচ্ছিন্ন

কম পাওয়ার

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) ওয়েক-আপ সেন্সর ছাড়া অন্য কিছু রিটার্ন করে

জিওম্যাগনেটিক রোটেশন ভেক্টর হল রোটেশন ভেক্টর সেন্সরের মতো, তবে এতে ম্যাগনেটোমিটার ব্যবহার করা হয়, জাইরোস্কোপ নয়।

এই সেন্সর ম্যাগনেটোমিটারের উপর ভিত্তি করে তৈরি হতে হবে। এটি জাইরোস্কোপ ব্যবহার করে প্রয়োগ করা যায় না এবং জাইরোস্কোপ ইনপুট এই সেন্সর ব্যবহার করতে পারে না।

sensors_event_t.data[0-4] কীভাবে সেট করতে হয় সেই সম্পর্কে বিস্তারিত জানতে রোটেশন ভেক্টর সেন্সর দেখুন।

রোটেশন ভেক্টর সেন্সরের মতোই, হেডিং সংক্রান্ত ভুল অবশ্যই আনুমানিক নির্ভুলতার (sensors_event_t.data[4]) ৯৫% সময়ের চেয়ে কম হতে হবে।

এই সেন্সরটি অবশ্যই কম পাওয়ারের হতে হবে, তাই এটি হার্ডওয়্যারে প্রয়োগ করতে হবে।

ওরিয়েন্টেশন (বন্ধ করা হয়েছে)

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাকসিলরোমিটার, ম্যাগনেটোমিটার ও (উপস্থিত থাকলে) জাইরোস্কোপ

রিপোর্টিং-মোড: নিরবচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_ORIENTATION) ওয়েক-আপ সেন্সর ছাড়া অন্য কিছু রিটার্ন করে

মনে রাখবেন: এটি একটি পুরনো সেন্সর টাইপ যা Android SDK-তে বন্ধ করে দেওয়া হয়েছে। এটি রোটেশন ভেক্টর সেন্সর দ্বারা প্রতিস্থাপিত হয়েছে, যা আরও স্পষ্টভাবে সংজ্ঞায়িত। সম্ভব হলে, ওরিয়েন্টেশন সেন্সরের পরিবর্তে রোটেশন ভেক্টর সেন্সর ব্যবহার করুন।

একটি ওরিয়েন্টেশন সেন্সর ডিভাইসের অ্যাটিটিউড সম্পর্কে রিপোর্ট করে। মাপগুলি sensors_event_t.orientation-এর x, y ও z ফিল্ডে ডিগ্রিতে দেখানো হয়:

  • sensors_event_t.orientation.x: অ্যাজিমথ, এর মধ্যে কোণ ম্যাগনেটিক নর্থ দিক এবং Y অক্ষ, Z অক্ষের চারপাশে (0<=azimuth<360)। ০=উত্তর, ৯০=পূর্ব, ১৮০=দক্ষিণ, ২৭০=পশ্চিম।
  • 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-এর মাধ্যমে এর রিডিং কতটা সঠিক হবে বলে আশা করা যায় তা রিপোর্ট করে। এই ফিল্ডের সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য SensorManager-এর SENSOR_STATUS_* কনস্ট্যান্ট দেখুন।

ক্যালিব্রেট না করা সেন্সর

ক্যালিব্রেট না করা সেন্সর আরও বেশি কাঁচা ফলাফল প্রদান করে এবং এতে কিছু পক্ষপাতিত্ব অন্তর্ভুক্ত থাকতে পারে তবে ক্যালিব্রেশনের মাধ্যমে প্রয়োগ করা সংশোধন থেকে কম "জাম্প" থাকে। কিছু অ্যাপ এই ক্যালিব্রেট না করা ফলাফলকে আরও মসৃণ ও নির্ভরযোগ্য হিসেবে পছন্দ করতে পারে। যেমন, কোনও অ্যাপ যদি নিজের সেন্সর ফিউশন পরিচালনা করার চেষ্টা করে, তাহলে ক্যালিব্রেশন চালু করলে ফলাফল আসলে বিকৃত হতে পারে।

অ্যাকসিলরোমিটার ক্যালিব্রেট করা হয়নি

অন্তর্নিহিত ফিজিক্যাল সেন্সর: অ্যাকসিলরোমিটার

রিপোর্টিং-মোড: অবিরাম

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) ওয়েক-আপ সেন্সর রিটার্ন করে

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

এই সেন্সরটি অবশ্যই কম পাওয়ারের হতে হবে, কারণ এটি সম্ভবত ২৪/৭ অ্যাক্টিভেট করা হবে।

প্রতিটি সেন্সর ইভেন্ট 1 ইন sensors_event_t.data[0] রিপোর্ট করে।

পিক-আপ জেসচার

আন্ডারলাইং ফিজিক্যাল সেন্সর: সংজ্ঞায়িত নয় (কম পাওয়ারের যেকোনও কিছু)

রিপোর্টিং-মোড: ওয়ান-শট

কম পাওয়ার

এই সেন্সরের শুধুমাত্র ওয়েক-আপ ভার্সন প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) ওয়েক-আপ সেন্সর রিটার্ন করে

ডিভাইসটি যেখানেই থাকুক না কেন (ডেস্ক, পকেট, ব্যাগ), সেটি হাতে নিলে পিক-আপ জেসচার সেন্সর ট্রিগার হয়।

প্রতিটি সেন্সর ইভেন্ট 1 ইন sensors_event_t.data[0] রিপোর্ট করে।

এক ঝলক দেখার জেসচার

আসল ফিজিক্যাল সেন্সর: সংজ্ঞায়িত নয় (কম পাওয়ারের যেকোনও কিছু)

রিপোর্টিং-মোড: ওয়ান-শট

কম পাওয়ার

এই সেন্সরের শুধুমাত্র 'ওয়েক-আপ' ভার্সন প্রয়োগ করুন।

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) ওয়েক-আপ সেন্সর রিটার্ন করে

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

এই সেন্সরটি অবশ্যই কম পাওয়ারের হতে হবে, কারণ এটি ২৪/৭ চালু থাকার সম্ভাবনা রয়েছে। প্রতিটি সেন্সর ইভেন্ট 1 in sensors_event_t.data[0] রিপোর্ট করে।

সীমিত অ্যাক্সিস IMU সেন্সর

Android 13 থেকে উপলভ্য, সীমিত অ্যাক্সিস IMU সেন্সর হল এমন সেন্সর যা সেইসব ব্যবহারের ক্ষেত্রে কাজ করে যেখানে তিনটি অ্যাক্সিস (x, y, z) উপলভ্য থাকে না। Android-এ স্ট্যান্ডার্ড IMU-এর ধরন (যেমন SENSOR_TYPE_ACCELEROMETER এবং SENSOR_TYPE_GYROSCOPE) ধরে নেয় যে তিনটি অক্ষই কাজ করে। তবে, সব ফর্ম ফ্যাক্টর এবং ডিভাইসে ৩-অ্যাক্সিস অ্যাক্সেলেরোমিটার এবং ৩-অ্যাক্সিস জাইরোস্কোপ কাজ করে না।

অ্যাক্সিলারোমিটার সীমিত অক্ষ

আন্ডারলায়িং ফিজিক্যাল সেন্সর: অ্যাক্সিলরোমিটার

রিপোর্টিং-মোড: অবিরাম

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) নন-ওয়েক-আপ সেন্সর রিটার্ন করে

অ্যাকসিলরোমিটার লিমিটেড অ্যাক্সেস সেন্সর TYPE_ACCELEROMETER-এর সমতুল্য, তবে এটি এমন ক্ষেত্রে কাজ করে যেখানে এক বা দুটি অ্যাক্সেস কাজ করে না।

সেন্সর দ্বারা রিপোর্ট করা শেষ তিনটি সেন্সর ইভেন্ট ভ্যালু থেকে বোঝা যায় যে x, y ও z অ্যাক্সিসের জন্য অ্যাক্সিলারেশন ভ্যালু কাজ করে কিনা। 1.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

অন্তর্নিহিত ফিজিক্যাল সেন্সর: ৩-অ্যাক্সিস অ্যাকসিলরোমিটার, ৩-অ্যাক্সিস জাইরোস্কোপ, ৩-অ্যাক্সিস অ্যাকসিলরোমিটার আনক্যালিব্রেটেড এবং ৩-অ্যাক্সিস জাইরোস্কোপ আনক্যালিব্রেটেড সেন্সরের যেকোনও কম্বিনেশন।

রিপোর্টিং-মোড: অবিরাম

একটি কম্পোজিট সীমিত অক্ষ IMU সেন্সর একটি সীমিত অক্ষ IMU সেন্সরের সমতুল্য কিন্তু HAL-এ সমর্থিত হওয়ার পরিবর্তে, এটি 3-অক্ষ সেন্সর ডেটাকে সমতুল্য সীমিত অক্ষ ভেরিয়েন্টে রূপান্তর করে। এই কম্পোজিট সেন্সর শুধুমাত্র অটোমোটিভ ডিভাইসের জন্য চালু করা হয়।

নিচের সারণীতে একটি স্ট্যান্ডার্ড ৩-অ্যাক্সিস অ্যাক্সিলরোমিটার থেকে কম্পোজিট সীমিত অ্যাক্সিস অ্যাক্সিলরোমিটারে কনভার্সনের উদাহরণ দেখানো হয়েছে।

SENSOR_TYPE_ACCELEROMETER-এর জন্য SensorEvent ভ্যালু যেমন, SENSOR_TYPE_ACCELEROMETER SensorEvent কম্পোজিট SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent
values[0]

-০.০৬৫

-০.০৬৫

values[1]

০.০৭৮

০.০৭৮

values[2]

৯.৮০৮

৯.৮০৮

values[3]

N/A

১.০

values[4]

N/A

১.০

values[5]

N/A

১.০

অটোমোটিভ সেন্সর

অটোমোটিভ ব্যবহারের ক্ষেত্রে কাজ করে এমন সেন্সর।

শিরোনাম

আসল ফিজিক্যাল সেন্সর: জিপিএস, ম্যাগনেটোমিটার, অ্যাকসিলরোমিটার ও জাইরোস্কোপের যেকোনও কম্বিনেশন।

রিপোর্টিং-মোড: নিরবচ্ছিন্ন

getDefaultSensor(SENSOR_TYPE_HEADING) নন-ওয়েক-আপ সেন্সর রিটার্ন করে

Android 13 থেকে উপলভ্য, হেডিং সেন্সর ডিভাইসটি প্রকৃত উত্তর দিকের তুলনায় কোন দিকে পয়েন্ট করছে তা ডিগ্রিতে পরিমাপ করে। হেডিং সেন্সরে দুটি SensorEvent ভ্যালু থাকে। একটি হল পরিমাপ করা ডিভাইসের হেডিং এবং অন্যটি হল প্রদত্ত হেডিং ভ্যালুর সঠিকতা।

এই সেন্সর দ্বারা রিপোর্ট করা হেডিং ভ্যালু অবশ্যই 0.0 (অন্তর্ভুক্ত) এবং 360.0 (বাদ দিয়ে)-এর মধ্যে হতে হবে, যেখানে 0 উত্তর, 90 পূর্ব, 180 দক্ষিণ, এবং 270 পশ্চিম দিক নির্দেশ করে।

এই সেন্সরের নির্ভুলতা ৬৮ শতাংশ কনফিডেন্স লেভেলে নির্ধারণ করা হয়। যেসব ক্ষেত্রে আসল ডিস্ট্রিবিউশন হল গসিয়ান নরমাল, সেখানে অ্যাকুরেসি হল একটি স্ট্যান্ডার্ড ডেভিয়েশন। যেমন, হেডিং সেন্সর যদি ৬০ ডিগ্রি হেডিং ভ্যালু এবং ১০ ডিগ্রি অ্যাকুরেসি ভ্যালু রিটার্ন করে, তাহলে প্রকৃত হেডিং ৫০ ডিগ্রি থেকে ৭০ ডিগ্রির মধ্যে হওয়ার ৬৮ শতাংশ সম্ভাবনা থাকে।