I read the codes of ArduPlane in the AP_InertialSensor_MPU6000.CPP.I can't understand that how the DLPF filter work?I need your help.
The sample rate used for plane is RATE_50HZ and the DLPF filter rate is 10Hz . I read the code file and found some codes are related to these.
Firstly in the function of " AP_InertialSensor_MPU6000::hardware_init(Sample_rate sample_rate) " I found the codes
" _set_filter_register(_mpu6000_filter, default_filter)"
Secondly,In the member function of "bool AP_InertialSensor_MPU6000::update( void )",I found the codes
" if (_last_filter_hz != _mpu6000_filter) {
if (_spi_sem->take(10)) {
_set_filter_register(_mpu6000_filter, 0);
_spi_sem->give();
}
}"
if (_spi_sem->take(10)) {
_set_filter_register(_mpu6000_filter, 0);
_spi_sem->give();
}
}"
In my mind, the DLPF filter work as the formulation:
Yn=a*Xn+(1-a)*Yn-1
I could not find the formulation be used in the code?Could anybody help me?Thanks.
Replies
Zheng,
That filtering is all done in the MPU6k filter itself. So you won't find the DLPF in the arducopter or arduplane software.