They say the most difficult part is distinguishing between cycling and walking/running… I'd love to hear your opinions!
They say the most difficult part is distinguishing between cycling and walking/running.
→ If anyone has solved this, I’d be curious to know what approach worked for them.
Guys! If anyone knows the details, please reply.
In short, the key point was, “While cycling may seem similar to walking/running in terms of vibration patterns, their rhythms are different.”
1. Don’t just look at the acceleration magnitude; pay attention to the periodicity.
At first, I also classified solely based on the |acc| magnitude… but it was a disaster. 🙃
– Walking/running → Regular period + clear peak at foot contact
– Cycling → Vibrations are present, but the period is vague or long.
So, what worked:
– Extracting the dominant frequency with FFT
– Checking step-like repeatability with autocorrelation
I added this and the RF performance improved noticeably.
2. The gyro is a surprisingly hidden card.
Using only acceleration can be confusing:
Cycling:
– The feet rotate,
– Upper body/wrist rotation is quite limited
Walking/running:
– Arm swing causes a significant surge in gyro energy.
Especially for wrist-worn hardware, a simple ratio feature like gyro_y RMS / acc RMS works quite well.
3. Keep the window long (really important)
Everything looks similar in a 1-second window 😭
– At least 3-5 seconds
– 50% overlap if possible
Bicycles are more about “pattern retention” than “moving/not moving,” so the difference is noticeable over long periods.
4. Two-stage classification is also a fairly realistic solution
One of the real-world architectures I’ve seen:
– Moving/No movement
– Step-like vs. non-step motion
– Then walking/running/cycling
It was more stable than a three-class classification.
5. Conclusion (Summary of my experience)
– Model change to solve the problem → No
– Feature + window + gyro utilization → OK
– Even with DL, understanding this architecture is much easier.
Later, I realized this problem wasn’t about bicycles being difficult, but about how quiet a person riding one is.
Wow, I can relate to this… I’ve been confused about cycling vs. walking/running, too.
I’m curious about what you mentioned: you mentioned using both FFT and autocorrelation,
but which one actually felt more effective?
Personally, I felt like autocorrelation worked better.
FFT is powerful when tuned well, but even a slight mismatch in the sample rate or window caused the results to fluctuate.
On the other hand, autocorrelation captured the difference between the characteristic step repeatability of walking/running and the blurry patterns of cycling quite well.
If you need quick stabilization, I recommend using autocorrelation first, and then adding FFT if you have the time.
Oh… Then would this be similar if worn on the waist or in a pocket instead of the wrist?
I was wondering if I’d have to re-program the sensor if the location changed.
The location… Honestly, it’s quite large, lol.
The gyro is a hidden asset on the wrist, but the acceleration cycle is cleaner when worn on the waist or in a pocket. So, rather than overhauling the logic itself,
it was more realistic to set feature weights and thresholds separately for each location.
While “covering everything with one model” is ideal, it’s rarely feasible in real-world applications.
![WEARABLE_INSIGHT [FORUM]](https://wearableinsight.net/wp-content/uploads/2025/04/로고-3WEARABLE-INSIGHT1344x256.png)

