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!
Perform Passive Stretching in OpenSim
- Eduardo Sáenz Aldea
- Posts: 18
- Joined: Thu Oct 25, 2018 2:47 am
Perform Passive Stretching in OpenSim
- Attachments
-
- ExternalLoads.JPG (37.62 KiB) Viewed 443 times
Tags:
Re: Perform Passive Stretching in OpenSim
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.
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
- Eduardo Sáenz Aldea
- Posts: 18
- Joined: Thu Oct 25, 2018 2:47 am
Re: Perform Passive Stretching in OpenSim
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.
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!
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.
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?However, I would recommend approaching the problem by having a motion in mind-- like elbow extension
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!
Re: Perform Passive Stretching in OpenSim
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.I should indicate the coordinates motion file in the "Kinematics for External Loads section while running Forward Dynamics, right?
- Eduardo Sáenz Aldea
- Posts: 18
- Joined: Thu Oct 25, 2018 2:47 am
Re: Perform Passive Stretching in OpenSim
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?
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?
Re: Perform Passive Stretching in OpenSim
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.
The force you are applying to the model (and causing the motion) is the thing that is causing the passive stretch.If so, how do I specify it is a passive stretch in the CMC tool?
- Eduardo Sáenz Aldea
- Posts: 18
- Joined: Thu Oct 25, 2018 2:47 am
Re: Perform Passive Stretching in OpenSim
Perfect! That's exactly what I needed to know.
Thank you for all your help!
Thank you for all your help!