diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.cpp index 684cb327e9..25b5fa97c0 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.cpp @@ -67,12 +67,8 @@ AP_InertialSensor_Flymaple::AP_InertialSensor_Flymaple(AP_InertialSensor &imu) : AP_InertialSensor_Backend(imu), _have_gyro_sample(false), _have_accel_sample(false), - _accel_filter_x(raw_sample_rate_hz, 10), - _accel_filter_y(raw_sample_rate_hz, 10), - _accel_filter_z(raw_sample_rate_hz, 10), - _gyro_filter_x(raw_sample_rate_hz, 10), - _gyro_filter_y(raw_sample_rate_hz, 10), - _gyro_filter_z(raw_sample_rate_hz, 10), + _accel_filter(raw_sample_rate_hz, 10), + _gyro_filter(raw_sample_rate_hz, 10), _last_gyro_timestamp(0), _last_accel_timestamp(0) {} @@ -167,12 +163,8 @@ void AP_InertialSensor_Flymaple::_set_filter_frequency(uint8_t filter_hz) if (filter_hz == 0) filter_hz = _default_filter_hz; - _accel_filter_x.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); - _accel_filter_y.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); - _accel_filter_z.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); - _gyro_filter_x.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); - _gyro_filter_y.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); - _gyro_filter_z.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); + _accel_filter.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); + _gyro_filter.set_cutoff_frequency(raw_sample_rate_hz, filter_hz); } @@ -239,9 +231,7 @@ void AP_InertialSensor_Flymaple::_accumulate(void) int16_t y = -((((int16_t)buffer[1]) << 8) | buffer[0]); // chip X axis int16_t x = -((((int16_t)buffer[3]) << 8) | buffer[2]); // chip Y axis int16_t z = -((((int16_t)buffer[5]) << 8) | buffer[4]); // chip Z axis - _accel_filtered = Vector3f(_accel_filter_x.apply(x), - _accel_filter_y.apply(y), - _accel_filter_z.apply(z)); + _accel_filtered = _accel_filter.apply(Vector3f(x,y,z)); _have_accel_sample = true; _last_accel_timestamp = now; } @@ -256,9 +246,7 @@ void AP_InertialSensor_Flymaple::_accumulate(void) int16_t y = -((((int16_t)buffer[0]) << 8) | buffer[1]); // chip X axis int16_t x = -((((int16_t)buffer[2]) << 8) | buffer[3]); // chip Y axis int16_t z = -((((int16_t)buffer[4]) << 8) | buffer[5]); // chip Z axis - _gyro_filtered = Vector3f(_gyro_filter_x.apply(x), - _gyro_filter_y.apply(y), - _gyro_filter_z.apply(z)); + _gyro_filtered = _gyro_filter.apply(Vector3f(x,y,z)); _have_gyro_sample = true; _last_gyro_timestamp = now; } diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.h b/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.h index 724e03dbb4..9402b7be6c 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.h +++ b/libraries/AP_InertialSensor/AP_InertialSensor_Flymaple.h @@ -38,12 +38,8 @@ private: void _set_filter_frequency(uint8_t filter_hz); // Low Pass filters for gyro and accel - LowPassFilter2p _accel_filter_x; - LowPassFilter2p _accel_filter_y; - LowPassFilter2p _accel_filter_z; - LowPassFilter2p _gyro_filter_x; - LowPassFilter2p _gyro_filter_y; - LowPassFilter2p _gyro_filter_z; + LowPassFilter2pVector3f _accel_filter; + LowPassFilter2pVector3f _gyro_filter; uint8_t _gyro_instance; uint8_t _accel_instance; diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_L3G4200D.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_L3G4200D.cpp index e1e4c5ce25..f1c758b282 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_L3G4200D.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor_L3G4200D.cpp @@ -115,12 +115,8 @@ AP_InertialSensor_L3G4200D::AP_InertialSensor_L3G4200D(AP_InertialSensor &imu) : AP_InertialSensor_Backend(imu), _have_gyro_sample(false), _have_accel_sample(false), - _accel_filter_x(800, 10), - _accel_filter_y(800, 10), - _accel_filter_z(800, 10), - _gyro_filter_x(800, 10), - _gyro_filter_y(800, 10), - _gyro_filter_z(800, 10) + _accel_filter(800, 10), + _gyro_filter(800, 10), {} bool AP_InertialSensor_L3G4200D::_init_sensor(void) @@ -235,12 +231,8 @@ void AP_InertialSensor_L3G4200D::_set_filter_frequency(uint8_t filter_hz) if (filter_hz == 0) filter_hz = _default_filter_hz; - _accel_filter_x.set_cutoff_frequency(800, filter_hz); - _accel_filter_y.set_cutoff_frequency(800, filter_hz); - _accel_filter_z.set_cutoff_frequency(800, filter_hz); - _gyro_filter_x.set_cutoff_frequency(800, filter_hz); - _gyro_filter_y.set_cutoff_frequency(800, filter_hz); - _gyro_filter_z.set_cutoff_frequency(800, filter_hz); + _accel_filter.set_cutoff_frequency(800, filter_hz); + _gyro_filter.set_cutoff_frequency(800, filter_hz); } /* @@ -308,9 +300,7 @@ void AP_InertialSensor_L3G4200D::_accumulate(void) if (hal.i2c->readRegisters(L3G4200D_I2C_ADDRESS, L3G4200D_REG_XL | L3G4200D_REG_AUTO_INCREMENT, sizeof(buffer), (uint8_t *)&buffer[0][0]) == 0) { for (uint8_t i=0; i