Esempio n. 1
0
 private HandleSample GetExecutionSamplerHandlerForExercise(int exID)
 {
     return((Sample sample) =>
     {
         LimbExercise ex = _exercises[exID];
         EvaluationResults results = (ex.exerciseConfig.isRealTimeSampling) ?
                                     ex.aiManager.EvaluateExerciseStep(sample.sampleDataForExercise[exID].UnwrapFromSensors(), sample.idealDataForExercise[exID].UnwrapFromSensors()) :
                                     ex.aiManager.EvaluateExerciseStep(sample.sampleDataForExercise[exID].UnwrapFromSensors());
         ex.exerciseConfig.ProvideExerciseResults(results);
     });
 }
Esempio n. 2
0
        /// <summary>
        /// Used to setup a new limb exercise
        /// </summary>
        /// <param name="config">Configuration of the limb that has to perform the exercise</param>
        public void ExerciseSetup(ExerciseConfiguration config)
        {
            LimbExercise exercise = new LimbExercise();

            exercise.exerciseConfig = config;

            ArticolationTollerance[] tollerance = new ArticolationTollerance[config.limbConfiguration.sensors.Length];
            for (int i = 0; i < config.limbConfiguration.sensors.Length; i++)
            {
                tollerance[i] = config.limbConfiguration.sensors[i].sensorTollerance;
            }
            exercise.aiManager.ExerciseTollerance = tollerance;

            _exercises.Add(exercise);
        }
Esempio n. 3
0
 /// <summary>
 /// Use this to start evaluating the recorded exercises
 /// </summary>
 public void StartEvaluation()
 {
     executionSampleHandlers = new HandleSample[_exercises.Count];
     for (int exID = 0; exID < _exercises.Count; exID++)
     {
         LimbExercise exercise = _exercises[exID];
         exercise.realStepsSampling.Clear();
         if (exercise.exerciseConfig.isRealTimeSampling)
         {
             exercise.idealStepsSampling.Clear();
         }
         exercise.aiManager.StartExercise(exercise.exerciseConfig.isRealTimeSampling);
         executionSampleHandlers[exID] = GetExecutionSamplerHandlerForExercise(exID);
         OnSampleTaken += executionSampleHandlers[exID];
     }
     StartSampling(timingBetweenSamples);
 }
Esempio n. 4
0
        private void SampleSensors()
        {
            Sample sample = new Sample();

            sample.sampleDataForExercise = new LimbData[_exercises.Count];
            sample.idealDataForExercise  = new LimbData[_exercises.Count];
            for (int exID = 0; exID < _exercises.Count; exID++)
            {
                LimbExercise exercise = _exercises[exID];
                sample.sampleDataForExercise[exID] = exercise.exerciseConfig.limbConfiguration.ExtractLimbData();
                if (exercise.exerciseConfig.isRealTimeSampling)
                {
                    sample.idealDataForExercise[exID] = exercise.exerciseConfig.ghostLimbConfiguration.ExtractLimbData();
                }
            }
            if (OnSampleTaken != null)
            {
                OnSampleTaken(sample);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Start recording exercise steps for the set up exercise (ExerciseSetup method)
        /// </summary>
        public void StartSetup()
        {
            setupSampleHandlers = new HandleSample[_exercises.Count];
            for (int exID = 0; exID < _exercises.Count; exID++)
            {
                LimbExercise exercise = _exercises[exID];
                if (!exercise.exerciseConfig.isRealTimeSampling)
                {
                    // need setup
                    setupSampleHandlers[exID] = GetIdealSamplerHandlerForExercise(exID);
                    OnSampleTaken            += setupSampleHandlers[exID];
                }
                else
                {
                    // no need of setup
                    exercise.isTemporary = false;
                    exercise.aiManager.CreateExerciseSession(timingBetweenSamples); // creating a session without tranining set
                }
            }

            StartSampling(timingBetweenSamples);
        }