Added tuning feature and hand palm action to reset the timer
This commit is contained in:
@@ -70,7 +70,10 @@ class DebugSessionLogger(private val appContext: Context) {
|
||||
writer = outputStream?.let { BufferedWriter(OutputStreamWriter(it)) }
|
||||
lastLoggedMs = null
|
||||
writer?.let {
|
||||
it.write("timestampMs dtMs ankleL(y,lik) ankleR(y,lik) hipL(y,lik) hipR(y,lik) shoulderL(lik) shoulderR(lik) torsoScalePx stepCount")
|
||||
it.write(
|
||||
"timestampMs dtMs ankleL(y,lik) ankleR(y,lik) hipL(y,lik) hipR(y,lik) shoulderL(y,lik) shoulderR(y,lik) " +
|
||||
"wristL(y,lik) wristR(y,lik) torsoScalePx stepCount handRaiseProgress"
|
||||
)
|
||||
it.newLine()
|
||||
it.flush()
|
||||
}
|
||||
@@ -81,8 +84,9 @@ class DebugSessionLogger(private val appContext: Context) {
|
||||
* @param landmarks EMA-smoothed landmarks for this frame, keyed by ML Kit's `PoseLandmark` type constant.
|
||||
* @param timestampMs Wall-clock time this frame was analyzed, in milliseconds.
|
||||
* @param stepCount Current cumulative step count at the time of this frame.
|
||||
* @param handRaiseProgress Current hold-to-reset gesture progress (0-1) at the time of this frame.
|
||||
*/
|
||||
fun log(landmarks: Map<Int, SmoothedLandmark>, timestampMs: Long, stepCount: Int) {
|
||||
fun log(landmarks: Map<Int, SmoothedLandmark>, timestampMs: Long, stepCount: Int, handRaiseProgress: Float) {
|
||||
val out = writer ?: return
|
||||
|
||||
val ankleL = landmarks[PoseLandmark.LEFT_ANKLE]
|
||||
@@ -91,6 +95,8 @@ class DebugSessionLogger(private val appContext: Context) {
|
||||
val hipR = landmarks[PoseLandmark.RIGHT_HIP]
|
||||
val shoulderL = landmarks[PoseLandmark.LEFT_SHOULDER]
|
||||
val shoulderR = landmarks[PoseLandmark.RIGHT_SHOULDER]
|
||||
val wristL = landmarks[PoseLandmark.LEFT_WRIST]
|
||||
val wristR = landmarks[PoseLandmark.RIGHT_WRIST]
|
||||
|
||||
val torsoScale = torsoScale(shoulderL, shoulderR, hipL, hipR)
|
||||
val dtMs = lastLoggedMs?.let { timestampMs - it }
|
||||
@@ -100,9 +106,11 @@ class DebugSessionLogger(private val appContext: Context) {
|
||||
"${dtMs ?: "-"} " +
|
||||
"${format(ankleL)} ${format(ankleR)} " +
|
||||
"${format(hipL)} ${format(hipR)} " +
|
||||
"${formatLikelihoodOnly(shoulderL)} ${formatLikelihoodOnly(shoulderR)} " +
|
||||
"${format(shoulderL)} ${format(shoulderR)} " +
|
||||
"${format(wristL)} ${format(wristR)} " +
|
||||
"${torsoScale?.let { "%.1f".format(it) } ?: "-"} " +
|
||||
stepCount
|
||||
"$stepCount " +
|
||||
"%.2f".format(handRaiseProgress)
|
||||
|
||||
try {
|
||||
out.write(line)
|
||||
@@ -129,9 +137,6 @@ class DebugSessionLogger(private val appContext: Context) {
|
||||
private fun format(landmark: SmoothedLandmark?): String =
|
||||
if (landmark == null) "-" else "(%.1f,%.2f)".format(landmark.y, landmark.inFrameLikelihood)
|
||||
|
||||
private fun formatLikelihoodOnly(landmark: SmoothedLandmark?): String =
|
||||
if (landmark == null) "-" else "%.2f".format(landmark.inFrameLikelihood)
|
||||
|
||||
/** @brief Shoulder-to-hip pixel distance, matching [LiveStepDetector]'s own torso-scale definition. */
|
||||
private fun torsoScale(
|
||||
shoulderL: SmoothedLandmark?,
|
||||
|
||||
Reference in New Issue
Block a user