상태 공간 표현의 기본 개념

상태 공간 표현(State Space Representation)은 제어 시스템을 다루는 데 있어서 시간에 따른 동적 시스템의 상태 변화를 설명하는 방식 중 하나이다. 이 방식은 시스템의 입력과 출력뿐만 아니라 내부 상태 변수를 이용하여 시스템을 표현한다. 상태 공간 모델은 일반적으로 연립 1차 미분 방정식으로 나타내며, 시스템의 동적인 특성을 보다 직관적이고 체계적으로 다룰 수 있게 해준다.

동적 시스템에서 상태 공간 표현을 사용하면 시스템의 각 상태 변수들이 어떻게 변화하는지 시간에 따라 추적할 수 있다. 이 상태 변수들은 시스템의 과거 이력에 대한 정보를 담고 있으며, 시스템의 현재 입력과 상태에 의해 결정된다. 상태 공간 표현은 선형 시스템뿐만 아니라 비선형 시스템에도 적용할 수 있다.

선형 시스템의 상태 공간 표현

선형 시간 불변 시스템(LTI: Linear Time-Invariant System)의 경우 상태 공간 표현은 다음과 같은 두 개의 기본 방정식으로 표현된다:

  1. 상태 방정식 (State Equation):
\mathbf{x}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t)

여기서: - \mathbf{x}(t)n-차원의 상태 벡터이다. - \mathbf{A}는 시스템 행렬 (State Transition Matrix)로, 크기는 n \times n이다. - \mathbf{B}는 입력 행렬 (Input Matrix)로, 크기는 n \times m이다. - \mathbf{u}(t)m-차원의 입력 벡터이다.

  1. 출력 방정식 (Output Equation):
\mathbf{y}(t) = \mathbf{C} \mathbf{x}(t) + \mathbf{D} \mathbf{u}(t)

여기서: - \mathbf{y}(t)p-차원의 출력 벡터이다. - \mathbf{C}는 출력 행렬 (Output Matrix)로, 크기는 p \times n이다. - \mathbf{D}는 전달 행렬 (Feedthrough Matrix)로, 크기는 p \times m이다.

상태 방정식은 시스템의 현재 상태 \mathbf{x}(t)와 입력 \mathbf{u}(t)를 바탕으로 다음 상태를 예측하며, 출력 방정식은 현재 상태와 입력으로부터 출력 \mathbf{y}(t)를 계산한다.

상태 벡터

상태 벡터 \mathbf{x}(t)는 시스템의 동작을 완전히 설명하는 변수들의 집합이다. 이 벡터는 시스템의 동적 변화를 설명하기 위한 모든 필요한 정보를 포함하고 있어, 시스템의 미래 상태를 예측하는 데 필요한 모든 데이터를 담고 있다.

상태 벡터의 일반적인 예로는 다음과 같은 물리량들이 포함될 수 있다: - 위치(Position) - 속도(Velocity) - 가속도(Acceleration) - 각도(Angle)

예를 들어, 2차 시스템에서는 다음과 같은 형태의 상태 벡터를 사용할 수 있다:

\mathbf{x}(t) = \begin{bmatrix} x_1(t) \\ x_2(t) \end{bmatrix}

여기서 x_1(t)는 위치, x_2(t)는 속도일 수 있다.

상태 공간 표현의 장점

상태 공간 표현의 가장 큰 장점 중 하나는 다중 입력 다중 출력 시스템(MIMO: Multi-Input Multi-Output)을 쉽게 다룰 수 있다는 점이다. 이전의 전달 함수 방식은 단일 입력 단일 출력 시스템(SISO)에서만 사용하기 편리하지만, 상태 공간 모델은 다중 변수를 동시에 처리하는 데 유리한다.

또한, 비선형 시스템이나 시간 변수가 포함된 시스템에도 상태 공간 모델은 유연하게 적용할 수 있다. 전달 함수로는 표현하기 어려운 복잡한 시스템도 상태 공간 표현으로는 상대적으로 간단하게 모델링할 수 있다.

예시: 1차 시스템의 상태 공간 모델

간단한 1차 저역통과 필터 시스템을 상태 공간 표현으로 나타내면 다음과 같은 수식이 나온다:

\mathbf{x}(t) = -a \mathbf{x}(t) + b \mathbf{u}(t)
\mathbf{y}(t) = c \mathbf{x}(t)

여기서: - \mathbf{x}(t)는 시스템의 상태(출력), - \mathbf{u}(t)는 입력 신호, - a, b, c는 시스템의 고정 상수들이다.

이와 같이 상태 공간 모델은 미분 방정식을 행렬 형태로 변환하여 계산의 효율성을 높이고, 다차원 시스템을 더욱 체계적으로 다룰 수 있게 한다.

상태 공간 표현의 시간 응답

상태 공간 표현에서 시스템의 시간 응답을 구하는 것은 매우 중요한 작업이다. 주어진 입력에 대해 시스템이 시간이 지남에 따라 어떻게 반응하는지를 이해하기 위해서는 상태 방정식을 해석해야 한다. 선형 시간 불변 시스템(LTI)의 경우, 시간 응답은 상태 방정식의 해를 통해 구할 수 있다.

상태 방정식:

\mathbf{\dot{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t)

제로 입력 응답 (Zero Input Response)

입력 신호가 없을 때, 즉 \mathbf{u}(t) = 0인 경우, 상태 방정식은 다음과 같이 단순화된다:

\mathbf{\dot{x}}(t) = \mathbf{A} \mathbf{x}(t)

이 경우 시스템의 시간 응답은 자연 응답(Natural Response)이라고 하며, 초기 조건에 의해 결정된다. 이 미분 방정식을 풀면 다음과 같은 해를 얻을 수 있다:

\mathbf{x}(t) = e^{\mathbf{A}t} \mathbf{x}(0)

여기서 e^{\mathbf{A}t}는 행렬 지수 함수로 계산된다. 따라서 시스템의 상태는 시간에 따라 \mathbf{A}에 의해 변화하며, 이때 초기 상태 \mathbf{x}(0)가 중요하게 작용한다.

제로 상태 응답 (Zero State Response)

초기 상태가 0인 경우, 즉 \mathbf{x}(0) = 0일 때의 시간 응답을 제로 상태 응답(Zero State Response)이라고 한다. 입력 \mathbf{u}(t)가 주어진다면, 상태 방정식은 다음과 같이 표현된다:

\mathbf{\dot{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t)

이 미분 방정식의 해는 입력 함수 \mathbf{u}(t)에 따라 달라지며, 적분을 통해 구할 수 있다. 제로 상태 응답은 다음과 같이 표현된다:

\mathbf{x}(t) = \int_0^t e^{\mathbf{A}(t-\tau)} \mathbf{B} \mathbf{u}(\tau) d\tau

이 식은 행렬 지수 함수와 입력 \mathbf{u}(t)의 곱을 적분한 결과로, 입력에 의한 상태 변화를 설명한다.

전체 시간 응답

전체 시간 응답은 제로 입력 응답제로 상태 응답을 더한 것으로 표현된다:

\mathbf{x}(t) = e^{\mathbf{A}t} \mathbf{x}(0) + \int_0^t e^{\mathbf{A}(t-\tau)} \mathbf{B} \mathbf{u}(\tau) d\tau

이 식은 초기 상태와 입력에 의한 상태 변화를 모두 포함한 상태 공간 표현에서의 시간 응답을 의미한다.

상태 전이 행렬

상태 공간 표현에서 중요한 개념 중 하나는 상태 전이 행렬(State Transition Matrix)이다. 이는 시간 t에서 시스템 상태가 어떻게 변화하는지를 설명하는 행렬이다. 상태 전이 행렬은 다음과 같이 정의된다:

\mathbf{\Phi}(t) = e^{\mathbf{A}t}

상태 전이 행렬 \mathbf{\Phi}(t)는 시스템 행렬 \mathbf{A}에 의해 결정되며, 시간에 따른 시스템의 상태 변화를 나타낸다. 이 행렬을 사용하면 시스템의 상태를 간단히 다음과 같이 표현할 수 있다:

\mathbf{x}(t) = \mathbf{\Phi}(t) \mathbf{x}(0) + \int_0^t \mathbf{\Phi}(t-\tau) \mathbf{B} \mathbf{u}(\tau) d\tau

이 방정식은 시스템의 초기 상태와 입력을 모두 고려한 상태 벡터의 변화를 나타낸다. 상태 전이 행렬은 특히 선형 시스템에서 시간 응답을 해석할 때 매우 유용하다.

상태 가변 시스템 (Time-Varying Systems)

지금까지 설명한 상태 공간 표현은 시간 불변 시스템에 관한 것이었다. 그러나 많은 실제 시스템은 시간이 지남에 따라 시스템 매개변수나 상태가 변하는 시간 가변 시스템(Time-Varying Systems)이다. 이러한 경우, 상태 공간 표현은 여전히 유효하지만, 시스템 행렬 \mathbf{A}(t), \mathbf{B}(t), \mathbf{C}(t), \mathbf{D}(t)이 시간에 따라 변하게 된다.

시간 가변 시스템의 상태 방정식은 다음과 같이 표현된다:

\mathbf{\dot{x}}(t) = \mathbf{A}(t) \mathbf{x}(t) + \mathbf{B}(t) \mathbf{u}(t)
\mathbf{y}(t) = \mathbf{C}(t) \mathbf{x}(t) + \mathbf{D}(t) \mathbf{u}(t)

시간 가변 시스템에서는 상태 전이 행렬이 더 복잡하게 계산되며, 시스템의 시간에 따른 동작을 분석하는 것이 더 어렵다. 그러나 상태 공간 표현의 기본 원리는 시간 가변 시스템에서도 동일하게 적용된다.

상태 공간에서의 안정성

상태 공간 표현에서 시스템의 안정성은 시스템 행렬 \mathbf{A}의 고유값에 의해 결정된다. 만약 행렬 \mathbf{A}의 모든 고유값의 실수부가 음수라면, 시스템은 안정적이다. 고유값의 실수부가 양수인 경우 시스템은 불안정하고, 0인 경우는 경계적 안정성을 갖는다.

이를 구체적으로 표현하면, 시스템의 고유값 \lambda가 다음 조건을 만족해야 한다: - 안정적일 때: \text{Re}(\lambda) < 0 - 불안정할 때: \text{Re}(\lambda) > 0 - 경계적 안정성일 때: \text{Re}(\lambda) = 0

고유값 분석은 시스템이 시간이 지남에 따라 발산하는지, 수렴하는지, 또는 일정한 값을 유지하는지를 결정하는 데 매우 중요한 도구이다.

제어 가능성 (Controllability)

상태 공간 표현에서 중요한 성질 중 하나는 제어 가능성(Controllability)이다. 제어 가능성은 시스템에 적절한 입력을 가했을 때, 시스템의 모든 상태 변수를 원하는 값으로 만들 수 있는 능력을 의미한다. 즉, 초기 상태에서 시작해 입력을 조정하여 시스템을 원하는 최종 상태로 이동시킬 수 있는지를 결정한다.

제어 가능성의 수학적 정의는 제어 가능 행렬(Controllability Matrix)을 통해 확인할 수 있다. 제어 가능 행렬 \mathbf{C}는 다음과 같이 정의된다:

\mathbf{C} = \begin{bmatrix} \mathbf{B} & \mathbf{A}\mathbf{B} & \mathbf{A}^2 \mathbf{B} & \dots & \mathbf{A}^{n-1} \mathbf{B} \end{bmatrix}

여기서: - \mathbf{A}는 시스템 행렬, - \mathbf{B}는 입력 행렬, - n은 상태 변수의 개수이다.

시스템이 제어 가능하려면, 제어 가능 행렬 \mathbf{C}의 행렬식이 0이 아니어야 한다. 즉, \mathbf{C}가 풀랭크(Full Rank)일 때 시스템은 제어 가능하다고 말할 수 있다. 만약 \mathbf{C}가 풀랭크가 아니라면, 일부 상태 변수는 입력에 의해 제어할 수 없다는 것을 의미한다.

제어 가능성의 테스트

제어 가능성을 확인하는 방법으로는 칼만의 제어 가능성 테스트(Kalman Controllability Test)가 있다. 이 테스트에서는 제어 가능 행렬의 랭크를 구하여 시스템이 제어 가능한지 판단한다. 구체적으로, 제어 가능 행렬 \mathbf{C}의 랭크가 상태 변수의 차원 n과 같으면, 시스템은 완전 제어 가능한다.

예시: 2차 시스템에서의 제어 가능성

2차 시스템을 예로 들어 보겠다. 시스템의 상태 방정식이 다음과 같다고 가정하자:

\mathbf{\dot{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t)
\mathbf{A} = \begin{bmatrix} 0 & 1 \\ -2 & -3 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

이 시스템의 제어 가능 행렬 \mathbf{C}는 다음과 같이 계산된다:

\mathbf{C} = \begin{bmatrix} \mathbf{B} & \mathbf{A} \mathbf{B} \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 1 & -3 \end{bmatrix}

이제 이 행렬의 랭크를 계산하면, 랭크는 2이다. 따라서 이 시스템은 제어 가능한 시스템이다.

관측 가능성 (Observability)

제어 가능성과 함께 상태 공간 표현에서 중요한 또 다른 개념은 관측 가능성(Observability)이다. 관측 가능성은 시스템의 출력 값을 통해 모든 상태 변수를 정확하게 추정할 수 있는 능력을 의미한다. 즉, 시스템의 상태를 알지 못하는 상황에서 출력 데이터를 사용해 상태를 복원할 수 있는지 여부를 결정한다.

관측 가능성은 관측 가능 행렬(Observability Matrix)을 통해 수학적으로 정의된다. 관측 가능 행렬 \mathbf{O}는 다음과 같이 정의된다:

\mathbf{O} = \begin{bmatrix} \mathbf{C} \\ \mathbf{C} \mathbf{A} \\ \mathbf{C} \mathbf{A}^2 \\ \dots \\ \mathbf{C} \mathbf{A}^{n-1} \end{bmatrix}

여기서: - \mathbf{C}는 출력 행렬이다.

시스템이 관측 가능하려면, 관측 가능 행렬 \mathbf{O}의 행렬식이 0이 아니어야 한다. 즉, 관측 가능 행렬 \mathbf{O}가 풀랭크(Full Rank)일 때 시스템은 완전 관측 가능하다고 할 수 있다.

관측 가능성의 테스트

관측 가능성을 확인하는 방법으로 칼만의 관측 가능성 테스트(Kalman Observability Test)가 있다. 제어 가능성 테스트와 마찬가지로, 관측 가능 행렬의 랭크를 구하여 시스템이 관측 가능한지 판단한다. 관측 가능 행렬 \mathbf{O}의 랭크가 상태 변수의 차원 n과 같으면, 시스템은 완전 관측 가능하다고 할 수 있다.

예시: 2차 시스템에서의 관측 가능성

이제 같은 2차 시스템의 경우, 출력 방정식이 다음과 같다고 가정하자:

\mathbf{y}(t) = \mathbf{C} \mathbf{x}(t)
\mathbf{C} = \begin{bmatrix} 1 & 0 \end{bmatrix}

이 경우 관측 가능 행렬 \mathbf{O}는 다음과 같이 계산된다:

\mathbf{O} = \begin{bmatrix} \mathbf{C} \\ \mathbf{C} \mathbf{A} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

이 행렬의 랭크는 2이므로, 이 시스템은 완전 관측 가능한 시스템이다.

제어 가능성과 관측 가능성의 관계

제어 가능성과 관측 가능성은 서로 밀접하게 관련되어 있지만, 상호 독립적인 개념이다. 시스템이 제어 가능하더라도 관측 가능하지 않을 수 있으며, 그 반대의 경우도 성립할 수 있다. 따라서 두 가지 성질을 모두 고려하여 시스템을 설계하고 분석하는 것이 중요하다.

특히 이중성 원리(Duality Principle)에 따르면, 제어 가능성과 관측 가능성은 서로 대칭적인 관계를 가진다. 제어 가능 행렬과 관측 가능 행렬을 서로 대칭적으로 변환할 수 있으며, 이로 인해 한 시스템의 제어 가능성과 관측 가능성 분석이 동일한 수학적 구조를 가질 수 있다.

상태 피드백 제어

상태 공간 표현에서 상태 피드백 제어(State Feedback Control)는 시스템의 상태 벡터 \mathbf{x}(t)를 피드백하여 제어 입력을 결정하는 방법이다. 이를 통해 시스템의 동적 거동을 원하는 대로 조정할 수 있다. 상태 피드백 제어는 시스템의 모든 상태 변수를 실시간으로 측정할 수 있다는 가정 하에, 입력을 상태 벡터의 선형 결합으로 나타낸다.

상태 피드백 제어는 다음과 같은 형태로 표현된다:

\mathbf{u}(t) = -\mathbf{K} \mathbf{x}(t)

여기서: - \mathbf{K}이득 행렬(Gain Matrix)로, 제어기의 성능을 결정하는 중요한 요소이다. 크기는 m \times n이며, m은 입력의 차원, n은 상태 벡터의 차원이다.

상태 피드백 제어를 시스템에 적용하면, 상태 방정식은 다음과 같이 변경된다:

\mathbf{\dot{x}}(t) = (\mathbf{A} - \mathbf{B} \mathbf{K}) \mathbf{x}(t)

\mathbf{A} - \mathbf{B} \mathbf{K}폐루프 시스템 행렬(Closed-Loop System Matrix)이라고 하며, 이 행렬의 고유값에 의해 시스템의 안정성이 결정된다. 상태 피드백 제어를 통해 이 고유값들을 원하는 위치로 배치하여 시스템의 안정성과 응답 속도를 제어할 수 있다.

이득 배치 (Pole Placement)

상태 피드백 제어의 중요한 설계 방법 중 하나는 이득 배치(Pole Placement)이다. 이 기법은 시스템의 폐루프 고유값을 원하는 위치에 배치하기 위해 \mathbf{K} 행렬을 설계하는 과정이다. 고유값은 시스템의 동적 거동, 특히 안정성과 응답 속도를 결정하므로, 이를 적절히 설계하는 것이 매우 중요하다.

이득 배치는 시스템이 제어 가능할 때 가능하며, 제어 가능하지 않은 시스템에서는 이 기법을 사용할 수 없다. 이득 배치를 통해 시스템의 특성 방정식이 원하는 고유값을 갖도록 설계할 수 있다.

예시: 2차 시스템의 이득 배치

2차 시스템을 고려해 보자. 시스템의 상태 방정식이 다음과 같다고 가정한다:

\mathbf{\dot{x}}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t)
\mathbf{A} = \begin{bmatrix} 0 & 1 \\ -2 & -3 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

이 시스템에 상태 피드백을 적용한다고 가정하고, 원하는 폐루프 고유값이 -1-2라고 설정하겠다. 먼저, 특성 방정식은 다음과 같이 설정된다:

(s + 1)(s + 2) = s^2 + 3s + 2

상태 피드백 제어를 통해 \mathbf{A} - \mathbf{B} \mathbf{K} 행렬의 고유값이 이 특성 방정식의 근과 같도록 \mathbf{K}를 설계한다. 이를 통해 시스템의 동적 거동을 원하는 대로 조정할 수 있다.

관측기 설계 (Observer Design)

실제 시스템에서는 모든 상태 변수를 측정할 수 없는 경우가 많다. 이러한 경우 관측기(Observer)를 사용하여 상태 변수를 추정할 수 있다. 관측기는 시스템의 출력과 입력을 사용해 상태 변수를 실시간으로 추정하며, 이 추정된 상태 값을 바탕으로 제어를 수행할 수 있다.

루엔버거 관측기(Luenberger Observer)는 가장 널리 사용되는 관측기 설계 방법 중 하나이다. 루엔버거 관측기는 다음과 같은 형태로 상태를 추정한다:

\mathbf{\dot{\hat{x}}}(t) = \mathbf{A} \mathbf{\hat{x}}(t) + \mathbf{B} \mathbf{u}(t) + \mathbf{L} \left( \mathbf{y}(t) - \mathbf{C} \mathbf{\hat{x}}(t) \right)

여기서: - \mathbf{\hat{x}}(t)는 추정된 상태 벡터이다. - \mathbf{L}관측기 이득 행렬(Observer Gain Matrix)로, 추정된 상태와 실제 출력을 비교하여 오차를 보정한다. - \mathbf{y}(t) - \mathbf{C} \mathbf{\hat{x}}(t)추정 오차로, 관측기는 이 오차를 줄이기 위해 동작한다.

관측기 이득 \mathbf{L}을 적절히 설계하면 추정된 상태 벡터 \mathbf{\hat{x}}(t)는 실제 상태 벡터 \mathbf{x}(t)로 수렴하게 된다. 이때 관측기 이득을 설계하는 방법은 이득 배치와 유사하게 폴 배치(Pole Placement)를 사용할 수 있다.

관측기와 상태 피드백 제어의 결합

상태 피드백 제어와 관측기를 결합하면 출력 피드백 제어(Output Feedback Control)를 구현할 수 있다. 이 방식은 시스템의 출력을 사용하여 상태를 추정하고, 이 추정된 상태를 기반으로 상태 피드백 제어를 적용하는 구조이다.

이 결합된 시스템은 다음과 같이 표현된다:

  1. 관측기를 통해 상태 추정:
\mathbf{\dot{\hat{x}}}(t) = \mathbf{A} \mathbf{\hat{x}}(t) + \mathbf{B} \mathbf{u}(t) + \mathbf{L} \left( \mathbf{y}(t) - \mathbf{C} \mathbf{\hat{x}}(t) \right)
  1. 상태 피드백 제어:
\mathbf{u}(t) = -\mathbf{K} \mathbf{\hat{x}}(t)

이와 같은 구조에서, 관측기를 통해 추정된 상태 값이 상태 피드백 제어의 입력으로 사용되며, 시스템의 제어와 상태 추정이 동시에 이루어진다. 관측기와 상태 피드백 제어의 결합은 특히 실질적인 시스템에서 중요한 방법이다. 시스템의 모든 상태를 측정할 수 없더라도 관측기를 통해 상태 변수를 추정하고, 이 정보를 바탕으로 효율적인 제어를 수행할 수 있다.

상태 공간에서의 분리 원리

상태 피드백 제어와 관측기 설계는 분리 원리(Separation Principle)에 따라 독립적으로 설계할 수 있다. 즉, 상태 피드백 제어기의 설계와 관측기의 설계는 상호 독립적이며, 각각의 성능에 영향을 미치지 않는다. 이로 인해 시스템의 제어 성능과 상태 추정 성능을 별도로 최적화할 수 있다.

따라서 제어기 이득 \mathbf{K}와 관측기 이득 \mathbf{L}을 설계하는 과정은 서로 독립적으로 수행할 수 있으며, 각각의 설계를 통해 원하는 제어 성능과 상태 추정 성능을 달성할 수 있다.