본문 바로가기
Mathamatics/Control Theory

MPC 란? (Model Predictive Control) 5. Controller Design

by 항공학도 2022. 1. 11.

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

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

이전글에서 Optimal Control의 기초인 LQR(Linear Quadratic Regulator)에 관해서 알아 보았다. 이번 글에서는 LQR의 기본 지식을 바탕으로 MPC를 위한 제어기를 설계하는 것에 대해 학습한다.

우선 제어기 설계의 목적은 무언인가? 제어기 설계의 목적은 제어된 결과로 나오는 출력이 Reference를 잘 따라가게 하는 것. 즉 Reference(내가 원하는 동작)와 Future output(예측된 미래출력) 사이의 오차가 최소화 되는 것이다.

즉 다음의 목적함수(J, Cost function)를 최소화 시키는 입력의 변화량($\Delta U$)을 구하는 것.

$J = (R_s -Y)^T(R_s -Y) + \Delta U^T \bar{R}\Delta U$                               (1)
$R^T_s = \underbrace{\begin{bmatrix} 1&1&\cdots&1\end{bmatrix}}_{\in\mathbb{R}^{N_p}}r(k_i)$

이때 여기서 R은 LQR에서와 마찬가지로 가중치(Weighting Matrix)로서 R이 크면 $\Delta U^T \bar{R}\Delta U$(제어입력의 영향)가 커지므로 제어입력 $\Delta U$를 작게써서 J를 최소화하는 방향이 되고, R이 작으면 제어입력의 영향이 작기 때문에 $\Delta U$를 크게써서 오차를 줄이는 것이 J가 작아지는 결과가 된다.

이제 이 목적 함수를 최소화 하는 입력을 찾아보자, 목적함수 J는 Quadratic form으로 되어 있으므로 2차함수의 형태를 생각해 볼 수 있다. 이러한 이차함수의 최소값을 찾는 방법은 미분해서 0이되는 변곡적을 찾으면 된다. 마찬가지로 이 목적함수를 최소화 하기 위해서는 목적함수를 편미분해서 0이 되도록하는 입력을 찾으면 된다.

이제, 식(1)의 목적함수의 $Y$에 3장에서 구한 Predictive model을 넣고 이를 최소화하는 방법을 알아보도록 한다.

$J = (R_s -Y)^T(R_s -Y) + \Delta U^T \bar{R}\Delta U \quad \leftarrow \quad Y=Fx(k)+\Phi\Delta U$

$J = (R_s -Fx(k))^T(R_s -Fx(k)) - 2\Delta U^T\Phi^T(R_s-Fx(k)) + \Delta U^T(\Phi^T\Phi +\bar{R})\Delta U$              (2)

이제 이 식(2)를 $\Delta U$에 대해서 편미분 해보면,

$\frac{\partial J}{\partial\Delta U} = -2\Phi^T(R_s-Fx(k)) + 2(\Phi^T\Phi +\bar{R})\Delta U = 0$

이 되고, 이로부터 

$\Delta U = (\Phi^T\Phi+\bar{R})^{-1}\Phi^T(R_s-Fx(k))$

와 같이 최적 입력을 구할 수 있다. 이때, 이 최적입력이 존재하려면 $(\Phi^T\Phi+\bar{R})$의 역함수 가 존재해야 되는데 여기서 $\Phi$는 $N_p$와 $N_c$로부터 정해지므로 $N_p$와 $N_c$를 신중하게 설계해야 한다. 

또 이 식을 살펴보면 $\bar{R}$이 분모로 들어가는 것을 알 수 있는데, 앞에서 설명한 것처럼 R이 크면 분모가 커지므로 제어입력이 작아지고, R이 작으면 분모가 작아지므로 제어입력이 커지는 것을 확인할 수 있다.

댓글