crv2rotation

Given a Cartesian rotation vector, \(\boldsymbol{\Psi}\), the function produces the rotation matrix required to rotate a vector according to \(\boldsymbol{\Psi}\).

The rotation matrix is given by

\[\mathbf{R} = \mathbf{I} + \frac{\sin||\boldsymbol{\Psi}||}{||\boldsymbol{\Psi}||} \tilde{\boldsymbol{\Psi}} + \frac{1-\cos{||\boldsymbol{\Psi}||}}{||\boldsymbol{\Psi}||^2}\tilde{\boldsymbol{\Psi}} \tilde{\boldsymbol{\Psi}}\]

To avoid the singularity when \(||\boldsymbol{\Psi}||=0\), the series expansion is used

\[\mathbf{R} = \mathbf{I} + \tilde{\boldsymbol{\Psi}} + \frac{1}{2!}\tilde{\boldsymbol{\Psi}}^2.\]
param psi:

Cartesian rotation vector \(\boldsymbol{\Psi}\).

type psi:

np.array

returns:

equivalent rotation matrix

rtype:

np.array

References

Geradin and Cardona, Flexible Multibody Dynamics: A finite element approach. Chapter 4