Педометар (мерач корака) у мобилним апликацијама представља програмско-хардверски механизам за бројање корака корисника на основу података акцелерометра и жироскопа. Модерни паметни телефони користе алгоритме машинског учења у комбинацији са сензорима за прецизно одређивање хода, трчања и других врста физичке активности. Према подацима Apple HealthKit Documentation, 2025, прецизност бројања корака на савременим уређајима достиже 95–97% при нормалном ходу.
Главне тачке
Педометар (мерач корака) у мобилним апликацијама представља функцију која одређује број корака корисника на основу података прикупљених са уграђених сензора покрета паметног телефона. За разлику од механичких педометара из прошлости, мобилни педометар користи микроелектромеханичке сензоре (MEMS) и алгоритме дигиталне обраде сигнала за прецизно бројање локомоција. Савремене имплементације не само да броје кораке, већ и класификују активност: ход, трчање, пењање уз степенице.
Интеграција педометра у мобилне уређаје постала је могућа захваљујући појави 2013. године копроцесора покрета M7 у iPhone-у 5s, који је непрекидно прикупљао податке са сензора уз минималну потрошњу енергије. Данас сви савремени паметни телефони имају хардверску подршку за бројање корака на нивоу сензорског чворишта — наменског чипа који обрађује податке инерцијалних сензора без буђења главног процесора.
Бројање корака на паметном телефону заснива се на анализи сигнала акцелерометра, који мери убрзање уређаја по три управне осе (X, Y, Z). При ходу, сваки корак ствара карактеристичан образац убрзања: прво врх нагоре при подизању ноге, затим врх надоле при слетању. Фреквенција корака (каденца) износи 100–130 корака/мин за ход и 150–180 корака/мин за трчање, а амплитуда убрзања — 2–6 м/с².
Сирови сигнал са акцелерометра садржи шум и високофреквентне сметње, па је прва фаза обраде нископропусна филтрација (low-pass filter) са граничном фреквенцијом од 3–5 Hz. Након филтрације израчунава се вектор убрзања: a = sqrt(x² + y² + z²), који издваја убрзање повезано са покретом, независно од оријентације уређаја. Затим алгоритам детектује локалне максимуме у сигналу — сваки максимум одговара једном кораку.
У циљу смањења лажних окидања (на пример, при трешњи у превозу) примењују се додатни критеријуми: минимална амплитуда корака (обично >1,2 м/с²), минимални интервал између корака (300–400 ms за ход) и провера периодичности сигнала путем аутокорелације. Ако су временски интервали између врхова неправилни, секвенца се означава као случајни покрети и не рачуна се као кораци.
Основни алгоритам детекције корака користи метод прага: систем тражи тренутке када сигнал акцелерометра прелази постављени праг и затим се враћа на ниво мировања. Сваки такав догађај се сматра потенцијалним кораком. Постоје два приступа: детекција врхова (peak detection) и прелазак кроз нулу (zero-crossing). Детекција врхова бележи максимуме сигнала, а zero-crossing — тренутке преласка сигнала кроз средњу вредност, што мање зависи од амплитуде корака.
Савремени алгоритми за бројање корака користе адаптивни праг који се аутоматски прилагођава стилу хода корисника. Систем анализира варијансу сигнала у последњих 2–3 секунде и израчунава динамички праг као стандардну девијацију (RMS) помножену коефицијентом. Ово омогућава правилно бројање корака како при спорој шетњи, тако и при енергичном трчању без унакрсне калибрације између врста активности.
Савремене имплементације педометра користе не само детекцију врхова, већ и машинско учење за класификацију образаца покрета. Модели неуронских мрежа се обучавају на хиљадама сати снимака стварних покрета из различитих сценарија: ход по равној површини, пењање уз степенице, трчање, вожња превозом. Улазне карактеристике су временски низови акцелерометра и жироскопа, а излаз — вероватноћа да тренутни сегмент сигнала одговара људској локомоцији.
Према подацима истраживања Google Activity Recognition, модели засновани на конволутивним неуронским мрежама (CNN) постижу прецизност препознавања хода од 98% на контролним скуповима података. На Apple уређајима користи се Core ML са моделом Activity Classification, обученим на подацима више од 100 хиљада волонтера. Оптимизовани модели раде директно на уређају (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-у за приступ педометру користи се класа CMPedometer из оквира Core Motion. CMPedometer пружа не само број корака, већ и пређену удаљеност, број спратова (успона), темпо хода и време активности. Подаци су доступни како у реалном времену (startUpdates), тако и за произвољан период у прошлости (queryPedometerData). Копроцесор покрета (M серија) обрађује податке сензора хардверски, што смањује потрошњу енергије за 80% у поређењу са софтверском обрадом.
На Android-у рад са педометром је реализован преко два хардверска сензора: TYPE_STEP_COUNTER (кумулативни бројач корака од покретања) и TYPE_STEP_DETECTOR (генерисање догађаја на сваки корак). TYPE_STEP_COUNTER не захтева калибрацију и не троши енергију процесора — подаци се ажурирају хардверски на нивоу сензорског чворишта. За приступ акумулираној статистици корака за дан користи се Google Fit API са записом DataType.TYPE_STEP_COUNT_DELTA.
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-у за приступ педометру користите сензор TYPE_STEP_COUNTER преко Sensor API-ја — он пружа кумулативни број корака од последњег рестартовања уређаја. За приступ корацима за одређени дан интегришите Google Fit API са типом података TYPE_STEP_COUNT_DELTA.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође