This gets the long-term averages for the 6dof sensors recorded into
the first flight log record.
Signed-off-by: Keith Packard <keithp@keithp.com>
int16_t ground_accel_along; /* 16 */
int16_t ground_accel_across; /* 12 */
int16_t ground_accel_through; /* 14 */
int16_t ground_accel_along; /* 16 */
int16_t ground_accel_across; /* 12 */
int16_t ground_accel_through; /* 14 */
- int16_t ground_gyro_roll; /* 18 */
- int16_t ground_gyro_pitch; /* 20 */
- int16_t ground_gyro_yaw; /* 22 */
+ int16_t ground_roll; /* 18 */
+ int16_t ground_pitch; /* 20 */
+ int16_t ground_yaw; /* 22 */
} flight; /* 24 */
/* AO_LOG_STATE */
struct {
} flight; /* 24 */
/* AO_LOG_STATE */
struct {
log.tick = ao_sample_tick;
#if HAS_ACCEL
log.u.flight.ground_accel = ao_ground_accel;
log.tick = ao_sample_tick;
#if HAS_ACCEL
log.u.flight.ground_accel = ao_ground_accel;
+#endif
+#if HAS_GYRO
+ log.u.flight.ground_accel_along = ao_ground_accel_along;
+ log.u.flight.ground_accel_across = ao_ground_accel_across;
+ log.u.flight.ground_accel_through = ao_ground_accel_through;
+ log.u.flight.ground_pitch = ao_ground_pitch;
+ log.u.flight.ground_yaw = ao_ground_yaw;
+ log.u.flight.ground_roll = ao_ground_roll;
#endif
log.u.flight.ground_pres = ao_ground_pres;
log.u.flight.flight = ao_flight_number;
#endif
log.u.flight.ground_pres = ao_ground_pres;
log.u.flight.flight = ao_flight_number;
ao_sample_preflight_set();
}
ao_sample_preflight_set();
}
static int32_t p_filt;
static int32_t y_filt;
static int32_t p_filt;
static int32_t y_filt;
return ao_sqrt(p*p + y*y);
}
#endif
return ao_sqrt(p*p + y*y);
}
#endif
#endif
#if HAS_GYRO
ao_sample_accel_along = ao_data_along(ao_data);
#endif
#if HAS_GYRO
ao_sample_accel_along = ao_data_along(ao_data);
+ ao_sample_accel_across = ao_data_across(ao_data);
+ ao_sample_accel_through = ao_data_through(ao_data);
ao_sample_pitch = ao_data_pitch(ao_data);
ao_sample_yaw = ao_data_yaw(ao_data);
ao_sample_roll = ao_data_roll(ao_data);
ao_sample_pitch = ao_data_pitch(ao_data);
ao_sample_yaw = ao_data_yaw(ao_data);
ao_sample_roll = ao_data_roll(ao_data);
ao_sample_preflight_update();
ao_kalman();
#if HAS_GYRO
ao_sample_preflight_update();
ao_kalman();
#if HAS_GYRO
- ao_sample_angle += ao_gyro();
- ao_sample_roll_angle += (ao_sample_roll - ao_ground_roll);
+ /* do quaternion stuff here... */
#endif
}
ao_sample_data = ao_data_ring_next(ao_sample_data);
#endif
}
ao_sample_data = ao_data_ring_next(ao_sample_data);
extern __pdata accel_t ao_accel_2g; /* factory accel calibration */
extern __pdata int32_t ao_accel_scale; /* sensor to m/s² conversion */
#endif
extern __pdata accel_t ao_accel_2g; /* factory accel calibration */
extern __pdata int32_t ao_accel_scale; /* sensor to m/s² conversion */
#endif
+#if HAS_GYRO
+extern __pdata accel_t ao_ground_accel_along;
+extern __pdata accel_t ao_ground_accel_across;
+extern __pdata accel_t ao_ground_accel_through;
+extern __pdata gyro_t ao_ground_pitch;
+extern __pdata gyro_t ao_ground_yaw;
+extern __pdata gyro_t ao_ground_roll;
+#endif
void ao_sample_init(void);
void ao_sample_init(void);