nimblephysics
nimblephysics copied to clipboard
GRF of the first frame of all the trials are always 0
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.
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?
Not impacting much. Yes, I should simply trim it off.
Also just realized that the GRF of the last frame is also missing.