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!
Handling Data from 5 Force Plates
- Ali Forouzanfar
- Posts: 28
- Joined: Thu Dec 15, 2022 11:21 pm
Re: Handling Data from 5 Force Plates
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
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
- Ali Forouzanfar
- Posts: 28
- Joined: Thu Dec 15, 2022 11:21 pm
Re: Handling Data from 5 Force Plates
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!
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!
- Nicos Haralabidis
- Posts: 196
- Joined: Tue Aug 16, 2016 1:46 am
Re: Handling Data from 5 Force Plates
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
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
- Viktor Bokisch
- Posts: 1
- Joined: Tue Apr 23, 2024 1:20 pm
Re: Handling Data from 5 Force Plates
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
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
- Mahshida hamid
- Posts: 27
- Joined: Sun Jan 30, 2022 10:49 am
Re: Handling Data from 5 Force Plates
Hey victor, I did the same but it isnt showing the grf vectors. I am confused as to what i should do.