2024-06-05 14:33:21 +02:00
2 changed files with 13 additions and 7 deletions

View File

@@ -134,7 +134,7 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
// the canvas properly.
this.fetchExerciseAsync((exercise) -> {
// Acquire paths from the exercise and provide them to the motion processor
motionProcessor = new InputProcessor(SENSOR_SAMPLE_RATE, this);
motionProcessor = new InputProcessor(this);
motionProcessor.useExercise(exercise);
/* TODO: Remove if not needed */
motionProcessor.setRecording(true, 10);
@@ -197,6 +197,9 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
Log.e("FitnessActivity", "VideoView is null. Check your layout XML.");
}
// Start checking for user movement once the video has loaded
this.motionProcessor.startCheckingUserMovement();
return true;
}
return false;

View File

@@ -27,9 +27,7 @@ public class InputProcessor {
//private Vector3f[][] selfRotationVectorPaths; // Relative path of the motion data
private Vector3f[][] targetRotationVectorPaths; // Target path of the motion data
private final float sampleRate; // The sample rate of the motion sensor
private float exerciseRepetitionDurationInSeconds = 0.0f;
private int repetitionsRemaining = 0;
private int exercisesRemaining = 0;
private float errorCheckInterval_s;
@@ -75,11 +73,8 @@ public class InputProcessor {
/**
* Constructor for the motion processor.
*
* @param inputSampleRate The sample rate of the motion sensor.
*/
public InputProcessor(float inputSampleRate, FitnessActivity parentActivity) {
this.sampleRate = inputSampleRate;
public InputProcessor(FitnessActivity parentActivity) {
this.parentActivity = parentActivity;
}
@@ -100,7 +95,15 @@ public class InputProcessor {
this.exercisesRemaining = 1;
this.nextExercise(exercise);
Pepper.say(STARTING_PHRASES[(int) Math.floor(Math.random() * STARTING_PHRASES.length)]);
}
/**
* Function that starts checking for user movement.
* This function will start a thread that will check for user movement
* and compare the last rotation vectors to the target rotation vectors.
*/
public void startCheckingUserMovement()
{
// Error checking thread.
(new Thread(() -> {
while (this.exercisesRemaining > 0)