Hi,
I have (hopefully) a simple question, does any one know how I can change the assembly tolerance in an opensim model?
I think the geometry of my system is not precise enough to achieve an 1 e-9 m perfection. The error that I get is:
"Assembly error tolerance achieved: 1.79835104405468e-007 required: 1e-009."
So I'll rather relax the assembly tolerance to something like 1 e-6.
In a previous topic ("RRA Singular Matrix") it was already mentioned, but there was no response on how to relax this tolerance.
I hope someone can help me! Thanks!
Adjustment assembly tolerance
Re: Adjustment assembly tolerance
Hi Laura,
Short answer is that there is no (easy) way for you to change the tolerance. We don't expose that ability because, through our own extensive testing, we found that anything more than a tolerance of 10^-9 caused anomalies in the model.
Do you have any locked joints in the model? or many looped constraints?
The only way to change this would be to edit from source.
Hope that helps,
-james
Short answer is that there is no (easy) way for you to change the tolerance. We don't expose that ability because, through our own extensive testing, we found that anything more than a tolerance of 10^-9 caused anomalies in the model.
Do you have any locked joints in the model? or many looped constraints?
The only way to change this would be to edit from source.
Hope that helps,
-james
- Laura Peeters
- Posts: 11
- Joined: Thu Nov 28, 2013 9:12 am
Re: Adjustment assembly tolerance
Hi James,
Thanks for your reply! Too bad that it is not just an easy fix. I'll have to find the problem somewhere else.
I have some locked joints in my model and also some looped constraints (if you mean that some degrees of freedom are used both as independent and dependent value in a CoordinateCooplerConstraint). I used the constraints to simulate a knee movement (and it worked fine with the constraints). In a nutshell, I added two tubes next to the knee on both sides afterwards(see attachment, thick tubes are the one that need to move with the whole block below (three rotations)). These tubes should be able to translate in the blocks guided by the knee movement. Manually (coordinates window), I can change the rotation and translation in a way that the top of the tube is connected to the upperpart. But when I add a PointConstraint at this point, the whole model can not move any more. OpenSim cannot solve the kinematic equations and I get the tolerance error. Possibly, my pointConstraint causes the problem.. Well, I'll figure it out. Unless someone has a great idea, I like to hear it
Regards
Thanks for your reply! Too bad that it is not just an easy fix. I'll have to find the problem somewhere else.
I have some locked joints in my model and also some looped constraints (if you mean that some degrees of freedom are used both as independent and dependent value in a CoordinateCooplerConstraint). I used the constraints to simulate a knee movement (and it worked fine with the constraints). In a nutshell, I added two tubes next to the knee on both sides afterwards(see attachment, thick tubes are the one that need to move with the whole block below (three rotations)). These tubes should be able to translate in the blocks guided by the knee movement. Manually (coordinates window), I can change the rotation and translation in a way that the top of the tube is connected to the upperpart. But when I add a PointConstraint at this point, the whole model can not move any more. OpenSim cannot solve the kinematic equations and I get the tolerance error. Possibly, my pointConstraint causes the problem.. Well, I'll figure it out. Unless someone has a great idea, I like to hear it
Regards
- Dario Cazzola
- Posts: 44
- Joined: Mon Jun 03, 2013 8:08 am
Re: Adjustment assembly tolerance
Hi Laura and James,
I have got a similar issue related to model constraints. I am using a refined version of Vasavada model (Head Neck) that includes many constraints in order to simulate cervical spine and head kinematics and scapula-clavicle coupled motion.
I got the same error (figure in attachment) related to 'Assembly error tolerance achieved', but also an exception related to 'Inverse Dynamic ERROR - overconstrained system -- need at least as many forces as there are degrees of freedom'.
I could potentially change scapular and clavicle motion but I would not like to change vertebrae relative motion since the function describing their motion is based on in-vivo data from the literature.
So, my question relies on general utilisation of looped constraints in our models. Is it true that it's better to minimise costraints design ? Is there any other option to avoid this tolerance issue?
Many thanks
Cheers
Dario
I have got a similar issue related to model constraints. I am using a refined version of Vasavada model (Head Neck) that includes many constraints in order to simulate cervical spine and head kinematics and scapula-clavicle coupled motion.
I got the same error (figure in attachment) related to 'Assembly error tolerance achieved', but also an exception related to 'Inverse Dynamic ERROR - overconstrained system -- need at least as many forces as there are degrees of freedom'.
I could potentially change scapular and clavicle motion but I would not like to change vertebrae relative motion since the function describing their motion is based on in-vivo data from the literature.
So, my question relies on general utilisation of looped constraints in our models. Is it true that it's better to minimise costraints design ? Is there any other option to avoid this tolerance issue?
Many thanks
Cheers
Dario
- Laura Peeters
- Posts: 11
- Joined: Thu Nov 28, 2013 9:12 am
Re: Adjustment assembly tolerance
Hi Dario,
I'm not an expert in building OpenSim models, but maybe some things you could try..
I got some desginer tips from James, based on another forum topic: "slow simulations". In the end, these suggestions also solved my error tolerance problem. Maybe you can try to use the tag <is_free_to_satisfy_constraints>true</is_free_to_satisfy_constraints> in the coordinates which can take on any value in order to satisfy the constraints. So in your case I can imagine that the coordinates of the vertebrae are defined, but the motions scapular and clavicle may deviate a little with your defined values just to help the model solving the kinematics. Please see the other topic for more detailed information.
I don't know whether this will solve your problem, but you could try.
Regards
I'm not an expert in building OpenSim models, but maybe some things you could try..
I got some desginer tips from James, based on another forum topic: "slow simulations". In the end, these suggestions also solved my error tolerance problem. Maybe you can try to use the tag <is_free_to_satisfy_constraints>true</is_free_to_satisfy_constraints> in the coordinates which can take on any value in order to satisfy the constraints. So in your case I can imagine that the coordinates of the vertebrae are defined, but the motions scapular and clavicle may deviate a little with your defined values just to help the model solving the kinematics. Please see the other topic for more detailed information.
I don't know whether this will solve your problem, but you could try.
Regards
- Dario Cazzola
- Posts: 44
- Joined: Mon Jun 03, 2013 8:08 am
Re: Adjustment assembly tolerance
Hi Laura,
Thanks a lot for the fast reply. I tried to include <is_free_to_satisfy_constraints>true</is_free_to_satisfy_constraints> but in this way I get a rid of the control of the coordinate selected to be free to satisfy constraints. Is that right?
Cheers
Dario
Thanks a lot for the fast reply. I tried to include <is_free_to_satisfy_constraints>true</is_free_to_satisfy_constraints> but in this way I get a rid of the control of the coordinate selected to be free to satisfy constraints. Is that right?
Cheers
Dario
- Laura Peeters
- Posts: 11
- Joined: Thu Nov 28, 2013 9:12 am
Re: Adjustment assembly tolerance
I'm not sure.. It suggests indeed that you get rid of the control of the coordinates, but I can also imagine that it tries to match your control values, but it may deviate a little when necessary. So, actually I don't know. I'll think you should try and see what happens Maybe you can conclude from the results if the model is getting rid of the control values or not.