Handling Data from 5 Force Plates

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Ali Forouzanfar
Posts: 28
Joined: Thu Dec 15, 2022 11:21 pm

Handling Data from 5 Force Plates

Post by Ali Forouzanfar » Mon Jun 10, 2024 8:06 am

Hi everyone,

I'm working on a gait analysis project using data from five force plates and plan to perform inverse dynamics and residual reduction analysis (RRA) in OpenSim.

I'm unsure about the best way to handle the force plate data and would appreciate your guidance:

Option 1: Separate Force Plates

Can I define each force plate individually in the OpenSim model and input their data separately?
What considerations are important when setting up individual force plate locations and orientations in the model?

Option 2: Merging Force Plate Data

Would it be better to merge the data from all plates into a single "right" and "left" ground reaction force?
What are the advantages and disadvantages of this approach, particularly regarding potential force asymmetries and timing differences between the plates during gait?
I'm looking for insights, experiences, or resources on handling multiple force plate data in OpenSim for accurate inverse dynamics and RRA.

Thank you in advance for your help!

Tags:

User avatar
Aaron Fox
Posts: 286
Joined: Sun Aug 06, 2017 10:54 pm

Re: Handling Data from 5 Force Plates

Post by Aaron Fox » Mon Jun 10, 2024 9:11 pm

Hi Ali,

I've actually done both of these approaches when working with multiple force plates (we had some data with 8 plates), and I think they both work fine. They will both work the same and they have the same challenges in that you need to identify which body is in contact with each plate when creating the external loads object.

One comment is that if the future use of these data is going into something like a Moco tracking simulation, the left-right approach might be better so that you could more easily create left-right tracking components within the contact tracking goal.

Aaron

User avatar
Ali Forouzanfar
Posts: 28
Joined: Thu Dec 15, 2022 11:21 pm

Re: Handling Data from 5 Force Plates

Post by Ali Forouzanfar » Thu Jun 13, 2024 12:48 pm

Hi Aaron,

Thanks for your reply.

I've noticed a difference in the results compared to the tutorial.

The tutorial shows the following messages in the OpenSim console:
ExternalLoades: external_loads_model_kinematics_file option is not supported anymore. Results may change.
ExternalLoads 'grf_walk' was renamed and is being reset to 'externalloads'.
ExternalLoads 'Ex2' was renamed and is being reset to 'externalloads'.
Storage: read data file = ../../ExpData/grf_walk.mot (nr=4778 nc=19)
ExternalForce::Right_GRF Data source being set to subject11_noload_free_trial03_ground_reaction
ExternalForce::Left_GRF Data source being set to subject11_noload_free_trial03_ground_reaction
Storage: read data file = /OpenSim/4.5/Models/Rajagopal/RRA/walk/../../ExpData/grf_walk.mot (nr=4778 nc=19)
Storage: read data file = /OpenSim/4.5/Models/Rajagopal/RRA/walk/../../ExpData/grf_walk.mot (nr=4778 nc=19)

My example, however, only shows:
ExternalLoades: external_loads_model_kinematics_file option is not supported anymore. Results may change.
ExternalLoads 'grf_walk' was renamed and is being reset to 'externalloads'.
ExternalLoads 'Ex2' was renamed and is being reset to 'externalloads'.
ExternalForce::Right_GRF Data source being set to subject11_noload_free_trial03_ground_reaction
ExternalForce::Left_GRF Data source being set to subject11_noload_free_trial03_ground_reaction

I believe this difference might be due to the GRF not being applied correctly. I'm following the tutorial steps closely, but I'm unsure where the problem lies.

Additionally, I've tried to match the header information in my .mot file to the one used in the OpenSim tutorial, but this hasn't changed the results.

The tutorial's .mot file header looks like this:
subject11_noload_free_trial03_ground_reaction
version=1
nRows=4778
nColumns=19
inDegrees=no
endheader

My example's .mot file header looks like this:
subject11_noload_free_trial03_ground_reaction
inDegrees=no
nColumns=19
nRows=2480
DataType=double
version=3
OpenSimVersion=4.5
endheader

Could you please help me identify the source of the problem and suggest how to properly apply the GRF?

Thanks for your help!

User avatar
Nicos Haralabidis
Posts: 196
Joined: Tue Aug 16, 2016 1:46 am

Re: Handling Data from 5 Force Plates

Post by Nicos Haralabidis » Fri Jun 14, 2024 10:28 am

Hey Ali,

It looks to me as though you haven't updated the number of columns to reflect 5 force plates worth of data... it is currently at nColumns=19... time + 2*9 force plate signals... I think in your case it should be time + 5*9 - so 46.

Hope that helps.

Nicos

User avatar
Viktor Bokisch
Posts: 1
Joined: Tue Apr 23, 2024 1:20 pm

Re: Handling Data from 5 Force Plates

Post by Viktor Bokisch » Tue Jun 18, 2024 1:53 pm

Hey Ali,

I'm working on a similar problem as you right now, and I've noticed that OpenSim is *very* particular about how the column headers are named and treated in your .mot file. I managed to make it work by changing all column names to the OpenSim equivalent in the gait_2354 tutorial (specifically in the 'subject01_walk1_grf.mot' file) AND by changing the actual order of the columns to match the tutorial order as well.

Not sure if this will help you with your issue, or even if this is necessary (I suspect there's a more logical cause and solution but this is the first solution that correctly generates the force vectors that I've found), but please let me know if this helps and if you discover the underlying issue.

Viktor

POST REPLY