Hello,
I’m currently working on a model that has a rod that should be movable in the x and y direction (not in the direction of expansion). To allwo certin movement I implemented a FDK element similar to the one in the FDK tutorial. It should allow movements in two translational directions. When loading the model everything works as it should. However, once I run the Study.Kinematics an error message appears that the model is indeterminate.
My code includes a point fixed with the origin and a pole whose center is defined as a node to implement the FDK between the fixed point and the center.
The code of the FDK looks like this:
AnyRevoluteJoint SpringJoint = {
AnyRefNode &EndL = Main.MyModel.EnvironmentModel.Bar.Center;
AnyRefNode &End = Main.MyModel.EnvironmentModel.Holding.End;
Constraints = {
CType = {ForceDep, ForceDep, Hard, Hard, Hard};
Reaction.Type= {Off, Off, On, On, On};
}; //should allow movement in x and y direction
};
My question is now, which aspect I have disregarded and whether the FDK is properly defined for this purpose as well as which factor plays in to determine the model statically.
First of all, please provide your details and affiliation. This is a professional forum, and we would like to know whom we are helping.
Secondly, from the code that was shared I see that you have 5 constraints for the rod object, which has 6 degrees of freedom. Possibly you have an additional constraint elsewhere in the code, but if not start by defining this 6th constraint.
The kinematically indeterminate error arises when you have more DoFs than constraints in your model. Please check.
first of all, sorry for that. I’ve added my details and thanks for your quick answer.
Yesterday I’ve tried a few different ways to define my 6th constraint. By adding another ‘Hard’ to the CType I allways get an error saying: Number of elements in CType specification must match number of elements in Pos vector. I’ve found that “Reaktion.Type = {Off, Off, Off, On, On}; will mean that all three forces reactions are switched off whereas the moment reactions is still On.”
Theoretically there should be a third moment, shouldn’t it? How do I know witch moment I need to restrict? Do I need to restrict it elsewhere in my code?
AnyRevoluteJoint is an object that adds 5 constraints (3 translations and 2 out of plane rotations to your system), leaving 1 rotational degree of freedom undefined. In order to provide all necessary constraints you need to add another one that would define the rotation in the plane of choice.
Normally you would define another object like AnyKinEqSimpleDriver for the remaining DoF or something more complex depending on your task. Please check our tutorials, where all this is covered quite well.
Normally, the overall number of active reaction forces should be equal to the number of degrees of freedom, minus those that are modeled through FDK, where RF are generally represented by boney contacts or other elastic structures, minus those that are carried by muscles. For example, looking at the knee (idealized revolute) joint we have 3 linear constraints representing 0 translations (bone contacts), and 2 fixed rotations (moment generating bone contacts), whereas the remaining flexion degree of freedom is carried by muscles.
thanks for the great tipps and videos. I now got my model kinematically determinated and it looks like it works now. But I’m not sure, if my aim to allow ‘spring’ movement in x and y direction is reached or wheather I blocked this movement as well.
You would really do me a favour if you could have a quick look at my complete code - perhaps you see if there is any mistake made.
I think you have what you want, but probably your springs are not strong enough to hold this system in equilibrium. I changed something and now it moves and can find equilibrium - here are modifications: