필터링 이론에 앞서 Frequency Response 와 Bode Plot 개념을 잘 숙지하고 오길 바란다.
2023.02.21 - [Automatic Control] - 6. Frequency Response
6. Frequency Response
이번 글에서는 시스템의 주파수 응답 특성에 대해 공부한다. 주파수 응답 특성이란, 시스템에 입력되는 주파수 대역폭에 대해서 출력의 크기와 위상차가 어떻게 변하는지에 대한 특성이다. 실
dongmin-archive.tistory.com
Introduction
드론, 로켓, 자동차 등의 동역학 시스템을 만들거나 계측 실험을 할 때 센서를 사용한다. 일반적으로 센서로부터 각속도, 가속도, 전압, 압력 등의 값들을 측정한다. 그런데 우리는 생각해 봐야할 점이 있다. 바로 센서가 정확한 값을 측정하지 못한다는 것이다. 우리가 측정하고자 하는 가속도가 2g일때 센서로부터 측정된 값도 정확이 2g가 될까? 절대 그렇지 않다. 2g 근처에서 값이 머물긴 하겠지만, 수많은 요인과 외란으로 인하여 노이즈가 생긴다. 여기서 노이즈란 잡음, 즉 작고 큰 진동수의 알 수 없는 신호를 말한다. 흔히 스피커에서 나는 '지지직'과 같은 소리를 생각하면된다. 센서도 마찬가지로, 측정하고자 하는 값에 노이즈가 더해져서 2g가 아니라 1.95g, 2.1g 와 같이 오차가 생길 수 밖에 없다.
그러므로 만약 정확한 데이터를 얻고자 한다면, 노이즈를 제어해 주어야 한다. 어떻게 제거할 수 있을까? 지금까지 배웠던 자동제어 이론으로 제거가 가능하다.
Modeling
센서로부터 데이터를 받아왔다고 하자. 그 데이터에는 원하는 값과 노이즈가 더해져 있을 것이다. 이때 원하는 데이터만을 얻고자 한다. 그래서 노이즈를 제거할 수 있는 시스템 하나를 설계할 것이다.
인풋은 노이즈가 섞인 데이터이고, 아웃풋은 노이즈가 제거된 데이터라고 생각해 보자.
Input : Absolute Data + Noise
Output : Absolute Data
이러한 시스템이 존재할까? 노이즈만을 제거해주는 시스템이 존재한다면 원하는 데이터만을 얻을 수 있을 것이다. 과연 어떤 시스템이 노이즈만을 제거할 수 있을까. 앞서 배웠던 Bode Plot 개념이 기억난다면 쉽게 떠오를 것이다.
여기서 알아야 할 것은, 데이터와 노이즈의 주파수 이다. 일반적으로 우리가 원하는 데이터의 주파수는 굉장히 작다. 드론이 아무리 빨리 움직여봤자 1초에 10번 이상 회전하지는 않을것이기 때문이다. 그러나 노이즈의 진동수는 굉장히 크다. 랜덤한 데이터이기 때문에 값들이 빠르게 변하고 그로인해 주파수가 매우 커진다. $($주파수 분석에 대해 궁금한 사람은 Fast Fourier Transform을 찾아보기를 바란다. $)$ 그렇다면, 작은 주파수는 그대로 통과시키고 큰 주파수만 없애주는 그런 시스템을 만들면 되지 않을까? 이 생각이 그대로 Bode Plot으로 이어진다.
Bode Plot
Bode Plot은 입력 진동수에 따라 출력의 크기와 위상이 어떻게 변하는지 나타내는 그래프 이다. 예를들어 다음과 같은 시스템이 있다.
$$\Large{G(s) = \frac{10}{s+10}}$$
이 시스템의 Bode Plot을 그려보자. DC Gain이 1이고 Pole이 -10에 위치하므로 f : 0~10hz 까지는 직선형으로 그려지면서, 그 이후로는 기울기 1로 감소하는 형태의 Bode Plot이 그려질 것이다. 위상차는 처음엔 없다가 -10을 지나는 순간 90도가 감소하는 형태의 그래프가 그려질 것이다. 실제로는 아래와 같이 그려진다. 보통 Bode Plot은 dB 스케일로 그려진다. dB 스케일에 익숙해지길 바란다. 0dB = 1을 나타낸다.
이 시스템의 의미가 무엇인지 기억이 나는가? 입력 주파주가 작을땐 출력의 크기가 1이고 위상차가 없다. 그리고 입력 주파수가 클땐 출력의 크기가 매우 작아지고 위상차가 생긴다.
이 시스템에 위에서 정의한 인풋을 주면 어떻게 될까? 인풋은 작은 주파수의 데이터 + 큰 주파수의 노이즈로 구성되어 있다. 이 시스템은 선형성을 가지는 시스템이므로, 각각의 출력을 더해도 같은 결과가 도출된다. 즉 아래와 같은 출력이 될 것이다.
주파수가 큰 노이즈에 대해서는 크기를 0으로 만들것이고, 데이터에 대해서는 크기를 1로 보존할 것이다. 엄밀히 말하면 노이즈의 크기를 0으로 만들 수 는 없고 Bode Plot을 보면 알 수 있듯이, 어느정도 작게 만들기는 할 것이다. 데이터 또한 크기를 1로 보존할 수는 없으며 크기가 약간 작아질 것이다. 결과적으로 원 데이터는 거의 보존되고 노이즈는 작아질 것이다!
이때 해당 시스템이, 출력의 크기를 작게 만들기 시작하는 주파수를 cutoff frequency라고 부른다. 즉 전달함수의 Pole과 동일하다. Bode Plot에서 Pole에 해당하는 주파수 이후에, 출력의 크기가 감소한다는 것을 기억하면 이해가 될 것이다.
Do Filtering
입력이 센서 데이터이고 필터링 시스템이 $\frac{10}{s+10}$인건 알았다. 그럼 출력을 어떻게 계산할까?
입력을 u라 하고 출력을 x라고 하자. u는 데이터+노이즈 이고 x는 필터링된 데이터 이다. 그럼 아래와 같이 구할 수 있다.
$$\tau = \textit{cutoff frequency}$$
$$X(s) = \frac{\tau}{s+\tau}U(s)$$
$$(s+\tau)X(s) = \tau U(s)$$
$$\dot{x}+\tau x = \tau u$$
이때 Discrete한 데이터의 경우 아래와 같이 쓸 수 있다.
$$\dot{x}_n+\tau x_n = \tau u_n$$
$$\frac{x_{n+1}-x_n}{\vartriangle t}+\tau x_n = \tau u_n$$
$$x_{n+1} = x_n+\tau(u_n-x_n)*dt$$
Code
코드로 구현해보자.
원하는 데이터는 2hz의 크기가 1인 sin파 라고 하자.
여기에 100hz의 크기가 0.2인 노이즈가 섞여있다. 원본 데이터에 타격을 주지 않으면서 100hz의 노이즈를 적당히 제거할 수 있도록 cutoff freq.는 20hz로 설정했다.
%%Matlab
t = 0:0.01:4*pi;
freq_data = 2;
data = sin(freq_data*t);
freq_noise = 100;
noise = 0.2*sin(freq_noise*t);
sample = data + noise;
x(1) = 0;
cutoff = 20;
for n=1:length(sample)-1
x(n+1) = x(n)+cutoff*(sample(n)-x(n))*0.01;
end
hold on
plot(t,sample)
plot(t(2:end),x(2:end),'LineWidth',2)
hold off
yline(0)
xticks(0:pi:4*pi)
xticklabels({'0','\pi','2\pi','3\pi','4\pi'})
grid on
grid minor
아래 그래프는 노이즈가 섞인 Sampling Data이다. 코드상 sample 변수에 해당한다.
아래 그래프는 필터링된 데이터이다. 코드상 x에 해당한다.
한눈에 보기에도, 노이즈가 많이 사라진 것을 확인할 수 있다. cutoff freq.를 조절하면 더 많은 노이즈를 필터링 할 수 있다. 그런데 조심해야 할 부분이 있다. 바로 위상차이가 생긴다는 점 이다. cutoff freq. 를 너무 작게 하면 원본 데이터에 위상차이가 크게 발생해 데이터가 밀리는 현상이 발생할 수 있다. 그러므로 cutoff freq.는 공학자의 판단 하 적당히 설정해야 한다.
두 데이터를 비교하면 아래와 같다.
cutoff freq.를 줄이면 아래와 같이 위상차이가 크게 생기게 된다. 왼쪽은 cufoff freq.=10hz 이고 오른쪽은 5hz로 설정했을 경우이다.
분명히 Bode Plot을 보면, cutoff freq가 작을수록 노이즈가 더 많이 제거되는 것은 사실이지만, 원본 데이터에 위상차가 발생하게 된다. 이 점을 주의해야 한다.
지금까지 우리가 필터링한 것은 고주파 노이즈를 제거하고 저주파 신호를 통과시키는 것이다. 이러한 필터링을 Low Pass Filter라고 한다. 저주파의 신호만 통과시키기 때문이다.
이와 반대로 고주파 신호만 통과시키는 High Pass Filter가 존재한다. 이 시스템은 전달함수가 $G(s) = \frac{s+\tau}{s}$처럼 생겼을 것이다. Bode Plot을 그려보길 바란다. 또는 특정 주파수 영역만 통과시키거나, 통과하지 못하게 하는 시스템도 존재한다. 이 중 가장 유명한 필터는 Notch Filter이다 전달함수는 $G(s) = \frac{s^2+\tau^2}{(s+\tau)^2}$ 형태로 생겼다. 이 시스템의 Bode Plot을 그릴 수 있다면, Bode Plot에 대한 개념을 잘 이해했다고 할 수 있을 것이다. 한번 그려서 notch filter의 필터링에 대해 알아보기를 바란다.