tune(walking): default Start Wmean 4→15, Start Hold 1s→6s (사용자 실측 기준)

증상: 앉아있다 일어서기만 해도 walking false-trigger.

원인: 사용자 실측 데이터 분석 — stand-up + 자세 조정 motion 이 wmean
      5-10 dps 로 약 3-5초 지속. 이전 default (Start Wmean=4, Hold=1s) 는
      이 motion 을 walking 으로 잡음.

수정:
  Start Wmean: 4 → 15  (stand-up 의 typical wmean 보다 위)
  Start Hold:  1초 → 6초 (stand-up settling 보다 김)

근거:
  - 사용자 측정 stand-up motion: wmean 5-10 (저강도) ~ 100 (spike)
  - 진짜 보행 (body-mounted, 예상): wmean 50+ 지속
  - Hold 6초 — 정상 보행은 무한 지속이라 자동 만족, stand-up 은 5초 미만

비고:
  - 임계는 여전히 dev slider 로 조정 가능 (이전 commit 18a4cee)
  - 사용자별 / 디바이스별 튜닝 가능
  - 향후 periodicity check (FFT) 추가 시 임계 다시 완화 가능

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-24 12:29:14 +09:00
parent 80f3982352
commit 45242f8256
@@ -42,12 +42,14 @@ object GreenZoneConstants {
// ── Walking detector 임계값 (flowchart 4-2 / 5-2) ───────────────── // ── Walking detector 임계값 (flowchart 4-2 / 5-2) ─────────────────
/** Walking 인정 최소 pitch (deg). |pitch| > 이 값 이라야 walking 후보. */ /** Walking 인정 최소 pitch (deg). |pitch| > 이 값 이라야 walking 후보. */
@Volatile var walkingMinPitchDeg: Float = 45f @Volatile var walkingMinPitchDeg: Float = 45f
/** Walking 시작 — gyro 이동평균 (wmean) 임계 (dps). */ /** Walking 시작 — gyro 이동평균 (wmean) 임계 (dps). 실측: stand-up + 자세조정
@Volatile var walkingStartWmean: Float = 4f * motion 이 5~10 dps 지속 → 임계 15 로 false-trigger 차단. 진짜 보행은 50+ dps. */
@Volatile var walkingStartWmean: Float = 15f
/** Walking 시작 — gyro 이동표준편차 (wstd) 임계 (dps). */ /** Walking 시작 — gyro 이동표준편차 (wstd) 임계 (dps). */
@Volatile var walkingStartWstd: Float = 2f @Volatile var walkingStartWstd: Float = 2f
/** Walking 시작 — 두 임계 모두 만족한 채 지속해야 하는 최소 시간 (ms). */ /** Walking 시작 — 두 임계 모두 만족한 채 지속해야 하는 최소 시간 (ms). 실측: stand-up
@Volatile var walkingStartHoldMs: Long = 1000L * motion 이 3-5초 → 6초 로 차단. 실제 보행은 무한 지속이라 6초 이상 자동 만족. */
@Volatile var walkingStartHoldMs: Long = 6000L
/** Walking 유지 — gyro wmean 임계 (dps). 시작보다 낮음. */ /** Walking 유지 — gyro wmean 임계 (dps). 시작보다 낮음. */
@Volatile var walkingKeepWmean: Float = 2f @Volatile var walkingKeepWmean: Float = 2f
/** Walking 유지 — wmean 임계 미달 후 종료까지 grace 시간 (ms). 미만 지속이 이 값 넘으면 walking 종료. */ /** Walking 유지 — wmean 임계 미달 후 종료까지 grace 시간 (ms). 미만 지속이 이 값 넘으면 walking 종료. */