mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-06 16:58:48 +08:00
changed units for IMU alignement in airframe file
was <define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/> is now <define name="BODY_TO_IMU_PHI" value="RadOfDeg(0.)"/>
This commit is contained in:
@@ -76,13 +76,13 @@
|
||||
<define name="MAG_X_SENS" value="-3.4936416" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value=" 3.607713" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg(4.))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg(3.))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg(4.)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(3.)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/>
|
||||
<!--
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg(0.)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(0.)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/>
|
||||
-->
|
||||
|
||||
</section>
|
||||
@@ -161,7 +161,7 @@
|
||||
<define name="RC_CLIMB_COEF" value ="163"/>
|
||||
<!-- BOOZ_SPEED_I_OF_F(1.5) * 20% -->
|
||||
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
|
||||
<define name="INV_M" value ="0.2"/>
|
||||
<!-- <define name="INV_M" value ="0.2"/> -->
|
||||
</section>
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="BOOZ2_MODE_MANUAL" value="BOOZ2_AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="BOOZ2_MODE_AUTO1" value="BOOZ2_AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="BOOZ2_MODE_AUTO1" value="BOOZ2_AP_MODE_ATTITUDE_RC_CLIMB"/>
|
||||
<define name="BOOZ2_MODE_AUTO2" value="BOOZ2_AP_MODE_ATTITUDE_Z_HOLD"/>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
<define name="MAG_Y_SENS" value="-4.2959321" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="-4.0988408" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg( 1.5))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg(-1.5))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg( 1.5)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(-1.5)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg( 0. )"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
<define name="MAG_Y_SENS" value="20." integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="15." integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg( 14.5))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg(-8.5))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg(-45.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg( 14.5)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg( -8.5)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(-45. )"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
<define name="MAG_X_SENS" value="-3.03386034" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value=" 4.99085017" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg( 0.))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg( 0.))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg( 0.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg( 0.)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg( 0.)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg( 0.)"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
<define name="MAG_Y_NEUTRAL" value="24"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="28"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="ANGLE_BFP_OF_REAL(RadOfDeg(0.))"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="ANGLE_BFP_OF_REAL(RadOfDeg(-45.))"/>
|
||||
<define name="BODY_TO_IMU_PHI" value="RadOfDeg( 0.)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg( 0.)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(-45.)"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
ap.CFLAGS += -DAHRS_ALIGNER_LED=3
|
||||
ap.srcs += $(SRC_BOOZ)/booz_ahrs.c
|
||||
ap.srcs += $(SRC_BOOZ)/ahrs/booz_ahrs_aligner.c
|
||||
ap.srcs += $(SRC_BOOZ_PRIV)/ahrs/booz_ahrs_mlkf.c
|
||||
|
||||
sim.CFLAGS += -I$(SRC_BOOZ_PRIV)
|
||||
sim.CFLAGS += -DAHRS_ALIGNER_LED=3
|
||||
sim.srcs += $(SRC_BOOZ)/booz_ahrs.c
|
||||
sim.srcs += $(SRC_BOOZ)/ahrs/booz_ahrs_aligner.c
|
||||
sim.srcs += $(SRC_BOOZ_PRIV)/ahrs/booz_ahrs_mlkf.c
|
||||
@@ -27,10 +27,10 @@
|
||||
|
||||
#include "airframe.h"
|
||||
|
||||
#if 0
|
||||
#define NPS_BODY_TO_IMU_PHI RadOfDeg(4.)
|
||||
#define NPS_BODY_TO_IMU_THETA RadOfDeg(3.)
|
||||
#define NPS_BODY_TO_IMU_PSI RadOfDeg(0.)
|
||||
#if 1
|
||||
#define NPS_BODY_TO_IMU_PHI IMU_BODY_TO_IMU_PHI
|
||||
#define NPS_BODY_TO_IMU_THETA IMU_BODY_TO_IMU_THETA
|
||||
#define NPS_BODY_TO_IMU_PSI IMU_BODY_TO_IMU_PSI
|
||||
#else
|
||||
#define NPS_BODY_TO_IMU_PHI RadOfDeg(0.)
|
||||
#define NPS_BODY_TO_IMU_THETA RadOfDeg(0.)
|
||||
|
||||
@@ -196,9 +196,13 @@ void booz_ahrs_propagate(void) {
|
||||
|
||||
}
|
||||
|
||||
void booz_ahrs_update(void) {
|
||||
void booz_ahrs_update_accel(void) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
void booz_ahrs_update_mag(void) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
|
||||
#define BAFL_DEBUG
|
||||
|
||||
static void booz_ahrs_do_update_accel(void);
|
||||
static void booz_ahrs_do_update_mag(void);
|
||||
|
||||
|
||||
/* our estimated attitude (ltp <-> imu) */
|
||||
@@ -403,8 +405,11 @@ void booz_ahrs_propagate(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void booz_ahrs_update_accel(void) {
|
||||
RunOnceEvery(50, booz_ahrs_do_update_accel());
|
||||
}
|
||||
|
||||
static void booz_ahrs_do_update_accel(void) {
|
||||
int i, j, k;
|
||||
|
||||
#ifdef BAFL_DEBUG2
|
||||
@@ -632,6 +637,10 @@ void booz_ahrs_update_accel(void) {
|
||||
|
||||
|
||||
void booz_ahrs_update_mag(void) {
|
||||
RunOnceEvery(10, booz_ahrs_do_update_mag());
|
||||
}
|
||||
|
||||
static void booz_ahrs_update_mag(void) {
|
||||
int i, j, k;
|
||||
|
||||
#ifdef BAFL_DEBUG2
|
||||
|
||||
@@ -33,43 +33,53 @@
|
||||
#define BOOZ_AHRS_RUNNING 1
|
||||
|
||||
struct BoozAhrs {
|
||||
struct Int32Eulers ltp_to_body_euler;
|
||||
struct Int32Quat ltp_to_body_quat;
|
||||
struct Int32RMat ltp_to_body_rmat;
|
||||
|
||||
struct Int32Quat ltp_to_imu_quat;
|
||||
struct Int32Eulers ltp_to_imu_euler;
|
||||
struct Int32Quat ltp_to_imu_quat;
|
||||
struct Int32RMat ltp_to_imu_rmat;
|
||||
struct Int32Rates imu_rate;
|
||||
struct Int32Rates body_rate;
|
||||
struct Int32RMat ltp_to_imu_rmat;
|
||||
struct Int32Rates imu_rate;
|
||||
|
||||
struct Int32Quat ltp_to_body_quat;
|
||||
struct Int32Eulers ltp_to_body_euler;
|
||||
struct Int32RMat ltp_to_body_rmat;
|
||||
struct Int32Rates body_rate;
|
||||
|
||||
uint8_t status;
|
||||
};
|
||||
|
||||
struct BoozAhrsFloat {
|
||||
struct FloatQuat ltp_to_imu_quat;
|
||||
struct FloatEulers ltp_to_imu_euler;
|
||||
struct FloatRMat ltp_to_imu_rmat;
|
||||
struct FloatRates imu_rate;
|
||||
|
||||
struct FloatQuat ltp_to_body_quat;
|
||||
struct FloatEulers ltp_to_body_euler;
|
||||
struct FloatRMat ltp_to_body_rmat;
|
||||
struct FloatRates body_rate;
|
||||
|
||||
uint8_t status;
|
||||
};
|
||||
|
||||
extern struct BoozAhrs booz_ahrs;
|
||||
extern struct BoozAhrsFloat booz_ahrs_float;
|
||||
|
||||
#define BOOZ_AHRS_FLOAT_OF_INT32() { \
|
||||
QUAT_FLOAT_OF_BFP(booz_ahrs_float.ltp_to_body_quat, booz_ahrs.ltp_to_body_quat); \
|
||||
RATES_FLOAT_OF_BFP(booz_ahrs_float.body_rate, booz_ahrs.body_rate); \
|
||||
booz_ahrs_float.ltp_to_body_euler.phi = ANGLE_FLOAT_OF_BFP(booz_ahrs.ltp_to_body_euler.phi); \
|
||||
booz_ahrs_float.ltp_to_body_euler.theta = ANGLE_FLOAT_OF_BFP(booz_ahrs.ltp_to_body_euler.theta); \
|
||||
booz_ahrs_float.ltp_to_body_euler.psi = ANGLE_FLOAT_OF_BFP(booz_ahrs.ltp_to_body_euler.psi); \
|
||||
#define BOOZ_AHRS_FLOAT_OF_INT32() { \
|
||||
QUAT_FLOAT_OF_BFP(booz_ahrs_float.ltp_to_body_quat, booz_ahrs.ltp_to_body_quat); \
|
||||
EULERS_FLOAT_OF_BFP(booz_ahrs_float.ltp_to_body_euler, booz_ahrs.ltp_to_body_euler); \
|
||||
RATES_FLOAT_OF_BFP(booz_ahrs_float.body_rate, booz_ahrs.body_rate); \
|
||||
}
|
||||
|
||||
#define BOOZ_AHRS_INT_OF_FLOAT() { \
|
||||
QUAT_BFP_OF_REAL(booz_ahrs.ltp_to_body_quat, booz_ahrs_float.ltp_to_body_quat); \
|
||||
EULERS_BFP_OF_REAL(booz_ahrs.ltp_to_body_euler, booz_ahrs_float.ltp_to_body_euler); \
|
||||
RMAT_BFP_OF_REAL(booz_ahrs.ltp_to_body_rmat, booz_ahrs_float.ltp_to_body_rmat); \
|
||||
RATES_BFP_OF_REAL(booz_ahrs.body_rate, booz_ahrs_float.body_rate); \
|
||||
}
|
||||
|
||||
extern void booz_ahrs_init(void);
|
||||
extern void booz_ahrs_align(void);
|
||||
extern void booz_ahrs_propagate(void);
|
||||
extern void booz_ahrs_update(void);
|
||||
extern void booz_ahrs_update_accel(void);
|
||||
extern void booz_ahrs_update_mag(void);
|
||||
|
||||
|
||||
@@ -38,7 +38,10 @@ void booz_imu_init(void) {
|
||||
Compute quaternion and rotation matrix
|
||||
for conversions between body and imu frame
|
||||
*/
|
||||
struct Int32Eulers body_to_imu_eulers = {IMU_BODY_TO_IMU_PHI, IMU_BODY_TO_IMU_THETA, IMU_BODY_TO_IMU_PSI};
|
||||
struct Int32Eulers body_to_imu_eulers =
|
||||
{ ANGLE_BFP_OF_REAL(IMU_BODY_TO_IMU_PHI),
|
||||
ANGLE_BFP_OF_REAL(IMU_BODY_TO_IMU_THETA),
|
||||
ANGLE_BFP_OF_REAL(IMU_BODY_TO_IMU_PSI) };
|
||||
INT32_QUAT_OF_EULERS(booz_imu.body_to_imu_quat, body_to_imu_eulers);
|
||||
INT32_QUAT_NORMALISE(booz_imu.body_to_imu_quat);
|
||||
INT32_RMAT_OF_EULERS(booz_imu.body_to_imu_rmat, body_to_imu_eulers);
|
||||
|
||||
@@ -63,6 +63,9 @@ void booz_fms_impl_periodic(void) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case STEP_PITCH:
|
||||
case STEP_VERT:
|
||||
break;
|
||||
#if 0
|
||||
case BOOZ_FMS_TEST_SIGNAL_MODE_VERTICAL: {
|
||||
if (booz2_guidance_v_mode < BOOZ2_GUIDANCE_V_MODE_HOVER)
|
||||
|
||||
Reference in New Issue
Block a user