제1부 수학적 기초
1.25 신호와 시스템 기초: 샘플링·라플라스·z변환·주파수 응답·디지털 필터(FIR·IIR)
1.25.1 이 장에서 배우는 것 / 선수 지식 / 특히 중요한 독자
이 장은 로봇의 센서 신호를 표본화하고 필터링하고 제어기를 컴퓨터에서 구현할 때 사용하는 신호·시스템의 기초를 정리한다. 연속시간 시스템은 라플라스 변환과 전달 함수로, 이산시간 시스템은 $z$ 변환과 차분 방정식으로 나타내며, 둘은 표본화 주기 $T$로 이어진다. 이 장은 표본화가 주파수를 어떻게 접는지(앨리어싱), 연속 시스템을 이산화하는 방법이 극점과 주파수 응답을 어떻게 바꾸는지, FIR·IIR 디지털 필터의 설계와 지연, 계수의 수치 표현이 안정성에 주는 영향을 계산으로 확인한다. 다룰 질문은 다섯 가지다. 표본화 주파수보다 높은 신호는 어디로 나타나는가, 라플라스 영역의 극점 위치와 $z$ 영역의 극점 위치는 어떻게 대응하며 안정 조건은 무엇인가, 오일러·터스틴·ZOH 이산화는 어떤 오차를 내는가, FIR과 IIR 필터는 지연·위상·차수에서 어떻게 다른가, 같은 필터를 직접형과 이차 구간으로 구현하면 수치적으로 무엇이 달라지는가.
배우는 것:
- 표본화와 앨리어싱 — $x[n]=x(nT)$, 겉보기 주파수, 방지 필터.
- 라플라스 변환과 $z$ 변환 — 전달 함수, 극점과 안정성, $z=e^{sT}$.
- 이산화 — 전진·후진 오일러, 터스틴(쌍선형)과 주파수 휨, ZOH.
- 디지털 필터 — FIR(창함수 설계, 선형 위상, 지연), IIR(버터워스, 이차 구간), 군지연.
- 수치 구현 — 계수 반올림, 직접형 대 이차 구간.
- 라이브러리 — SciPy
signal과의 비교.
선수 지식: 복소수·미적분, 1.18(수치 해석의 이산화), 1.19(확률·잡음). 제어기 설계는 12.1·12.3, 상태추정 필터는 9.3·9.6이 다룬다.
특히 중요한 독자: 센서 신호를 처리하는 임베디드·제어 엔지니어, 필터 지연이 제어 루프에 주는 영향을 평가하는 연구자, 신호처리 라이브러리를 사용하는 소프트웨어 개발자.
출처 방침. 서지는 Crossref 응답으로 확인했다(목록은 이 장 끝). 직접 실행한 것: SciPy 1.18.1(NumPy 2.5.4)의
signal.butter·firwin·cont2discrete·sosfreqz·sosfilt·sosfiltfilt. 읽지 못한 것: 인용한 교과서·논문의 본문(정리 번호는(확인 필요)), SciPy의 소스. 이 장의 수치는 모두 순수 파이썬 구현(복소수 연산은 표준 라이브러리cmath)으로 계산했다.
1.25.2 개념 — 연속 신호에서 표본 열로
센서는 연속 신호를 일정한 주기 $T$로 읽어 숫자 열 $x[n]=x(nT)$로 바꾼다. 이 숫자 열에서 원래 신호를 복원할 수 있는지는 신호가 포함한 주파수에 달려 있다. 표본화 주파수 $f_s=1/T$의 절반(나이퀴스트 주파수)보다 높은 주파수 성분은 낮은 주파수로 접혀 들어가 구별되지 않는다. 같은 표본을 만드는 서로 다른 신호가 있다는 뜻이며, 아래 도해는 100 Hz로 표본화한 70 Hz 신호와 30 Hz 신호의 예이다.
필터는 표본 열을 입력으로 받아 새 표본 열을 내는 연산이다. 노이즈 제거나 속도 추정에 사용되는 저역통과 필터는 지연을 일으키며, 이 지연이 폐루프 제어의 위상 여유를 줄인다(12.3). 따라서 필터 설계는 차단 주파수·기울기·지연을 함께 정하는 일이다.
1.25.3 원리
1.25.3.1 표본화와 앨리어싱
결론: 표본화는 신호의 스펙트럼을 $f_s$ 간격으로 복제하므로 $f_s/2$보다 높은 성분은 복제와 겹쳐 낮은 주파수로 나타나며, 표본화 뒤에는 이를 되돌릴 수 없다.
주파수 $f$의 정현파를 주파수 $f_s$로 표본화하면 표본은 $f$와 $f+kf_s$($k$는 정수)에서 같다. 겉보기 주파수는 $f$에 가장 가까운 $f_s$의 정수배를 뺀 $\lvert f-kf_s\rvert$이다(기초 사실; 표본화 정리의 정식화는 Shannon 1949와 Nyquist 1928이 다루며 정리 번호는 (확인 필요)). 따라서 ADC 앞에서 $f_s/2$ 이상을 줄이는 아날로그 저역통과 필터(앨리어싱 방지 필터)가 필요하고, 표본화 뒤의 디지털 필터로는 이를 제거할 수 없다.
1.25.3.2 라플라스 변환과 전달 함수
선형 시불변(LTI) 시스템의 입력 $u(t)$와 출력 $y(t)$는 영 초기 조건에서 전달 함수 $H(s)=Y(s)/U(s)$로 이어진다. 극점 $p_i$(분모의 근)가 모두 $\mathrm{Re}(p_i)<0$이면 안정이다. 정현파 입력에 대한 정상상태 응답은 $H(j\omega)$의 크기와 위상으로 정해진다. 1차 저역통과 $H(s)=\omega_c/(s+\omega_c)$는 극점이 $-\omega_c$이고 $\omega_c$에서 크기가 $1/\sqrt2$(−3 dB)이다.
1.25.3.3 $z$ 변환과 이산 시스템
차분 방정식 $y[n]=\sum_kb_kx[n-k]-\sum_ka_ky[n-k]$는 $z$ 영역에서 $H(z)=\bigl(\sum_kb_kz^{-k}\bigr)/\bigl(1+\sum_ka_kz^{-k}\bigr)$이다. 극점이 모두 단위원 안($\lvert z\rvert<1$)에 있으면 안정이고, 주파수 응답은 $H(e^{j\omega T})$이다. 연속 극점 $p$는 표본화에서 $z=e^{pT}$로 대응한다. 따라서 안정 영역은 라플라스의 왼쪽 반평면에서 단위원 안으로 옮겨진다.
1.25.3.4 이산화 방법
결론: 연속 시스템을 이산화하는 방법에 따라 극점과 주파수 응답이 달라지고, 전진 오일러는 $\omega_cT>2$에서 불안정하며 터스틴은 안정성을 보존하되 주파수 축을 휜다.
1차 저역통과 $H(s)=\omega_c/(s+\omega_c)$의 이산 극점은 방법에 따라 다음과 같다($x=\omega_cT$).
| 방법 | 대응 | 극점 | 안정 조건 |
|---|---|---|---|
| 전진 오일러 | $s\to(z-1)/T$ | $1-x$ | $x<2$ |
| 후진 오일러 | $s\to(z-1)/(zT)$ | $1/(1+x)$ | 항상 |
| 터스틴(쌍선형) | $s\to\tfrac2T\tfrac{z-1}{z+1}$ | $(2-x)/(2+x)$ | 항상 |
| ZOH(계단 등가) | 입력 유지 | $e^{-x}$ | 항상 |
터스틴은 $s=j\omega_a$를 $\omega_d$에 대응시키며 $\omega_a=\tfrac2T\tan(\omega_dT/2)$이므로 주파수 축이 휜다. 한 주파수 $\omega_0$에서 크기를 맞추려면 설계 전에 $\omega_a=\tfrac2T\tan(\omega_0T/2)$로 아날로그 주파수를 사전 왜곡한다(1.25.5의 버터워스 설계). ZOH 등가는 입력을 한 주기 동안 유지하는 것을 포함하므로 위상에 $T/2$ 지연($-\omega T/2$)이 더해진다.
1.25.3.5 FIR 필터
결론: FIR(유한 임펄스 응답) 필터는 항상 안정이고 계수가 대칭이면 선형 위상이어서 모든 주파수의 지연이 같으나, 가파른 차단에는 많은 탭이 필요해 지연이 크다.
$y[n]=\sum_{k=0}^{N-1}h_kx[n-k]$이다. 이상적 저역통과의 임펄스 응답 $\tfrac{\sin(\omega_ct)}{\pi t}$를 $N$탭에서 자르고 창함수(해밍)를 곱한 창함수 설계가 대표적이다. 계수가 $h_k=h_{N-1-k}$이면 위상이 선형이고 지연이 $(N-1)/2$ 표본(탭 수와 표본화 주기에만 의존)이다. 창함수 설계의 차단 주파수는 $-6$ dB 지점이다(1.25.5에서 측정). 창함수의 성질은 Harris(1978)가 다룬다(서지 확인).
1.25.3.6 IIR 필터와 버터워스
결론: IIR 필터는 적은 계수로 가파른 차단을 얻지만 위상이 비선형이고, 계수의 수치 표현에 민감하므로 이차 구간의 직렬로 구현한다.
$n$차 버터워스 저역통과는 통과 대역이 단조이고 $\omega_c$에서 $-3$ dB이다. 아날로그 극점은 단위원 왼쪽 반원 위에 등간격으로 놓이며, 짝수 차에서 이차 구간 $1/(s^2+2\sin\theta_ks+1)$($\theta_k=\pi(2k+1)/2n$)의 곱이다. 쌍선형 변환과 사전 왜곡($K=\tan(\pi f_c/f_s)$)을 적용하면 각 구간이 다음 계수의 이산 이차 구간이 된다.
$$b_0=\frac{K^2}{D},\ b_1=2b_0,\ b_2=b_0,\ a_1=\frac{2(K^2-1)}{D},\ a_2=\frac{1-2\sin\theta_kK+K^2}{D},\qquad D=1+2\sin\theta_kK+K^2$$
고차 필터를 하나의 고차 분모로(직접형) 구현하면 계수의 작은 반올림 오차가 극점을 크게 옮긴다. 극점이 $z=1$ 근처에 모여 있으면(차단 주파수가 표본화 주파수보다 매우 낮을 때) 특히 그렇다. 그래서 이차 구간 직렬이 표준이다. 이 장은 6차 필터에서 이를 측정했다.
1.25.3.7 라이브러리 규약
SciPy의 signal.butter(n, fc, fs=fs, output='sos')는 이차 구간 배열 $[b_0\ b_1\ b_2\ a_0\ a_1\ a_2]$를 낸다. sosfilt는 인과(실시간) 필터링이고 sosfiltfilt는 입력을 앞뒤로 두 번 통과시켜 지연을 0으로 만드는 비인과 필터링이므로 실시간 제어에 사용할 수 없다. firwin의 기본 창은 해밍이며 직류 이득이 1로 정규화된다. cont2discrete는 euler·backward_diff·bilinear·zoh 방법을 제공한다. 이 장의 구현과 같은 결과임을 실행으로 확인했다(1.25.5).
1.25.4 알고리즘
이산화·버터워스 이차 구간·창함수 FIR
이산화(H(s) = ωc/(s+ωc), x = ωc T):
전진 오일러 y[k] = (1−x) y[k−1] + x u[k−1]
후진 오일러 y[k] = y[k−1]/(1+x) + x/(1+x) u[k]
터스틴 y[k] = (2−x)/(2+x) y[k−1] + x/(2+x) (u[k] + u[k−1])
ZOH y[k] = e^{−x} y[k−1] + (1 − e^{−x}) u[k−1]
버터워스 구간(k = 0..n/2−1): K ← tan(π fc/fs) ; s ← 2 sin(π(2k+1)/(2n))
D ← 1 + sK + K² ; (b0, b1, b2) ← (K², 2K², K²)/D ; (a1, a2) ← (2(K²−1), 1−sK+K²)/D
구간을 직렬로 적용: y ← biquad(구간_k, y)
창함수 FIR(N, fc): h[n] ← sinc(2fc/fs · (n − (N−1)/2)) · 해밍(n) ; Σh = 1로 정규화
구현은 1.25.5의 코드에 있다.
1.25.5 풀이 예제 — 앨리어싱·이산화·필터 지연·수치 표현과 SciPy 비교
표본화 주파수 100 Hz에서 앨리어싱을 DFT로 확인하고, 1차 저역통과의 네 가지 이산화를 극점과 주파수 응답으로 비교하며, 차단 주파수 20 Hz(표본화 1 kHz)의 버터워스와 FIR의 지연을 측정하고, 직접형과 이차 구간의 계수 반올림 영향을 보인 뒤 SciPy와 대조한다. 결론부터 적으면 다음과 같다. ① 51 Hz·70 Hz·130 Hz 신호는 예측한 겉보기 주파수 49 Hz·30 Hz·30 Hz로 DFT에 나타난다. ② 전진 오일러의 극점은 $\omega_cT=2.1$에서 $-1.10$으로 단위원 밖이고 20회 계단 응답이 $-5.73$으로 발산하며, 후진 오일러·터스틴·ZOH는 모두 안정하다. ③ 차단 주파수에서 크기 오차는 전진 오일러 $+9.10\%$, 후진 오일러 $-6.82\%$, 터스틴 $-0.41\%$, ZOH $+0.41\%$이다. ④ 5 Hz 정현파의 지연은 버터워스 2차 11.46 ms, 4차 20.96 ms, FIR 101탭 50.00 ms이다. ⑤ 6차 필터를 직접형으로 구현하고 계수를 단정밀도로 반올림하면 극점 최대 크기가 $1.089$로 불안정하나 이차 구간은 $0.998375$로 안정이다. ⑥ SciPy와 주파수 응답이 $5\times10^{-14}$ 안, FIR 계수가 $10^{-17}$ 안에서 일치한다.
구현. dft·biquad·butter_sos·fir_lowpass·freqz·sos_resp·fir_filter. 이산화 disc_lp, 근 계산 roots(Durand–Kerner)
| 항목 | 값 |
|---|---|
| 입력 1 | $f_s=100$ Hz, 정현파 $f=10,30,49,51,70,130$ Hz, 표본 500개 |
| 입력 2 | 1차 저역통과, $\omega_cT=0.1,1,1.9,2.1$; 주파수 응답은 $f_c=0.05f_s$ |
| 입력 3 | $f_s=1$ kHz, 차단 20 Hz, 5 Hz 정현파 3,000표본, FIR 101탭(해밍) |
| 입력 4 | 6차 버터워스, $f_c=1$ Hz, $f_s=1$ kHz |
import math, cmath
def dft(x):
"""이산 푸리에 변환 X[k], O(N^2)"""
N = len(x)
return [sum(x[n] * cmath.exp(-2j * math.pi * k * n / N)
for n in range(N)) for k in range(N)]
def biquad(sec, x):
"""직접형 II 전치 이차 구간: sec = (b0, b1, b2, a1, a2)"""
b0, b1, b2, a1, a2 = sec
z1 = z2 = 0.0
y = []
for v in x:
o = b0 * v + z1
z1 = b1 * v - a1 * o + z2
z2 = b2 * v - a2 * o
y.append(o)
return y
def butter_sos(n, fc, fs):
"""짝수 차 버터워스 저역통과: 쌍선형 변환 + 사전 왜곡"""
K = math.tan(math.pi * fc / fs)
out = []
for k in range(n // 2):
s = 2 * math.sin(math.pi * (2 * k + 1) / (2 * n))
K2 = K * K
g = 1 / (1 + s * K + K2)
out.append((K2 * g, 2 * K2 * g, K2 * g,
2 * (K2 - 1) * g, (1 - s * K + K2) * g))
return out
def fir_lowpass(N, fc, fs):
"""sinc 창 해밍, 직류 이득 1 (N 탭, 선형 위상)"""
M, c = N - 1, 2 * fc / fs
h = []
for n in range(N):
t = n - M / 2
arg = math.pi * c * t
s = c if t == 0 else math.sin(arg) / (math.pi * t)
w = 0.54 - 0.46 * math.cos(2 * math.pi * n / M)
h.append(s * w)
g = sum(h)
return [v / g for v in h]
def freqz(b, a, w):
"""H(e^{jw}) = sum b_k e^{-jwk} / sum a_k e^{-jwk}"""
z = cmath.exp(-1j * w)
num = sum(c * z ** k for k, c in enumerate(b))
den = sum(c * z ** k for k, c in enumerate(a))
return num / den
def sos_resp(secs, w):
H = 1.0
for b0, b1, b2, a1, a2 in secs:
H *= freqz([b0, b1, b2], [1.0, a1, a2], w)
return H
def fir_filter(h, x):
N = len(h)
return [sum(h[k] * x[n - k] for k in range(N) if n >= k)
for n in range(len(x))]
① 앨리어싱.
| 신호 주파수 (Hz) | 예측 겉보기 주파수 (Hz) | DFT 최대 성분 (Hz) |
|---|---|---|
| 10 | 10 | 10 |
| 30 | 30 | 30 |
| 49 | 49 | 49 |
| 51 | 49 | 49 |
| 70 | 30 | 30 |
| 130 | 30 | 30 |
② 이산화의 극점.
| $\omega_cT$ | 전진 오일러 극점 | 후진 오일러 극점 | 터스틴 극점 | ZOH 극점 | 전진 오일러 20회 계단 응답 |
|---|---|---|---|---|---|
| 0.1 | 0.900 | 0.909 | 0.905 | 0.905 | 0.878 |
| 1 | -0.000 | 0.500 | 0.333 | 0.368 | 1 |
| 1.9 | -0.900 | 0.345 | 0.026 | 0.150 | 0.878 |
| 2.1 | -1.100 | 0.323 | -0.024 | 0.122 | -5.73 |
③ 이산화의 주파수 응답 오차. $f_c=0.05f_s$인 1차 저역통과의 아날로그 응답에 대한 오차이다.
| 방법 | $f=0.5f_c$ 크기 오차 | $f=f_c$ 크기 오차 | $f=2f_c$ 크기 오차 | $f=f_c$ 위상 오차 (°) |
|---|---|---|---|---|
| 전진 오일러 | +3.31% | +9.10% | +16.97% | -4.36 |
| 후진 오일러 | -2.98% | -6.82% | -9.36% | +4.60 |
| 터스틴 | -0.04% | -0.41% | -2.68% | -0.24 |
| ZOH | +0.10% | +0.41% | +1.66% | -9.47 |
전진 오일러는 이득을 높이고 후진 오일러는 낮추며 터스틴은 차단 주파수 근처에서 오차가 가장 작다. ZOH의 $-9.47^\circ$는 입력 유지에 의한 $T/2$ 지연에 해당하는 $-\omega T/2=-9.0^\circ$에 가깝다. 터스틴은 $f_s$의 $1/4$ 부근 이상에서 주파수 휨으로 오차가 커진다(도해).
④ 필터의 지연. 5 Hz 정현파를 통과시킨 결과이다. 위상 지연은 $-\angle H/\omega$, 군지연은 위상의 주파수 미분이고 시간 영역의 지연은 영교차 시각의 차이로 측정했다.
| 필터 | 5 Hz 크기 | 5 Hz 위상 지연 (ms) | 5 Hz 군지연 (ms) | 시간 영역에서 잰 지연 (ms) |
|---|---|---|---|---|
| 버터워스 2차 | 0.9981 | 11.46 | 11.90 | 11.46 |
| 버터워스 4차 | 1.0000 | 20.96 | 21.35 | 20.96 |
| FIR 101탭(해밍) | 0.9876 | 50.00 | 50.00 | 50.00 |
IIR의 지연은 위상 지연과 같게 측정되었고 군지연과는 다르다(위상이 비선형). FIR 101탭은 위상이 선형이어서 세 값이 같다(50 ms = $(N-1)/2$ 표본). 탭 수에 따른 FIR의 차이는 다음과 같다.
| 탭 수 $N$ | 지연 $(N-1)/2f_s$ (ms) | 40 Hz 이상 최대 이득 (dB) | 20 Hz 이득 (dB) |
|---|---|---|---|
| 51 | 25.0 | -20.6 | -4.52 |
| 101 | 50.0 | -50.3 | -6.08 |
| 201 | 100.0 | -63.8 | -6.01 |
탭이 많을수록 저지 대역 이득이 낮아지나 지연이 $(N-1)/2$로 늘어난다. FIR의 20 Hz 이득은 약 $-6$ dB로 창함수 설계의 차단 주파수가 $-6$ dB 지점임을 보인다(버터워스는 $-3$ dB).
⑤ 직접형 대 이차 구간.
| 구현 | 극점 최대 크기 (배정밀도) | 계수를 단정밀도로 반올림한 극점 최대 크기 |
|---|---|---|
| 직접형 6차 (fc/fs = 0.001) | 0.998471 | 1.089470 |
| 이차 구간 3개 | 0.998375 | 0.998375 |
배정밀도의 직접형 분모에서 구한 최대 극점 크기는 계산법에 따라 달랐다(이 장의 Durand–Kerner 0.998471, NumPy roots 0.998419, 이차 구간의 정확한 값 0.998375). 극점이 $z=1$ 근처에 모인 다항식의 근이 계수에 민감하기 때문이다. 단정밀도 반올림에서는 직접형이 $\lvert z\rvert>1$로 불안정해지고 이차 구간은 변하지 않는다.
⑥ SciPy 호출 결과(실행 2026-11-03). 스크립트는 robotics/fig-src/1.25-libcheck.py, 출력은 robotics/fig-src/data/1.25-libcheck-output.txt에 있다.
| 항목 | 값 |
|---|---|
버터워스 2·4·6차 주파수 응답 최대 차이(sosfreqz, 400점) | $2.3\times10^{-14}$·$3.7\times10^{-14}$·$4.6\times10^{-14}$ |
firwin(101, 20, fs=1000) 대 fir_lowpass 계수 최대 차이 | $1.4\times10^{-17}$ |
6차(1 Hz, 1 kHz) ba 분모 대 구간 곱 분모 최대 차이 | $8.9\times10^{-15}$ |
ba 분모의 극점 최대 크기: 배정밀도·단정밀도 반올림·이차 구간 단정밀도 | 0.998419·1.089470·0.998375 |
cont2discrete euler·backward_diff·bilinear·zoh의 $b,a$ | 이 장의 disc_lp와 5자리까지 같음 |
sosfilt(인과) 5 Hz 영교차 지연·진폭 | 11표본·0.9981 |
sosfiltfilt(영위상) 지연·진폭 | 0표본·0.9961 |
sosfiltfilt는 지연을 0으로 만들고 진폭 응답이 제곱($0.9981^2=0.9961$)으로 바뀌지만 입력 전체를 알아야 하므로 실시간 제어에는 사용할 수 없다. 진폭은 정상상태 구간의 최소제곱 맞춤으로 구했다(표본 최댓값은 표본 위상에 따라 0.001 정도 낮게 읽힌다).
한계. 수치는 합성 입력(시드 없는 결정적 신호)이다. 앨리어싱은 정현파 하나, 이산화는 1차 시스템 하나로 확인했다. 홀수 차·고역·대역 필터, 쌍곡선·체비셰프 같은 다른 IIR 근사, 고정소수점 구현, 다중 속도 처리는 구현하지 않았다. 주파수 응답 오차는 한 차단 주파수($0.05f_s$)에서만 측정했다. 지연은 영교차로 잰 값이며 정상상태 정현파에 대한 것이다.
견해: 이 책은 실시간 센서 필터에는 이차 구간으로 구현한 인과 IIR(버터워스 등)을 기본으로 사용하고, 선형 위상이 필요한 오프라인 분석에는 FIR이나 영위상 필터링을 사용하는 것을 기본으로 둔다고 본다. 이산화에는 터스틴(사전 왜곡 포함)이나 ZOH를 사용하고 전진 오일러는 $\omega_cT$가 작음을 확인한 경우에만 사용한다. 근거는 위 예제에서 전진 오일러가 $\omega_cT>2$에서 발산하고 크기 오차가 가장 컸으며, 직접형 6차가 단정밀도에서 불안정했고, FIR 101탭의 지연(50 ms)이 같은 차단 주파수의 버터워스 2차(11.5 ms)의 4배를 넘었다는 점이다. 이 근거는 합성 입력이다.
1.25.6 설계 트레이드오프 — 필터와 이산화의 선택
공개 문헌에서 확인되는 선택지는 세 가지다.
- ① IIR(버터워스 등) 이차 구간. 적은 계수, 낮은 지연. 위상이 비선형이다.
- ② FIR(창함수·최적 설계). 항상 안정, 선형 위상. 탭이 많고 지연이 크다.
- ③ 영위상(
filtfilt) 오프라인 처리. 지연 0. 비인과이다.
| 방식 | 장점 | 한계 | 알맞은 경우 |
|---|---|---|---|
| ① IIR 이차 구간 | 지연 작음, 계수 적음 | 비선형 위상, 계수 민감 | 실시간 센서 필터, 제어 루프 |
| ② FIR | 안정, 선형 위상 | 지연 $(N-1)/2$, 연산량 | 지연이 허용되거나 위상 보존이 필요한 경우 |
| ③ 영위상 | 지연 0 | 실시간 불가 | 오프라인 분석, 데이터 정리 |
견해: 필터의 차단 주파수는 신호 대역보다 노이즈 대역으로 정하고, 지연을 폐루프 위상 여유에서 계산한 허용치와 비교하는 것이 필터 종류 선택보다 먼저라고 본다. 근거는 이 장에서 같은 20 Hz 차단에서도 구현에 따라 5 Hz 정현파의 지연이 11~50 ms로 4배 넘게 달랐다는 점이다.
1.25.7 응용 축 비교
| 응용 축 | 신호·시스템이 맡는 일 | 요구 | 관련 장 |
|---|---|---|---|
| 산업·제조 | 서보 전류·속도 루프의 필터, 힘·토크 센서 신호 처리 | 낮은 지연 | 5.6, 6.6, 12.3 |
| 물류·이동 | 바퀴 속도·IMU 신호 필터링 | 연산량 | 6.4 |
| 도로 주행 | 센서 융합 입력의 전처리 | 일관성, 지연 보상 | 9.3 |
| 서비스 | 접촉력·음성 신호의 필터 | 응답성 | 12.3 |
| 의료·헬스케어 | 힘 센서 신호의 필터와 지연 | 정밀도, 안전 | 6.6 |
| 휴머노이드·범용 | IMU 상보 필터, 관절 속도 추정 | 낮은 지연 | 9.6 |
| 필드 | 장시간 센서 신호의 잡음 제거 | 강건성 | 9.3 |
| 국방·안보 | 원리 수준에서 해당하는 고유 요구 없음 | — | — |
이 표는 이 책의 정리이며 장별 요구는 다르다.
1.25.8 관련 규격·프로토콜
| 문서 | 발행 | 무엇을 정하나 | 상세 장 |
|---|---|---|---|
| 「Communication in the Presence of Noise」 | Shannon, Proc. IRE 37(1), 1949 | 표본화 정리 | — |
| 「Certain topics in telegraph transmission theory」 | Nyquist, 1928(Proc. IEEE 90(2), 2002 재수록) | 표본화·대역폭의 기초 | — |
| 「On the use of windows for harmonic analysis with the discrete Fourier transform」 | Harris, Proc. IEEE 66(1), 1978 | 창함수의 성질 | — |
| 「Chebyshev Approximation for Nonrecursive Digital Filters with Linear Phase」 | Parks·McClellan, IEEE Trans. Circuit Theory 19(2), 1972 | 최적 FIR 설계 | — |
| 「An algorithm for the machine calculation of complex Fourier series」 | Cooley·Tukey, Math. Comput. 19(90), 1965 | 고속 푸리에 변환 | — |
SciPy signal | PyPI scipy 1.18.1 | 필터 설계·이산화·필터링 함수 | — |
| 수학 표기·기호표 | 이 책 | 전달 함수·$z$ 변환 표기 | A.2 |
신호처리 알고리즘의 표기에 국제 표준은 없다. 필터의 사양은 차단 주파수의 정의(−3 dB·−6 dB)와 샘플링 주파수를 함께 적는 것이 상호운용의 기준이다.
1.25.9 관련 규제·인증 요구와의 연결
직접 적용되는 규제는 없다. 필터 지연과 이산화 불안정은 제어 루프의 안정성에 영향을 주며 안전 기능의 응답 시간·정지 시간 요구와 관련될 수 있다. 실시간 시스템의 지연은 15.9, 네트워크 지연은 12.26, 소프트웨어 안전과 품질 표준은 26.20이 다룬다.
1.25.10 한계·유의점·미해결
- 정리의 출처. 표본화 정리의 정식화, $z$ 변환·쌍선형 변환의 성질, 교과서(Oppenheim·Schafer, Åström·Wittenmark)의 장 번호는 확인하지 않았다
(확인 필요). - 범위. 홀수 차·고역·대역 필터, 다른 IIR 근사, 고정소수점, 다중 속도 처리, 확률 신호의 스펙트럼 추정(1.21)은 다루지 않았다.
- 수치. 극점 크기의 계산법별 차이(0.998471 대 0.998419)는 근 계산의 조건 때문이며 이 장은 이차 구간의 정확한 값을 기준으로 삼았다.
- 라이브러리. SciPy의 소스는 읽지 않았고 실행 결과로만 비교했다.
1.25.11 체크포인트·연구 질문
체크포인트:
- 표본화 주파수와 겉보기 주파수의 관계를 적고 앨리어싱 방지 필터의 위치를 설명할 수 있는가.
- 라플라스와 $z$ 영역의 안정 조건과 $z=e^{pT}$의 대응을 설명할 수 있는가.
- 전진 오일러·후진 오일러·터스틴·ZOH의 극점을 적고 전진 오일러의 안정 한계를 유도할 수 있는가.
- 터스틴의 주파수 휨과 사전 왜곡을 설명할 수 있는가.
- FIR의 선형 위상 조건과 지연 $(N-1)/2$를 설명할 수 있는가.
- 버터워스 이차 구간의 계수를 쌍선형 변환으로 유도할 수 있는가.
- 위상 지연과 군지연의 차이를 말하고 필터 지연이 제어 루프에 주는 영향을 설명할 수 있는가.
- 직접형과 이차 구간의 수치 안정성 차이가 생기는 이유를 설명할 수 있는가.
연구 질문(47.12에 수록한다):
- 로봇 서보 루프에서 필터 지연이 위상 여유를 줄이는 정도는 어떤 차단 주파수에서 성능 한계가 되는가.
- 대역폭이 표본화 주파수에 가까운 센서(예: 고속 IMU)의 앨리어싱 방지는 하드웨어 필터와 오버샘플링 중 어느 쪽이 지연 면에서 유리한가.
- 고정소수점 임베디드 프로세서에서 이차 구간의 계수 양자화가 극점에 주는 영향은 구현별로 얼마나 다른가.
1차 출처
- C. E. Shannon, 「Communication in the Presence of Noise」, Proceedings of the IRE 37(1), 10–21, 1949(doi:10.1109/jrproc.1949.232969).
- H. Nyquist, 「Certain topics in telegraph transmission theory」, Proceedings of the IEEE 90(2), 280–305, 2002(1928년 논문의 재수록, doi:10.1109/5.989875); 요약 「Abridgment of certain topics in telegraph transmission theory」, Journal of the A.I.E.E. 47(3), 214–217, 1928(doi:10.1109/jaiee.1928.6538024).
- F. J. Harris, 「On the use of windows for harmonic analysis with the discrete Fourier transform」, Proceedings of the IEEE 66(1), 51–83, 1978(doi:10.1109/proc.1978.10837) — 서지만 확인.
- T. W. Parks, J. H. McClellan, 「Chebyshev Approximation for Nonrecursive Digital Filters with Linear Phase」, IEEE Transactions on Circuit Theory 19(2), 189–194, 1972(doi:10.1109/tct.1972.1083419) — 서지만 확인.
- J. W. Cooley, J. W. Tukey, 「An algorithm for the machine calculation of complex Fourier series」, Mathematics of Computation 19(90), 297–301, 1965(doi:10.1090/s0025-5718-1965-0178586-1) — 서지만 확인.
- A. V. Oppenheim, R. W. Schafer, 『Discrete-Time Signal Processing』, Pearson
(확인 필요: 판·연도·장 번호). - K. J. Åström, B. Wittenmark, 『Computer-Controlled Systems: Theory and Design』, Prentice Hall
(확인 필요: 판·연도·장 번호). - SciPy 1.18.1(
signal.butter·firwin·cont2discrete·sosfreqz·sosfilt·sosfiltfilt실행, 2026-11-03).
다음 장. 2.1는 제2부의 시작으로, 기구 구조와 자유도를 다룬다. 이 장까지의 수학적 기초(선형대수·리군·최적화·확률·신호)를 로봇의 관절과 링크 구조에 적용해 그뤼블러 공식과 모빌리티를 정리한다.