45#if FLOAT_DCM_SEND_DEBUG 
   48#include "pprzlink/messages.h" 
   67float DCM_Matrix[3][3]       = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
 
   83#if PERFORMANCE_REPORTING == 1 
   92  for (
int i = 0; i < 3; i++) {
 
   93    for (
int j = 0; 
j < 3; 
j++) {
 
 
  156  float dp = 0, 
dq = 0, 
dr = 0;
 
 
  212#if USE_AHRS_GPS_ACCELERATIONS 
 
  267#if FLOAT_DCM_SEND_DEBUG 
 
  314#if PERFORMANCE_REPORTING == 1 
  319#if PERFORMANCE_REPORTING == 1 
  331#if PERFORMANCE_REPORTING == 1 
  336#if PERFORMANCE_REPORTING == 1 
  348#if PERFORMANCE_REPORTING == 1 
  353#if PERFORMANCE_REPORTING == 1 
 
  370#ifndef ACCEL_WEIGHT_FILTER 
  371#define ACCEL_WEIGHT_FILTER 8 
  377#ifndef ACCEL_WEIGHT_BAND 
  378#define ACCEL_WEIGHT_BAND 1.f 
  401#if ACCEL_WEIGHT_FILTER 
  411#if PERFORMANCE_REPORTING == 1 
  461#if USE_MAGNETOMETER_ONGROUND 
  462  PRINT_CONFIG_MSG(
"AHRS_FLOAT_DCM uses magnetometer prior to takeoff and GPS during flight")
 
 
  517  for (
int x = 0; x < 3; x++) { 
 
  518    for (
int y = 0; y < 3; y++) {
 
 
void ahrs_dcm_propagate(struct FloatRates *gyro, float dt)
void Drift_correction(void)
void ahrs_dcm_update_gps(struct GpsState *gps_s UNUSED)
void ahrs_dcm_update_mag(struct FloatVect3 *mag)
static void compute_ahrs_representations(void)
float Temporary_Matrix[3][3]
void ahrs_dcm_update_accel(struct FloatVect3 *accel)
void Matrix_update(float dt)
static void set_dcm_matrix_from_rmat(struct FloatRMat *rmat)
#define ACCEL_WEIGHT_FILTER
struct AhrsFloatDCM ahrs_dcm
bool ahrs_dcm_align(struct FloatRates *lp_gyro, struct FloatVect3 *lp_accel, struct FloatVect3 *lp_mag)
#define ACCEL_WEIGHT_BAND
float Update_Matrix[3][3]
struct FloatVect3 accel_float
struct FloatVect3 mag_float
Attitude estimation for fixedwings based on the DCM.
#define AHRS_FLOAT_MIN_SPEED_GPS_COURSE
struct FloatRates body_rate
struct FloatEulers ltp_to_body_euler
struct FloatRates gyro_bias
enum AhrsDCMStatus status
Algebra helper functions for DCM.
static void Vector_Add(float vectorOut[3], float vectorIn1[3], float vectorIn2[3])
static void Matrix_Multiply(float a[3][3], float b[3][3], float mat[3][3])
static void Vector_Scale(float vectorOut[3], float vectorIn[3], float scale2)
static float Vector_Dot_Product(float vector1[3], float vector2[3])
static void Vector_Cross_Product(float vectorOut[3], float v1[3], float v2[3])
Utility functions for floating point AHRS implementations.
static void ahrs_float_get_quat_from_accel_mag(struct FloatQuat *q, struct FloatVect3 *accel, struct FloatVect3 *mag)
static void ahrs_float_get_quat_from_accel(struct FloatQuat *q, struct FloatVect3 *accel)
Compute a quaternion representing roll and pitch from an accelerometer measurement.
struct pprz_autopilot autopilot
Global autopilot structure.
Core autopilot interface common to all firmwares.
bool launch
request launch
Common code for AP and FBW telemetry.
Device independent GPS code (interface)
#define GPS_FIX_3D
3D GPS fix
data structure for GPS information
#define FLOAT_EULERS_ZERO(_e)
static void float_rmat_identity(struct FloatRMat *rm)
initialises a rotation matrix to identity
void float_rmat_of_quat(struct FloatRMat *rm, struct FloatQuat *q)
void float_eulers_of_quat(struct FloatEulers *e, struct FloatQuat *q)
euler rotation 'ZYX'
#define FLOAT_RATES_ZERO(_r)
#define RMAT_ELMT(_rm, _row, _col)
#define RATES_DIFF(_c, _a, _b)
PRINT_CONFIG_MSG("USE_INS_NAV_INIT defaulting to TRUE")
arch independent LED (Light Emitting Diodes) API
Paparazzi floating point algebra.
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.