본문으로 건너뛰기
332 / OPTIMAL CONTROL LAB
먼저 알아두면 좋아요 · 상태공간·볼록 이차계획·안정성
단원 목록 (600) · 유한 시간 LQR·입력 제약·MPC
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

Riccati 제어와 미래 입력 상자를 푼 MPC를 같은 비용으로 비교합니다.

Discrete x_next=a*x+u, initial x0 fixed. Cost sum from t=0 to H-1 of q*x_t^2+r*u_t^2 plus p*x_H^2. MPC solves all |u_t|<=U by enumerating box faces, then applies only the first input and replans with the same H. Initial plan comparison uses the same horizon and terminal cost; receding trajectories use K_0 each time for the clipped/unbounded LQR comparators. No state constraint, terminal equality, disturbance or general stability guarantee.

0.345-0.345-2.32.3planned input u_tplanned state x_t
초기 계획의 상태·입력 쌍이며 축별 범위가 다릅니다. 파랑은 상자 제약 최적 계획, 주황은 horizon이 줄어드는 LQR 입력을 잘라낸 계획입니다. 점은 각 첫 입력이며 선은 시간 순서를 연결합니다. 아래는 같은 H로 매번 재계획한 실행 궤적입니다.
082.10
가로 실행 시간 · 파랑 MPC 상태 · 주황 잘라낸 LQR 상태 · 초기 계획은 위 도식
tMPC stateclipped LQR stateunbounded LQR stateapplied MPC inputapplied clipped inputunbounded inputcurrent MPC plan cost
0222-0.3-0.3-1.23110.33
11.71.70.769-0.3-0.3-0.4736.97
21.41.40.296-0.3-0.3-0.1824.33
31.11.10.114-0.3-0.3-0.072.405
40.80.80.044-0.3-0.3-0.0271.13
50.50.50.017-0.3-0.3-0.010.404
60.20.20.006-0.123-0.123-0.0040.065
70.0770.0770.002-0.047-0.047-0.0020.01

initial MPC input = -0.3

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

목표와 시계

x0를 고정하고 현재 상태 비용 q*x²와 입력 비용 r*u², 마지막 상태 비용 p*x_H²를 구분합니다.

x_next=a*x+u

실험에서 확인하기 →
이 단원 목차

제어기를 고르기 전에 원하는 행동을 정한다

관측한 상태가 목표에서 벗어난 정도라고 생각해 봅시다. 입력을 크게 주면 편차를 빨리 줄일 수 있지만, 구동기의 힘에는 한계가 있고 입력을 사용하는 데에도 비용이 듭니다. 최적제어는 이 절충을 목적함수와 제약으로 표현합니다. AI가 동역학을 학습했더라도 어떤 행동을 좋은 행동으로 볼지는 별도로 정해야 합니다.

이 실습의 모형은 이산 시간 scalar 계 x_(t+1)=a*x_t+u_t입니다. 입력 계수는 1이고 상태를 정확히 관측하며 잡음은 없습니다. 한 step은 선택한 표본 간격입니다. a나 u를 연속 시간 미분계의 계수로 바로 읽지 마세요. 모든 계산을 독립적으로 검산할 수 있도록 작은 계를 사용합니다.

유한 시간 목적함수와 종단 비용

현재 상태 x0를 고정하고 앞으로 H개 입력을 결정합니다.

J=∑t=0H−1(qxt2+rut2)+pxH2,xt+1=axt+ut.J=\sum_{t=0}^{H-1}(q x_t^2+r u_t^2)+p x_H^2, \qquad x_{t+1}=a x_t+u_t.

q,p는 음수가 아니고 r은 양수입니다. q는 현재 상태 편차, r은 입력 사용, p는 마지막 상태의 편차를 평가합니다. 현재 최적화에서 q*x0²는 상수지만 화면의 전체 비용에는 포함합니다. 마지막 상태에는 p만 적용하며 q와 p를 중복해서 더하지 않습니다. 손계산과 코드를 비교할 때 이 시간 규약을 먼저 맞추세요.

유한 시간 제어는 이 H step과 선택한 종단 평가 안에서 최선인 행동을 찾습니다. 무한 시간 최적제어와 같은 문제는 아닙니다. 예를 들어 q=p=0이면 입력 비용만 남으므로 최적 입력은 0입니다. a>1이어서 상태가 커지더라도 목표에 가까워지는 가치를 목적함수에 넣지 않았으므로 제어기가 그 행동을 스스로 선택하지 않습니다.

한 번의 제곱 완성에서 Riccati 재귀까지

입력 제약이 없을 때 남은 최적 비용을 V_t(x)=P_t*x²로 놓습니다. 마지막에는 P_H=p입니다. 다음 시점 비용 계수가 P_(t+1)라면 지금 최소화할 식은 다음과 같습니다.

qx2+ru2+Pt+1(ax+u)2.q x^2+r u^2+P_{t+1}(a x+u)^2.

u²의 계수 r+P_(t+1)는 양수입니다. 제곱을 완성하면 최적 입력과 현재 비용 계수를 얻습니다.

Kt=aPt+1r+Pt+1,ut∗=−Ktxt,K_t=\frac{aP_{t+1}}{r+P_{t+1}},\qquad u_t^*=-K_t x_t, Pt=q+a2rPt+1r+Pt+1.P_t=q+\frac{a^2 r P_{t+1}}{r+P_{t+1}}.

이것이 이 모형의 이산 유한 시간 Riccati 재귀입니다. 뒤에서 앞으로 계산하며, 남은 시간이 달라지므로 K_t도 일반적으로 달라집니다. 연속 시간 Riccati 미분방정식과 혼동하지 마세요.

최소화 식 전체는 P_tx²+(r+P_(t+1))(u+K_tx)²와 같습니다. 최적 입력을 선택하면 두 번째 항이 0입니다. 이 항등식을 궤적을 따라 합하면 최적 비용이 P0x0²임을 확인할 수 있고, 다른 입력을 택했을 때 증가하는 비용도 설명할 수 있습니다. 공식만 외우기보다 한 단계 제곱 완성을 직접 해보는 것이 중요합니다.

구동기 한계를 미래 입력 전체에 적용한다

모든 계획 시점에 |u_t|<=U를 부과합니다. 상태를 입력으로 표현하면

xt=atx0+∑j=0t−1at−1−jujx_t=a^t x_0+\sum_{j=0}^{t-1}a^{t-1-j}u_j

입니다. 이를 비용에 대입하면 c+2fᵀu+uᵀMu 형태의 이차계획이 됩니다. M은 r*I에 상태 비용의 양의 준정부호 항을 더한 행렬이므로 양의 정부호입니다. 닫히고 유계인 입력 상자 안에 유일한 최적해가 있습니다.

여기에는 상태 한계나 x_H=0 같은 종단 등식이 없습니다. 입력이 모두 0인 계획도 항상 실행 가능하므로 문제의 실행 가능성이 상태 안전이나 목표 도달을 뜻하지 않습니다. 제약의 의미를 화면에서 실제 구현한 것과 일치시켜 읽어야 합니다.

실습은 작은 입력 상자의 면을 열거해 실제 최적화를 수행합니다. 각 입력을 자유 변수, 아래 한계, 위 한계 중 하나로 정하고, 자유 변수의 양의 정부호 선형계를 푼 뒤 상자 안의 후보 중 비용이 가장 작은 것을 택합니다. H<=5이므로 최대 3^5개 면을 조사합니다. 큰 로봇 시스템에는 더 효율적인 희소 QP 풀이법이 필요합니다.

화면의 projected KKT residual은 u-proj_box(u-gradient J)의 최대 성분 크기입니다. 최적해에서는 부동소수점 오차 범위에서 0입니다. 아래 한계의 입력은 양의 미분, 위 한계는 음의 미분, 자유 입력은 0의 미분을 가질 수 있습니다. 이 부호 조건과 엄격한 볼록성은 해당 계획의 전역 최적성을 설명하지만 폐루프 안정성을 증명하지는 않습니다.

잘라낸 LQR과 미래 제약을 고려한 계획

간단한 방법은 제약 없는 LQR 입력을 [-U,U]로 자르는 것입니다. H=1에서는 한 변수 볼록 이차식의 최솟값을 구간으로 투영하므로 이 방법이 최적입니다. 여러 step에서는 미래에 걸리는 입력 한계가 현재 최적 입력을 바꿀 수 있습니다.

세 번째 안내 예제는 a=0.8,q=0,r=1,p=3,H=5,x0=2,U=0.2입니다. 제약 없는 첫 입력은 약 -0.095432로 현재 한계 안에 있습니다. 그러나 제약 최적 계획은 뒤쪽 입력이 -0.2에 걸릴 것을 고려하여 처음부터 약 -0.103150을 선택합니다. 남은 horizon이 줄어드는 LQR 입력을 잘라 실행한 초기 계획 비용은 약 0.157044, 상자 제약을 함께 푼 최적 계획은 약 0.154381입니다.

이는 같은 초기 상태·계획 길이·종단 비용의 비교입니다. 다른 목적이나 불완전한 모델에서도 MPC가 항상 더 좋은 실제 결과를 낸다는 주장은 아닙니다. 비용과 비교 조건을 고정해야 solver의 차이를 해석할 수 있습니다.

MPC는 첫 입력만 실행하고 다시 푼다

모델 예측 제어는 계획을 푼 뒤 첫 입력만 실행하고, 다음 상태를 관측한 뒤 동일한 H로 다시 최적화합니다. 위의 상태·입력 도식은 초기 계획을 보여줍니다. 파랑은 제약 최적 계획, 주황은 잘라낸 LQR 계획이며 점은 각 첫 입력입니다. 선은 계획의 시간 순서를 연결하며 모든 상태에 대한 피드백 함수 그래프가 아닙니다.

아래 시간 그래프는 재계획을 거쳐 실제 실행한 상태입니다. 비교하는 두 LQR 제어기는 매번 새 상태에서 첫 gain K0를 다시 사용하며, 잘라낸 제어기는 추가로 입력 한계를 지킵니다. 반면 초기 계획의 비용 비교는 처음부터 끝까지 남은 시간이 줄어드는 K_t를 사용합니다. 이 둘을 구분해야 처음 계획과 실행 궤적이 달라지는 이유를 이해할 수 있습니다.

표에는 적용한 입력과 새로 푼 MPC 계획의 비용을 표시합니다. 연속한 계획 비용들은 각각 앞으로 H step을 평가하므로 하나의 고정된 종단 시각에 대한 잔여 비용이 아닙니다. 현재 실습에는 외란이나 모델 오차도 추가하지 않았습니다.

재계획은 피드백 절차이지만 그 자체가 안정성이나 강건성을 보장하지 않습니다. 적절한 종단 비용, 종단 불변 집합과 국소 제어기 등의 조건으로 보장을 구성할 수 있으나, 여기서 사용자가 고르는 임의의 H,p에 그런 조건을 가정하지 않습니다. 짧은 그래프의 감소와 일반 안정성 증명을 구분하세요.

손계산 문제와 해설

a=q=r=p=1,H=1,x0=1로 놓으면 J=1+u²+(1+u)²=1.5+2*(u+0.5)²입니다. U=2이면 최적 입력 -0.5, 다음 상태 0.5, 비용 1.5입니다. U=0.2이면 최적 입력은 아래 한계 -0.2로 이동하고 다음 상태 0.8, 비용 1.68을 얻습니다. 그 지점의 양의 미분은 아래 한계 최적해의 부호 조건과 일치합니다.

두 번째로 H=1,p=0,q=1을 생각해 보세요. 현재 상태 비용 x0²는 고정되어 있고 입력 뒤 상태를 평가하는 항이 없으므로 최적 입력은 0입니다. horizon 밖의 상태를 중요하게 여기려면 비용이나 제약으로 표현해야 합니다. 계획 길이와 종단 처리를 바꾸는 것은 단순히 solver를 개선하는 것이 아니라 의사결정 문제 자체를 바꾸는 일입니다.

AI 연구로의 연결

학습한 world model을 MPC의 예측 모형으로 사용하거나, 최적화 층을 미분해 모델·비용을 함께 학습할 수 있습니다. 이때 활성 제약, 모델 오차, 상태 추정의 불확실성, solver 정확도를 함께 다뤄야 합니다. LQR은 국소 선형 모형에서 정확하게 검산할 수 있는 기준을 제공합니다. 이 실습은 더 큰 학습 기반 제어를 이해하기 전에 제약 없는 정책, 잘라낸 휴리스틱, 공동 제약 계획의 차이를 구체적으로 확인하는 출발점입니다.

원전과 읽을거리

Russ Tedrake의 Linear Quadratic Regulators, Trajectory Optimization을 넓은 제어·최적화 배경으로 참고할 수 있습니다. 이산 scalar 유도, 입력 한계 예제, 면 열거 풀이기와 독립 검산은 이 교재를 위해 직접 구성했습니다.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 현재 LQR 입력을 잘라내면 모든 horizon에서 제약 최적해가 되나요?
2. 이 실습의 임의 H,p가 폐루프 안정성을 자동 보장하나요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.