Paparazzi UAS
v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
|
Data Structures | |
struct | DoubleVect2 |
struct | DoubleVect3 |
struct | DoubleQuat |
Roation quaternion. More... | |
struct | DoubleMat33 |
struct | DoubleRMat |
rotation matrix More... | |
struct | DoubleEulers |
euler angles More... | |
struct | DoubleRates |
angular rates More... | |
Macros | |
#define | DOUBLE_VECT3_ROUND(_v) DOUBLE_VECT3_RINT(_v, _v) |
#define | DOUBLE_VECT3_RINT(_vout, _vin) |
#define | DOUBLE_RMAT_OF_EULERS(_rm, _e) double_rmat_of_eulers(&(_rm), &(_e)) |
#define | DOUBLE_RMAT_OF_EULERS_321(_rm, _e) double_rmat_of_eulers(&(_rm), &(_e)) |
#define | DOUBLE_QUAT_OF_EULERS(_q, _e) double_quat_of_eulers(&(_q), &(_e)) |
#define | DOUBLE_EULERS_OF_QUAT(_e, _q) double_eulers_of_quat(&(_e), &(_q)) |
#define | DOUBLE_QUAT_VMULT(v_out, q, v_in) double_quat_vmult(&(v_out), &(q), &(v_in)) |
Functions | |
static double | double_vect3_norm (struct DoubleVect3 *v) |
static void | double_vect3_normalize (struct DoubleVect3 *v) |
normalize 3D vector in place More... | |
static void | double_quat_identity (struct DoubleQuat *q) |
initialises a quaternion to identity More... | |
static double | double_quat_norm (struct DoubleQuat *q) |
static void | double_quat_normalize (struct DoubleQuat *q) |
void | double_rmat_of_eulers_321 (struct DoubleRMat *rm, struct DoubleEulers *e) |
Rotation matrix from 321 Euler angles (double). More... | |
void | double_quat_of_eulers (struct DoubleQuat *q, struct DoubleEulers *e) |
void | double_eulers_of_quat (struct DoubleEulers *e, struct DoubleQuat *q) |
void | double_quat_vmult (struct DoubleVect3 *v_out, struct DoubleQuat *q, struct DoubleVect3 *v_in) |
static void | double_rmat_identity (struct DoubleRMat *rm) |
initialises a rotation matrix to identity More... | |
void | double_rmat_inv (struct DoubleRMat *m_b2a, struct DoubleRMat *m_a2b) |
Inverse/transpose of a rotation matrix. More... | |
void | double_rmat_comp (struct DoubleRMat *m_a2c, struct DoubleRMat *m_a2b, struct DoubleRMat *m_b2c) |
Composition (multiplication) of two rotation matrices. More... | |
void | double_rmat_vmult (struct DoubleVect3 *vb, struct DoubleRMat *m_a2b, struct DoubleVect3 *va) |
rotate 3D vector by rotation matrix. More... | |
void | double_rmat_of_quat (struct DoubleRMat *rm, struct DoubleQuat *q) |
static void | double_rmat_of_eulers (struct DoubleRMat *rm, struct DoubleEulers *e) |
struct DoubleVect2 |
Definition at line 41 of file pprz_algebra_double.h.
Data Fields | ||
---|---|---|
double | x | |
double | y |
struct DoubleVect3 |
Definition at line 46 of file pprz_algebra_double.h.
Data Fields | ||
---|---|---|
double | x | |
double | y | |
double | z |
struct DoubleQuat |
Roation quaternion.
Definition at line 55 of file pprz_algebra_double.h.
Data Fields | ||
---|---|---|
double | qi | |
double | qx | |
double | qy | |
double | qz |
struct DoubleMat33 |
Definition at line 62 of file pprz_algebra_double.h.
Data Fields | ||
---|---|---|
double | m[3 *3] |
struct DoubleRMat |
rotation matrix
Definition at line 69 of file pprz_algebra_double.h.
Data Fields | ||
---|---|---|
double | m[3 *3] |
#define DOUBLE_EULERS_OF_QUAT | ( | _e, | |
_q | |||
) | double_eulers_of_quat(&(_e), &(_q)) |
Definition at line 192 of file pprz_algebra_double.h.
#define DOUBLE_QUAT_OF_EULERS | ( | _q, | |
_e | |||
) | double_quat_of_eulers(&(_q), &(_e)) |
Definition at line 191 of file pprz_algebra_double.h.
#define DOUBLE_QUAT_VMULT | ( | v_out, | |
q, | |||
v_in | |||
) | double_quat_vmult(&(v_out), &(q), &(v_in)) |
Definition at line 193 of file pprz_algebra_double.h.
#define DOUBLE_RMAT_OF_EULERS | ( | _rm, | |
_e | |||
) | double_rmat_of_eulers(&(_rm), &(_e)) |
Definition at line 189 of file pprz_algebra_double.h.
#define DOUBLE_RMAT_OF_EULERS_321 | ( | _rm, | |
_e | |||
) | double_rmat_of_eulers(&(_rm), &(_e)) |
Definition at line 190 of file pprz_algebra_double.h.
#define DOUBLE_VECT3_RINT | ( | _vout, | |
_vin | |||
) |
Definition at line 94 of file pprz_algebra_double.h.
#define DOUBLE_VECT3_ROUND | ( | _v | ) | DOUBLE_VECT3_RINT(_v, _v) |
Definition at line 91 of file pprz_algebra_double.h.
void double_eulers_of_quat | ( | struct DoubleEulers * | e, |
struct DoubleQuat * | q | ||
) |
Definition at line 68 of file pprz_algebra_double.c.
References DoubleEulers::phi, DoubleEulers::psi, DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, DoubleQuat::qz, and DoubleEulers::theta.
|
inlinestatic |
initialises a quaternion to identity
Definition at line 118 of file pprz_algebra_double.h.
References DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, and DoubleQuat::qz.
|
inlinestatic |
Definition at line 126 of file pprz_algebra_double.h.
References DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, DoubleQuat::qz, and SQUARE.
Referenced by double_quat_normalize().
|
inlinestatic |
Definition at line 132 of file pprz_algebra_double.h.
References double_quat_norm(), DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, and DoubleQuat::qz.
void double_quat_of_eulers | ( | struct DoubleQuat * | q, |
struct DoubleEulers * | e | ||
) |
Definition at line 49 of file pprz_algebra_double.c.
References DoubleEulers::phi, DoubleEulers::psi, DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, DoubleQuat::qz, and DoubleEulers::theta.
void double_quat_vmult | ( | struct DoubleVect3 * | v_out, |
struct DoubleQuat * | q, | ||
struct DoubleVect3 * | v_in | ||
) |
Definition at line 90 of file pprz_algebra_double.c.
References DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, DoubleQuat::qz, DoubleVect3::x, DoubleVect3::y, and DoubleVect3::z.
void double_rmat_comp | ( | struct DoubleRMat * | m_a2c, |
struct DoubleRMat * | m_a2b, | ||
struct DoubleRMat * | m_b2c | ||
) |
Composition (multiplication) of two rotation matrices.
m_a2c = m_a2b comp m_b2c , aka m_a2c = m_b2c * m_a2b
Definition at line 130 of file pprz_algebra_double.c.
References DoubleRMat::m.
|
inlinestatic |
initialises a rotation matrix to identity
Definition at line 161 of file pprz_algebra_double.h.
References FLOAT_MAT33_DIAG.
void double_rmat_inv | ( | struct DoubleRMat * | m_b2a, |
struct DoubleRMat * | m_a2b | ||
) |
Inverse/transpose of a rotation matrix.
m_b2a = inv(_m_a2b) = transp(_m_a2b)
Definition at line 114 of file pprz_algebra_double.c.
References RMAT_ELMT.
|
inlinestatic |
Definition at line 183 of file pprz_algebra_double.h.
References double_rmat_of_eulers_321().
void double_rmat_of_eulers_321 | ( | struct DoubleRMat * | rm, |
struct DoubleEulers * | e | ||
) |
Rotation matrix from 321 Euler angles (double).
The Euler angles are interpreted as zy'x'' (intrinsic) rotation. First rotate around z with psi, then around the new y' with theta, then around new x'' with phi. This is the same as a xyz (extrinsic) rotation, rotating around the fixed x, then y then z axis.
[out] | rm | pointer to rotation matrix |
[in] | e | pointer to Euler angles |
Definition at line 29 of file pprz_algebra_double.c.
References DoubleEulers::phi, DoubleEulers::psi, RMAT_ELMT, and DoubleEulers::theta.
Referenced by double_rmat_of_eulers().
void double_rmat_of_quat | ( | struct DoubleRMat * | rm, |
struct DoubleQuat * | q | ||
) |
Definition at line 154 of file pprz_algebra_double.c.
References M_SQRT2, DoubleQuat::qi, DoubleQuat::qx, DoubleQuat::qy, DoubleQuat::qz, and RMAT_ELMT.
void double_rmat_vmult | ( | struct DoubleVect3 * | vb, |
struct DoubleRMat * | m_a2b, | ||
struct DoubleVect3 * | va | ||
) |
rotate 3D vector by rotation matrix.
vb = m_a2b * va
Definition at line 146 of file pprz_algebra_double.c.
References DoubleRMat::m, DoubleVect3::x, DoubleVect3::y, and DoubleVect3::z.
|
inlinestatic |
Definition at line 100 of file pprz_algebra_double.h.
References VECT3_NORM2.
Referenced by double_vect3_normalize().
|
inlinestatic |
normalize 3D vector in place
Definition at line 106 of file pprz_algebra_double.h.
References double_vect3_norm(), DoubleVect3::x, DoubleVect3::y, and DoubleVect3::z.