cd8b48a811df165b17bd6913c50916343e9f3bb9
## 문제 "5초 누워있다가 세워서 5초 움직였는데 다시 누움이 뜸" = 세워 놓은 5초 동안 NON_LYING 이 뜨지 않음. ## 원인 기존 pitch = atan(ax / √(ay² + az²)) → AX 축이 세로일 때만 큰 pitch, NON_LYING 인식. → AY 축이 세로면 (손으로 기기를 세로로 잡는 흔한 자세) pitch=0 → LYING. 정상 착용 (배 위 부착) 시엔 AX가 세로가 되도록 설계됐지만, 손 테스트에선 AY 축 세로가 되기 쉬움. 특히 흔들기 테스트할 때. ## 수정 tilt = atan(√(ax² + ay²) / |az|) → **Z축이 중력방향에서 얼마나 벗어났는지** 측정. 방향 독립적. - 기기 평평 (AZ up) → tilt=0° → LYING ✓ - X축 세로 (AX up) → tilt=90° → NON_LYING ✓ - Y축 세로 (AY up) → tilt=90° → NON_LYING ✓ ★ 신규 - 완전 옆으로 세워짐 (az≈0) → tilt=90° → NON_LYING ✓ ## 임계값 `pitchLyingThreshold = 25f` 유지 (Dev 슬라이더 그대로). - 이전 의미: X축 tilt ≤ 25° = LYING - 신규 의미: Z축 tilt ≤ 25° = LYING (기기 평평 여유 ±25°) 정상 착용에선 동일하게 동작. hand-test 시나리오 추가 커버. ## 다음 Walking detector 는 pitch 를 그대로 재활용. tilt=90° 근처면 walkingMinPitchDeg=45° 통과. 이전엔 손 세로 잡기로 walking 감지도 못 했지만 이제 가능. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
Languages
Kotlin
97.1%
Python
2.9%