Can I change the tolerance (InverseDynamics.ForceDepKin.ForceTol) in such a way that the error will be avoided or at least postponed ? If yes, what does it changes if I use a higher value ?
If you use a higher value it simply means that there will be a higher residual forces in the constraints you are trying to reduce to be below the limit you give.
If you only have forces ie. linear translations to be force dependent then the number is in Newtons if you have it mixed with rotational dof the number can also be in Nm.
Sometimes it can be ok to have the value higher that the default one, it depends the problem, if you have to hard surfaces in contact the limit can maybe be set to a higher value, it has to be based on a judgment, if this is ok or not
I have another question. If I get this error : Analysis stopped at time step x: The model failed to resolve the kinematic constraint
Can this error be related to the FDK ? I ask the question because if I run the kinematic analysis alone, I do not get this error, but I sometimes get it when I use the FDK.
Actually the error message is not very descriptive in your version. I have tried to run run a model that fails in the fortcooming version it now says
Failed to resolve force-dependent kinematic constraints. Newton relaxation too small. (final force error = 1.900849E+001)
Constraint no. 0 above error tolerance 0.001000, error = 19.008488.
Constraint no. 1 above error tolerance 0.001000, error = 0.439305.
When you run the FDK it will start by inserting the driver positions for the DOF you have made force dependent. If this fails you will get an kin error. If this solves it will then start to alter these dof to get rid of the residual, if that fails you will get a force error.
While it is running the FDK solution it will try out different positions of the dof you have made force dependent and it is important then that your model is reliable kinematically to handle a certain tolerance…
So i could be a good idea to test the individual dof in the joint to see if they how much these can be moved before something fails kinematically.
Your explanation is very clear. Thank you. Now that I know that the value is a force (N) or a moment (Nm), it will guide me through the determination of the good FDK parameters.
However, I do I know which constraint holds each residual force, since they are identified by a number and not by a name (e.g. Constraint no. 0 ) ?
Sorry there is no direct way to relate the constraint number to the dof in question at the moment.
I guess, (but i am not sure) that if you have a measure with say six dof in then the constraint force error you will get for this measure would be identical with the sequence of the measure…
If you have two separate measures i am not sure which one it would write first.
If I use a value of 1.7 N for “InverseDynamics.ForceDepKin.ForceTol”, does it introduces an error that distorts the results ? If yes, is there any way of knowing how less reliable the results are with this error ?
In other words, I could ask you: Does the translations of my DOFs that I get without any residual force would be the same as the ones that I get with a 1.7N residual force ?
As Søren explained in the earlier posts, that depends on the stiffness of your passive elastic elements. This 1.7N load will be taken by the artificial reaction force and not by the elastic elements. So you will indeed have a different result. The difference will be the displacement in the elastic elements corresponding to a load of 1.7N.
That can be negligeable or not depending on the stiffness.
So if I understand you well, the higher the residual force, the lower will be the force generated by the elastic elements, since this residual force is absorbed by the artificial reaction force. Does it means that this force will not be used by the system ? In that case, that will represent an error !
This residual force is used to solve the equilibrium of the system. It is just that it is provided by the artificial reaction. So there are no errors in term of pure mechanics and force equilibrium.
But physiologicaly it is an aproximation where the residual 1.7N are provided at no cost for the organism. So of course it is recommended to have this residual force reasonably low so that the approximation makes sense.
I see ! The problem now is to determine what is a reasonably low residual force ! I mean 1.7 N seems reasonable, but does 70 N is still reasonable, I don’t think so.
I think we have to look at it this way: At the end the aim of the FDK is to compute the displacement of a DoF. I would say that the displacement (or better said the lack of displacement) resulting from the artificial residual force is more important than the force itself.
Then the question is: Is the displacement corresponding to the residual force negligeable or not compared to the total displacement of the DoF?
And I guess this is easier to quantify.
Anyway I think this residual should not be more than a few newtons in all cases.
It is well explained. I think I now understand it well.
Now do you think that there would be a big difference in the resulting displacement if the FDK would further consider velocity and acceleration? Sure, it would depend on the amount of force, but what else ?
I think that this question is of interest for all of us that use the FDK solver.
As you would expect i guess there is no simple answer to this, it will depend the problem.
By setting the velocities and accelerations to zero for the dof using FDK, it neglects the fluctuation on that dof and assumes that it is perfectly damped, to the extend that was not the case in reality it would change the results if nonzero vel and acc was included.
If you had perfect data from a measurement that would measure these velocities and accelerations it would help quantify the error being made. That said these quantities would be very hard to measure accurately.