Paparazzi UAS  v6.2_unstable
Paparazzi is a free software Unmanned Aircraft System.
ahrs_float_dcm.h File Reference
#include <inttypes.h>
#include "math/pprz_algebra_float.h"
#include "math/pprz_orientation_conversion.h"
#include "modules/gps/gps.h"
+ Include dependency graph for ahrs_float_dcm.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  AhrsFloatDCM


#define Kp_ROLLPITCH   0.015
#define Ki_ROLLPITCH   0.000010
#define Kp_YAW   0.9
#define Ki_YAW   0.00005
#define GRAVITY   9.81
#define OUTPUTMODE   1




void ahrs_dcm_init (void)
void ahrs_dcm_set_body_to_imu (struct OrientationReps *body_to_imu)
void ahrs_dcm_set_body_to_imu_quat (struct FloatQuat *q_b2i)
bool ahrs_dcm_align (struct FloatRates *lp_gyro, struct FloatVect3 *lp_accel, struct FloatVect3 *lp_mag)
void ahrs_dcm_propagate (struct FloatRates *gyro, float dt)
void ahrs_dcm_update_accel (struct FloatVect3 *accel)
void ahrs_dcm_update_mag (struct FloatVect3 *mag)
void ahrs_dcm_update_gps (struct GpsState *gps_s)


struct AhrsFloatDCM ahrs_dcm
int renorm_sqrt_count
int renorm_blowup_count
float imu_health

Detailed Description

Attitude estimation for fixedwings based on the DCM.

Theory: file DCMDraft2.pdf

Definition in file ahrs_float_dcm.h.

Data Structure Documentation

◆ AhrsFloatDCM

struct AhrsFloatDCM

Definition at line 37 of file ahrs_float_dcm.h.

+ Collaboration diagram for AhrsFloatDCM:
Data Fields
struct OrientationReps body_to_imu
float gps_acceleration
uint8_t gps_age
float gps_course
bool gps_course_valid
float gps_speed
struct FloatRates gyro_bias
struct FloatRates imu_rate
bool is_aligned
struct FloatEulers ltp_to_imu_euler
struct FloatRates rate_correction
enum AhrsDCMStatus status

Macro Definition Documentation



Definition at line 76 of file ahrs_float_dcm.h.


#define GRAVITY   9.81

Definition at line 65 of file ahrs_float_dcm.h.


#define Ki_ROLLPITCH   0.000010

Definition at line 61 of file ahrs_float_dcm.h.

◆ Ki_YAW

#define Ki_YAW   0.00005

Definition at line 63 of file ahrs_float_dcm.h.


#define Kp_ROLLPITCH   0.015

Definition at line 60 of file ahrs_float_dcm.h.

◆ Kp_YAW

#define Kp_YAW   0.9

Definition at line 62 of file ahrs_float_dcm.h.


#define OUTPUTMODE   1

Definition at line 69 of file ahrs_float_dcm.h.



Definition at line 79 of file ahrs_float_dcm.h.

Enumeration Type Documentation

◆ AhrsDCMStatus


Definition at line 32 of file ahrs_float_dcm.h.

Function Documentation

◆ ahrs_dcm_align()

bool ahrs_dcm_align ( struct FloatRates lp_gyro,
struct FloatVect3 lp_accel,
struct FloatVect3 lp_mag 

◆ ahrs_dcm_init()

◆ ahrs_dcm_propagate()

void ahrs_dcm_propagate ( struct FloatRates gyro,
float  dt 

Definition at line 148 of file ahrs_float_dcm.c.

References ahrs_dcm, compute_ahrs_representations(), AhrsFloatDCM::gyro_bias, AhrsFloatDCM::imu_rate, Matrix_update(), Normalize(), FloatRates::p, FloatRates::q, FloatRates::r, and RATES_DIFF.

Referenced by gyro_cb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ahrs_dcm_set_body_to_imu()

void ahrs_dcm_set_body_to_imu ( struct OrientationReps body_to_imu)

Definition at line 536 of file ahrs_float_dcm.c.

References ahrs_dcm_set_body_to_imu_quat(), body_to_imu, and orientationGetQuat_f().

+ Here is the call graph for this function:

◆ ahrs_dcm_set_body_to_imu_quat()

void ahrs_dcm_set_body_to_imu_quat ( struct FloatQuat q_b2i)

Definition at line 541 of file ahrs_float_dcm.c.

References ahrs_dcm, AhrsFloatDCM::body_to_imu, AhrsFloatDCM::is_aligned, AhrsFloatDCM::ltp_to_imu_euler, orientationGetEulers_f(), and orientationSetQuat_f().

Referenced by ahrs_dcm_set_body_to_imu(), and body_to_imu_cb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ahrs_dcm_update_accel()

void ahrs_dcm_update_accel ( struct FloatVect3 accel)

Definition at line 200 of file ahrs_float_dcm.c.

References accel_float, ahrs_dcm, Drift_correction(), AhrsFloatDCM::gps_acceleration, AhrsFloatDCM::gps_age, AhrsFloatDCM::gps_speed, Omega, PRINT_CONFIG_MSG(), FloatVect3::x, FloatVect3::y, and FloatVect3::z.

Referenced by accel_cb().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ahrs_dcm_update_gps()

void ahrs_dcm_update_gps ( struct GpsState gps_s)

◆ ahrs_dcm_update_mag()

void ahrs_dcm_update_mag ( struct FloatVect3 mag)

Definition at line 227 of file ahrs_float_dcm.c.

References ahrs_dcm, DefaultChannel, DefaultDevice, AhrsFloatDCM::ltp_to_imu_euler, MAG_Heading_X, MAG_Heading_Y, FloatEulers::phi, FloatEulers::theta, FloatVect3::x, FloatVect3::y, and FloatVect3::z.

Referenced by mag_cb().

+ Here is the caller graph for this function:

Variable Documentation

◆ ahrs_dcm

◆ imu_health

float imu_health

Referenced by Drift_correction().

◆ renorm_blowup_count

int renorm_blowup_count

Referenced by Normalize().

◆ renorm_sqrt_count

int renorm_sqrt_count

Referenced by Normalize().