NinjaFlight
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
mavlink_conversions.h File Reference
#include <math.h>
Include dependency graph for mavlink_conversions.h:
This graph shows which files directly or indirectly include this file:

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])
 

Detailed Description

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.

Author
James Goppert
Thomas Gubler thoma.nosp@m.sgub.nosp@m.ler@g.nosp@m.mail.nosp@m..com

Macro Definition Documentation

#define M_PI_2   ((float)asin(1))

Function Documentation

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

Parameters
dcma 3x3 rotation matrix
rollthe roll angle in radians
pitchthe pitch angle in radians
yawthe 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:

Parameters
dcma 3x3 rotation matrix
quaterniona [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

Parameters
rollthe roll angle in radians
pitchthe pitch angle in radians
yawthe yaw angle in radians
dcma 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

Parameters
rollthe roll angle in radians
pitchthe pitch angle in radians
yawthe yaw angle in radians
quaterniona [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

Parameters
quaterniona [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
dcma 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

Parameters
quaterniona [w, x, y, z] ordered quaternion (null-rotation being 1 0 0 0)
rollthe roll angle in radians
pitchthe pitch angle in radians
yawthe yaw angle in radians

Here is the call graph for this function: