cf476971a5c631b48171f42a7e1df5ae324f50d4
allignment flowchart "Posture classification" 알고리즘 적용. Phase 1
범위: 자세 분류 + 화면 표시만 (알람/감지 없음).
1) ImuPostureClassifier.kt 신규
flowchart 단계 그대로:
- Acc magnitude 게이트: 0.8 ≤ |a| ≤ 1.2 (motion/bad reject)
- Gyro magnitude 게이트: |g| ≤ 9.16 dps (회전 reject)
- Pitch = atan(ax / sqrt(ay² + az²)) × 180/π
- 분류:
· |pitch| < 25° → SUPINE
· 25-70° → SITTING
· > 70° → STANDING
- 게이트 실패 시 UNKNOWN + 사유 반환
- 입력: ImuSample 리스트 (한 응답 15 sample 평균)
※ flowchart 의 "|pitch| > 25; supine" 는 typo 로 판단 → < 25 적용
2) PiezoMonitoringView IMU polling 추가
- 5초 주기로 sendImuQuery() → rim: 응답 → classifier
- UNKNOWN 결과 시 직전 자세 유지 (artifact 흔들림 방지)
- demo mode: SUPINE 으로 fix (BLE 없음)
3) 도넛 차트 우상단 자세 아이콘 표시 (Battery 옆)
- SUPINE → Icons.Hotel (파랑)
- SITTING → Icons.AirlineSeatReclineNormal (주황)
- STANDING → Icons.AccessibilityNew (초록)
- UNKNOWN → Icons.HelpOutline (회색)
- 아이콘 + 텍스트 라벨 (Lying/Sitting/Standing/—)
Phase 2 (다음): Settings 토글 + wake-up state machine + 빨간 팝업.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
Languages
Kotlin
97.1%
Python
2.9%