센서 퓨전 설명: 고정밀 피트니스 반복 카운터 구축 방법
Source: Dev.to
단일 센서 추적의 문제점
피트니스 앱은 특히 복잡한 동작에서 반복 횟수를 잘못 계산하는 경우가 많습니다. 스마트폰에 내장된 가속도계는 잡음이 많고, 자이로스코프는 시간이 지남에 따라 드리프트가 발생해 “가짜” 반복이 나오거나 세트를 놓칠 수 있습니다.
왜 하나의 센서만으로는 부족한가
가속도계
- 중력 포함한 실제 가속도 측정
- 장시간 동안 안정적
- 진동 및 급격한 흔들림에 매우 민감
자이로스코프
- 회전 속도 측정
- 단기 정밀도에 뛰어남
- 드리프트가 발생해 시간이 지남에 따라 방향 오류가 생김
보완 필터를 이용한 센서 융합
가속도계의 장기 안정성과 자이로스코프의 단기 정확성을 결합하면 신뢰할 수 있는 자세 신호를 얻을 수 있습니다.
수식
FusedAngle = α * (GyroAngle) + (1 - α) * (AccelAngle)
- 일반적인 α (알파) = 0.98 → 98 %의 시간 동안 자이로스코프를 신뢰하고, 가속도계로 드리프트를 보정합니다.
센서와 융합 비교
| Feature | Accelerometer | Gyroscope | Fused Result |
|---|---|---|---|
| Short‑term Accuracy | Low (Noisy) | High | High |
| Long‑term Stability | High | Low (Drift) | High |
| Vibration Resistance | Low | High | Balanced |
상태 머신을 이용한 반복 횟수 카운팅
각 신호 피크를 모두 세는 대신, 유한 상태 머신이 운동 단계(예: 이두근 컬)를 추적합니다:
| State | Description |
|---|---|
| IDLE | 사용자가 휴식 중인 상태 |
| GOING_UP | 각도가 진입 임계값(예: 30°)을 넘음 |
| GOING_DOWN | 사용자가 최고점에 도달하고 복귀 동작을 시작 |
| REPETITION | 복귀가 완료 → 카운트를 증가시키고 IDLE 상태로 리셋 |
이 방법은 진동과 중간 멈춤을 필터링해 잘못된 카운트를 방지합니다.
다른 운동에 프레임워크 적용하기
- 케틀벨 스윙 – 몸통 피치 각도 추적
- 스쿼트 – 수직 이동 및 허벅지 자세 사용
동일한 융합 및 상태 머신 로직을 다양한 동작에 맞게 조정할 수 있습니다.
결론
실시간 정확한 건강 피드백은 신뢰할 수 있는 센서 데이터에 달려 있습니다. 센서 융합을 마스터하면 개발자는 사용자가 일일 진행 상황을 믿고 사용할 수 있는 피트니스 도구를 만들 수 있습니다.
전체 Python 구현 및 단계별 가이드는 WellAlly의 종합적인 반복 카운터 튜토리얼을 참고하세요.