Perform Passive Stretching in OpenSim

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Eduardo Sáenz Aldea
Posts: 18
Joined: Thu Oct 25, 2018 2:47 am

Perform Passive Stretching in OpenSim

Post by Eduardo Sáenz Aldea » Thu Jul 04, 2019 2:13 am

Dear community,

I'm trying to perform a passive stretching in an elbow flexion. I haven't seen much information about passive stretching simulation, this is why I decided to open this topic.
I have the .mot file with the forces, torques and points where the external load will be applied in every frame, I've attached an image showing the external loads configuration.

As I've seen, to perform a passive stretch, we must activate "Solve for equilibrium for actuator states", give a initial position to the model, and in my case, apply the external loads. I'd like to know if this is correct.

After running a forward dynamics, the movement perform by the body is similar to a elbow flexion, but with some remarkable differences.

I do not know if I'm doing something wrong or if the problem comes from the external loads mot file, and I have to make some extra adjustments.

Thank you for your help!
Attachments
ExternalLoads.JPG
ExternalLoads.JPG (37.62 KiB) Viewed 446 times

Tags:

User avatar
jimmy d
Posts: 1375
Joined: Thu Oct 04, 2007 11:51 pm

Re: Perform Passive Stretching in OpenSim

Post by jimmy d » Mon Jul 08, 2019 7:52 am

Hi, Eduardo-

Yes, you should select the 'Solve for equilibrium for actuator states'. It really shouldn't even be an option, it would only not be selected under very few circumstances. For a good explanation for what is happening, you could read [urlhttps://nmbl.stanford.edu/publications/pdf/Millard2013.pdf]this paper[/url], particularly section 2.2 Equilibrium Musculotendon Model .

Since you are doing a passive stretch, your muscle properties will be important for your final result. If you aren't already, you should probably use the Millard2012EquilibriumMuscle muscle type, you will have more control over the passive force curves of the muscle.

In terms of the force applied, it is hard to say if you are doing that correctly. From the image you sent, it looks good, but it will depend on how you recorded the force and if it is applied to the body correctly.

Since you mentioned Forward Dynamics, I assume you aren't tracking or using an input motion and are applying the forces and integrating forward to observe the accelerations. If that is correct, I am not surprised you are getting 'strange' results. For one, you will need to have something in the model to represent the joint forces so that the bodies don't just spin around their axis. You could use something like a CoordinateLimitForce for that.

However, I would recommend approaching the problem by having a motion in mind-- like elbow extension. I have attached a zip file that includes a model with a prescribed elbow extension motion. You can run a Forward simulation with this model (for 1 sec) and you will see how the elbow extends. You could do something similar with your model while applying the forces.
Attachments
example.zip
(26.26 KiB) Downloaded 16 times

User avatar
Eduardo Sáenz Aldea
Posts: 18
Joined: Thu Oct 25, 2018 2:47 am

Re: Perform Passive Stretching in OpenSim

Post by Eduardo Sáenz Aldea » Tue Jul 09, 2019 7:17 am

Thank you for your reply, it was really helpful.

I was using a Thelen muscle but now I see why the Millard muscle model was more appropriate for my project and I already updated the whole model.
However, I would recommend approaching the problem by having a motion in mind-- like elbow extension
We are recording the motion with a Kinect, sorry I forgot to mention that, so we have all the joint coordinates. Also for your information, we are using a robot to obtain the forces applied in the hand of the subject. I guess I should indicate the coordinates motion file in the "Kinematics for External Loads section while running Forward Dynamics, right?
Do you know where can I find some information about how this kinematics file works with the external loads? It would be really useful for me to deeply understand the maths behind it.

Thank you again for your help!

User avatar
jimmy d
Posts: 1375
Joined: Thu Oct 04, 2007 11:51 pm

Re: Perform Passive Stretching in OpenSim

Post by jimmy d » Tue Jul 09, 2019 9:18 am

I should indicate the coordinates motion file in the "Kinematics for External Loads section while running Forward Dynamics, right?
Leave this blank. There isn't a reason to specify this. It is a long story, but essentially only a hand-full of people would ever need this and we are most likely going to remove it from future versions of the software.

User avatar
Eduardo Sáenz Aldea
Posts: 18
Joined: Thu Oct 25, 2018 2:47 am

Re: Perform Passive Stretching in OpenSim

Post by Eduardo Sáenz Aldea » Tue Jul 09, 2019 9:22 am

Alright, thank you!
How should I introduce the kinematics then? Running the CMC in the first place and then using the controls in a FD simulation?
If so, how do I specify it is a passive stretch in the CMC tool?

User avatar
jimmy d
Posts: 1375
Joined: Thu Oct 04, 2007 11:51 pm

Re: Perform Passive Stretching in OpenSim

Post by jimmy d » Tue Jul 09, 2019 10:49 am

You have to first convert the Kinect kinematics to an OpenSim motion (.mot) file. Once you have a correctly formatted motion file, you can specify the 'Desired Kinematics' in CMC using your motion file.
If so, how do I specify it is a passive stretch in the CMC tool?
The force you are applying to the model (and causing the motion) is the thing that is causing the passive stretch.

User avatar
Eduardo Sáenz Aldea
Posts: 18
Joined: Thu Oct 25, 2018 2:47 am

Re: Perform Passive Stretching in OpenSim

Post by Eduardo Sáenz Aldea » Tue Jul 09, 2019 11:12 am

Perfect! That's exactly what I needed to know.

Thank you for all your help! :D

POST REPLY