We're repeatedly averaging 512 ground samples to get up-to-date values
for all of the sensors, but we need to clear the sums after each
sample interval. The 3d accel values were only cleared if there was a
full IMU, not for devices with only an accelerometer like
EasyMotor. The motor pressure sum was never cleared.
Signed-off-by: Keith Packard <keithp@keithp.com>
ao_ground_accel_along = ao_sample_accel_along_sum >> 9;
ao_ground_accel_across = ao_sample_accel_across_sum >> 9;
ao_ground_accel_through = ao_sample_accel_through_sum >> 9;
ao_ground_accel_along = ao_sample_accel_along_sum >> 9;
ao_ground_accel_across = ao_sample_accel_across_sum >> 9;
ao_ground_accel_through = ao_sample_accel_through_sum >> 9;
+ ao_sample_accel_along_sum = 0;
+ ao_sample_accel_across_sum = 0;
+ ao_sample_accel_through_sum = 0;
#endif
#if HAS_MOTOR_PRESSURE
ao_ground_motor_pressure = ao_sample_motor_pressure_sum >> 9;
#endif
#if HAS_MOTOR_PRESSURE
ao_ground_motor_pressure = ao_sample_motor_pressure_sum >> 9;
+ ao_sample_motor_pressure_sum = 0;
#endif
#if HAS_GYRO
ao_ground_pitch = ao_sample_pitch_sum;
ao_ground_yaw = ao_sample_yaw_sum;
ao_ground_roll = ao_sample_roll_sum;
#endif
#if HAS_GYRO
ao_ground_pitch = ao_sample_pitch_sum;
ao_ground_yaw = ao_sample_yaw_sum;
ao_ground_roll = ao_sample_roll_sum;
- ao_sample_accel_along_sum = 0;
- ao_sample_accel_across_sum = 0;
- ao_sample_accel_through_sum = 0;
ao_sample_pitch_sum = 0;
ao_sample_yaw_sum = 0;
ao_sample_roll_sum = 0;
ao_sample_pitch_sum = 0;
ao_sample_yaw_sum = 0;
ao_sample_roll_sum = 0;
(ao_ground_accel_across - ao_config.accel_zero_across),
(ao_ground_accel_through - ao_config.accel_zero_through),
(ao_ground_accel_along - ao_config.accel_zero_along));
(ao_ground_accel_across - ao_config.accel_zero_across),
(ao_ground_accel_through - ao_config.accel_zero_through),
(ao_ground_accel_along - ao_config.accel_zero_along));
ao_sample_compute_orient();
ao_sample_set_all_orients();
ao_sample_compute_orient();
ao_sample_set_all_orients();