본문 바로가기
Mathamatics/Control Theory

MPC 란? (Model Predictive Control) 2. MPC 상태공간 방정식 유도

by 항공학도 2022. 1. 4.

참고: 제어조교님 유투브 강의 영상   

MPC는 Optimal Control의 한 방법인데 로보틱스의 planning및 제어에 많이 활용되고 있다. MPC를 사용하면 로봇의 속도 및 가속력과 같은 dynamics와 주변 환경 조건을 cost function으로 넣어 상황에 맞는 최적화된 제어 명령을 생성할 수 있고 이를 통해 안정적으로 로봇의 자율항법이 가능하다. 아주 오래전부터 해보고 싶었던 분야 인데, 이 글을 작성하면서 공부하고 실제 드론에 탑재해서 실험까지 수행해보고자 한다.

이전글에서 MPC의 기초 개념에 대해 알아보았다. MPC에서 제일 중요한것은 현재 스텝에서의 상태변수를 가지고 다음 스텝에서의 '미래 출력'을 알아내는 것이기 때문에 시스템 dynamics의 모델링이 필요하다.

미분 방정식으로부터 유도되는 상태공간 방정식에 따라 (https://jonghank.github.io/ee363/Kuo10e_08v01.pdf  참고)  Linear Time Invariant( LTI, 선형 시불변) 시스템일 경우의 continuous-time state-space model은 다음과 같이 나타낼 수 있다.

상태방정식: $\dot{x} = Ax + Bu$
출력방정식: $y = Cx$

이때 MPC는 Discrete-time에서 구현이 되기 때문에 위의 모델을 discrete-time state-space model로 변경해 줄 필요가 있다.

DT 상태방정식: $x(k+1) = A_d(k) + B_du(k)$
DT 출력방정식: $y(k) = C_dx(k)$

이를 바탕으로 MPC에서 사용하는 기본 모델은 discrete-time autmented state-space model을 사용하는데, 상태변수가 $x$가 아닌 상태변수의 변화량 즉, $\Delta x$를 사용하는 것이 가장 큰 차이점이다. 위에서 만든 discrete-time state-space model을 가지고 $\Delta x$의 상태변수를 갖는 모델을 만들어 보자

Diffrerence state-stpace model
$\underbrace{x(k+1) - x(k)}_{\Delta x(k+1)} = A_d\underbrace{(x(k)-x(k-1))}_{\Delta x(k)} + B_d\underbrace{(u(k)-u(k-1))}_{\Delta u(k)}$
$\therefore \Delta x(k+1) = A_d\Delta x(k) + B_d\Delta u(k)$

Output
$y(k+1) - y(k) = C_d\Delta x(k+1) = C_dA_d\Delta x(k) +C_dB_d\Delta u(k)$
$\therefore y(k+1) = y(k) + C_dA_d\Delta x(k) +C_dB_d\Delta u(k)$

이를 matrix-form으로 정리하면 다음의 식 (2),(3)과 같이 MPC를 시작하기 위한 기본 모델인 discrete-time autmented state-space model을 얻게 된다.

$x(k) = \begin{bmatrix} \Delta x(k)^T & y(k)\end{bmatrix}^T \qquad\qquad\qquad\qquad\qquad\qquad(1)$


$\underbrace{\begin{bmatrix}\Delta x(k+1) \\ y(k+1) \end{bmatrix}}_{x(k+1)} = \underbrace{\begin{bmatrix}A_d & 0 \\ C_dA_d & 1\end{bmatrix}}_{A} \underbrace{\begin{bmatrix}\Delta x(k) \\ y(k)\end{bmatrix}}_{x(k)} + \underbrace{\begin{bmatrix}B_d \\ C_dB_d\end{bmatrix}}_{B}\Delta u(k) \quad\quad\quad\quad (2)$
$y(k) = \underbrace{\begin{bmatrix}0 & 1 \end{bmatrix}}_{C} \begin{bmatrix}\Delta x(k) \\ y(k)\end{bmatrix}\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\quad\quad(3)$

여기에서 상태변수 x는 식(1)과 같이 상태변수 x의 delta, 즉 상태변수의 변화량과 출력으로 이루어져 있다는 것에 주의해야한다.

 

댓글