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
 

Macros

#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
 
#define AHRS_FLOAT_MIN_SPEED_GPS_COURSE   5
 
#define PERFORMANCE_REPORTING   1
 

Enumerations

enum  AhrsDCMStatus { AHRS_DCM_UNINIT, AHRS_DCM_RUNNING }
 

Functions

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)
 

Variables

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: http://code.google.com/p/gentlenav/downloads/list 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

◆ AHRS_FLOAT_MIN_SPEED_GPS_COURSE

#define AHRS_FLOAT_MIN_SPEED_GPS_COURSE   5

Definition at line 76 of file ahrs_float_dcm.h.

◆ GRAVITY

#define GRAVITY   9.81

Definition at line 65 of file ahrs_float_dcm.h.

◆ Ki_ROLLPITCH

#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.

◆ Kp_ROLLPITCH

#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.

◆ OUTPUTMODE

#define OUTPUTMODE   1

Definition at line 69 of file ahrs_float_dcm.h.

◆ PERFORMANCE_REPORTING

#define PERFORMANCE_REPORTING   1

Definition at line 79 of file ahrs_float_dcm.h.

Enumeration Type Documentation

◆ AhrsDCMStatus

Enumerator
AHRS_DCM_UNINIT 
AHRS_DCM_RUNNING 

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().