feat: Placement 판정 결과 BLE 디버그 로거에 기록 + README 대폭 업데이트

BLE 로그 추가:
- DETACHED mean=12.3 std=8.7
- PLACEMENT_SEARCHING cv=0.234 dir=MOVE UP moderate score=35
- PLACEMENT_PASS cv=0.112 lr_dev=0.089 score=78

README 추가 섹션:
- 17. 미부착 감지 알고리즘 상세 (DetachmentDetection)
  - 원리, 상수, 실측 안전 마진 설명
- 18. Placement 전체 파이프라인 흐름도
  - Detachment → Echo → CV → LR → LED 판정
  - BLE 로그 출력 예시
- 향후 과제에 미부착 감지 완료 항목 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 15:27:39 +09:00
parent ea19b74c00
commit 1beb0737c6
2 changed files with 146 additions and 10 deletions
@@ -328,6 +328,7 @@ fun PlacementGuideView(appState: AppState) {
directionIcon = "exclamationmark.triangle"
placementScore = 0
bleManager.sendLedMode(4) // DETACH_WARNING
bleManager.debugLogger.warn("DETACHED mean=${"%.1f".format(detachResult.meanAbs)} std=${"%.1f".format(detachResult.stdVal)}")
Log.w("PlacementGuide", "DETACHED mean=${
"%.1f".format(detachResult.meanAbs)} std=${"%.1f".format(detachResult.stdVal)}")
} else {
@@ -339,8 +340,10 @@ fun PlacementGuideView(appState: AppState) {
if (guideResult.isPass) {
isLocked = true
bleManager.sendLedMode(6) // ALIGN_COMPLETE
bleManager.debugLogger.info("PLACEMENT_PASS cv=${"%.3f".format(guideResult.cv)} lr_dev=${"%.3f".format(guideResult.lrDev)} score=${guideResult.score}")
} else {
bleManager.sendLedMode(5) // ALIGN_SEARCHING
bleManager.debugLogger.info("PLACEMENT_SEARCHING cv=${"%.3f".format(guideResult.cv)} dir=${guideResult.direction} ${guideResult.severity} score=${guideResult.score}")
}
}