참고: 제어조교님 유투브 강의 영상
MPC는 Optimal Control의 한 방법인데 로보틱스의 planning및 제어에 많이 활용되고 있다. MPC를 사용하면 로봇의 속도 및 가속력과 같은 dynamics와 주변 환경 조건을 cost function으로 넣어 상황에 맞는 최적화된 제어 명령을 생성할 수 있고 이를 통해 안정적으로 로봇의 자율항법이 가능하다. 아주 오래전부터 해보고 싶었던 분야 인데, 이 글을 작성하면서 공부하고 실제 드론에 탑재해서 실험까지 수행해보고자 한다.
이전글에서 Optimal Control의 기초인 LQR(Linear Quadratic Regulator)에 관해서 알아 보았다. 이번 글에서는 LQR의 기본 지식을 바탕으로 MPC를 위한 제어기를 설계하는 것에 대해 학습한다.
우선 제어기 설계의 목적은 무언인가? 제어기 설계의 목적은 제어된 결과로 나오는 출력이 Reference를 잘 따라가게 하는 것. 즉 Reference(내가 원하는 동작)와 Future output(예측된 미래출력) 사이의 오차가 최소화 되는 것이다.
즉 다음의 목적함수(J, Cost function)를 최소화 시키는 입력의 변화량(ΔU)을 구하는 것.
J=(Rs−Y)T(Rs−Y)+ΔUTˉRΔU (1)
RTs=[11⋯1]⏟∈RNpr(ki)
이때 여기서 R은 LQR에서와 마찬가지로 가중치(Weighting Matrix)로서 R이 크면 ΔUTˉRΔU(제어입력의 영향)가 커지므로 제어입력 ΔU를 작게써서 J를 최소화하는 방향이 되고, R이 작으면 제어입력의 영향이 작기 때문에 ΔU를 크게써서 오차를 줄이는 것이 J가 작아지는 결과가 된다.
이제 이 목적 함수를 최소화 하는 입력을 찾아보자, 목적함수 J는 Quadratic form으로 되어 있으므로 2차함수의 형태를 생각해 볼 수 있다. 이러한 이차함수의 최소값을 찾는 방법은 미분해서 0이되는 변곡적을 찾으면 된다. 마찬가지로 이 목적함수를 최소화 하기 위해서는 목적함수를 편미분해서 0이 되도록하는 입력을 찾으면 된다.
이제, 식(1)의 목적함수의 Y에 3장에서 구한 Predictive model을 넣고 이를 최소화하는 방법을 알아보도록 한다.
J=(Rs−Y)T(Rs−Y)+ΔUTˉRΔU←Y=Fx(k)+ΦΔU
J=(Rs−Fx(k))T(Rs−Fx(k))−2ΔUTΦT(Rs−Fx(k))+ΔUT(ΦTΦ+ˉR)ΔU (2)
이제 이 식(2)를 ΔU에 대해서 편미분 해보면,
∂J∂ΔU=−2ΦT(Rs−Fx(k))+2(ΦTΦ+ˉR)ΔU=0
이 되고, 이로부터
ΔU=(ΦTΦ+ˉR)−1ΦT(Rs−Fx(k))
와 같이 최적 입력을 구할 수 있다. 이때, 이 최적입력이 존재하려면 (ΦTΦ+ˉR)의 역함수 가 존재해야 되는데 여기서 Φ는 Np와 Nc로부터 정해지므로 Np와 Nc를 신중하게 설계해야 한다.
또 이 식을 살펴보면 ˉR이 분모로 들어가는 것을 알 수 있는데, 앞에서 설명한 것처럼 R이 크면 분모가 커지므로 제어입력이 작아지고, R이 작으면 분모가 작아지므로 제어입력이 커지는 것을 확인할 수 있다.
'Robotics > Control Theory' 카테고리의 다른 글
MPC 란? (Model Predictive Control) 7. Multi-rotor system Model (0) | 2022.01.12 |
---|---|
MPC 란? (Model Predictive Control) 6. MATLAB 코드 구현 (0) | 2022.01.12 |
MPC 란? (Model Predictive Control) 4. Optimal control (1) | 2022.01.10 |
MPC 란? (Model Predictive Control) 3. Prediction of state and output (0) | 2022.01.04 |
MPC 란? (Model Predictive Control) 2. MPC 상태공간 방정식 유도 (3) | 2022.01.04 |
댓글