Dear Oliver,
I am familiar with methods 1 and 2 but I actually use method 1 to compute
angular velocity. It actually has additional steps to carry out. See the
details at http://kwon3d.com/theory/euler/avel.html.
Orientation angles may have gimbal lock issue but one definite advantage of
the orientation angle approach is its intuitiveness. We had a discussion on
Biomch-L before but if sine of the second rotation angle approaches to 1 (or
cosine -> 0), I treat it as missing and generate the orientation angles
later through interpolation for the missing interval. Some people use
different rotation sequences at different joints to avoid gimbal lock as
well but I personally use XY'Z" or ZX'Y" sequence only, where X is the ML
axis, Y is the AP axis, and Z is the longitudinal axis.
I filter the orientation angles by using a Butterworth filter before
computing the angular velocity. Angular acceleration is simply a time
derivative of the angular velocity.
Young-Hoo
------------------------------------------------
Young-Hoo Kwon, Ph.D.
Director, Biomechanics Laboratory
Texas Woman's University
+1-940-898-2598 (Office & Fax)
ykwon@mail.twu.edu / kwon3d@kwon3d.com
------------------------------------------------
> -----Original Message-----
> From: * Biomechanics and Movement Science listserver
> [mailto:BIOMCH-L@NIC.SURFNET.NL] On Behalf Of Rettig, Oliver
> Sent: Friday, November 09, 2007 8:48 AM
> To: BIOMCH-L@NIC.SURFNET.NL
> Subject: [BIOMCH-L] Estimation of angular
> velocity/acceleration from 3x3 matrices
>
> 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
>
> ---------------------------------------------------------------
> Information about BIOMCH-L: http://www.Biomch-L.org
> Archives: http://listserv.surfnet.nl/archives/Biomch-L.html
> ---------------------------------------------------------------
I am familiar with methods 1 and 2 but I actually use method 1 to compute
angular velocity. It actually has additional steps to carry out. See the
details at http://kwon3d.com/theory/euler/avel.html.
Orientation angles may have gimbal lock issue but one definite advantage of
the orientation angle approach is its intuitiveness. We had a discussion on
Biomch-L before but if sine of the second rotation angle approaches to 1 (or
cosine -> 0), I treat it as missing and generate the orientation angles
later through interpolation for the missing interval. Some people use
different rotation sequences at different joints to avoid gimbal lock as
well but I personally use XY'Z" or ZX'Y" sequence only, where X is the ML
axis, Y is the AP axis, and Z is the longitudinal axis.
I filter the orientation angles by using a Butterworth filter before
computing the angular velocity. Angular acceleration is simply a time
derivative of the angular velocity.
Young-Hoo
------------------------------------------------
Young-Hoo Kwon, Ph.D.
Director, Biomechanics Laboratory
Texas Woman's University
+1-940-898-2598 (Office & Fax)
ykwon@mail.twu.edu / kwon3d@kwon3d.com
------------------------------------------------
> -----Original Message-----
> From: * Biomechanics and Movement Science listserver
> [mailto:BIOMCH-L@NIC.SURFNET.NL] On Behalf Of Rettig, Oliver
> Sent: Friday, November 09, 2007 8:48 AM
> To: BIOMCH-L@NIC.SURFNET.NL
> Subject: [BIOMCH-L] Estimation of angular
> velocity/acceleration from 3x3 matrices
>
> 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
>
> ---------------------------------------------------------------
> Information about BIOMCH-L: http://www.Biomch-L.org
> Archives: http://listserv.surfnet.nl/archives/Biomch-L.html
> ---------------------------------------------------------------