kwon3d

02-04-2004, 02:37 AM

Dear Ton and all,

I am sending this reply to the List since I thought some members may

want to read this.

>We were decomposing the angular velocity vector w along the JCS axes,

so:

w = wi*i + wj*j + wk*k

And then we simply assumed that wi would be the time derivative of the

first Cardanic angle. Now I'm not sure if that is the case.

My answer is: the above equation is correct. Let's use the trunk-UA

example again that I used in the previous posting. There are two

rerefence frames defined: trunk and UA. Both of them have the shoulder

joint as the origin for simplicity. Say the trunk frame is denoted as

the XYZ system and the UA frame is denoted as X'"Y'"Z'" system. We can

also define two intermediate frames: X'Y'Z' and X"Y"Z". If we use the

XYZ-type rotation sequence, the first rotation will rotate the XYZ

system to the X'Y'Z' system (angle A). Since the first rotation is about

the X axis, the X' axis coincides with the X axis: I = I'. The second

rotation (angle B) is about the Y' axis from the X'Y'Z' system to the

X"Y"Z" system (J' = J"). The third rotation (angle C) is about the Z"

axis from the X"Y"Z" system to the X'"Y'"Z'" system (K" = K'"). We can

compute three Eulerian angles (A, B, and C) to show the relative

orientation of the UA to the trunk.

The relative angular velocity of the UA to the trunk (W) can be written

as

W = w1 I + w2 J' + w3 K" [1]

where w1, w2, w3 = first time-derivatives of the three Cardanic angles,

I = unit vector of the X (or X') axis, J' = unit vector of the Y' (or

Y") axis, and K" = unit vector of the Z" (or C) axis. Eq 1 is a standard

procedure and you will be able to find this approach in any mechanics or

classical dynamics textbook. It was also used in several airborne

movement simulation studies (Ramey & Yang, 1981; Yeadon et al., 1990;

Kwon, 2001). Conceptually speaking, an angular velocity can be magnitude

* direction (unit) vector. The direction vector shows the orientation of

the axis of rotation while the magnitude shows how fas it rotates. The

three angular velocity vectors shown in Eq 1 represent three independent

rotations.

Unit vector I is already described in the XYZ system:

I = [ 1 0 0 ]^t [2]

where ^t = transpose. J' and K" can be described in the XYZ system as

well:

J' = Rx(-A).[ 0 1 0 ]^t [3]

K" = Rx(-A).Ry(-B).[ 0 0 1 ]^t [4]

where Rx = rotational transformation matrix about the X axis, and Ry =

rotational transformation matrix about the Y axis. And

J' = [ 0 cA sA ]^t [5]

K" = [ sB -sA.cB cA.cB ]^t [6]

where c = cos, and = sin. So the angular velocity can be written in a

matrix form:

[ 1 0 sB ][ w1 ]

W = [ 0 cA -sA.cB ][ w2 ] [7]

[ 0 sA cA.cB ][ w3 ]

where w1 = dA/dt, w2 = dB/dt, and w3 = dC/dt. Eq 7 can be used to

compute the angular velocity of a segment when the orientation angles

are available.

>Then derive dR/dt * inv(R) to get the angular velocity vector w in a

segment-fixed reference frame, and then do a cardanic decomposition of w

along the non-orthogonal axes. If the final answer is not (da/dt,

db/dt, dc/dt), we have been chasing the wrong problem.

Let's see the relationship between the angular velocity and the

transformation matrix from the UA frame to the trunk frame. Let vector

Quvw be the position vector of a fixed point on the UA, described in the

UA frame:

Quvw = [ qu qv qw ]^t [8]

where qu, qv, and qw = local coordinates of the fixed point (constant).

The position of the same point described in the trunk frame will be then

Qxyz = T^t.[ qu qv qw ]^t [9]

where T = transformation matrix from the trunk frame to the UA frame

showing the relative orientation of the UA to the trunk (XYZ rotation

assumed):

[ cB.cC sA.sB.cC+cA.sC -cA.sB.cC+sA.sC ]

T = [ -cB.sC -sA.sB.sC+cA.cC cA.sB.sC+sA.cC ]

[10]

[ sB -sA.cB cA.cB ]

In Eq 9, it was assumed that both the trunk frame and the UA frame are

at the same origin (shoulder joint). The velocity of the point fixed on

the UA can be expressed in two different ways:

V = W x Qxyz [11]

V = dQxyz/dt [12]

Eq 11 can be converted to an equivalent matrix form:

V = .Qxyz [13]

where is a skew-symmetric matrix with the following form:

[ 0 -wz wy ]

= [ wz 0 -wx ] [14]

[ -wy wx 0 ]

>From Eqs 9 and 13:

V = .( T^t.Quvw ) [15]

>From Eq 9 and 12:

V = dQxyz/dt = d(T^t)/dt.Quvw [16]

since

dQuvw/dt = 0 [17]

The point is fixed on the UA and rotates with the UA, so the local

coordinates are constant.

>From Eqs 15 and 16:

.T^t = d(T^t)/dt [18]

or

= d(T^t)/dt.T [19]

T^t shown in Eq 19 is equivalent to R used by Ton above and

= dR/dt.R^t [20]

So the right side of Eq 20 is identical to Ton's eq but the left side is

, not W. Eq 20 can be used if one wants to compute the angular

velocity of a segment directly from the transformation matrix.

Although it was a tedious process, I actually tried wz (row 2, column 1

of ) for an example and got

w3 = d/dt([ t12 t22 t32 ] ).[ t11 t21 t31 ]^t

= d(t12)/dt.t11 + d(t22)/dt.t21 + d(t32)/dt.t31

= sA.w2 + cA.cB.w3 [21]

Eq 21 matches to the 3rd row of Eq 7. I expect similar results for wx

and wy and Eq 1 is correct after all. I will try to put together a

webpage since text-based email is not the most ideal place for running

down equations.

References

Ramey, M.R. & Yang, A.T. (1981). A simulation procedure for human motion

studies. Journal of Biomechanics, 14, 203-213.

Yeadon, M.A., J. Hales, F.D. (1990). The simulation of aerial

movement--IV. A computer simulation model. Journal of Biomechanics, 23,

85-89.

Kwon, Y.-H. (2001). Experimental simulation of an airborne movement:

applicability of the body segment parameter estimation methods. Journal

of Applied Biomechanics, 17, 232-240.

Young-Hoo

------------------------------------------------------

- Young-Hoo Kwon, Ph.D.

- Biomechanics Lab, Texas Woman's University

- kwon3d@kwon3d.com

- http://kwon3d.com

------------------------------------------------------

-----Original Message-----

From: Ton van den Bogert [mailto:bogert@bme.ri.ccf.org]

Sent: Tuesday, February 03, 2004 9:06 AM

To: rubenson@cyllene.uwa.edu.au

Cc: richard.baker@RCH.ORG.AU; kwon3d@kwon3d.com; vxz1@PSU.EDU

Subject: Re: thanks for help

rubenson@cyllene.uwa.edu.au wrote:

> I want to thank you for all the input you gave to my questions

> regarding 3D joint power. I was very impressed at the amount of time

> and thought that you put into them. I suppose it's not a

> straightforward problem, but your comments and calculations have

> improved my understanding and given me lots of food for thought.

You're welcome, it is nice to have discussions like this once in a

while.

I was going to respond to Young-Hoo's last posting, because I realized

we may have done something wrong all along. But I had no time to do

this well, so I will just raise the question without answer.

We were decomposing the angular velocity vector w along the JCS axes,

so:

w = wi*i + wj*j + wk*k

And then we simply assumed that wi would be the time derivative of the

first Cardanic angle. Now I'm not sure if that is the case. The way to

check this would be to write the rotation matrix R in terms of Cardanic

angles, e.g.

R =

Cos[b]Cos[c] Cos[c]Sin[a]Sin[b]-Cos[a]Sin[c]

Cos[a]Cos[c]Sin[b]+Sin[a]Sin[c]

Cos[b]Sin[c] Cos[a]Cos[c]+Sin[a]Sin[b]Sin[c]

-Cos[c]Sin[a]+Cos[a]Sin[b]Sin[c]

-Sin[b] Cos[b]Sin[a] Cos[a]Cos[b]

(not sure for which rotation sequence this one is)

Then derive dR/dt * inv(R) to get the angular velocity vector w in a

segment-fixed reference frame, and then do a cardanic decomposition of w

along the non-orthogonal axes. If the final answer is not (da/dt,

db/dt, dc/dt), we have been chasing the wrong problem.

I don't have time to do this, is there an easier way?

I still think intuitively that total power should be the same, whether

we use dot product of the w and M vectors:

P = w.M

or sum the three "motor-equivalent" powers from a joint coordinate

system:

P = da/dt*Mi + db/dt*Mj + dc/dt*Mk.

Maybe these will be the same if we do this right.

> Ton, I'm aware that it is customary to post a summary of the

> responses. Do we still do that for longer discussions such as this

> one (I'm up to 30 pages!)? I could break the summary into two; one

> being the interpretation of 3D joint power and the other being the

> mathematical issue of JCS vs ACS if you feel that it will be of use

> for future reference in the archives.

I think a brief summary for Biomch-L would be great.

Ton

--

A.J. (Ton) van den Bogert, PhD

Department of Biomedical Engineering

Cleveland Clinic Foundation

9500 Euclid Avenue (ND-20)

Cleveland, OH 44195, USA

Phone: (216)444-5566

Fax: (501)665-1506

-----------------------------------------------------------------

To unsubscribe send SIGNOFF BIOMCH-L to LISTSERV@nic.surfnet.nl

For information and archives: http://isb.ri.ccf.org/biomch-l

Please consider posting your message to the Biomch-L Web-based

Discussion Forum: http://movement-analysis.com/biomch_l

-----------------------------------------------------------------

I am sending this reply to the List since I thought some members may

want to read this.

>We were decomposing the angular velocity vector w along the JCS axes,

so:

w = wi*i + wj*j + wk*k

And then we simply assumed that wi would be the time derivative of the

first Cardanic angle. Now I'm not sure if that is the case.

My answer is: the above equation is correct. Let's use the trunk-UA

example again that I used in the previous posting. There are two

rerefence frames defined: trunk and UA. Both of them have the shoulder

joint as the origin for simplicity. Say the trunk frame is denoted as

the XYZ system and the UA frame is denoted as X'"Y'"Z'" system. We can

also define two intermediate frames: X'Y'Z' and X"Y"Z". If we use the

XYZ-type rotation sequence, the first rotation will rotate the XYZ

system to the X'Y'Z' system (angle A). Since the first rotation is about

the X axis, the X' axis coincides with the X axis: I = I'. The second

rotation (angle B) is about the Y' axis from the X'Y'Z' system to the

X"Y"Z" system (J' = J"). The third rotation (angle C) is about the Z"

axis from the X"Y"Z" system to the X'"Y'"Z'" system (K" = K'"). We can

compute three Eulerian angles (A, B, and C) to show the relative

orientation of the UA to the trunk.

The relative angular velocity of the UA to the trunk (W) can be written

as

W = w1 I + w2 J' + w3 K" [1]

where w1, w2, w3 = first time-derivatives of the three Cardanic angles,

I = unit vector of the X (or X') axis, J' = unit vector of the Y' (or

Y") axis, and K" = unit vector of the Z" (or C) axis. Eq 1 is a standard

procedure and you will be able to find this approach in any mechanics or

classical dynamics textbook. It was also used in several airborne

movement simulation studies (Ramey & Yang, 1981; Yeadon et al., 1990;

Kwon, 2001). Conceptually speaking, an angular velocity can be magnitude

* direction (unit) vector. The direction vector shows the orientation of

the axis of rotation while the magnitude shows how fas it rotates. The

three angular velocity vectors shown in Eq 1 represent three independent

rotations.

Unit vector I is already described in the XYZ system:

I = [ 1 0 0 ]^t [2]

where ^t = transpose. J' and K" can be described in the XYZ system as

well:

J' = Rx(-A).[ 0 1 0 ]^t [3]

K" = Rx(-A).Ry(-B).[ 0 0 1 ]^t [4]

where Rx = rotational transformation matrix about the X axis, and Ry =

rotational transformation matrix about the Y axis. And

J' = [ 0 cA sA ]^t [5]

K" = [ sB -sA.cB cA.cB ]^t [6]

where c = cos, and = sin. So the angular velocity can be written in a

matrix form:

[ 1 0 sB ][ w1 ]

W = [ 0 cA -sA.cB ][ w2 ] [7]

[ 0 sA cA.cB ][ w3 ]

where w1 = dA/dt, w2 = dB/dt, and w3 = dC/dt. Eq 7 can be used to

compute the angular velocity of a segment when the orientation angles

are available.

>Then derive dR/dt * inv(R) to get the angular velocity vector w in a

segment-fixed reference frame, and then do a cardanic decomposition of w

along the non-orthogonal axes. If the final answer is not (da/dt,

db/dt, dc/dt), we have been chasing the wrong problem.

Let's see the relationship between the angular velocity and the

transformation matrix from the UA frame to the trunk frame. Let vector

Quvw be the position vector of a fixed point on the UA, described in the

UA frame:

Quvw = [ qu qv qw ]^t [8]

where qu, qv, and qw = local coordinates of the fixed point (constant).

The position of the same point described in the trunk frame will be then

Qxyz = T^t.[ qu qv qw ]^t [9]

where T = transformation matrix from the trunk frame to the UA frame

showing the relative orientation of the UA to the trunk (XYZ rotation

assumed):

[ cB.cC sA.sB.cC+cA.sC -cA.sB.cC+sA.sC ]

T = [ -cB.sC -sA.sB.sC+cA.cC cA.sB.sC+sA.cC ]

[10]

[ sB -sA.cB cA.cB ]

In Eq 9, it was assumed that both the trunk frame and the UA frame are

at the same origin (shoulder joint). The velocity of the point fixed on

the UA can be expressed in two different ways:

V = W x Qxyz [11]

V = dQxyz/dt [12]

Eq 11 can be converted to an equivalent matrix form:

V = .Qxyz [13]

where is a skew-symmetric matrix with the following form:

[ 0 -wz wy ]

= [ wz 0 -wx ] [14]

[ -wy wx 0 ]

>From Eqs 9 and 13:

V = .( T^t.Quvw ) [15]

>From Eq 9 and 12:

V = dQxyz/dt = d(T^t)/dt.Quvw [16]

since

dQuvw/dt = 0 [17]

The point is fixed on the UA and rotates with the UA, so the local

coordinates are constant.

>From Eqs 15 and 16:

.T^t = d(T^t)/dt [18]

or

= d(T^t)/dt.T [19]

T^t shown in Eq 19 is equivalent to R used by Ton above and

= dR/dt.R^t [20]

So the right side of Eq 20 is identical to Ton's eq but the left side is

, not W. Eq 20 can be used if one wants to compute the angular

velocity of a segment directly from the transformation matrix.

Although it was a tedious process, I actually tried wz (row 2, column 1

of ) for an example and got

w3 = d/dt([ t12 t22 t32 ] ).[ t11 t21 t31 ]^t

= d(t12)/dt.t11 + d(t22)/dt.t21 + d(t32)/dt.t31

= sA.w2 + cA.cB.w3 [21]

Eq 21 matches to the 3rd row of Eq 7. I expect similar results for wx

and wy and Eq 1 is correct after all. I will try to put together a

webpage since text-based email is not the most ideal place for running

down equations.

References

Ramey, M.R. & Yang, A.T. (1981). A simulation procedure for human motion

studies. Journal of Biomechanics, 14, 203-213.

Yeadon, M.A., J. Hales, F.D. (1990). The simulation of aerial

movement--IV. A computer simulation model. Journal of Biomechanics, 23,

85-89.

Kwon, Y.-H. (2001). Experimental simulation of an airborne movement:

applicability of the body segment parameter estimation methods. Journal

of Applied Biomechanics, 17, 232-240.

Young-Hoo

------------------------------------------------------

- Young-Hoo Kwon, Ph.D.

- Biomechanics Lab, Texas Woman's University

- kwon3d@kwon3d.com

- http://kwon3d.com

------------------------------------------------------

-----Original Message-----

From: Ton van den Bogert [mailto:bogert@bme.ri.ccf.org]

Sent: Tuesday, February 03, 2004 9:06 AM

To: rubenson@cyllene.uwa.edu.au

Cc: richard.baker@RCH.ORG.AU; kwon3d@kwon3d.com; vxz1@PSU.EDU

Subject: Re: thanks for help

rubenson@cyllene.uwa.edu.au wrote:

> I want to thank you for all the input you gave to my questions

> regarding 3D joint power. I was very impressed at the amount of time

> and thought that you put into them. I suppose it's not a

> straightforward problem, but your comments and calculations have

> improved my understanding and given me lots of food for thought.

You're welcome, it is nice to have discussions like this once in a

while.

I was going to respond to Young-Hoo's last posting, because I realized

we may have done something wrong all along. But I had no time to do

this well, so I will just raise the question without answer.

We were decomposing the angular velocity vector w along the JCS axes,

so:

w = wi*i + wj*j + wk*k

And then we simply assumed that wi would be the time derivative of the

first Cardanic angle. Now I'm not sure if that is the case. The way to

check this would be to write the rotation matrix R in terms of Cardanic

angles, e.g.

R =

Cos[b]Cos[c] Cos[c]Sin[a]Sin[b]-Cos[a]Sin[c]

Cos[a]Cos[c]Sin[b]+Sin[a]Sin[c]

Cos[b]Sin[c] Cos[a]Cos[c]+Sin[a]Sin[b]Sin[c]

-Cos[c]Sin[a]+Cos[a]Sin[b]Sin[c]

-Sin[b] Cos[b]Sin[a] Cos[a]Cos[b]

(not sure for which rotation sequence this one is)

Then derive dR/dt * inv(R) to get the angular velocity vector w in a

segment-fixed reference frame, and then do a cardanic decomposition of w

along the non-orthogonal axes. If the final answer is not (da/dt,

db/dt, dc/dt), we have been chasing the wrong problem.

I don't have time to do this, is there an easier way?

I still think intuitively that total power should be the same, whether

we use dot product of the w and M vectors:

P = w.M

or sum the three "motor-equivalent" powers from a joint coordinate

system:

P = da/dt*Mi + db/dt*Mj + dc/dt*Mk.

Maybe these will be the same if we do this right.

> Ton, I'm aware that it is customary to post a summary of the

> responses. Do we still do that for longer discussions such as this

> one (I'm up to 30 pages!)? I could break the summary into two; one

> being the interpretation of 3D joint power and the other being the

> mathematical issue of JCS vs ACS if you feel that it will be of use

> for future reference in the archives.

I think a brief summary for Biomch-L would be great.

Ton

--

A.J. (Ton) van den Bogert, PhD

Department of Biomedical Engineering

Cleveland Clinic Foundation

9500 Euclid Avenue (ND-20)

Cleveland, OH 44195, USA

Phone: (216)444-5566

Fax: (501)665-1506

-----------------------------------------------------------------

To unsubscribe send SIGNOFF BIOMCH-L to LISTSERV@nic.surfnet.nl

For information and archives: http://isb.ri.ccf.org/biomch-l

Please consider posting your message to the Biomch-L Web-based

Discussion Forum: http://movement-analysis.com/biomch_l

-----------------------------------------------------------------