제4부 현대 제어: 상태공간
4.2 가제어성·가관측성
제4부 현대 제어: 상태공간 · 설계의 전제. 상태피드백(4.3)·관측기(4.4)를 설계하기 전에 물어야 할 두 질문: 입력으로 상태를 원하는 곳으로 몰 수 있나(가제어성)?, 출력만 보고 내부 상태를 알아낼 수 있나(가관측성)? 이 둘이 현대 제어 설계의 존재 조건이며, 1.2.9·4.1.10의 "숨은 모드"를 정밀하게 가려낸다.
이 장을 마치면 가제어·가관측을 행렬 랭크로 판정하고, 잃는 이유(상쇄·센서 배치)를 이해하며, 실무에서 실제로 필요한 완화 조건(안정화가능·검출가능)을 구분해야 한다.
4.2.1 왜 — 설계의 존재 조건
극배치(4.3)는 "폐루프 극을 원하는 자리 아무 데나 놓겠다"는 것이다. 그런데 입력이 어떤 상태에 전혀 영향을 못 주면 그 모드의 극은 못 옮긴다. 관측기(4.4)는 "출력으로 내부 상태를 추정하겠다"인데, 어떤 상태가 출력에 전혀 안 비치면 그 상태는 못 알아낸다.
- 가제어성 = 극배치·상태피드백이 가능한가의 조건.
- 가관측성 = 관측기·상태추정이 가능한가의 조건.
또한 이 둘은 4.1.10의 숨은 모드(전달함수에 안 나타나는 내부 모드)를 정확히 진단한다 — 1.2.9의 위험한 상쇄가 여기서 "불가제어/불가관측 모드"로 본질을 드러낸다.
4.2.2 가제어성 (controllability)
가제어: 적절한 입력 $u(t)$로 임의의 초기상태 $x(0)$에서 임의의 목표상태로 유한 시간 안에 옮길 수 있다.
판정 — 가제어성 행렬:
$$\mathcal{C} = \begin{bmatrix} B & AB & A^2B & \cdots & A^{n-1}B \end{bmatrix} \qquad (n\times nm)$$
가제어 $\iff \operatorname{rank} \mathcal{C} = n$ (열공간이 상태공간 전체를 채움)
직관: $B$는 입력이 직접 작용하는 방향, $AB$는 한 번 동역학을 거쳐 작용하는 방향, … 이들이 $n$차원을 다 채우면 어디로든 이동시킬 수 있다.
예(질량-스프링-댐퍼, 4.1.4): A=[[0,1],[−k/m,−b/m]], B=[0;1/m].
$$AB = \begin{bmatrix} 1/m \\ -b/m^2 \end{bmatrix}, \quad \mathcal{C} = [B\ \ AB] = \begin{bmatrix} 0 & 1/m \\ 1/m & -b/m^2 \end{bmatrix}$$
$$\det \mathcal{C} = -1/m^2 \ne 0 \;\to\; \text{rank } 2 = n \;\to\; \text{가제어 ✓}$$
반례(불가제어): A=diag(−1,−2), B=[1;0]. 𝒞=[B AB]=[[1,−1],[0,0]], rank 1 < 2 → 불가제어. 둘째 상태(고유값 −2)에 입력이 닿지 않는다.
4.2.3 가관측성 (observability)
가관측: 출력 $y(t)$를 유한 시간 관측해 초기상태 $x(0)$를 유일하게 알아낼 수 있다.
판정 — 가관측성 행렬:
$$\mathcal{O} = \begin{bmatrix} C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1} \end{bmatrix} \qquad (np \times n)$$
$$\text{가관측} \iff \text{rank } \mathcal{O} = n$$
직관: $C$는 출력이 직접 보는 상태 조합, $CA$는 한 스텝 뒤 보는 조합, … 이들이 $n$차원을 다 펼치면 모든 상태를 역추적할 수 있다.
예(위 질량-스프링-댐퍼, $C=[1,0]$ 위치만 측정): $CA=[0,1]$, 𝒪=[[1,0],[0,1]], rank 2 → 가관측 ✓. 위치만 재도 속도를 추정할 수 있다는 뜻(관측기로, 4.4).
4.2.4 쌍대성 (duality) — 관측기와 피드백의 대칭
가제어성과 가관측성은 수학적으로 쌍대다:
- $(A, C)$가 가관측 $\iff$ $(A^T, C^T)$가 가제어
- $(A, B)$가 가제어 $\iff$ $(A^T, B^T)$가 가관측
$\mathcal{O}(A,C) = \mathcal{C}(A^T,C^T)^T$이기 때문이다. 실용적 의미: 관측기 설계 = 쌍대 시스템의 상태피드백 설계. 그래서 4.3(극배치)를 익히면 4.4(관측기)이 거의 대가 없이 따라온다.
4.2.5 PBH 판정 — 어느 모드를 잃었나
랭크 판정은 "가제어/불가제어"만 답한다. PBH(Popov-Belevitch-Hautus) 판정은 어느 모드가 문제인지 식별한다.
- $(A,B)$ 가제어 $\iff \operatorname{rank}[\, sI - A \mid B \,] = n$ ($A$의 모든 고유값 $s$에 대해)
- $(A,C)$ 가관측 $\iff \operatorname{rank}[\, (sI - A)^T \mid C^T \,]^T = n$ (모든 고유값에 대해)
어떤 고유값 $\lambda$에서 랭크가 줄면, 그 $\lambda$ 모드(고유벡터 방향)가 불가제어/불가관측이다. 4.2.2 반례에서 $\lambda=-2$: [λI−A | B]=[[−1,0,1],[0,0,0]] rank 1<2 → −2 모드가 불가제어임을 정확히 지목해 준다. 부분적 상실을 진단할 때 필수.
4.2.6 잃는 이유 — 상쇄·대칭·배치
가제어성/가관측성은 왜 상실되나?
- 극·영점 상쇄(1.2.9): 전달함수에서 약분된 극은 상태공간에서 불가제어 또는 불가관측 모드로 남는다. 4.1.10의 숨은 모드가 바로 이것. 상쇄가 불안정 극이면 → 내부 불안정.
- 대칭: 완벽히 대칭인 시스템(같은 두 모드가 입력·출력에 동일하게 결합)은 한 조합만 보이고 다른 조합이 안 보일 수 있다.
- 센서·액추에이터 배치: 어떤 상태에 닿는 입력이 없으면 불가제어, 비치는 출력이 없으면 불가관측. 물리적으로 액추에이터·센서를 잘못 놓은 것.
그래서 가제어·가관측은 수학이자 설계 결정이다 — "어디에 모터를 장착하고 센서를 둘 것인가"가 이 두 성질을 정한다.
4.2.6.1 대칭 손실의 숫자 예 — 두 질량의 반대칭 모드
"대칭이면 잃는다"를 실제 행렬로 보자. 동일한 질량 $m=1$ 둘이 각자 벽에 스프링($k=1$)으로, 서로는 결합 스프링($k_{12}=1$)으로 연결됐다. 상태 $x=[x_1,x_2,\dot{x}_1,\dot{x}_2]$:
$$\ddot{x}_1 = -2x_1 + x_2 + u$$
$$\ddot{x}_2 = x_1 - 2x_2 + u \qquad (\text{액추에이터 하나가 양쪽에 "똑같이" } u \text{를 민다, 대칭축 위의 배치})$$
$$A = \begin{bmatrix} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ -2 & 1 & 0 & 0 \\ 1 & -2 & 0 & 0 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 0 \\ 1 \\ 1 \end{bmatrix}$$
$A$의 $[x_1,x_2]$ 결합 블록 [[−2,1],[1,−2]]의 고유벡터는 [1,1](대칭 모드, 고유값 −1 → $\omega=1$)과 [1,−1](반대칭 모드, 고유값 −3 → $\omega=\sqrt3$)이다. $B$의 힘 성분 [1,1]은 정확히 대칭 고유벡터 방향이라 반대칭 고유벡터 [1,−1]과 내적이 0 — 입력이 반대칭 모드에 전혀 안 닿는다.
검증 필요(docker numpy로 재현): $\mathcal{C}=[B AB A^2B A^3B]$의 rank는 2(<4) — 불가제어. $\operatorname{eig}(A)=\pm j1.0, \pm j1.732$이고, PBH $\operatorname{rank}[\lambda I-A \vert B]$를 각 고유값에서 보면 대칭 모드($\lambda=\pm j1$)는 rank 4(정상)이지만 반대칭 모드($\lambda=\pm j1.732=\pm j\sqrt3$)에서 rank 3<4 — 반대칭 모드만 불가제어임이 PBH로 확인된다(4.2.5). 액추에이터를 "대칭축 위"(양쪽에 똑같이)에 놓으면 반대칭 진동은 절대 못 누른다는 뜻 — 실제로 양쪽에 다르게 힘을 줄 수 있어야 반대칭 모드가 가제어해진다.
쌍대로(4.2.4), 센서도 대칭이면($C=[1,1,0,0]$, 즉 $x_1+x_2$만 측정) 같은 이유로 𝒪의 rank가 2로 떨어져 반대칭 모드가 불가관측이 된다 — 두 위치를 각각 재지 않고 합만 재면 "따로 진동하는" 성분은 결코 관측되지 않는다.
4.2.7 칸 분해와 최소 실현
임의의 상태공간은 상사변환으로 네 부분으로 나뉜다(칼만 분해):
| 가제어 | 불가제어 | |
|---|---|---|
| 가관측 | ① 가제어·가관측 | ③ 불가제어·가관측 |
| 불가관측 | ② 가제어·불가관측 | ④ 둘 다 아님 |
전달함수는 ①(가제어·가관측) 부분만 본다. ②③④는 입출력에 안 나타나는 숨은 모드. 그래서:
*최소 실현(minimal realization) ⟺ 가제어 그리고 가관측.* 차수가 극 수와 같은(군더더기 없는) realization이다. 4.1.6의 전달함수→상태공간이 최소가 아닐 수 있던 이유가 여기 있다.
4.2.7.1 가관측 표준형 — 가제어 표준형의 쌍대
4.1.5가 예고한 가관측 표준형(observable canonical form)은 새로 외울 것이 아니라, 4.1.5의 가제어 표준형을 4.2.4의 쌍대성으로 전치한 것이다. 같은 $G(s)=(b_1s+b_0)/(s^2+a_1s+a_0)$에 대해:
가제어 표준형(4.1.5):
$$A_c = \begin{bmatrix} 0 & 1 \\ -a_0 & -a_1 \end{bmatrix}, \quad B_c = \begin{bmatrix} 0 \\ 1 \end{bmatrix}, \quad C_c = \begin{bmatrix} b_0 & b_1 \end{bmatrix}$$
가관측 표준형(전치):
$$A_o = \begin{bmatrix} 0 & -a_0 \\ 1 & -a_1 \end{bmatrix}, \quad B_o = \begin{bmatrix} b_0 \\ b_1 \end{bmatrix}, \quad C_o = \begin{bmatrix} 0 & 1 \end{bmatrix}, \quad D = 0$$
즉 $A_o = A_c^T$, $B_o = C_c^T$, $C_o = B_c^T$ — SISO 전달함수는 전치해도 같다($C(sI-A)^{-1}B$는 스칼라라 자기 자신의 전치와 같으므로 B_o,C_o,A_o로 만든 시스템도 정확히 같은 $G(s)$를 낸다). 직접 대입하면 $C_o(sI-A_o)^{-1}B_o = (b_1s+b_0)/(s^2+a_1s+a_0)$로 확인된다.
일반 $n$차(특성다항식 $s^n+a_{n-1}s^{n-1}+\ldots+a_0$, 분자 $b_{n-1}s^{n-1}+\ldots+b_0$)로 일반화하면, 4.1.5의 가제어 표준형(분모 계수가 마지막 행, 분자 계수가 $C$)을 전치해 분모 계수가 마지막 열로, 분자 계수가 $B$로 옮겨간다:
$$A_o = \begin{bmatrix} 0 & 0 & \cdots & 0 & -a_0 \\ 1 & 0 & \cdots & 0 & -a_1 \\ 0 & 1 & \cdots & 0 & -a_2 \\ \vdots & & \ddots & & \vdots \\ 0 & 0 & \cdots & 1 & -a_{n-1} \end{bmatrix}, \quad B_o = \begin{bmatrix} b_0 \\ b_1 \\ \vdots \\ b_{n-1} \end{bmatrix}, \quad C_o = \begin{bmatrix} 0 & \cdots & 0 & 1 \end{bmatrix}$$
이 형태는 구성상 항상 가관측이다 — C_o=[0…0 1]에서 출발해 𝒪의 각 행이 자동으로 독립이기 때문(4.2.3). 분모·분자에 상쇄가 없으면 가제어이기도 해 최소 실현이 된다(4.2.7 위 조건 그대로).
4.2.8 안정화가능·검출가능 — 실무의 완화 조건
완전한 가제어·가관측이 항상 필요한 것은 아니다. 더 약한 조건으로 충분할 때가 많다.
- 안정화가능(stabilizable): 불가제어 모드가 모두 안정(좌반평면). 못 옮기는 극이 이미 안정하면 그대로 두어도 된다.
- 검출가능(detectable): 불가관측 모드가 모두 안정. 못 보는 상태가 스스로 잦아들면 추정 안 해도 된다.
LQR(4.5)·칼만필터(5.2)가 실제로 요구하는 최소 조건은 "안정화가능 + 검출가능"이다(완전 가제어·가관측이 아니라). 불안정한 모드만 제어·관측되면 충분하다 — 정직하고 실용적인 기준.
4.2.9 도구로 — ctrb·obsv·minreal
# controllability.py — 가제어·가관측 판정
import control as ct, numpy as np
A = np.array([[0,1],[-4,-0.4]]); B = np.array([[0],[1]])
C = np.array([[1,0]]); D = np.array([[0]])
Cc = ct.ctrb(A, B); print("rank 𝒞 =", np.linalg.matrix_rank(Cc)) # = n 이면 가제어
Co = ct.obsv(A, C); print("rank 𝒪 =", np.linalg.matrix_rank(Co)) # = n 이면 가관측
sys = ct.ss(A,B,C,D)
print("minreal:", ct.minreal(ct.ss2tf(sys))) # 숨은 모드 제거된 최소 실현
# 경계 사례: np.linalg.svd(Cc) 로 특이값을 보아 '겨우 가제어'인지 확인
matrix_rank가 $n$이면 OK. (랭크는 수치적으로 미묘 — 4.2.10. 출력은 여러분 환경에서 확인, ✅ control 0.10.2 검증됨; 재현 권장.)
4.2.10 정직 — 랭크는 흑백, 현실은 회색
- 수치적 취약성:
rank판정은 이진(예/아니오)이지만, 실제로는 "겨우 가제어"인 시스템이 많다 — 행렬이 거의 특이(ill-conditioned)면 수학적으로는 가제어라도 매우 큰 입력을 써야 상태를 움직인다(사실상 불가능). - 등급화된 척도: 그래서 가제어성 그라미안 $W_c=\int e^{At}BB^Te^{A^Tt}dt$의 고유값(또는
𝒞의 특이값·조건수)으로 "얼마나 가제어한가"를 본다. 작은 고유값 방향 = 제어가 매우 어려운 방향. - 상쇄는 정확히 안 맞는다: 모델 오차로 상쇄가 어긋나면 "거의 불가제어/불가관측" 모드가 미세하게 남아 문제가 된다. 안전 설계는 여유를 둔다.
- 물리로 돌아가라: 랭크가 떨어지면 "수학 문제"로만 보지 말고, 어떤 물리 모드가 입력·출력과 끊겼는지(센서·액추에이터 배치)를 물어라.
4.2.11 정리 — 그리고 다음 장
- 가제어(입력으로 상태를 몰 수 있나, $\operatorname{rank} \mathcal{C}=n$)는 극배치·상태피드백의 조건, 가관측(출력으로 상태를 알 수 있나, $\operatorname{rank} \mathcal{O}=n$)은 관측기의 조건(4.2.2·4.2.3).
- 둘은 쌍대다 — 관측기와 피드백의 대칭(4.2.4). PBH로 어느 모드를 잃었는지 식별한다(4.2.5).
- 가제어·가관측 상실은 상쇄·대칭·센서/액추에이터 배치에서 오며(4.2.6), 전달함수는 가제어·가관측 부분만 본다 → 최소 실현 = 가제어 + 가관측(4.2.7).
- 실무 최소 조건은 안정화가능 + 검출가능(불안정 모드만 제어·관측되면 됨, 4.2.8). 랭크는 흑백이나 현실은 회색 — 그라미안으로 등급을 본다(4.2.10).
다음 4.3에서는 가제어 시스템의 폐루프 극을 원하는 자리에 놓는 극배치와 상태피드백을 다룬다 — 현대 제어 설계의 첫 표준 해법.
4.2.12 연습·생각해 볼 것
- 가제어 판정.
A=[[0,1],[0,−2]],B=[0;1]의 가제어성 행렬𝒞를 구해 랭크로 판정하라.B=[1;0]이면 어떻게 달라지나? - 가관측 판정.
A=[[0,1],[−2,−3]], $C=[1,0]$의𝒪를 구해 판정하라. $C=[0,1]$(속도만 측정)이면 가관측인가? - 쌍대성. 2번의 $(A,C)$가 가관측임을, 쌍대 $(A^T,C^T)$의 가제어성으로 확인하라(두 랭크가 같아야). (4.2.4)
- PBH로 진단.
A=diag(−1,−3),B=[1;0]에서 어느 고유값 모드가 불가제어인지 PBH로 식별하라. 이 시스템은 안정화가능한가? (4.2.5·4.2.8) - 상쇄와 숨은 모드. 전달함수 $(s+1)/[(s+1)(s+5)]$을 2차로 realization하면
s=−1모드는 불가제어 또는 불가관측이 된다. 이 시스템은 (불안정 모드가 없으니) 안정화가능·검출가능한가? 만약 상쇄된 극이 $s=+1$이었다면? (4.2.6·4.2.8, 1.2.9) - 배치 설계. 두 대차가 스프링으로 연결된 시스템에서, 한 대차에만 힘을 줄 수 있고 그 대차의 위치만 측정한다. 어떤 조건에서 둘 다 가제어·가관측일지 직관으로 논하라(대칭이면?). (4.2.6)
- (손으로)
controllability.py로 1·2번을 확인하고,minreal로 5번 전달함수의 숨은 모드가 사라지는지 보라.𝒞의 특이값을 출력해 '겨우 가제어'인 예를 만들어 보라(예: $B$를 거의 0 방향으로). (검증 필요)
막히면 "가제어=상태를 몰 수 있나(𝒞), 가관측=상태를 알 수 있나(𝒪), 최소실현=둘 다, 실무는 안정화가능·검출가능" 으로 돌아가라.