Joint reaction with orthosis
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Joint reaction with orthosis
Hi, my name is Thomas and i`m using OpenSim for my Master Thesis.
Right now i`m trying to add a simple orthesis to the "arm26" model. The orthesis consists of a part that is fixed to the upper arm, a pinjoint parallel to the ellbow and a transversal joint beneath the pinjoint. the second part of the transversal joint is fixed to the lower arm by a point-on-line constraint.
I performed an inverse kinematics investigation and a static optimization on the model without problems. But when i try to calculate the joint reactions i don`t get any results. every entry in the 3 rows for the forces and the moments is "-1.#IND0000".
I´m wondering if there is a problem with the way i included the orthesis. Somehow i created a loop in the models structure, but i`m not sure if thats a problem. Maybe one of you has experienced this kind of problem and can give me a helpfull hint.
Greetings Thomas
Right now i`m trying to add a simple orthesis to the "arm26" model. The orthesis consists of a part that is fixed to the upper arm, a pinjoint parallel to the ellbow and a transversal joint beneath the pinjoint. the second part of the transversal joint is fixed to the lower arm by a point-on-line constraint.
I performed an inverse kinematics investigation and a static optimization on the model without problems. But when i try to calculate the joint reactions i don`t get any results. every entry in the 3 rows for the forces and the moments is "-1.#IND0000".
I´m wondering if there is a problem with the way i included the orthesis. Somehow i created a loop in the models structure, but i`m not sure if thats a problem. Maybe one of you has experienced this kind of problem and can give me a helpfull hint.
Greetings Thomas
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
Today I tried to give all the elements of the orthosis some mass-properties. Now Static Optimization doesn't work anymore. It allways gives me the following message:
The model appears unsuitable for static optimization.
Try appending the model with additional force(s) or locking joint(s) to reduce the following acceleration constraint violation(s):
r_elbow_flex: constraint violation = 0.0400574
scharnier: constraint violation = 0.0769191
fuehrung: constraint violation = -0.000391589
Here, "scharnier" and "fuehrung" are the two joints of the orthesis.
Any ideas?
The model appears unsuitable for static optimization.
Try appending the model with additional force(s) or locking joint(s) to reduce the following acceleration constraint violation(s):
r_elbow_flex: constraint violation = 0.0400574
scharnier: constraint violation = 0.0769191
fuehrung: constraint violation = -0.000391589
Here, "scharnier" and "fuehrung" are the two joints of the orthesis.
Any ideas?
- Ayman Habib
- Posts: 2248
- Joined: Fri Apr 01, 2005 12:24 pm
Re: Joint reaction with orthosis
Hi Thomas,
How about inverse dynamics, can you solve it? First step of troubleshooting would be to loo into InverseDynamics solution to see if the joint torques expected are reasonable/achievable by your model.
Please let me know how that goes,
-Ayman
How about inverse dynamics, can you solve it? First step of troubleshooting would be to loo into InverseDynamics solution to see if the joint torques expected are reasonable/achievable by your model.
Please let me know how that goes,
-Ayman
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
Solving inverse dynamics seems to be no problem with this modell. I compared the torques from my model with the ones from the unchanged "arm26" model. They almost look identical except that there are some peaks and imperfections in my model (don`t know where they are comming from). And the torques for the joints of the orthosis are (allmost) zero, as expected.
- Ayman Habib
- Posts: 2248
- Joined: Fri Apr 01, 2005 12:24 pm
Re: Joint reaction with orthosis
Hi Thomas,
Those imperfections could be the reason static optimization fails since all accelerations need to be met so if there's a degree of freedom with (even small but non-zero acceleration) that is not actuated then static optimization will fail. You can work around those by adding actuators to these degrees of freedom and see if that makes it work.
Hope this helps,
-Ayman
Those imperfections could be the reason static optimization fails since all accelerations need to be met so if there's a degree of freedom with (even small but non-zero acceleration) that is not actuated then static optimization will fail. You can work around those by adding actuators to these degrees of freedom and see if that makes it work.
Hope this helps,
-Ayman
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
Hi Ayman
The upper part of the orthosis is fixed to the humerus. So, as far as i understand, the system "upper part/humerus" has the same movement and therefor acceleration and is actuated by the muscles that act on the humerus.
But for the lower part things aren't that easy. Since the axis of rotation from the ellbowjoint and the hinge of the orthosis don't coincide i need two additional degrees of freedom between the lower part and the fixation on the ulna/radius. So i made a translational joint along the lower part and a "point on line" constraint between the fixation and the translational part. (i hope you can imagine what i mean)
So every part is moving with the arm but not every part has an actuator acting directly on it. Is that the problem?
btw. thanks for your input so far!
The upper part of the orthosis is fixed to the humerus. So, as far as i understand, the system "upper part/humerus" has the same movement and therefor acceleration and is actuated by the muscles that act on the humerus.
But for the lower part things aren't that easy. Since the axis of rotation from the ellbowjoint and the hinge of the orthosis don't coincide i need two additional degrees of freedom between the lower part and the fixation on the ulna/radius. So i made a translational joint along the lower part and a "point on line" constraint between the fixation and the translational part. (i hope you can imagine what i mean)
So every part is moving with the arm but not every part has an actuator acting directly on it. Is that the problem?
btw. thanks for your input so far!
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
hi ayman
i found a problem with the marker-data i used and fixed it. also i tried to add actuators to the troublemaking degrees of freedom by simply add some muscles between the parts of the orthosis in the .osim-file.
inverse dynamic gives me reasonable results and everything looks fine here (no peaks or imperfections any more), but static optimization doesn`t work in any way.
my guess is that the point-on-line contraint is giving me troubles here. but i tested out a configuration of my model including a coordinate-coupler constraint and everything worked fine, so there is no generall problem with constraints, as i thought. unfortunatly i can`t find other topics on orthosis here in the forum.
i found a problem with the marker-data i used and fixed it. also i tried to add actuators to the troublemaking degrees of freedom by simply add some muscles between the parts of the orthosis in the .osim-file.
inverse dynamic gives me reasonable results and everything looks fine here (no peaks or imperfections any more), but static optimization doesn`t work in any way.
my guess is that the point-on-line contraint is giving me troubles here. but i tested out a configuration of my model including a coordinate-coupler constraint and everything worked fine, so there is no generall problem with constraints, as i thought. unfortunatly i can`t find other topics on orthosis here in the forum.
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
well, now i added actuators to every single degree of freedom with infinite activation, but i still get acceleration-constraint-violations at every timestep during static optimiziation. hows that possible?
do i have to tell opensim somehow to include the actuators to the calculation? i've simply added them to the forceset in the .osim-file.
i also increased the maximum force of all muscles just to see if this helps.
thanks for your help in advance
do i have to tell opensim somehow to include the actuators to the calculation? i've simply added them to the forceset in the .osim-file.
i also increased the maximum force of all muscles just to see if this helps.
thanks for your help in advance
- Ayman Habib
- Posts: 2248
- Joined: Fri Apr 01, 2005 12:24 pm
Re: Joint reaction with orthosis
Hi Thomas,
We usually add actuators if needed during static optimization by including additional actuators (e.g. gait2354_RRA_Actuators.xml under the examples\Gait2354_Simbody directory, you need to adjust for your model names etc.) then specify to append this set of Actuators under "Additional force set files". on the static optimization dialog. You could do the same by adding the actuators in the model file in the right spot but since this involves more xml file editing it's a bit more error prone (in your case do you see the added forces if you open the model in the GUI?). Things to account for:
- Unactuated degrees of freedom (e.g. pelvis/ground coordinates for gait models).
- Locked coordinates (do you have any?).
- Bounds on controls (you may start with loose bounds then tighten them)
It may help to run InverseDynamics first (without additional actuators) to see what accelerations we're trying to match.
Hope this helps, but if you still can't get this going please submit a bug report and attach all the model/data/setup files and we'll help you troubleshoot further.
We usually add actuators if needed during static optimization by including additional actuators (e.g. gait2354_RRA_Actuators.xml under the examples\Gait2354_Simbody directory, you need to adjust for your model names etc.) then specify to append this set of Actuators under "Additional force set files". on the static optimization dialog. You could do the same by adding the actuators in the model file in the right spot but since this involves more xml file editing it's a bit more error prone (in your case do you see the added forces if you open the model in the GUI?). Things to account for:
- Unactuated degrees of freedom (e.g. pelvis/ground coordinates for gait models).
- Locked coordinates (do you have any?).
- Bounds on controls (you may start with loose bounds then tighten them)
It may help to run InverseDynamics first (without additional actuators) to see what accelerations we're trying to match.
Hope this helps, but if you still can't get this going please submit a bug report and attach all the model/data/setup files and we'll help you troubleshoot further.
- Thomas Hofmann
- Posts: 11
- Joined: Tue Aug 23, 2011 1:38 am
Re: Joint reaction with orthosis
hello ayman
as i said, i really tried everything you suggested without finding a solution. so i really think it is a bug. my guess is that theres something wrong with closed kinematic chains or constraints (as you need them to create closed chains). but not completely 'cause IK and ID gives good results only SO is causing troubles.
i submitted a bug report and attached my model-files. i hope you soon find the time to look at it.
i need to calculate joint reactions for my thesis so i'm afraid i need SO to work.
as i said, i really tried everything you suggested without finding a solution. so i really think it is a bug. my guess is that theres something wrong with closed kinematic chains or constraints (as you need them to create closed chains). but not completely 'cause IK and ID gives good results only SO is causing troubles.
i submitted a bug report and attached my model-files. i hope you soon find the time to look at it.
i need to calculate joint reactions for my thesis so i'm afraid i need SO to work.