初级会员
- 积分
- 121
- 金钱
- 121
- 注册时间
- 2017-2-28
- 在线时间
- 35 小时
|
1金钱
[mw_shl_code=c,true]#define BARO_UPDATE_RATE RATE_50_HZ
#define SENSOR9_UPDATE_RATE RATE_500_HZ
#define SENSOR9_UPDATE_DT (1.0f/SENSOR9_UPDATE_RATE)
/**
* Set ACC_WANTED_LPF1_CUTOFF_HZ to the wanted cut-off freq in Hz.
* The highest cut-off freq that will have any affect is fs /(2*pi).
* E.g. fs = 350 Hz -> highest cut-off = 350/(2*pi) = 55.7 Hz -> 55 Hz
*/
#define SENSORS_ACC_WANTED_LPF_CUTOFF_HZ 4
/**
* Attenuation should be between 1 to 256.
*
* f0 = fs / 2*pi*attenuation ->
* attenuation = fs / 2*pi*f0
*/
#define SENSORS_ACC_IIR_LPF_ATTENUATION (SENSOR9_UPDATE_RATE / (2 * 3.1415 * SENSORS_ACC_WANTED_LPF_CUTOFF_HZ))
#define SENSORS_ACC_IIR_LPF_ATT_FACTOR (int)(((1<<IIR_SHIFT) / SENSORS_ACC_IIR_LPF_ATTENUATION) + 0.5)
#define SENSORS_ACC_IIR_FACTOR (float)(1/(1+SENSORS_ACC_IIR_LPF_ATTENUATION))
/* 加速计IIR低通滤波 */
static void sensorsAccIIRLPFilter(Axis3i16 *in,Axis3i16 *out)
{
out->x = out->x + sensorsAccLpfAttFactor*(in->x - out->x);
out->y = out->y + sensorsAccLpfAttFactor*(in->y - out->y);
out->z = out->z + sensorsAccLpfAttFactor*(in->z - out->z);
}
[/mw_shl_code]
这段代码如何理解?
这段代码中SENSORS_ACC_WANTED_LPF_CUTOFF_HZ这个是低通的截止频率吗?那为什么才4
HZ 还有IIR_SHIFT这个标志是什么?
|
最佳答案
查看完整内容[请看2#楼]
这个是老版本的 加速度低通滤波, 现在固件更新到1.2版本,使用2阶低通滤波,不再使用上面的低通滤波方式
|