| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 구현
- std::sort
- 집합과 맵
- 전국 대학생 수학 경시대회
- 텔레스코픽로봇
- baekjoon
- baekjoon problem solving
- 자료구조
- mit
- mathematics for computer science
- C++
- 실버 4
- 로보틱스
- BOJ
- 실버 5
- 최적제어
- lqr
- 6.042j
- 로봇공학
- HJB방정식
- 백준
- 수학
- 대수경
- LeggedRobot
- MIT opencourse
- 논문리뷰
- 문자열
- 다리로봇
- 큐
- 정렬
- Today
- Total
서두르지 말고 쉬지 말자
[로보틱스 제어 입문] ➀ LQR — HJB 방정식으로 Riccati 방정식 유도하기 본문
연속 시스템에 대한 동적 계획법(dynamic programming) 문제를 푸는 것은 일반적으로 매우 어렵지만, 해가 매우 접근하기 쉬운 몇 가지 중요한 특수 사례들이 있다. 이러한 사례들 대부분은 선형 동역학(linear dynamics)과 볼록(convex) 비용(예: 양의 이차 비용)의 변형과 관련이 있다. 가장 간단한 사례는 선형 이차 조절기(linear quadratic regulator, LQR)라고 불리며, 이는 시불변(time-invariant) 선형 시스템을 원점으로 안정화시키는 문제로 정식화된다.
LQR은 최적 제어 문제의 한 종류다. 최적 제어는 시스템의 제약조건(동역학)을 지키면서 비용함수를 최소화하는 입력을 찾는 것이다.
쉬운 설명 :
로봇 같은 연속적인 시스템을 최적으로 제어하려고 할 때, 이론적으로는 동적계획법(HJB 방정식)을 풀면 되는데, 이게 일반적으로는 너무 어려워서 손으로 풀 수 없음. (numerical method 사용).
그런데 시스템이 선형이고, 비용함수가 볼록(대표적으로 이차함수)일 때는 쉽게 문제가 풀림.
이 조건들 중에서도 가장 기본적이고 단순한 형태가 LQR인데, 이건 'linear time-invariant system을, 원점(평형상태)으로 안정화시키는 문제'를 말함.
8.1. Basic Derivation
Linear time-invariant system을 state-space form으로 나타내면 다음과 같고,
$$\dot{\mathbf{x}} = \mathbf{A}\mathbf{x} + \mathbf{B}\mathbf{u}$$
이때 infinite-horizon cost function(무한 구간 비용함수)는 다음과 같다.
$$J = \int_0^{\infty} \left[ \mathbf{x}^T \mathbf{Q} \mathbf{x} + \mathbf{u}^T \mathbf{R} \mathbf{u} \right] dt, \quad \mathbf{Q} = \mathbf{Q}^T \succeq 0, \; \mathbf{R} = \mathbf{R}^T \succ 0.$$
우리의 목표는 HJB(Hamilton-Jacobi-Bellman) 방정식을 만족하는 최적 cost-to-go 함수 $J^*(\mathbf{x})$를 찾는 것이다:
$$\forall \mathbf{x}, \quad 0 = \min_{\mathbf{u}} \left[ \mathbf{x}^T \mathbf{Q} \mathbf{x} + \mathbf{u}^T \mathbf{R} \mathbf{u} + \frac{\partial J^*}{\partial \mathbf{x}} (\mathbf{A}\mathbf{x} + \mathbf{B}\mathbf{u}) \right]$$
여기서 중요한 단계가 하나 있다 — 이 문제에서는 최적(optimal) cost-to-go 함수가 이차형식(quadratic)이라는 것이 잘 알려져 있다. 이는 쉽게 확인할 수 있다. 다음과 같은 형태를 선택하자:
$$J^*(\mathbf{x}) = \mathbf{x}^T \mathbf{S} \mathbf{x}, \quad \mathbf{S} = \mathbf{S}^T \succeq 0$$
이 함수의 gradient는
$$\frac{\partial J^*}{\partial x} = 2x^TS$$
이다.
우리는 min 안에 있는 항들을 볼록한(convex) 이차함수로 설정했기 때문에 (R ≻ 0), 그 항들의 그래디언트(gradient)가 0이 되는 지점을 찾아서 최솟값을 구할 수 있다.
$$\frac{\partial}{\partial u} = 2u^TR + 2x^TSB = 0$$
이걸로 우리는 optimal policy(최적 규칙)을 구할 수 있다.
$$u^* = \pi^*(x) = -R^{-1}B^TSx = -Kx$$
u*을 다시 HJB에 대입하고 정리하면 다음이 나온다
$$0 = x^T\left[Q - SBR^{-1}B^TS + 2SA\right]x$$
여기 있는 항들은 모두 대칭(symmetric)이지만 2SA는 그렇지 않다. 하지만 $x^TSAx = x^TA^TSx$이므로, 다음과 같이 쓸 수 있다:
$$0 = x^T\left[Q - SBR^{-1}B^TS + SA + A^TS\right]x$$
이 조건은 모든 x에 대해 성립해야 하므로 이렇게만 고려하면 된다
$$0 = SA + A^TS - SBR^{-1}B^TS + Q$$
이 방정식은 Algebraic Riccati Equation의 한 형태이고 매우 중요한 방정식이다.
Algebraic Riccati Equation은 에 대해 2차식(quadratic)이라 solution을 구하는 것이 non-trivial(자명하지 않음)하다. 그래도 알려진 사실은, 이 방정식은 system이 stabilizable할 때, 그리고 오직 그때만(if and only if) 유일한 positive-definite solution을 갖는다.
고차원 문제에서도 솔루션을 찾는 수치적 방법들이 존재한다. optimal policy 와 optimal cost-to-go function 둘 다 Drake(http://drake.mit.edu) 에서 다음 명령어로 찾을 수 있다. (K,S) = LinearQuadraticRegulator(A,B,Q,R).
cost-to-go function이 quadratic form인 것이 의아할 수 있지만, linear system $\dot{x} = (A - BK)x$의 solution이 $x(t) = e^{(A-BK)t}x(0)$ 형태인 것을 참고해서, 이를 cost function의 적분식에 대입하고 정리해 보면 $J=x^T(0) S x(0)$ 형태인 것을 확인할 수 있다.
최적 정책의 형태를 조금 더 자세히 들여다볼 가치가 있다. 가치함수(value function)가 cost-to-go, 즉 "여기서부터 끝까지 최적으로 갔을 때 남은 비용"을 나타낸다는 걸 떠올려보면, 최적 행동이란 결국 이 비용의 지형(landscape)을 가장 빠르게 내려가는 방향으로 움직이는 것과 같다.
실제로 $-\mathbf{S}\mathbf{x}$는 가치함수의 가장 가파른 하강방향(steepest descent)이다. 상태공간 $\mathbf{x}$ 위에서 $J^*(\mathbf{x})=\mathbf{x}^T\mathbf{S}\mathbf{x}$라는 언덕을 그려봤을 때, 그 언덕이 가장 가파르게 낮아지는 방향이 바로 $-\mathbf{S}\mathbf{x}$라는 뜻이다.
하지만 문제가 하나 있다. 상태공간에서 원하는 모든 방향으로 움직일 수 있는 게 아니라는 점이다. 우리가 실제로 조절할 수 있는 건 상태 $\mathbf{x}$가 아니라 입력 $\mathbf{u}$뿐이고, $\mathbf{u}$가 상태에 영향을 미치는 통로는 오직 $\dot{\mathbf{x}}=\mathbf{A}\mathbf{x}+\mathbf{B}\mathbf{u}$의 $\mathbf{B}$뿐이다. 그래서 $-\mathbf{B}^T\mathbf{S}\mathbf{x}$는 정확히, 이상적인 최급강하 방향을 우리가 실제로 도달 가능한 행동공간(action space)에 투영(projection)한 결과이며, 이것이 곧 제어입력 $\mathbf{u}$로 실제 달성 가능한 최급강하 방향이다.
마지막으로, 여기에 행렬 $\mathbf{R}^{-1}$을 앞에 곱해주는 이유는, 서로 다른 제어입력들에 우리가 부여한 상대적 비용 가중치를 반영해서 하강 방향을 조정(bias)해주기 위함이다. 어떤 입력을 아끼고 싶은지(=그 입력의 $\mathbf{R}$ 값이 큰지)에 따라, 실제로 사용하는 방향과 크기가 미세하게 조정되는 것이다.
이 해석 자체는 직관적이고 단순해 보이지만, 한 가지는 꼭 짚고 넘어가야 한다. 우리가 지금 내려가고 있는 그 "경사"($\mathbf{S}$로 표현되는 가치함수의 기울기)는 결코 눈앞의 즉흥적인 기울기가 아니라는 점이다. 이 경사는 HJB 방정식을 풀어서 얻어진 값으로, 장기적인 동역학과 비용까지 이미 전부 계산에 반영된 결과다. 즉 LQR의 최적 제어는 단순히 "지금 당장 손해를 줄이는" 근시안적(greedy) 선택이 아니라, 무한한 미래까지 내다본 뒤 그걸 압축해서 만들어낸 "가장 똑똑한 하강"이라고 할 수 있다.
출처 : Russ Tedrake, Underactuated Robotics, MIT, 2024. https://underactuated.csail.mit.edu
'제어' 카테고리의 다른 글
| [로봇 제어 입문] 비선형 시스템을 위한 국소적 궤적 안정화 (0) | 2026.07.16 |
|---|---|
| [로봇 제어 입문] 유한 구간 LQR (1) | 2026.07.14 |
| [로봇 제어 입문] LQR을 통한 비선형 시스템의 국소 안정화 (0) | 2026.07.13 |
