Custom Joint

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Alessia Franceschi
Posts: 11
Joined: Fri Jan 09, 2015 2:08 am

Custom Joint

Post by Alessia Franceschi » Wed Feb 04, 2015 11:32 am

Hi,
I have a question about the interpretation of the SpatialTransform in a Custom Joint.

I'm working with the MoBL_ARMS_Upper_Limb_Model_OpenSim and I'm analysing the prono-supination movement. The joint that connects ulna and radius is a Custom Joint and to define the position of the radius relative to ulna there is a single "generalized coordinate" that coincide with the "rotation1".
I can't understand the meaning of the other two rotations because they have the axis of rotation defined but the transformation function is fixed as a constant equal to zero.
How the three rotation axis are taken?

Thank you.

User avatar
Dimitar Stanev
Posts: 1096
Joined: Fri Jan 31, 2014 5:14 am

Re: Custom Joint

Post by Dimitar Stanev » Wed Feb 04, 2015 2:29 pm

Dear Alessia,

The TransformAxis has three variables, the coordinates (name of the control variable), the axis of rotation and the function. Inside of a function you can define how you will map a value to the coordinates. In your case it is defined as constant with value 0, which mean you can't control its value, and it is set to zero. Probably the coordinates field is empty, thus not allowing you to control this rotation. Typically, when you have a coordinate in the field of coordinates, then you will have to define how it is controlled, which is usually defined as a linear function (coordinate value = 1 * input + 0).

BW,
Jim

User avatar
Alessia Franceschi
Posts: 11
Joined: Fri Jan 09, 2015 2:08 am

Re: Custom Joint

Post by Alessia Franceschi » Thu Feb 05, 2015 1:12 am

Thank you for your explanations. I have one more question: I can't understand if there is a rule or a norm that connects the choice of the three consequent axis. Do they have to represent three orthogonal axis? Even if the rotation 2 and 3 are blocked, what do they represent?
I have the three following axis:

rotation 1 : [-0.01716099 0.99266564 -0.11966796]
rotation 2 : [0.00000000 1.00000000 0.00000000]
rotation 3 : [-0.11966796 0.00000000 0.01716099]

Are they fixed or current axis?

Thank you.

User avatar
Dimitar Stanev
Posts: 1096
Joined: Fri Jan 31, 2014 5:14 am

Re: Custom Joint

Post by Dimitar Stanev » Thu Feb 05, 2015 1:41 am

From the modeling point of view you can arbitrary choose an axis of rotation for each coordinate. Don't confuse these rotations from how you define the joints transformations. From the mathematical point of view if they are represented as a single rotational matrix they should have to follow some convention. Probably they are not represented as a single rotation matrix so the coordinates whose field is empty are arbitrary chosen. Do not think them as a whole, but as separate entities.

They are fixed angle.

BW,
Jim

User avatar
Alessia Franceschi
Posts: 11
Joined: Fri Jan 09, 2015 2:08 am

Re: Custom Joint

Post by Alessia Franceschi » Thu Feb 05, 2015 2:40 am

I've read that the Custom Joint transform is described in the spatial trasform:
X=[R(x1,x2,x3) p(x4,x5,x6)] with x(q)
where q are the joint coordinates, and x are the spatial coordinates for the rotations (x1, x2, x3) and translations (x4, x5, x6) along user-defined axes that specify a spatial transform (X).
So the rotation matrix seems to be only one. In this case the three axes have to be choosen with a convention but I can't find this relation.

One more doubt: when I find, for example, axis [ 0 1 0] , into the brackets there are the coordinates of the versor of the axis, aren't they?

User avatar
Ajay Seth
Posts: 136
Joined: Thu Mar 15, 2007 10:39 am

Re: Custom Joint

Post by Ajay Seth » Thu Feb 05, 2015 10:14 am

The SpatialTransform describes a single Transform X = [R(q), p(q)] between the child and parent frames. In forming the translation, p, and rotation, R, the user can specify the spatial "transform axes", and for rotation it defines a successive Body-fixed rotation sequence about these axes in the order listed. That is rotation1 is a rotation about its transform axis, rotation2 about its, etc... The axes do not have to be orthogonal in this case, but cannot be parallel.

If you want to see the mathematical details for how this is done, see section "3 Generic joint motion without constraints" in:
Seth, A., Sherman, M., Eastman, P., Delp, S. Minimal formulation of joint motion for biomechanisms, Nonlinear Dyn, vol 62, pp 291-303.

POST REPLY