NinjaFlight
|
#include <math.h>
Go to the source code of this file.
Macros | |
#define | M_PI_2 ((float)asin(1)) |
Functions | |
MAVLINK_HELPER void | mavlink_quaternion_to_dcm (const float quaternion[4], float dcm[3][3]) |
MAVLINK_HELPER void | mavlink_dcm_to_euler (const float dcm[3][3], float *roll, float *pitch, float *yaw) |
MAVLINK_HELPER void | mavlink_quaternion_to_euler (const float quaternion[4], float *roll, float *pitch, float *yaw) |
MAVLINK_HELPER void | mavlink_euler_to_quaternion (float roll, float pitch, float yaw, float quaternion[4]) |
MAVLINK_HELPER void | mavlink_dcm_to_quaternion (const float dcm[3][3], float quaternion[4]) |
MAVLINK_HELPER void | mavlink_euler_to_dcm (float roll, float pitch, float yaw, float dcm[3][3]) |
These conversion functions follow the NASA rotation standards definition file available online.
Their intent is to lower the barrier for MAVLink adopters to use gimbal-lock free (both rotation matrices, sometimes called DCM, and quaternions are gimbal-lock free) rotation representations. Euler angles (roll, pitch, yaw) will be phased out of the protocol as widely as possible.
#define M_PI_2 ((float)asin(1)) |
MAVLINK_HELPER void mavlink_dcm_to_euler | ( | const float | dcm[3][3], |
float * | roll, | ||
float * | pitch, | ||
float * | yaw | ||
) |
Converts a rotation matrix to euler angles
dcm | a 3x3 rotation matrix |
roll | the roll angle in radians |
pitch | the pitch angle in radians |
yaw | the yaw angle in radians |
MAVLINK_HELPER void mavlink_dcm_to_quaternion | ( | const float | dcm[3][3], |
float | quaternion[4] | ||
) |
Converts a rotation matrix to a quaternion Reference:
dcm | a 3x3 rotation matrix |
quaternion | a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0) |
MAVLINK_HELPER void mavlink_euler_to_dcm | ( | float | roll, |
float | pitch, | ||
float | yaw, | ||
float | dcm[3][3] | ||
) |
Converts euler angles to a rotation matrix
roll | the roll angle in radians |
pitch | the pitch angle in radians |
yaw | the yaw angle in radians |
dcm | a 3x3 rotation matrix |
MAVLINK_HELPER void mavlink_euler_to_quaternion | ( | float | roll, |
float | pitch, | ||
float | yaw, | ||
float | quaternion[4] | ||
) |
Converts euler angles to a quaternion
roll | the roll angle in radians |
pitch | the pitch angle in radians |
yaw | the yaw angle in radians |
quaternion | a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0) |
MAVLINK_HELPER void mavlink_quaternion_to_dcm | ( | const float | quaternion[4], |
float | dcm[3][3] | ||
) |
Converts a quaternion to a rotation matrix
quaternion | a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0) |
dcm | a 3x3 rotation matrix |
MAVLINK_HELPER void mavlink_quaternion_to_euler | ( | const float | quaternion[4], |
float * | roll, | ||
float * | pitch, | ||
float * | yaw | ||
) |
Converts a quaternion to euler angles
quaternion | a [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0) |
roll | the roll angle in radians |
pitch | the pitch angle in radians |
yaw | the yaw angle in radians |