Paparazzi UAS  v5.14.0_stable-0-g3f680d1
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
imu.h File Reference

Inertial Measurement Unit interface. More...

#include "math/pprz_algebra_int.h"
#include "math/pprz_algebra_float.h"
#include "math/pprz_orientation_conversion.h"
#include "generated/airframe.h"
+ Include dependency graph for imu.h:

Go to the source code of this file.

Data Structures

struct  Imu
 abstract IMU interface providing fixed point interface More...
 

Macros

#define IMU_BODY_TO_IMU_PHI   0
 
#define IMU_BODY_TO_IMU_THETA   0
 
#define IMU_BODY_TO_IMU_PSI   0
 
#define IMU_GYRO_P_NEUTRAL   0
 
#define IMU_GYRO_Q_NEUTRAL   0
 
#define IMU_GYRO_R_NEUTRAL   0
 
#define IMU_ACCEL_X_NEUTRAL   0
 
#define IMU_ACCEL_Y_NEUTRAL   0
 
#define IMU_ACCEL_Z_NEUTRAL   0
 
#define IMU_GYRO_P_SIGN   1
 
#define IMU_GYRO_Q_SIGN   1
 
#define IMU_GYRO_R_SIGN   1
 
#define IMU_ACCEL_X_SIGN   1
 
#define IMU_ACCEL_Y_SIGN   1
 
#define IMU_ACCEL_Z_SIGN   1
 
#define IMU_MAG_X_SIGN   1
 
#define IMU_MAG_Y_SIGN   1
 
#define IMU_MAG_Z_SIGN   1
 

Functions

void imu_init (void)
 
void imu_SetBodyToImuPhi (float phi)
 
void imu_SetBodyToImuTheta (float theta)
 
void imu_SetBodyToImuPsi (float psi)
 
void imu_SetBodyToImuCurrent (float set)
 
void imu_ResetBodyToImu (float reset)
 
void imu_scale_gyro (struct Imu *_imu)
 
void imu_scale_accel (struct Imu *_imu)
 
void imu_scale_mag (struct Imu *_imu)
 

Variables

struct Imu imu
 global IMU state More...
 

Detailed Description

Inertial Measurement Unit interface.

Definition in file imu.h.


Data Structure Documentation

struct Imu

abstract IMU interface providing fixed point interface

Definition at line 37 of file imu.h.

+ Collaboration diagram for Imu:
Data Fields
struct Int32Vect3 accel accelerometer measurements in m/s^2 in BFP with INT32_ACCEL_FRAC
struct Int32Vect3 accel_neutral static accelerometer bias from calibration in raw/unscaled units
struct Int32Vect3 accel_prev previous accelerometer measurements
struct Int32Vect3 accel_unscaled unscaled accelerometer measurements
bool b2i_set_current flag for adjusting body_to_imu via settings.

if FALSE, reset to airframe values, if TRUE set current roll/pitch

struct OrientationReps body_to_imu rotation from body to imu frame
struct Int32Rates gyro gyroscope measurements in rad/s in BFP with INT32_RATE_FRAC
struct Int32Rates gyro_neutral static gyroscope bias from calibration in raw/unscaled units
struct Int32Rates gyro_prev previous gyroscope measurements
struct Int32Rates gyro_unscaled unscaled gyroscope measurements
struct Int32Vect3 mag magnetometer measurements scaled to 1 in BFP with INT32_MAG_FRAC
struct Int32Vect3 mag_neutral magnetometer neutral readings (bias) in raw/unscaled units
struct Int32Vect3 mag_unscaled unscaled magnetometer measurements

Macro Definition Documentation

#define IMU_ACCEL_X_NEUTRAL   0

Definition at line 90 of file imu.h.

#define IMU_ACCEL_X_SIGN   1

Definition at line 101 of file imu.h.

#define IMU_ACCEL_Y_NEUTRAL   0

Definition at line 91 of file imu.h.

#define IMU_ACCEL_Y_SIGN   1

Definition at line 102 of file imu.h.

#define IMU_ACCEL_Z_NEUTRAL   0

Definition at line 92 of file imu.h.

#define IMU_ACCEL_Z_SIGN   1

Definition at line 103 of file imu.h.

#define IMU_BODY_TO_IMU_PHI   0

Definition at line 78 of file imu.h.

Referenced by imu_init(), and imu_SetBodyToImuCurrent().

#define IMU_BODY_TO_IMU_PSI   0

Definition at line 80 of file imu.h.

Referenced by imu_init(), and imu_SetBodyToImuCurrent().

#define IMU_BODY_TO_IMU_THETA   0

Definition at line 79 of file imu.h.

Referenced by imu_init(), and imu_SetBodyToImuCurrent().

#define IMU_GYRO_P_NEUTRAL   0

Definition at line 84 of file imu.h.

#define IMU_GYRO_P_SIGN   1

Definition at line 96 of file imu.h.

#define IMU_GYRO_Q_NEUTRAL   0

Definition at line 85 of file imu.h.

#define IMU_GYRO_Q_SIGN   1

Definition at line 97 of file imu.h.

#define IMU_GYRO_R_NEUTRAL   0

Definition at line 86 of file imu.h.

#define IMU_GYRO_R_SIGN   1

Definition at line 98 of file imu.h.

#define IMU_MAG_X_SIGN   1

Definition at line 106 of file imu.h.

#define IMU_MAG_Y_SIGN   1

Definition at line 107 of file imu.h.

#define IMU_MAG_Z_SIGN   1

Definition at line 108 of file imu.h.

Function Documentation

void imu_ResetBodyToImu ( float  reset)
void imu_SetBodyToImuPhi ( float  phi)

Definition at line 151 of file imu.c.

References Imu::body_to_imu, imu, orientationGetEulers_f(), orientationGetQuat_f(), orientationSetEulers_f(), and FloatEulers::phi.

+ Here is the call graph for this function:

void imu_SetBodyToImuPsi ( float  psi)

Definition at line 169 of file imu.c.

References Imu::body_to_imu, imu, orientationGetEulers_f(), orientationGetQuat_f(), orientationSetEulers_f(), and FloatEulers::psi.

+ Here is the call graph for this function:

void imu_SetBodyToImuTheta ( float  theta)

Definition at line 160 of file imu.c.

References Imu::body_to_imu, imu, orientationGetEulers_f(), orientationGetQuat_f(), orientationSetEulers_f(), and FloatEulers::theta.

+ Here is the call graph for this function:

Variable Documentation

struct Imu imu

global IMU state

Definition at line 108 of file imu.c.

Referenced by ahrs_aligner_run(), ahrs_gx3_init(), ahrs_gx3_publish_imu(), direct_memory_logger_periodic(), file_logger_periodic(), gx3_packet_read_message(), handle_ins_msg(), high_speed_logger_spi_link_periodic(), imu_analog_periodic(), imu_apogee_downlink_raw(), imu_apogee_event(), imu_aspirin2_event(), imu_aspirin_event(), imu_aspirin_i2c_event(), imu_b2_event(), imu_bebop_event(), imu_disco_event(), imu_drotek2_event(), imu_feed_gyro_accel(), imu_feed_mag(), imu_gl1_event(), imu_hbmini_downlink_raw(), imu_hbmini_event(), imu_init(), imu_krooz_downlink_raw(), imu_krooz_event(), imu_krooz_periodic(), imu_mpu9250_event(), imu_mpu_hmc_event(), imu_mpu_i2c_event(), imu_mpu_spi_event(), imu_navgo_downlink_raw(), imu_navgo_event(), imu_navstik_event(), imu_nps_event(), imu_ppzuav_event(), imu_px4_event(), imu_px4fmu_event(), imu_quality_assessment_periodic(), imu_SetBodyToImuCurrent(), imu_SetBodyToImuPhi(), imu_SetBodyToImuPsi(), imu_SetBodyToImuTheta(), imu_swing_event(), imu_um6_publish(), imu_umarim_downlink_raw(), imu_umarim_event(), imu_vectornav_propagate(), init_ap(), ins_int_propagate(), jevois_mavlink_filter_init(), jevois_mavlink_filter_periodic(), logger_uart_periodic(), mag_calib_ukf_run(), mag_hmc58xx_module_event(), mag_pitot_parse_msg(), mag_pitot_raw_downlink(), main_init(), navdata_publish_imu(), send_accel(), send_accel_raw(), send_accel_scaled(), send_aligner(), send_gyro(), send_gyro_raw(), send_gyro_scaled(), send_imu_mag_current(), send_mag(), send_mag_raw(), send_mag_scaled(), UM6_packet_read_message(), and wind_estimator_periodic().