Hallo,

I am interested in how to calculate angular velocity/acceleration from a time serie of 3x3 rotation matrices which I get from marker positions measured by a Vicon motion analysis system. Different ways are possible and I want to learn which of the methods are used in practice and which numerical advantages or disadvantages have the different methods.

The following possiblities are my startpoint:

1. First calculate time series of cardan angles with an arbitray rotation order. Then you can estimate the derivations of these three time series of double values by a) simply calculating differences or by b) low order polynom derivations (a kind of filtering and differentiating in one step, different orders and techniques are possible). One disadvantage of this method can be gimbal lock.

2. Use the formula [~omega]=[M'(t)][M(t)]^-1 to calculate the Tensor which includes the components of the angular velocity by time derivatives of each component of the rotation Matrix M(t) multiplicated with the inverse of the rotations matrix. For the estimation of the time derivative of the component the same methods from 1. a),b) can be used. In Comparison with 1. gimbal lock should be no problem.

3. You can simply estimate the velocity by calculating dot products of the columns between two sequent matrices. The implementation of Vicon PiG seems to do this by using matrices of frames with a time distance of 0.05s by 120Hz frame rate.

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.

Which of these methods do you use? Are there further methods? Which filtering details you use? Are there further practical details I have to look at? I am also interested in literature.

best regards

Oliver Rettig

---

Oliver Rettig

Stiftung Orthopädische Universitätsklinik Heidelberg

Ganglabor

Schlierbacher Landstr. 200a

69118 Heidelberg

Germany

Tel: +49 6221-96 6720

Fax: +49 6221-96 6725

I am interested in how to calculate angular velocity/acceleration from a time serie of 3x3 rotation matrices which I get from marker positions measured by a Vicon motion analysis system. Different ways are possible and I want to learn which of the methods are used in practice and which numerical advantages or disadvantages have the different methods.

The following possiblities are my startpoint:

1. First calculate time series of cardan angles with an arbitray rotation order. Then you can estimate the derivations of these three time series of double values by a) simply calculating differences or by b) low order polynom derivations (a kind of filtering and differentiating in one step, different orders and techniques are possible). One disadvantage of this method can be gimbal lock.

2. Use the formula [~omega]=[M'(t)][M(t)]^-1 to calculate the Tensor which includes the components of the angular velocity by time derivatives of each component of the rotation Matrix M(t) multiplicated with the inverse of the rotations matrix. For the estimation of the time derivative of the component the same methods from 1. a),b) can be used. In Comparison with 1. gimbal lock should be no problem.

3. You can simply estimate the velocity by calculating dot products of the columns between two sequent matrices. The implementation of Vicon PiG seems to do this by using matrices of frames with a time distance of 0.05s by 120Hz frame rate.

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.

Which of these methods do you use? Are there further methods? Which filtering details you use? Are there further practical details I have to look at? I am also interested in literature.

best regards

Oliver Rettig

---

Oliver Rettig

Stiftung Orthopädische Universitätsklinik Heidelberg

Ganglabor

Schlierbacher Landstr. 200a

69118 Heidelberg

Germany

Tel: +49 6221-96 6720

Fax: +49 6221-96 6725