임베디드 시스템에서 필터 사용 전략
1. 임베디드 시스템에서 센서 신호나 제어 신호의 노이즈를 줄이고, 안정적인 동작을 보장하기 위해 필터링은 필수적인 전략
2. 임베디드 코딩에서 필터 사용 전략에 대한 내용을 아래에 정리
✅ 1. 필터 선택 기준
상황 |
추천 필터 |
특징 |
빠른 반응이 필요, 계산 자원 부족 |
이동 평균 (SMA) |
단순 평균. 구현이 매우 간단함 |
최근 값을 강조하고 반응 빠름 |
지수이동 평균 (EMA / IIR / Low-pass) |
α 조절로 반응 속도/안정성 제어 가능 |
외란·스파이크 제거가 중요 |
중간값 필터 (Median Filter) |
이상값에 강함, 계산량은 큼 |
고속 고정 주기, FFT 응용 |
FIR, IIR 디지털 필터 |
고성능 DSP용, 복잡함 |
상태 예측 필요 |
Kalman 필터 |
고정확도 예측용, MCU 성능 요구 |
✅ 2. STM32에 최적화된 적용 전략
필터 종류 |
전략 |
Low-pass Filter |
y = α * new + (1-α) * old → float , fixed-point 방식 모두 가능 |
Median Filter |
작은 N값 (3~5개) 슬라이딩 윈도우로 사용 버퍼 관리에 유의 |
SMA (단순 평균) |
sum += new - old[N]; 구조로 ring buffer 로 구현하면 메모리 절약 |
Kalman |
초음파/가속도/자이로 등 센서 융합 시만 사용, STM32F4 이상에서 추천 |
Butterworth / FIR |
CMSIS-DSP 라이브러리 활용 (고성능, 연산량 많음) |
✅ 3. 실제 적용 예시
class LowPassFilter {
float alpha;
float prev;
public:
LowPassFilter(float alpha = 0.5f) : alpha(alpha), prev(0) {}
float update(float input) {
prev = alpha * input + (1.0f - alpha) * prev;
return prev;
}
};
✅ 4. 고도화 전략
전략 |
설명 |
Adaptive Filtering |
상황에 따라 α 자동 조정 (예: 움직일 때 빠르게, 멈출 때 느리게) |
Trend Break Detection |
값이 급격히 변하면 필터 무시하고 초기화 |
Confidence Score |
필터 신뢰도를 기준으로 동작을 제어 (예: UWB에서 거리 신뢰도 계산) |
Periodic Reset |
일정 시간 후 필터 상태 초기화로 drift 방지 |
Spike Filtering |
변화량 임계값 초과 시 무시하거나 클램핑 |
✅ 5. 장단점 정리
필터 |
장점 |
단점 |
SMA |
구현 간단 |
느리고 지연 큼 |
EMA |
적절한 반응 속도 |
이상값에 약함 |
Median |
이상값 제거 탁월 |
정렬 연산으로 연산량 ↑ |
Kalman |
정확도 최고 |
설계/이해/계산량 어려움 |
FIR/IIR |
정밀한 필터링 |
메모리/성능 요구 |
✅ 권장 조합 (센서 종류별)
센서 |
추천 필터 |
초음파, 거리 |
Median + EMA (중복 적용) |
가속도, 자이로 |
EMA 또는 Low-pass (fixed-point) |
UWB 거리 |
WMA + Trend Break + EMA |
사용자 입력, 제어 신호 |
Low-pass 또는 Deadband 조합 |
댓글