My comments:

> 1. First calculate time series of cardan angles with an

> arbitray rotation order. [...]. One

> disadvantage of this method can be gimbal lock.

Young-Hoo Kwon already cited his page

http://kwon3d.com/theory/euler/avel.html which gives the equations to

obtain the angular velocity vector from cardan angle derivatives. Near

gimbal lock, these derivatives will be very noisy. I suspect (without

proof) that this noise will disappear again after going through the

angular velocity equations, but still... You have to set a threshold to

define when you are so close to gimbal lock to treat this as missing

data etc.

This method is actually what I generally use in a linked multibody

model, you differentiate the generalized coordinates and use forward

kinematics equations to get the angular velocities of the body segments.

When using this method, it is best to define kinematic variables

(generalized coordinates) in a way that gimbal lock is avoided in your

particular application.

For any differentiation, I would not recommend polynomial fitting but

use a proper low pass filter such as Butterworth digital filter, or

splines as Paolo de Leva suggested.

> 2. Use the formula [~omega]=[M'(t)][M(t)]^-1 to calculate the

> Tensor which includes the components of the angular velocity

In my experience, this works well (Bellchamber & van den Bogert, J

Biomech 2000). Still it seems less elegant to differentiate 9 signals

when there are only 3 rotational degrees of freedom.

> 3. You can simply estimate the velocity by calculating dot

> products of the columns between two sequent matrices. The

If that is indeed mathematically correct, it must be done after

appropriate smoothing as in method 2. Then the results become

independent of the frame rate and resolution.

> 4. Because my rotations matrices are typically based on cross

> products of vectors between markers I can analytical

> calculate formulars of the angular velocity as function from

> the derivations of the marker positions.

Yes, intuitively it should be optimal to estimate angular velocity from

marker velocities directly. In the past, I have suggested the following

(van den Bogert, Exerc Sports Sci Rev 1994):

(1) Obtain marker velocities from raw data via smoothing and

differentiation

(2) Rigid body model for marker velocity v_i as a function of segment

velocity v and angular velocity omega:

v_i = v + omega x (p_i - p)

where p us the position of the segment origin and p_i is measured marker

position.

(3) With N markers, these are 3N linear equations with 6 unknowns: v and

omega.

(4) Write the equations as A*x = b, where A is a 3N x 6 matrix and solve

x = (v, omega) using linear least-squares (Matlab: x = A\b)

I believe (without proof) that this method would give the least error in

angular velocity. And there are no singularities.

If you used your analytical expressions, you would be essentially using

only 6 of the 9 equations (when you have three markers). It is better

to use all information in the marker data to minimize the effect of

non-rigidity of the marker set. Also the least-squares numerical method

extends nicely to using more than 3 markers on a segment. These are the

same reasons as for using least squares to estimate segment position p

and rotation matrix R (e.g. http://isbweb.org/software/movanal/soder.m).

I suspect that, in practice, there is little difference between the

methods you listed, but it would be nice to have that confirmed.

Especially in certain "pathological" situations (e.g. near gimbal lock,

near-colinear marker placement, high noise, ...

--

Ton van den Bogert

Department of Biomedical Engineering

Cleveland Clinic Foundation

http://www.lerner.ccf.org/bme/bogert/

P Please consider the environment before printing this e-mail

Cleveland Clinic is ranked one of the top hospitals

in America by U.S. News & World Report (2007).

Visit us online at http://www.clevelandclinic.org for

a complete listing of our services, staff and

locations.

Confidentiality Note: This message is intended for use

only by the individual or entity to which it is addressed

and may contain information that is privileged,

confidential, and exempt from disclosure under applicable

law. If the reader of this message is not the intended

recipient or the employee or agent responsible for

delivering the message to the intended recipient, you are

hereby notified that any dissemination, distribution or

copying of this communication is strictly prohibited. If

you have received this communication in error, please

contact the sender immediately and destroy the material in

its entirety, whether electronic or hard copy. Thank you.

> 1. First calculate time series of cardan angles with an

> arbitray rotation order. [...]. One

> disadvantage of this method can be gimbal lock.

Young-Hoo Kwon already cited his page

http://kwon3d.com/theory/euler/avel.html which gives the equations to

obtain the angular velocity vector from cardan angle derivatives. Near

gimbal lock, these derivatives will be very noisy. I suspect (without

proof) that this noise will disappear again after going through the

angular velocity equations, but still... You have to set a threshold to

define when you are so close to gimbal lock to treat this as missing

data etc.

This method is actually what I generally use in a linked multibody

model, you differentiate the generalized coordinates and use forward

kinematics equations to get the angular velocities of the body segments.

When using this method, it is best to define kinematic variables

(generalized coordinates) in a way that gimbal lock is avoided in your

particular application.

For any differentiation, I would not recommend polynomial fitting but

use a proper low pass filter such as Butterworth digital filter, or

splines as Paolo de Leva suggested.

> 2. Use the formula [~omega]=[M'(t)][M(t)]^-1 to calculate the

> Tensor which includes the components of the angular velocity

In my experience, this works well (Bellchamber & van den Bogert, J

Biomech 2000). Still it seems less elegant to differentiate 9 signals

when there are only 3 rotational degrees of freedom.

> 3. You can simply estimate the velocity by calculating dot

> products of the columns between two sequent matrices. The

If that is indeed mathematically correct, it must be done after

appropriate smoothing as in method 2. Then the results become

independent of the frame rate and resolution.

> 4. Because my rotations matrices are typically based on cross

> products of vectors between markers I can analytical

> calculate formulars of the angular velocity as function from

> the derivations of the marker positions.

Yes, intuitively it should be optimal to estimate angular velocity from

marker velocities directly. In the past, I have suggested the following

(van den Bogert, Exerc Sports Sci Rev 1994):

(1) Obtain marker velocities from raw data via smoothing and

differentiation

(2) Rigid body model for marker velocity v_i as a function of segment

velocity v and angular velocity omega:

v_i = v + omega x (p_i - p)

where p us the position of the segment origin and p_i is measured marker

position.

(3) With N markers, these are 3N linear equations with 6 unknowns: v and

omega.

(4) Write the equations as A*x = b, where A is a 3N x 6 matrix and solve

x = (v, omega) using linear least-squares (Matlab: x = A\b)

I believe (without proof) that this method would give the least error in

angular velocity. And there are no singularities.

If you used your analytical expressions, you would be essentially using

only 6 of the 9 equations (when you have three markers). It is better

to use all information in the marker data to minimize the effect of

non-rigidity of the marker set. Also the least-squares numerical method

extends nicely to using more than 3 markers on a segment. These are the

same reasons as for using least squares to estimate segment position p

and rotation matrix R (e.g. http://isbweb.org/software/movanal/soder.m).

I suspect that, in practice, there is little difference between the

methods you listed, but it would be nice to have that confirmed.

Especially in certain "pathological" situations (e.g. near gimbal lock,

near-colinear marker placement, high noise, ...

--

Ton van den Bogert

Department of Biomedical Engineering

Cleveland Clinic Foundation

http://www.lerner.ccf.org/bme/bogert/

P Please consider the environment before printing this e-mail

Cleveland Clinic is ranked one of the top hospitals

in America by U.S. News & World Report (2007).

Visit us online at http://www.clevelandclinic.org for

a complete listing of our services, staff and

locations.

Confidentiality Note: This message is intended for use

only by the individual or entity to which it is addressed

and may contain information that is privileged,

confidential, and exempt from disclosure under applicable

law. If the reader of this message is not the intended

recipient or the employee or agent responsible for

delivering the message to the intended recipient, you are

hereby notified that any dissemination, distribution or

copying of this communication is strictly prohibited. If

you have received this communication in error, please

contact the sender immediately and destroy the material in

its entirety, whether electronic or hard copy. Thank you.