Random Attitudes#
- ahrs.common.quaternion.random_attitudes(n: int = 1, representation: str = 'quaternion') ndarray #
Generate random attitudes
To generate a random quaternion a mapping in SO(3) is first created and then transformed as explained originally by [Shoemake] and summarized in [Kuffner].
First, three uniform random values are sampled from the interval [0, 1]:
\[u_1, u_2, u_3 \sim U(0, 1)\]Then, two random angles are generated from these values:
\[\begin{split}\begin{array}{rl} s_1 &= \sqrt{1-u_1} \\ s_2 &= \sqrt{u_1} \\ t_1 &= 2\pi u_2 \\ t_2 &= 2\pi u_3 \end{array}\end{split}\]Finally, the quaternion is built as:
\[\begin{split}\mathbf{q} = \begin{bmatrix} s_2\cos t_2 \\ s_1\sin t_1 \\ s_1\cos t_1 \\ s_2\sin t_2 \end{bmatrix}\end{split}\]- Parameters:
n (int, default: 1) – Number of random attitudes to generate. Default is 1.
representation (str, default:
'quaternion'
) – Attitude representation. Options are'quaternion'
or'rotmat'
.
- Returns:
Q – Array of n random quaternions.
- Return type:
numpy.ndarray