Το βηματόμετρο (pedometer) σε εφαρμογές κινητών είναι ένας μηχανισμός λογισμικού-υλικού για την καταμέτρηση των βημάτων του χρήστη βάσει δεδομένων από το επιταχυνσιόμετρο και το γυροσκόπιο. Τα σύγχρονα smartphones χρησιμοποιούν αλγόριθμους μηχανικής μάθησης σε συνδυασμό με αισθητήρες για τον ακριβή προσδιορισμό του περπατήματος, του τρεξίματος και άλλων τύπων φυσικής δραστηριότητας. Σύμφωνα με δεδομένα του Apple HealthKit Documentation, 2025, η ακρίβεια καταμέτρησης βημάτων σε σύγχρονες συσκευές φτάνει το 95–97% στο κανονικό περπάτημα.
Κύρια σημεία
Βηματόμετρο (pedometer) σε εφαρμογές κινητών είναι μια λειτουργία που προσδιορίζει τον αριθμό βημάτων του χρήστη βάσει δεδομένων που προέρχονται από τους ενσωματωμένους αισθητήρες κίνησης του smartphone. Σε αντίθεση με τα μηχανικά βηματόμετρα του παρελθόντος, το κινητό βηματόμετρο χρησιμοποιεί μικροηλεκτρομηχανικούς αισθητήρες (MEMS) και αλγόριθμους ψηφιακής επεξεργασίας σήματος για ακριβή καταμέτρηση των κινήσεων. Οι σύγχρονες υλοποιήσεις όχι μόνο μετρούν βήματα, αλλά και ταξινομούν τη δραστηριότητα: περπάτημα, τρέξιμο, ανάβαση σκαλοπατιών.
Η ενσωμάτωση του βηματομέτρου σε κινητές συσκευές κατέστη δυνατή χάρη στην εμφάνιση το 2013 του συνεπεξεργαστή κίνησης M7 στο iPhone 5s, ο οποίος συνέλεγε συνεχώς δεδομένα από αισθητήρες με ελάχιστη κατανάλωση ενέργειας. Σήμερα, όλα τα σύγχρονα smartphones έχουν υλική υποστήριξη για καταμέτρηση βημάτων σε επίπεδο κόμβου αισθητήρων — ένα αποκλειστικό τσιπ που επεξεργάζεται δεδομένα από αδρανειακούς αισθητήρες χωρίς να αφυπνίζει τον κύριο επεξεργαστή.
Η καταμέτρηση βημάτων στο smartphone βασίζεται στην ανάλυση σημάτων του επιταχυνσιομέτρου, το οποίο μετρά την επιτάχυνση της συσκευής σε τρεις κάθετους άξονες (X, Y, Z). Κατά το περπάτημα, κάθε βήμα δημιουργεί ένα χαρακτηριστικό μοτίβο επιτάχυνσης: πρώτα μια κορυφή προς τα πάνω κατά την ανύψωση του ποδιού, στη συνέχεια μια κορυφή προς τα κάτω κατά την προσγείωση. Η συχνότητα βημάτων (ρυθμός) είναι 100–130 βήματα/λεπτό για περπάτημα και 150–180 βήματα/λεπτό για τρέξιμο, με πλάτος επιτάχυνσης 2–6 m/s².
Το ακατέργαστο σήμα από το επιταχυνσιόμετρο περιέχει θόρυβο και παρεμβολές υψηλής συχνότητας, γι' αυτό το πρώτο στάδιο επεξεργασίας είναι ένα χαμηλοπερατό φίλτρο (low-pass filter) με συχνότητα αποκοπής 3–5 Hz. Μετά το φιλτράρισμα υπολογίζεται το διάνυσμα επιτάχυνσης: a = sqrt(x² + y² + z²), το οποίο εξάγει την επιτάχυνση που σχετίζεται με την κίνηση, ανεξάρτητα από τον προσανατολισμό της συσκευής. Στη συνέχεια, ο αλγόριθμος ανιχνεύει τοπικά μέγιστα στο σήμα — κάθε μέγιστο αντιστοιχεί σε ένα βήμα.
Για τη μείωση ψευδών συναγερμών (π.χ. κατά την ανατάραξη σε μεταφορικό μέσο) εφαρμόζονται πρόσθετα κριτήρια: ελάχιστο πλάτος βήματος (συνήθως >1,2 m/s²), ελάχιστο διάστημα μεταξύ βημάτων (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) {}
}
Η ακρίβεια του βηματομέτρου εξαρτάται από διάφορους παράγοντες: τη θέση του smartphone (στο χέρι, στην τσέπη ή στην τσάντα), τον τύπο δραστηριότητας (περπάτημα, τρέξιμο, ανάβαση σκαλοπατιών) και την ποιότητα των αισθητήρων. Κατά τη μεταφορά του smartphone στην τσέπη παντελονιού, η ακρίβεια είναι 93–97%, σε τσάντα ή σακίδιο πέφτει στο 70–85%. Το στυλ περπατήματος του χρήστη επηρεάζει επίσης την ακρίβεια: το σύρσιμο με μικρό πλάτος επιτάχυνσης δίνει περισσότερα σφάλματα από το κανονικό περπάτημα.
Οι κύριοι περιορισμοί των κινητών βηματομέτρων περιλαμβάνουν: αδυναμία καταμέτρησης βημάτων σε πολύ αργή κίνηση (<1,5 km/h), ψευδείς συναγερμούς από μετακίνηση με μεταφορικά μέσα, μείωση ακρίβειας σε τρέξιμο χαμηλής ταχύτητας (τζόκινγκ) και επίδραση χειρονομιών κατά την ομιλία. Για την ελαχιστοποίηση σφαλμάτων, οι σύγχρονες εφαρμογές χρησιμοποιούν συνδυασμό αισθητήρων (επιταχυνσιόμετρο + γυροσκόπιο + βαρόμετρο) και μηχανική μάθηση για φιλτράρισμα τεχνουργημάτων. Το βαρόμετρο, για παράδειγμα, βοηθά στον προσδιορισμό ανάβασης σκαλοπατιών και αλλαγής υψομέτρου, αποκλείοντας ψευδή βήματα στο ασανσέρ.
Συχνές Ερωτήσεις
Το βηματόμετρο στο τηλέφωνο χρησιμοποιεί το επιταχυνσιόμετρο, το οποίο καταγράφει την επιτάχυνση σε κάθε βήμα. Ο αλγόριθμος αναλύει τις κορυφές επιτάχυνσης σε τρεις άξονες, φιλτράρει τον θόρυβο και προσδιορίζει τον αριθμό των βημάτων. Τα σύγχρονα μοντέλα χρησιμοποιούν επίσης γυροσκόπιο και μηχανική μάθηση για αύξηση της ακρίβειας και ταξινόμηση δραστηριότητας.
Κατά τη μεταφορά του smartphone στην τσέπη παντελονιού, η ακρίβεια φτάνει το 95–97% στο κανονικό περπάτημα. Σε τσάντα ή σακίδιο η ακρίβεια μειώνεται στο 70–85%. Το στυλ περπατήματος και ο τύπος επιφάνειας επηρεάζουν επίσης την ακρίβεια — το ανώμαλο έδαφος μπορεί να δώσει σφάλματα έως 10–15%.
Ναι, το βηματόμετρο λειτουργεί πλήρως αυτόνομα χωρίς σύνδεση στο διαδίκτυο. Όλοι οι υπολογισμοί εκτελούνται στη συσκευή χρησιμοποιώντας ενσωματωμένους αισθητήρες. Το διαδίκτυο μπορεί να χρειαστεί μόνο για συγχρονισμό δεδομένων με υπηρεσίες cloud εφαρμογών γυμναστικής ή για εμφάνιση χάρτη διαδρομής.
Διαφορετικές εφαρμογές χρησιμοποιούν διαφορετικούς αλγόριθμους επεξεργασίας δεδομένων αισθητήρων, κατώφλια ανίχνευσης βημάτων και μεθόδους φιλτραρίσματος. Ορισμένες εφαρμογές μετρούν βήματα βάσει ακατέργαστων δεδομένων επιταχυνσιομέτρου, άλλες — μέσω συστημικών API (TYPE_STEP_COUNTER), και η διαφορά στην καταμέτρηση μπορεί να φτάσει το 10–15%.
Στο Android για πρόσβαση στο βηματόμετρο χρησιμοποιήστε τον αισθητήρα TYPE_STEP_COUNTER μέσω Sensor API — παρέχει τον αθροιστικό αριθμό βημάτων από την τελευταία επανεκκίνηση της συσκευής. Για πρόσβαση στα βήματα μιας συγκεκριμένης ημέρας, ενσωματώστε το Google Fit API με τον τύπο δεδομένων TYPE_STEP_COUNT_DELTA.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης