মোবাইল অ্যাপ্লিকেশনে পেডোমিটার (পদসংখ্যক) হল একটি সফ্টওয়্যার-হার্ডওয়্যার প্রক্রিয়া যা অ্যাক্সেলেরোমিটার এবং জাইরোস্কোপের ডেটার ভিত্তিতে ব্যবহারকারীর পদক্ষেপ গণনা করে। আধুনিক স্মার্টফোনগুলি সেন্সরের সাথে মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে হাঁটা, দৌড়ানো এবং অন্যান্য শারীরিক কার্যকলাপ সঠিকভাবে সনাক্ত করে। Apple HealthKit Documentation, 2025 অনুসারে, আধুনিক ডিভাইসে সাধারণ হাঁটার সময় পদ গণনার নির্ভুলতা 95–97% পর্যন্ত পৌঁছায়।
মূল বিষয়
পেডোমিটার মোবাইল অ্যাপ্লিকেশনে একটি ফাংশন যা স্মার্টফোনের বিল্ট-ইন মোশন সেন্সর থেকে প্রাপ্ত ডেটার ভিত্তিতে ব্যবহারকারীর পদক্ষেপের সংখ্যা নির্ধারণ করে। অতীতের যান্ত্রিক পেডোমিটারের বিপরীতে, মোবাইল পেডোমিটার নির্ভুল লোকোমোশন গণনার জন্য মাইক্রোইলেক্ট্রোমেকানিক্যাল সেন্সর (MEMS) এবং ডিজিটাল সিগন্যাল প্রসেসিং অ্যালগরিদম ব্যবহার করে। আধুনিক বাস্তবায়নগুলি কেবল পদক্ষেপ গণনা করে না বরং কার্যকলাপ শ্রেণীবদ্ধও করে: হাঁটা, দৌড়ানো, সিঁড়ি বেয়ে ওঠা।
পেডোমিটার-এর মোবাইল ডিভাইসে সংহতকরণ 2013 সালে iPhone 5s-এ M7 মোশন কোপ্রসেসরের আবির্ভাবের মাধ্যমে সম্ভব হয়েছিল, যা ন্যূনতম শক্তি খরচে ক্রমাগত সেন্সর থেকে ডেটা সংগ্রহ করত। আজ, সমস্ত আধুনিক স্মার্টফোনে সেন্সর হাব স্তরে পদক্ষেপ গণনার জন্য হার্ডওয়্যার সমর্থন রয়েছে — একটি ডেডিকেটেড চিপ যা প্রধান প্রসেসর জাগ্রত না করেই ইনর্শিয়াল সেন্সর ডেটা প্রক্রিয়া করে।
স্মার্টফোনে পদক্ষেপ গণনা অ্যাক্সেলেরোমিটার সিগন্যাল বিশ্লেষণের উপর ভিত্তি করে তৈরি, যা তিনটি লম্ব অক্ষে (X, Y, Z) ডিভাইসের ত্বরণ পরিমাপ করে। হাঁটার সময়, প্রতিটি পদক্ষেপ একটি চরিত্রগত ত্বরণ প্যাটার্ন তৈরি করে: প্রথমে পা ওঠানোর সময় উপরের দিকে শীর্ষ, তারপর অবতরণের সময় নিচের দিকে শীর্ষ। পদক্ষেপের হার (ক্যাডেন্স) হাঁটার জন্য 100–130 পদক্ষেপ/মিনিট এবং দৌড়ানোর জন্য 150–180 পদক্ষেপ/মিনিট, যখন ত্বরণের প্রশস্ততা 2–6 মি/সে²।
অ্যাক্সেলেরোমিটারের কাঁচা সিগন্যালে শব্দ এবং উচ্চ-ফ্রিকোয়েন্সি হস্তক্ষেপ থাকে, তাই প্রক্রিয়াকরণের প্রথম ধাপ হল 3–5 Hz কাটঅফ ফ্রিকোয়েন্সি সহ লো-পাস ফিল্টারিং। ফিল্টারিংয়ের পর, ত্বরণ ভেক্টর গণনা করা হয়: a = sqrt(x² + y² + z²), যা ডিভাইসের অবস্থান নির্বিশেষে গতি-সম্পর্কিত ত্বরণকে আলাদা করে। তারপর অ্যালগরিদম সিগন্যালে স্থানীয় সর্বোচ্চ সনাক্ত করে — প্রতিটি সর্বোচ্চ একটি পদক্ষেপের সাথে মিলে যায়।
মিথ্যা পজিটিভ কমানোর জন্য (যেমন পরিবহনে কম্পনের কারণে), অতিরিক্ত মানদণ্ড প্রযোজ্য: ন্যূনতম পদক্ষেপ প্রশস্ততা (সাধারণত >1.2 মি/সে²), পদক্ষেপের মধ্যে ন্যূনতম ব্যবধান (হাঁটার জন্য 300–400 মি.সে.), এবং অটোকোরিলেশনের মাধ্যমে সিগন্যাল পর্যায়ক্রমিকতা যাচাই। যদি শীর্ষগুলির মধ্যে সময়ের ব্যবধান অনিয়মিত হয়, তবে ক্রমটি এলোমেলো গতি হিসাবে চিহ্নিত করা হয় এবং পদক্ষেপ হিসাবে গণনা করা হয় না।
মৌলিক পদক্ষেপ সনাক্তকরণ অ্যালগরিদম থ্রেশহোল্ড সনাক্তকরণ পদ্ধতি ব্যবহার করে: সিস্টেম সেই মুহূর্তগুলি খোঁজে যখন অ্যাক্সেলেরোমিটার সিগন্যাল একটি নির্ধারিত সীমা অতিক্রম করে এবং তারপর বিশ্রামের স্তরে ফিরে আসে। এই ধরনের প্রতিটি ঘটনাকে সম্ভাব্য পদক্ষেপ হিসাবে বিবেচনা করা হয়। দুটি পদ্ধতি আছে: পিক ডিটেকশন এবং জিরো-ক্রসিং। পিক ডিটেকশন সিগন্যালের সর্বোচ্চ ধরে, যখন জিরো-ক্রসিং সিগন্যালের গড় মান অতিক্রম করার মুহূর্ত সনাক্ত করে, যা পদক্ষেপের প্রশস্ততার উপর কম নির্ভরশীল।
আধুনিক পদক্ষেপ গণনা অ্যালগরিদম একটি অভিযোজিত থ্রেশহোল্ড ব্যবহার করে যা স্বয়ংক্রিয়ভাবে ব্যবহারকারীর চলার ধরনের সাথে সামঞ্জস্য করে। সিস্টেম শেষ 2–3 সেকেন্ডে সিগন্যাল ভ্যারিয়েন্স বিশ্লেষণ করে এবং রুট মিন স্কয়ার (RMS) একটি সহগ দ্বারা গুণ করে গতিশীল থ্রেশহোল্ড গণনা করে। এটি কার্যকলাপের ধরণের মধ্যে ক্রস-ক্যালিব্রেশন ছাড়াই ধীর হাঁটা এবং জোরালো দৌড় উভয়ের সময় সঠিক পদক্ষেপ গণনার অনুমতি দেয়।
আধুনিক পেডোমিটার বাস্তবায়ন শুধু পিক ডিটেকশনই নয়, গতির প্যাটার্ন শ্রেণীবদ্ধ করতে মেশিন লার্নিংও ব্যবহার করে। নিউরাল নেটওয়ার্ক মডেলগুলি বিভিন্ন পরিস্থিতি থেকে বাস্তব গতির হাজার হাজার ঘন্টার রেকর্ডিংয়ে প্রশিক্ষিত হয়: সমতল পৃষ্ঠে হাঁটা, সিঁড়ি বেয়ে ওঠা, দৌড়ানো, পরিবহনে ভ্রমণ। ইনপুট বৈশিষ্ট্যগুলির মধ্যে অ্যাক্সেলেরোমিটার এবং জাইরোস্কোপ টাইম সিরিজ অন্তর্ভুক্ত, এবং আউটপুট হল সম্ভাব্যতা যে বর্তমান সিগন্যাল সেগমেন্ট মানব লোকোমোশনের সাথে মিলে যায়।
Google Activity Recognition গবেষণা অনুসারে, কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN) ভিত্তিক মডেলগুলি বেঞ্চমার্ক ডেটাসেটে 98% হাঁটা শনাক্তকরণ নির্ভুলতা অর্জন করে। Apple ডিভাইসে, 100,000 এর বেশি স্বেচ্ছাসেবকের ডেটাতে প্রশিক্ষিত Activity Classification মডেলের সাথে Core ML ব্যবহার করা হয়। অপটিমাইজ করা মডেলগুলি সরাসরি ডিভাইসে চলে (on-device inference), যা তাৎক্ষণিক প্রক্রিয়াকরণ নিশ্চিত করে এবং ব্যবহারকারীর গোপনীয়তা রক্ষা করে।
import CoreMotion
class PedometerObserver {
private let pedometer = CMPedometer()
func startTracking() {
guard CMPedometer.isStepCountingAvailable() else { return }
pedometer.startUpdates(from: Date()) { data, error in
guard let data = data else { return }
let steps = data.numberOfSteps.intValue
let distance = data.distance?.doubleValue
let floorsAscended = data.floorsAscended?.intValue
// পদক্ষেপ সংখ্যা সহ UI আপডেট করা
DispatchQueue.main.async {
// self.stepsLabel.text = "\(steps) পদক্ষেপ"
}
}
}
func stopTracking() {
pedometer.stopUpdates()
}
}
iOS-এ পেডোমিটারে অ্যাক্সেসের জন্য Core Motion ফ্রেমওয়ার্ক থেকে CMPedometer ক্লাস ব্যবহার করা হয়। CMPedometer শুধু পদক্ষেপের সংখ্যাই নয়, বরং অতিক্রান্ত দূরত্ব, তলার সংখ্যা (আরোহণ), চলার গতি এবং কার্যকলাপের সময়কালও প্রদান করে। ডেটা রিয়েল টাইমে (startUpdates) এবং অতীতের যেকোনো সময়ের জন্য (queryPedometerData) উভয়ভাবেই উপলব্ধ। মোশন কোপ্রসেসর (M-সিরিজ) হার্ডওয়্যারে সেন্সর ডেটা প্রক্রিয়া করে, যা সফ্টওয়্যার প্রক্রিয়াকরণের তুলনায় শক্তি খরচ 80% কমায়।
Android-এ পেডোমিটার কার্যকারিতা দুটি হার্ডওয়্যার সেন্সরের মাধ্যমে বাস্তবায়িত: TYPE_STEP_COUNTER (বুট থেকে ক্রমবর্ধমান পদক্ষেপ কাউন্টার) এবং TYPE_STEP_DETECTOR (প্রতি পদক্ষেপে ইভেন্ট জেনারেশন)। TYPE_STEP_COUNTER-এর ক্যালিব্রেশনের প্রয়োজন নেই এবং এটি প্রসেসর শক্তি খরচ করে না — ডেটা সেন্সর হাব স্তরে হার্ডওয়্যারে আপডেট হয়। দৈনিক পদক্ষেপের সঞ্চিত পরিসংখ্যান অ্যাক্সেসের জন্য, DataType.TYPE_STEP_COUNT_DELTA রেকর্ড সহ Google Fit API ব্যবহার করা হয়।
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
class StepCounter(
private val sensorManager: SensorManager
) : SensorEventListener {
private var totalSteps = 0
private var previousSteps = -1
fun startListening() {
val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
sensor?.let {
sensorManager.registerListener(this, it, SensorManager.SENSOR_DELAY_NORMAL)
}
}
override fun onSensorChanged(event: SensorEvent) {
if (previousSteps < 0) {
previousSteps = event.values[0].toInt()
}
val currentSteps = event.values[0].toInt()
totalSteps = currentSteps - previousSteps
}
fun getStepCount(): Int = totalSteps
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}
পেডোমিটারের নির্ভুলতা বিভিন্ন কারণের উপর নির্ভর করে: স্মার্টফোনের অবস্থান (হাতে, পকেটে বা ব্যাগে), কার্যকলাপের ধরন (হাঁটা, দৌড়ানো, সিঁড়ি বেয়ে ওঠা) এবং সেন্সরের গুণমান। স্মার্টফোন প্যান্টের পকেটে রাখলে নির্ভুলতা 93–97% পর্যন্ত পৌঁছায়; ব্যাগ বা ব্যাকপ্যাকে তা কমে 70–85% হয়। ব্যবহারকারীর চলার ধরনও নির্ভুলতাকে প্রভাবিত করে: কম ত্বরণ প্রশস্ততা সহ টেনে চলা গতি স্থির পদক্ষেপের চেয়ে বেশি ত্রুটি তৈরি করে।
মোবাইল পেডোমিটারের প্রধান সীমাবদ্ধতাগুলির মধ্যে অন্তর্ভুক্ত: খুব ধীর গতিতে (<1.5 কিমি/ঘন্টা) পদক্ষেপ গণনা করতে অক্ষমতা, পরিবহন ভ্রমণ থেকে মিথ্যা পজিটিভ, কম গতিতে দৌড়ানোর (জগিং) সময় নির্ভুলতা হ্রাস, এবং কথা বলার সময় অঙ্গভঙ্গির প্রভাব। ত্রুটি কমানোর জন্য, আধুনিক অ্যাপ্লিকেশনগুলি সেন্সর (অ্যাক্সেলেরোমিটার + জাইরোস্কোপ + ব্যারোমিটার) এবং আর্টিফ্যাক্ট ফিল্টার করার জন্য মেশিন লার্নিং-এর সমন্বয় ব্যবহার করে। ব্যারোমিটার, উদাহরণস্বরূপ, সিঁড়ি বেয়ে ওঠা এবং উচ্চতা পরিবর্তন সনাক্ত করতে সাহায্য করে, লিফটে মিথ্যা পদক্ষেপ বাদ দিয়ে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
ফোনে পেডোমিটার অ্যাক্সেলেরোমিটার ব্যবহার করে, যা প্রতিটি পদক্ষেপে ত্বরণ নিবন্ধন করে। অ্যালগরিদম তিনটি অক্ষে ত্বরণ শীর্ষ বিশ্লেষণ করে, শব্দ ফিল্টার করে এবং পদক্ষেপের সংখ্যা নির্ধারণ করে। আধুনিক মডেলগুলি নির্ভুলতা উন্নত করতে এবং কার্যকলাপ শ্রেণীবদ্ধ করতে জাইরোস্কোপ এবং মেশিন লার্নিংও ব্যবহার করে।
স্মার্টফোন প্যান্টের পকেটে রাখলে, সাধারণ হাঁটার সময় নির্ভুলতা 95–97% পর্যন্ত পৌঁছে। ব্যাগ বা ব্যাকপ্যাকে নির্ভুলতা কমে 70–85% হয়। চলার ধরন এবং পৃষ্ঠের ধরনও নির্ভুলতাকে প্রভাবিত করে — অসম ভূখণ্ড 10–15% পর্যন্ত ত্রুটি সৃষ্টি করতে পারে।
হ্যাঁ, পেডোমিটার ইন্টারনেট সংযোগ ছাড়াই সম্পূর্ণ অফলাইনে কাজ করে। সমস্ত গণনা বিল্ট-ইন সেন্সর ব্যবহার করে ডিভাইসে সঞ্চালিত হয়। ফিটনেস অ্যাপের ক্লাউড পরিষেবার সাথে ডেটা সিঙ্ক্রোনাইজ করতে বা রুট ম্যাপ প্রদর্শনের জন্য শুধুমাত্র ইন্টারনেটের প্রয়োজন হতে পারে।
বিভিন্ন অ্যাপ সেন্সর ডেটা প্রক্রিয়াকরণ, সনাক্তকরণ থ্রেশহোল্ড এবং ফিল্টারিং পদ্ধতির জন্য বিভিন্ন অ্যালগরিদম ব্যবহার করে। কিছু অ্যাপ কাঁচা অ্যাক্সেলেরোমিটার ডেটার ভিত্তিতে পদক্ষেপ গণনা করে, অন্যগুলি সিস্টেম API (TYPE_STEP_COUNTER) ব্যবহার করে, এবং গণনার পার্থক্য 10–15% পর্যন্ত পৌঁছাতে পারে।
Android-এ পেডোমিটারে অ্যাক্সেস পেতে, Sensor API-র মাধ্যমে TYPE_STEP_COUNTER সেন্সর ব্যবহার করুন — এটি ডিভাইসের শেষ রিবুটের পর থেকে ক্রমবর্ধমান পদক্ষেপ সংখ্যা প্রদান করে। একটি নির্দিষ্ট দিনের পদক্ষেপ অ্যাক্সেস করতে, TYPE_STEP_COUNT_DELTA ডেটা টাইপ সহ Google Fit API সংহত করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন