From 547e834714706eb6bf44d4b6d9afda0f5cc3226a Mon Sep 17 00:00:00 2001 From: jjangddu Date: Tue, 2 Jun 2026 11:23:46 +0900 Subject: [PATCH] =?UTF-8?q?Labdb=20fix:=20sensor.imu=EC=97=90=20IMU=20FIFO?= =?UTF-8?q?=20=EB=A7=88=EC=A7=80=EB=A7=89(=EC=B5=9C=EC=8B=A0)=20=EC=83=98?= =?UTF-8?q?=ED=94=8C=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cycle당 IMU 다수 샘플(FIFO 순)이 오는데, 첫 샘플을 쓰면 piezo 캡처 시점보다 ~240~300ms 전의 오래된 자세값이 labdb에 들어감. 마지막 샘플로 바꿔 piezo 측정 시점과 가장 가까운 자세값이 기록되도록 함. imu_samples 전체는 그대로 보존. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../medilightv2android/services/labdb/LabdbUploader.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/services/labdb/LabdbUploader.kt b/app/src/main/java/com/example/medilightv2android/services/labdb/LabdbUploader.kt index 3b73220..d5d4d67 100644 --- a/app/src/main/java/com/example/medilightv2android/services/labdb/LabdbUploader.kt +++ b/app/src/main/java/com/example/medilightv2android/services/labdb/LabdbUploader.kt @@ -119,11 +119,12 @@ object LabdbUploader { val piezo = cycle.optJSONObject("piezo") ?: JSONObject() val imuArr = cycle.optJSONArray("imu") ?: JSONArray() - // labdb 표준 sensor.imu는 단일 샘플. 우리는 cycle당 15 샘플이라 - // 첫 샘플을 sensor.imu에 넣고 전체를 sensor.imu_samples에 free field로 보존. - val firstImu = if (imuArr.length() > 0) imuArr.optJSONObject(0) else null + // labdb 표준 sensor.imu는 단일 샘플. 우리는 cycle당 다수 샘플(FIFO 순)이라 + // 마지막(=가장 최근, piezo 캡처 직전) 샘플을 sensor.imu에 넣고 + // 전체를 sensor.imu_samples에 free field로 보존. + val latestImu = if (imuArr.length() > 0) imuArr.optJSONObject(imuArr.length() - 1) else null val sensor = JSONObject().apply { - firstImu?.let { + latestImu?.let { put("imu", JSONObject().apply { put("ax", it.optDouble("ax")) put("ay", it.optDouble("ay"))