Dealing with General Joint in a RBD model

Why the General Joint doesn’t have options for specific control of all Rotational DOFs (just like in translations) in a Rigid Dynamics model (RBD)?

The general joint doesn’t allow individual rotation constraints on purpose.

The problem is that while constraining a single rotation among 3 sounds is meaningful when considering small rotations, this is ambiguous with large rotations. See the detailed explanation below:

- Joints are usually used in the context of large rotations.

- When you have large rotations, the 3 rotations are not defined as rotations around the reference coordinate system of the joint but as a sequence of 3 angles.

- You apply the X rotation and define a new updated intermediate coordinate system.

- You apply a Y rotation around this second coordinate system and define a new update third coordinate system.

- You apply a Z rotation around this last CS.

- The 2nd and 3rd CS have no physics that defines their position, their position is only defined by the sequence of angles.

- In short, 3D rotations do not follow the same math as 3D vectors, and the 3 components are not independent of each other.

Now imagine that you release 2 out of 3 axes - say X and Z.

- While X is clearly defined as the X rotation about the reference CS, unfortunately, as the Y rotation is not defined, the very definition of the Z rotation is ambiguous.

- That's the reason why we don't allow a combination of two free DOFS.

- In the case of small rotations, the rotations around the reference CS and the rotations around the update CS are almost the same, this you could free two rotations (but it is still blocked).

** Note: As a workaround, you can work at the velocity level.

-The X, Y, and Z components of the joint rotational velocity are a 3D vector, they are the 3 components of the rotational velocity of the mobile CS with respect to the reference CS.

-Because it is a regular vector - just like displacements - you can specify any combination of zero and non-zero velocities.

- You can use a joint that has 3 rotations, and put a joint driver that constrains the Y rotation.