From 5a226dd56b7604ca4a570fd233dcf25e74fa3fe9 Mon Sep 17 00:00:00 2001 From: Luca Warmenhoven Date: Tue, 28 May 2024 15:56:28 +0200 Subject: [PATCH 1/2] Attempt to make good --- .../fitbot/ui/activities/FitnessActivity.java | 23 +++++++++---------- .../PersonalMotionPreviewElement.java | 7 +++--- .../util/processing/MotionProcessor.java | 4 ---- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java index 354f04c..1867cad 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/activities/FitnessActivity.java @@ -45,23 +45,22 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall GesturePath.Builder gesturePathBuilder = new GesturePath.Builder(); - gesturePathBuilder.addVector(new Vector3f(-.5f, -.5f, -.5f)); - gesturePathBuilder.addVector(new Vector3f(.5f, -.5f, -.5f)); - gesturePathBuilder.addVector(new Vector3f(.5f, -.5f, .5f)); - gesturePathBuilder.addVector(new Vector3f(-.5f, -.5f, .5f)); - gesturePathBuilder.addVector(new Vector3f(-.5f, -.5f, -.5f)); - - gesturePathBuilder.addVector(new Vector3f(-.5f, .5f, -.5f)); - gesturePathBuilder.addVector(new Vector3f(.5f, .5f, -.5f)); - gesturePathBuilder.addVector(new Vector3f(.5f, .5f, .5f)); - gesturePathBuilder.addVector(new Vector3f(-.5f, .5f, .5f)); - gesturePathBuilder.addVector(new Vector3f(-.5f, .5f, -.5f)); + for ( int i = 0; i < 40; i++) + { + gesturePathBuilder.addVector( + new Vector3f( + (float)Math.cos(Math.PI + (Math.PI / 40.0f) * i), + (float)Math.sin(Math.PI + (Math.PI / 40.0f) * i), + 0 + ) + ); + } personalMotionPreviewElement = findViewById(R.id.personalMotionPreviewElement); personalMotionPreviewElement.post(() -> { Log.i("FitnessActivity", "PersonalMotionPreviewElement.post()"); - Exercise exercise = new Exercise(EMuscleGroup.ARMS, "Bicep Curls", "Oefening voor de biceps.", gesturePathBuilder.build(), 1); + Exercise exercise = new Exercise(EMuscleGroup.ARMS, "Bicep Curls", "Oefening voor de biceps.", gesturePathBuilder.build(), gesturePathBuilder.build()); personalMotionPreviewElement.initialize(exercise); }); diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java index 6569fdb..5df9df5 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java @@ -86,6 +86,7 @@ public class PersonalMotionPreviewElement extends View { this.targetPath = new Path(); this.startingTime = System.nanoTime(); // Set the last time to the current time + this.exerciseProgress = 0.0d; this.exercise = exercise; this.paths = exercise.getPath(); @@ -107,7 +108,9 @@ public class PersonalMotionPreviewElement extends View { // Handler that is called every time the motion processor receives new data. this.motionProcessor.setMotionDataEventHandler((processed, preprocessed, sampleIndex, sampleRate, deviceId) -> { - this.exerciseProgress = Math.min(1, this.motionProcessor.getAverageError(this.paths[0], 0) / 10); + this.exerciseProgress = Math.min(1, Math.max(0, this.motionProcessor.getAverageError(this.paths[0], 0) / 10)); + this.invalidate(); + Log.i("MotionProcessor", "Processed data: " + processed); }); saySomethingNice(); } @@ -154,7 +157,5 @@ public class PersonalMotionPreviewElement extends View { ); timePassed = (System.nanoTime() - startingTime) / 1E9D; - - this.invalidate(); // Causes a redraw. } } diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java index 640baa9..41f6363 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java @@ -78,10 +78,6 @@ public class MotionProcessor { JsonObject object = json.getAsJsonObject(); - // Object must contain device identifier - if (!object.has("deviceId")) - return; - String[] required = { "rotationX", "rotationY", "rotationZ", "accelerationX", "accelerationY", "accelerationZ", From 5789f4c0dd63bcc849aea464fb6f3e1a87ec91b2 Mon Sep 17 00:00:00 2001 From: Luca Warmenhoven Date: Tue, 28 May 2024 15:58:25 +0200 Subject: [PATCH 2/2] Attempt to make good --- .../java/com/example/fitbot/exercise/ExerciseManager.java | 2 +- .../fitbot/ui/components/PersonalMotionPreviewElement.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java index 716b1ba..a500943 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/ExerciseManager.java @@ -76,7 +76,7 @@ public class ExerciseManager { content.get(PROPERTY_NAME).getAsString(), content.get(PROPERTY_DESC).getAsString(), gesturePathFromString(content.get(PROPERTY_VECTORS).getAsString()), - DEFAULT_SEGMENT_SPEED + gesturePathFromString(content.get(PROPERTY_SEGMENT_SPEED).getAsString()) ); } catch (Exception e) { e.printStackTrace(); diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java index 5df9df5..113bdc7 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java @@ -108,9 +108,10 @@ public class PersonalMotionPreviewElement extends View { // Handler that is called every time the motion processor receives new data. this.motionProcessor.setMotionDataEventHandler((processed, preprocessed, sampleIndex, sampleRate, deviceId) -> { - this.exerciseProgress = Math.min(1, Math.max(0, this.motionProcessor.getAverageError(this.paths[0], 0) / 10)); + double progress = this.motionProcessor.getAverageError(this.paths[0], 0); + this.exerciseProgress = Math.min(1, Math.max(0, progress)); this.invalidate(); - Log.i("MotionProcessor", "Processed data: " + processed); + Log.i("MotionProcessor", "Processed data: " + progress + " (" + preprocessed + ")"); }); saySomethingNice(); }