موبائل ایپلیکیشنز میں پیڈومیٹر (قدم شمار) ایک سافٹ ویئر ہارڈویئر میکانزم ہے جو ایکسلرومیٹر اور جائروسکوپ کے ڈیٹا کی بنیاد پر صارف کے قدموں کی گنتی کرتا ہے۔ جدید اسمارٹ فونز مشین لرننگ الگورتھم کو سینسرز کے ساتھ ملا کر چلنے، دوڑنے اور دیگر جسمانی سرگرمیوں کی درست شناخت کرتے ہیں۔ Apple HealthKit Documentation، 2025 کے مطابق، جدید آلات پر عام چلنے کے دوران قدموں کی گنتی کی درستگی 95–97% تک پہنچ جاتی ہے۔
اہم نکات
پیڈومیٹر (قدم شمار) موبائل ایپلیکیشنز میں ایک فنکشن ہے جو اسمارٹ فون کے بلٹ ان موشن سینسرز سے حاصل کردہ ڈیٹا کی بنیاد پر صارف کے قدموں کی تعداد کا تعین کرتا ہے۔ ماضی کے مکینیکل پیڈومیٹر کے برعکس، موبائل پیڈومیٹر درست لوکوموشن گنتی کے لیے مائیکرو الیکٹرو مکینیکل سینسرز (MEMS) اور ڈیجیٹل سگنل پروسیسنگ الگورتھم استعمال کرتا ہے۔ جدید نفاذ نہ صرف قدم گنتے ہیں بلکہ سرگرمی کی درجہ بندی بھی کرتے ہیں: چلنا، دوڑنا، سیڑھیاں چڑھنا۔
پیڈومیٹر کا موبائل آلات میں انضمام 2013 میں iPhone 5s میں M7 موشن کواکسیسر کی آمد سے ممکن ہوا، جو کم سے کم بجلی کی کھپت کے ساتھ مسلسل سینسرز سے ڈیٹا اکٹھا کرتا تھا۔ آج، تمام جدید اسمارٹ فونز میں سینسر ہب کی سطح پر قدم گنتی کے لیے ہارڈویئر سپورٹ موجود ہے — ایک مخصوص چپ جو مرکزی پروسیسر کو جگائے بغیر جڑی سینسر ڈیٹا پروسیس کرتی ہے۔
اسمارٹ فون پر قدم گنتی ایکسلرومیٹر سگنلز کے تجزیہ پر مبنی ہے، جو تین عمودی محوروں (X، Y، Z) پر ڈیوائس کی ایکسلریشن کی پیمائش کرتا ہے۔ چلتے وقت، ہر قدم ایک خصوصیت کا ایکسلریشن پیٹرن بناتا ہے: پہلے ٹانگ اٹھانے پر اوپر کی طرف چوٹی، پھر لینڈنگ پر نیچے کی طرف چوٹی۔ قدموں کی رفتار (کیڈنس) چلنے کے لیے 100–130 قدم/منٹ اور دوڑنے کے لیے 150–180 قدم/منٹ ہے، جبکہ ایکسلریشن کا طول 2–6 m/s² ہے۔
ایکسلرومیٹر سے خام سگنل میں شور اور ہائی فریکوئنسی مداخلت ہوتی ہے، لہذا پروسیسنگ کا پہلا مرحلہ 3–5 Hz کٹ آف فریکوئنسی کے ساتھ لو-پاس فلٹرنگ ہے۔ فلٹرنگ کے بعد، ایکسلریشن ویکٹر a = sqrt(x² + y² + z²) شمار کیا جاتا ہے، جو ڈیوائس کی سمت سے آزاد حرکت سے متعلق ایکسلریشن کو الگ کرتا ہے۔ پھر الگورتھم سگنل میں مقامی زیادہ سے زیادہ اقدار کا پتہ لگاتا ہے — ہر زیادہ سے زیادہ قدر ایک قدم کے مساوی ہے۔
غلط مثبت نتائج کو کم کرنے کے لیے (مثلاً، نقل و حمل میں جھٹکے)، اضافی معیار لاگو کیے جاتے ہیں: کم از کم قدم طول (عام طور پر >1.2 m/s²)، قدموں کے درمیان کم از کم وقفہ (چلنے کے لیے 300–400 ms) اور آٹوکورلیشن کے ذریعے سگنل کی متواتر کی تصدیق۔ اگر چوٹیوں کے درمیان وقت کے وقفے بے قاعدہ ہوں تو ترتیب کو بے ترتیب حرکت کے طور پر نشان زد کیا جاتا ہے اور قدموں میں شمار نہیں کیا جاتا۔
بنیادی قدم کی شناخت کا الگورتھم حدی کھوج کا طریقہ استعمال کرتا ہے: نظام ان لمحات کو تلاش کرتا ہے جب ایکسلرومیٹر سگنل ایک مقررہ حد سے تجاوز کرتا ہے اور پھر آرام کی سطح پر واپس آجاتا ہے۔ اس طرح کا ہر واقعہ ممکنہ قدم سمجھا جاتا ہے۔ دو نقطہ نظر ہیں: چوٹی کھوج (peak detection) اور صفر کراسنگ (zero-crossing)۔ چوٹی کھوج سگنل کی زیادہ سے زیادہ اقدار کو پکڑتی ہے، جبکہ صفر کراسنگ سگنل کے اوسط قدر کو عبور کرنے کے لمحات کا پتہ لگاتی ہے، جو قدم کے طول پر کم انحصار کرتی ہے۔
جدید قدم گنتی الگورتھم ایک انکولی حد استعمال کرتے ہیں جو خود بخود صارف کے چلنے کے انداز کے مطابق ڈھل جاتا ہے۔ نظام پچھلے 2–3 سیکنڈ میں سگنل کے تغیر کا تجزیہ کرتا ہے اور جذر متوسط مربع (RMS) کو ایک عدد سے ضرب دے کر متحرک حد شمار کرتا ہے۔ یہ سرگرمی کی اقسام کے درمیان کراس کیلیبریشن کے بغیر دھیمی سیر اور زوردار دوڑ دونوں کے دوران درست قدم گنتی کی اجازت دیتا ہے۔
جدید پیڈومیٹر نفاذ میں نہ صرف چوٹی کھوج بلکہ حرکت کے نمونوں کی درجہ بندی کے لیے مشین لرننگ بھی استعمال ہوتی ہے۔ نیورل نیٹ ورک ماڈلز کو مختلف منظرناموں سے حقیقی حرکات کی ہزاروں گھنٹوں کی ریکارڈنگ پر تربیت دی جاتی ہے: ہموار سطحوں پر چلنا، سیڑھیاں چڑھنا، دوڑنا، نقل و حمل میں سفر کرنا۔ ان پٹ خصوصیات میں ایکسلرومیٹر اور جائروسکوپ ٹائم سیریز شامل ہیں، اور آؤٹ پٹ امکان ہے کہ موجودہ سگنل سیگمنٹ انسانی لوکوموشن سے مطابقت رکھتا ہے۔
Google Activity Recognition تحقیق کے مطابق، convolutional neural network (CNN) پر مبنی ماڈل بینچ مارک ڈیٹا سیٹس پر 98% چلنے کی شناخت کی درستگی حاصل کرتے ہیں۔ Apple آلات پر، 100,000 سے زیادہ رضاکاروں کے ڈیٹا پر تربیت یافتہ سرگرمی کی درجہ بندی کے ماڈل کے ساتھ 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں