nimblephysics icon indicating copy to clipboard operation
nimblephysics copied to clipboard

GRF of the first frame of all the trials are always 0

Open THEONE-1 opened this issue 10 months ago • 2 comments

I load subject GRF data as follows:

            subject = nimble.biomechanics.SubjectOnDisk(subject_path)
            frames: nimble.biomechanics.FrameList = subject.readFrames(trial_index, 0, trial_length,
                                                                       includeSensorData=False,
                                                                       includeProcessingPasses=True)
            try:
                first_passes: List[nimble.biomechanics.FramePass] = [frame.processingPasses[0] for frame in frames]
            except IndexError:
                print(f'{subject_name}, {trial_index} has no processing passes, skipping')
                continue
            forces = [frame.groundContactForce for frame in first_passes]
            if (forces[0] == 0).all():
                print(f'{subject_name}, {trial_index} has 0 GRF at the first frame.', end='')

Then the (forces[0] == 0).all() returns True for every trial of all the datasets I processed. Forces show up starting at index 1.

THEONE-1 avatar Apr 09 '24 17:04 THEONE-1

As discussed in person, we lose a time point when finite differencing the inverse kinematics trajectories, and this lost time point might be getting propagated to the forces when aligning time points during preprocessing. Since there is no acceleration at this time point the forces might be getting assigned zeros by default.

@TheOne-1, how is this specifically impacting your workflow? Is it not sufficient to trim off the first time step in each trial?

nickbianco avatar Apr 09 '24 22:04 nickbianco

Not impacting much. Yes, I should simply trim it off.

Also just realized that the GRF of the last frame is also missing.

THEONE-1 avatar May 20 '24 18:05 THEONE-1