滤波器(Filter)¶
组件源码仓库地址:https://github.com/ZJU-HelloWorld/HW-Components
适用滤波器种类¶
微分跟踪器 Td
(用于计算微分,对高频噪声具有抑制作用),斜坡滤波器 Ramp
(用于限制变化率),有限冲激响应滤波器 Fir
,无限冲激响应滤波器 Iir
。
使用前准备¶
使用本组件前需要做以下准备:
- 在
config.cmake
文件中设置use_hwcomponents_algorithms_filter
选项为ON
,开启该设备文件的编译,若为OFF
则根驱动配置需求在CMakeLists.txt
文件中重配置为ON
。
1. 设计说明¶
滤波器在使用时应具有一下基本功能:
- 通过输入需要滤波的数据,得到滤波后的数据。
- 有时,有多组数据使用同一组滤波参数的情况,对于此种情况,应支持输入一组固定长度的数据,然后得到一组固定长度的输出(彼此独立)。
- 根据使用者需要,需要提供重置滤波器的接口。
2. 使用示例¶
在项目中引用头文件:
实例化一个滤波器并根据需要进行配置(以 FIR 为例):
C++ | |
---|---|
以固定频率调用 calc
方法实现滤波器计算。
可通过 reset
方法进行滤波器重置:
C++ | |
---|---|
3. 特殊情况说明¶
由于滤波器往往用于处理连续数据(不与离散数据对应),对于角度这类周期性数据,跨周期产生的跳变将严重影响滤波器的工作效果,为此分为两种情况:
- 对于微分跟踪器
Td
和斜坡滤波器Ramp
(用于限制变化率),可在初始化时使用period
参数(代表周期数据的周期),如弧度制的角度将其赋值为2 * PI
。 - 对于有限冲激响应滤波器
Fir
与无限冲激响应滤波器Iir
而言,需要使用PeriodData2ContData
(对于角度还可以使用PeriodAngle2ContAngleRad
或PeriodAngle2ContAngleDeg
)类,将周期数据转换为连续数据后,再使用滤波器进行计算。
附录¶
版本说明¶
版本号 | 发布日期 | 说明 | 贡献者 |
---|---|---|---|
2024.07.27 | 发布滤波器使用手册 | 蔡坤镇 |