From 45242f8256fe0b960d4b0c3ab8de77c663af228d Mon Sep 17 00:00:00 2001 From: jjangddu Date: Wed, 24 Jun 2026 12:29:14 +0900 Subject: [PATCH] =?UTF-8?q?tune(walking):=20default=20Start=20Wmean=204?= =?UTF-8?q?=E2=86=9215,=20Start=20Hold=201s=E2=86=926s=20(=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=20=EC=8B=A4=EC=B8=A1=20=EA=B8=B0=EC=A4=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상: 앉아있다 일어서기만 해도 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 --- .../medilightv2android/managers/GreenZoneConstants.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/managers/GreenZoneConstants.kt b/app/src/main/java/com/example/medilightv2android/managers/GreenZoneConstants.kt index 2ac64d6..3ee5775 100644 --- a/app/src/main/java/com/example/medilightv2android/managers/GreenZoneConstants.kt +++ b/app/src/main/java/com/example/medilightv2android/managers/GreenZoneConstants.kt @@ -42,12 +42,14 @@ object GreenZoneConstants { // ── Walking detector 임계값 (flowchart 4-2 / 5-2) ───────────────── /** Walking 인정 최소 pitch (deg). |pitch| > 이 값 이라야 walking 후보. */ @Volatile var walkingMinPitchDeg: Float = 45f - /** Walking 시작 — gyro 이동평균 (wmean) 임계 (dps). */ - @Volatile var walkingStartWmean: Float = 4f + /** Walking 시작 — gyro 이동평균 (wmean) 임계 (dps). 실측: stand-up + 자세조정 + * motion 이 5~10 dps 지속 → 임계 15 로 false-trigger 차단. 진짜 보행은 50+ dps. */ + @Volatile var walkingStartWmean: Float = 15f /** Walking 시작 — gyro 이동표준편차 (wstd) 임계 (dps). */ @Volatile var walkingStartWstd: Float = 2f - /** Walking 시작 — 두 임계 모두 만족한 채 지속해야 하는 최소 시간 (ms). */ - @Volatile var walkingStartHoldMs: Long = 1000L + /** Walking 시작 — 두 임계 모두 만족한 채 지속해야 하는 최소 시간 (ms). 실측: stand-up + * motion 이 3-5초 → 6초 로 차단. 실제 보행은 무한 지속이라 6초 이상 자동 만족. */ + @Volatile var walkingStartHoldMs: Long = 6000L /** Walking 유지 — gyro wmean 임계 (dps). 시작보다 낮음. */ @Volatile var walkingKeepWmean: Float = 2f /** Walking 유지 — wmean 임계 미달 후 종료까지 grace 시간 (ms). 미만 지속이 이 값 넘으면 walking 종료. */