제1부 시스템 모델링과 동특성
1.1 동적 시스템과 모델링
제1부 시스템 모델링과 동특성 · 시작. 제어의 첫 단추는 플랜트를 수식으로 적는 일이다(0.1.4). 물리계를 미분방정식으로 옮기고(뉴턴·키르히호프), 비선형이면 선형화해, 0.2의 라플라스·전달함수를 본격적으로 활용한다.
이 장을 마치면 질량-스프링-댐퍼·RC회로·DC모터·진자를 스스로 수식으로 세우고, 비선형 모델을 동작점 근처에서 선형 모델로 펼 수 있어야 한다.
1.1.1 모델이란 무엇이고 왜 만드나
모델(model)은 시스템의 입력→출력 관계를 수식으로 적은 것이다. 제어기를 설계하려면 — 극이 어디 있는지(0.2), 어떤 입력이 어떤 응답을 내는지 — 먼저 플랜트를 수식으로 알아야 한다. 실물에 바로 이것저것 해보는 것은 위험하고 느리다. 모델이 있으면 종이·컴퓨터에서 먼저 설계·검증한다.
모델을 얻는 두 갈래:
- 제1원리(first-principles) 모델링 — 물리 법칙(뉴턴·키르히호프·열역학)에서 유도. 이 장의 주제. 파라미터에 물리적 의미가 있고, 새 상황 예측에 강하다.
- 실험적(데이터) 모델링 — 실제 입출력 데이터로 모델을 맞춤(시스템 식별, 1.4). 물리를 모를 때·복잡할 때.
⚠️ 정직하게: "모든 모델은 틀리지만, 일부는 유용하다"(G. Box). 모델은 현실의 근사다 — 마찰의 비선형, 고차 진동, 부품 편차를 다 담지 않는다. 목표는 "완벽한 모델"이 아니라 목적에 충분한 가장 단순한 모델이다. 무엇을 생략했는지 아는 것이 모델링의 핵심이다(1.1.11).
1.1.2 모델링 절차 — 다섯 단계
도메인이 무엇이든 절차는 같다.
1.1.3 전제로 삼는 가정 — 무엇을 단순화하나
유도 전에 보통 다음을 가정한다. 가정을 의식해야 모델의 유효 범위를 안다.
- 집중매개변수(lumped parameter): 질량·저항 등이 한 점에 모였다고 본다(분포된 효과 무시). 그래서 변수는 시간만의 함수 $x(t)$ — 상미분방정식(ODE)이 된다. (위치마다 다르면 편미분방정식이 되어 훨씬 어렵다.)
- 선형·시불변(LTI): 중첩이 성립하고(선형), 파라미터가 시간에 안 변한다(시불변). 제어 이론 대부분이 LTI 위에 서 있어서, 비선형이면 선형화해(④) LTI로 만든다.
- 이상화: 마찰은 점성(속도 비례)만, 부품은 이상적(스프링은 후크 법칙 정확히) 등.
이 가정들이 성립하지 않는 지점이 곧 모델의 한계다(1.1.11). 지금은 가정을 받아들이고 유도에 집중하자.
1.1.4 기계 병진계 — 질량-스프링-댐퍼 (뉴턴)
제어 교과서의 "Hello World". 벽에 스프링($k$)·댐퍼($b$)로 매달린 질량($m$)에 힘 $F(t)$를 가해 위치 $x(t)$를 만든다.
자유물체도에 뉴턴 제2법칙($\Sigma F = m\cdot\ddot{x}$):
- 가한 힘: $+F$
- 스프링 복원력: $-k\cdot x$ (늘어난 만큼 되돌림)
- 댐퍼 점성력: $-b\cdot\dot{x}$ (속도에 반대)
$$m\cdot\ddot{x} = F - k\cdot x - b\cdot\dot{x}$$
⇩ 정리
$$m\cdot\ddot{x} + b\cdot\dot{x} + k\cdot x = F(t)$$ — 2차 선형 ODE
이것이 0.2.3의 그 식이다. 2차계 표준형으로 정리하면(양변 $m$으로 나눠):
$$\ddot{x} + 2\zeta\omega_n\cdot\dot{x} + \omega_n^2\cdot x = (1/m)F, \qquad \omega_n = \sqrt{k/m}, \qquad \zeta = b / (2\sqrt{km})$$
- $\omega_n$(고유진동수)·$\zeta$(감쇠비)는 응답의 모양(진동·오버슈트·정착)을 한꺼번에 정한다 — 1.3에서 이 둘로 응답을 읽는다.
- 작은 수치 감: $m=1, b=0.4, k=4$면 $\omega_n=2 \,\mathrm{rad/s}, \zeta=0.1$. $\zeta$가 작아 진동하기 쉬운(저감쇠) 계다.
참고: 질점 하나·강체 하나는 이렇게 뉴턴 법칙(자유물체도)으로 충분하지만, 여러 강체가 서로 얽혀 움직이는 다물체계(예: 7.4의 카트-폴)에서는 몸마다 자유물체도를 그리고 구속력까지 추적하는 뉴턴 방법이 빠르게 감당하기 어려워진다. 그런 경우에는 에너지(운동·위치 에너지)로 운동방정식을 얻는 라그랑주 역학(Lagrangian mechanics)이 표준 도구다 — 이 책에서 별도로 유도하지는 않지만, 다물체계를 만나면 그 존재를 기억해 두라.
1.1.5 전기계 — RC·RLC (키르히호프)
도메인만 바뀌지 절차는 같다. 입력 전압 v_in, 출력은 커패시터 전압 v_out.
RC 회로(1차): 직렬 R·C. 전류 $i = C\cdot\dot{v}_{\mathrm{out}}$, 키르히호프 전압법칙 v_in = i·R + v_out:
$$RC\cdot\dot{v}_{\mathrm{out}} + v_{\mathrm{out}} = v_{\mathrm{in}}$$ — 1차 ODE, 시간상수 $\tau = RC$
RLC 회로(2차): 직렬 L·R·C. v_in = L·i̇ + R·i + v_out, $i = C\cdot\dot{v}_{\mathrm{out}}$:
$$LC\cdot\ddot{v}_{\mathrm{out}} + RC\cdot\dot{v}_{\mathrm{out}} + v_{\mathrm{out}} = v_{\mathrm{in}}$$ — 2차 ODE
$$\omega_n = 1/\sqrt{LC}, \qquad \zeta = (R/2)\cdot\sqrt{C/L}$$
RLC가 질량-스프링-댐퍼와 똑같은 꼴임에 주목하라 — 이것이 다음 절의 핵심이다.
1.1.6 도메인을 가로지르는 닮은꼴 — 하나 풀면 다 푼다
기계 병진계 $m\cdot\dot{v} + b\cdot v + k\int v = F$ 와 전기 RLC $L\cdot\dot{i} + R\cdot i + (1/C)\int i = V$는 글자만 다른 같은 방정식이다. 그래서 변수들이 1:1로 대응한다(힘-전압 닮음).
| 기계 병진 | 전기 (직렬 RLC) | 기계 회전 |
|---|---|---|
| 힘 $F$ | 전압 $V$ | 토크 $T$ |
| 질량 $m$ (관성) | 인덕턴스 $L$ | 관성모멘트 $J$ |
| 댐퍼 $b$ (점성) | 저항 $R$ | 회전 점성 $b$ |
| 스프링 $k$ ↔ $1/k$ | $1/C$ ↔ 커패시턴스 $C$ | 비틀림 스프링 $k$ |
속도 v = ẋ | 전류 $i$ | 각속도 $\omega= \dot{\theta}$ |
| 변위 $x$ | 전하 $q$ | 각도 $\theta$ |
왜 강력한가: 같은 ODE면 같은 거동(같은 극, 같은 응답)이다. 한 시스템에서 쌓은 직관(예: $\zeta$가 작으면 진동하기 쉽다)이 모든 도메인에 그대로 옮겨 간다. 회로로 기계계를 흉내 내는 아날로그 컴퓨터, 통합 시뮬레이션이 다 이 원리다.
1.1.7 전기-기계계 — DC 모터 (로보틱스의 일꾼)
로봇 바퀴·관절의 주력 액추에이터. 전기와 기계가 결합된, 이 책에서 가장 자주 쓸 플랜트다(제7부 7.2의 대상). 전기자 전압 $V$로 각속도 $\omega$(또는 각도 $\theta$)를 제어한다.
두 법칙을 각각 적는다.
- 전기측(키르히호프 전압): 인가전압 = 저항강하 + 인덕터 + 역기전력
e_b
$$V = R\cdot i + L\cdot\dot{i} + e_b, \qquad e_b = K_e\cdot\omega$$ — $K_e$: 역기전력 상수
- 기계측(뉴턴 회전): 모터 토크가 관성·마찰을 극복한다. 토크는 전류에 비례
$$J\cdot\dot{\omega} + b\cdot\omega = T, \qquad T = K_t\cdot i$$ — $K_t$: 토크 상수
두 식을 라플라스(초기조건 0)로 옮겨 $I$를 소거하면 전달함수가 나온다:
$$G(s) = \frac{\Omega(s)}{V(s)} = \frac{K_t}{(Ls + R)(Js + b) + K_t\cdot K_e}$$
분모를 전개하면 $LJ\cdot s^2 + (Lb+RJ)\cdot s + (Rb+K_t\cdot K_e)$ — 2차계다. 각도를 출력으로 하면 Θ(s)/V(s) = G(s)/s로 적분기 하나가 더 붙는다(위치 제어가 속도 제어보다 까다로운 이유, 7.2).
1.1.7.1 흔한 단순화 — 전기가 기계보다 빠르다
보통 전기 시정수($L/R$)가 기계 시정수보다 훨씬 작다. $L\approx0$으로 근사하면 간결한 1차계가 된다:
$$\begin{gathered} G(s) \approx \frac{\Omega(s)}{V(s)} = \frac{K}{\tau s + 1}, \\ K = \frac{K_t}{Rb + K_t\cdot K_e}, \qquad \tau = \frac{RJ}{Rb + K_t\cdot K_e} \end{gathered}$$
"전압을 주면 1차 지연으로 정속에 도달"하는 친숙한 모델. 0.3.4.2에서 그린 $1/(\tau s+1)$ 곡선이 바로 이것이다.
1.1.7.2 도구로 — python-control로 전달함수 세우기
# dcmotor_tf.py — DC 모터 Ω(s)/V(s) (파라미터는 예시값)
import control as ct
R, L = 1.0, 0.5 # Ω, H
J, b = 0.01, 0.1 # kg·m², N·m·s
Kt, Ke = 0.01, 0.01 # N·m/A, V·s/rad
num = [Kt]
den = [L*J, L*b + R*J, R*b + Kt*Ke] # (Ls+R)(Js+b)+KtKe
G = ct.tf(num, den)
print(G)
print("poles:", ct.poles(G)) # 극이 좌반평면이면 안정 (0.2.2.4)
위 파라미터는 표준 예시값일 뿐이다 — 실제 모터는 데이터시트·실측으로 정한다. (코드 출력·극 위치는 여러분 환경에서 재현해 확인 — ✅ control 0.10.2 검증됨; 재현 권장.)
1.1.8 회전계와 진자 — 비선형의 등장
지금까지는 운 좋게 다 선형이었다. 현실은 대개 비선형이다. 대표 예가 진자다. 길이 $l$ 끝에 질량 $m$, 회전축에 점성 $b$, 입력 토크 $\tau$, 연직 아래에서 잰 각 $\theta$:
$$J\cdot\ddot{\theta} + b\cdot\dot{\theta} + m\cdot g\cdot l\cdot\underbrace{\sin\theta}_{\text{비선형 항! }(\sin\theta)} = \tau, \qquad J = m\cdot l^2$$
$\sin\theta$ 때문에 이 ODE는 비선형이라 라플라스·전달함수를 바로 못 쓴다(중첩이 안 됨). 선형 이론을 쓰려면 선형화가 필요하다 — 다음 절. (이 진자를 거꾸로 세운 것이 도립진자이며 7.4에서 LQR로 제어한다.)
1.1.9 선형화 — 비선형을 동작점 근처에서 펴기
1.1.9.1 아이디어 — 곡선을 한 점에서 접선으로
비선형 함수도 한 점(동작점) 근처만 보면 직선(접선)으로 근사된다. 테일러 전개 1차 항:
$$f(x) \approx f(x_0) + f'(x_0)\cdot(x - x_0)$$ — $x_0$ 근처
제어에서는 시스템을 평형(동작점) $x_0$ 근처의 작은 변동 $\delta x = x - x_0$에 대해 선형 모델로 다룬다. 다변수 $f(x, u)$면 미분이 자코비안 행렬로 일반화된다:
$$\delta\dot{x} \approx A\cdot\delta x + B\cdot\delta u, \qquad A = \partial f/\partial x \,\big|_{(x_0,u_0)}, \qquad B = \partial f/\partial u \,\big|_{(x_0,u_0)}$$
이것이 곧 상태공간 모델(4.1)이다 — 선형화는 비선형계를 상태공간 이론에 적용하기 위한 첫 단계다.
1.1.9.2 진자 선형화 — 두 평형, 두 거동
진자($\tau=0$)의 평형은 $\sin\theta= 0$ → 아래(θ=0)와 위(θ=π) 둘이다. 각각 근처에서 $\sin\theta$를 선형 근사한다.
- 아래 평형 θ≈0 (작은 각): $\sin\theta\approx\theta$
$$J\cdot\ddot{\theta} + b\cdot\dot{\theta} + m\cdot g\cdot l\cdot\theta = \tau$$ — 양(+)의 복원항 → 안정 (그네처럼 진동하다 멈춤)
이것이 친숙한 "소각 근사(small-angle approximation)"다. 보통 $\vert\theta\vert\lesssim15^\circ(\approx0.26 \,\mathrm{rad})$에서 오차 1% 안쪽 — 그 밖에서는 성립하지 않는다.
- 위 평형 θ=π (도립): $\theta= \pi+ \varphi$로 두면 $\sin(\pi+\varphi) = -\sin\varphi\approx-\varphi$
$$J\cdot\ddot{\varphi} + b\cdot\dot{\varphi} - m\cdot g\cdot l\cdot\varphi = \tau$$ — 음(−)의 복원항 → 불안정! (조금만 기울면 넘어감)
복원항 부호가 반전되어 극 하나가 우반평면에 생긴다 — 입력이 없으면 발산. 그래서 도립진자는 피드백 없이는 못 세운다(2.1·7.4).
교훈: 같은 비선형계라도 어느 동작점에서 선형화하느냐에 따라 안정/불안정이 결정된다. 선형 모델은 항상 "어느 점 근처"라는 조건이 따른다.
1.1.9.3 정직 — 선형화는 국소 근사다
선형화 모델은 동작점 근처에서만 맞는다. 큰 기동(드론 공중회전, 진자 대각도)에서는 어긋나고, 그때는 비선형 제어(6.2)가 필요하다. 선형 제어기를 설계하되 유효 범위를 늘 의식하라.
1.1.9.4 수치 예 — 파라미터를 대입해 ωₙ까지
1.1.7.2에서 DC모터에 실제 수를 넣어 봤듯, 진자도 숫자를 넣어야 감이 온다. $m=1 \,\mathrm{kg}, l=1 \,\mathrm{m}, g=9.8 \,\mathrm{m/s}^2$(단진자, 감쇠 $b=0$으로 단순화)를 대입하면 $J=m\cdot l^2=1 kg\cdot m^2$.
- 아래 평형(θ≈0, 안정): $J\cdot\ddot{\theta} + m\cdot g\cdot l\cdot\theta= \tau$ → $\omega_n = \sqrt{m\cdot g\cdot l/J} = \sqrt{g/l} = \sqrt9.8 \approx3.13 \,\mathrm{rad/s}$. 주기 $T=2\pi/\omega_n\approx2.01 \,\mathrm{s}$ — 흔히 아는 "1 m 진자는 약 2초 주기"와 일치한다.
- 위 평형(θ=π, 불안정): $J\cdot\ddot{\varphi} - m\cdot g\cdot l\cdot\varphi= \tau$ → 특성방정식 $\lambda^2 - g/l = 0$ → $\lambda= \pm\sqrt{g/l} \approx\pm3.13$. 복소 켤레가 아니라 실근 한 쌍(+3.13, −3.13)이라 진동 없이 지수적으로 발산/감쇠한다 — 크기는 아래 평형의 $\omega_n$과 같은 $\sqrt{g/l}\approx3.13$이지만, 그중 하나(+3.13)가 우반평면에 있어 불안정하다는 것이 결정적 차이다.
(위 수치는 표준 라이브러리 계산으로 직접 검증 — math.sqrt(9.8/1)≈3.1305, $2\pi/3.1305\approx2.007 \,\mathrm{s}$.)
1.1.10 ODE에서 표준형으로 — 다음 장으로 가는 다리
선형 ODE를 얻으면 두 표준형 중 하나로 옮겨 설계에 쓴다.
- 전달함수(입출력 하나, 1.2): 라플라스로 $G(s)=Y(s)/U(s)$. 고전 제어(제2부)의 언어.
- 상태공간(다변수·내부상태, 4.1): 상태변수(예:
x₁=위치, x₂=속도)를 골라ẋ=Ax+Bu, y=Cx+Du. 현대 제어(제4부)의 언어.
둘은 같은 시스템의 두 표현이며 서로 변환된다(4.1). 그리고 어느 쪽이든 1차계는 시정수 $\tau$ 하나, 2차계는 $\omega_n\cdot\zeta$ 둘로 응답이 거의 정해지는데, 그 읽는 법이 1.3이다.
1.1.11 모델의 한계 — 무엇을 생략했나
좋은 엔지니어는 자기 모델이 무엇을 무시했는지 안다. 위 유도들이 흔히 생략한 것:
- 고차·분포 동특성: 축의 탄성, 구조 진동 등 무시한 고주파 모드. 너무 빠른 제어기는 이것을 건드려 불안정해진다.
- 비선형 마찰: 점성($b\cdot\dot{x}$)만 넣고 쿨롱 마찰·스틱션·데드존을 뺐다. 저속·정지 부근에서 실제와 어긋난다.
- 백래시·포화: 기어 유격, 액추에이터 출력 한계(전압·토크 포화)는 선형 모델 밖이다.
- 파라미터 불확실성: $m, k, K_t$는 정확히 모르고 온도·마모로 변한다.
- 외란: 바람·부하·노면 등 모델에 없는 입력(0.1.4의 $d$).
대응: 모델 검증·보정은 시스템 식별(1.4), 모델 오차를 견디게 설계하는 것은 견고 제어(6.3)의 몫이다. 지금 단계의 목표는 "쓸 만한 공칭(nominal) 모델"을 얻는 것 — 완벽이 아니라 충분함.
1.1.12 정리 — 그리고 다음 장
- 모델링 = 물리법칙(뉴턴·키르히호프)으로 플랜트를 ODE로 적는 일. 도메인이 달라도 절차(1.1.2)와 방정식 꼴은 닮았다(1.1.6).
- 질량-스프링-댐퍼·RLC는 2차계, RC는 1차계, DC모터는 결합된 2차계(흔히 1차로 근사). 이들이 책 전반의 대표적 플랜트다.
- 진자처럼 비선형이면 동작점에서 선형화(테일러/자코비안)해 LTI로 만든다. 동작점에 따라 안정/불안정이 결정된다(아래 vs 도립).
- 모델은 근사다 — 무엇을 생략했는지 아는 것까지가 모델링이다(1.1.11).
다음 1.2에서는 이 ODE를 라플라스로 옮긴 전달함수를 깊게 다룬다 — 극·영점, 블록선도 대수로 복잡한 시스템을 조립·해석하는 법.
1.1.13 연습·생각해 볼 것
- 세워 보기. 천장에 매단 질량-스프링-댐퍼(중력 포함)의 ODE를 세우고, 평형 위치를 구한 뒤 그 평형 근처 변동에 대한 방정식이 1.1.4와 같은 꼴이 됨을 보여라(중력은 평형만 옮길 뿐 동특성을 안 바꿈을 확인).
- 닮은꼴 활용. $m=2, b=8, k=0$인 기계계와 $R, L$만 있는 RL 회로가 같은 1차 ODE임을 보이고, 변수 대응(1.1.6)을 적어라. 시정수는 각각 얼마인가?
- DC모터 극. 1.1.7.2의 파라미터로 분모
LJ s²+(Lb+RJ)s+(Rb+KtKe)의 극을 손(또는numpy.roots)으로 구하라. 좌반평면인가?L→0근사의 1차 극($-1/\tau$)과 비교하라. - 소각 근사의 한계. $\sin\theta\approx\theta$의 상대오차가 5%에 이르는 각도를 어림하라(힌트: θ≈?). 진자 제어에서 이 범위를 벗어나면 무슨 일이 생기나? (1.1.9.3)
- 두 평형. 진자를 위(θ=π) 근처에서 선형화하면 왜 극이 우반평면에 생기는지, 복원항 부호로 설명하라. 이 시스템을 똑바로 세우려면 왜 반드시 피드백이 필요한가? (1.1.8·1.1.9)
- (생각거리) 여러분이 고른 실제 장치(드론·세그웨이·온수기 등) 하나를 골라 1.1.2의 다섯 단계를 적용해 보라. 어디서 비선형이 나오고, 어떤 동작점에서 선형화할지, 무엇을 생략할지(1.1.11)를 한 문단으로.
막히면 항상 "변수 → 물리법칙 → ODE"의 세 걸음(1.1.2)으로 돌아가라. 도메인이 바뀌어도 걸음은 같다.