참고: 제어조교님 유투브 강의 영상
MPC는 Optimal Control의 한 방법인데 로보틱스의 planning및 제어에 많이 활용되고 있다. MPC를 사용하면 로봇의 속도 및 가속력과 같은 dynamics와 주변 환경 조건을 cost function으로 넣어 상황에 맞는 최적화된 제어 명령을 생성할 수 있고 이를 통해 안정적으로 로봇의 자율항법이 가능하다. 아주 오래전부터 해보고 싶었던 분야 인데, 이 글을 작성하면서 공부하고 실제 드론에 탑재해서 실험까지 수행해보고자 한다.
이전글에서 MPC를 위한 기본 모델을 모델링 해보았다. 이번 글에서는 MPC의 목적 즉, 내가 원하는 Np개의 출력 model이 있다면, 그렇게 되도록 만드는 Nc개의 제어입력을 구하는 과정에 대해서 알아보도록 하겠다.
Np : 예측하고 싶은 미래 출력 수 (Prediction horizon)
Nc : 예측하고 싶은 미래 제어 입력 수 (Control horizon)
trajectory tracking의 문제로 예를 들어보면, Np개의 점들로 구성된 reference trajectory가 있을 때, 이를 정확하게 tracking할 수 있도록 design하는 Nc개의 제어 입력을 구하는 것이다.
즉, 예측할 control input은 다음과 같이 Nc개의 입력이 된다.
Δu(k),Δu(k+1),Δu(k+2),⋯,Δu(k+Nc−1)
또 예측할 output은 다음과 같다.
y(k),y(k+1),y(k+2),⋯,y(k+Np)
이때, y(k)=Cx(k) 이므로, y(k+1)=Cx(k+1),y(k+2)=Cx(k+2),⋯ 로 나타낼 수 있고,
따라서 예측할 state x(k+1),x(k+2),x(k+Np) 를 구해야 한다.
예측할 state variable 은 다음과 같다.
x(k+1)=Ax(k)+BΔu(k)
x(k+2)=Ax(k+1)+BΔu(k+1)
=A2x(k)+ABΔu(k)+BΔu(k+1)
x(k+3)=Ax(k+2)+BΔu(k+2)
=A3x(k)+A2BΔu(k)+ABΔu(k+1)+BΔu(k+2)
∴
y(k) = Cx(k) 이므로 최종적으로 우리가 얻고 싶은 N_p까지의 미래 출력은 위의 예측할 state variable에 C만 곱해주면 된다.
y(k+1) = CAx(k) + CB\Delta u(k)
y(k+2) = CA^2x(k) + CAB\Delta u(k) + CB\Delta u(k+1)
x(k+3) = CA^3x(k) + CA^2B\Delta u(k) + CAB\Delta u(k+1) + CB\Delta u(k+2)
y(k+N_p) = CA^{N_p}x(k) + CA^{N_p-1}B\Delta u(k) +CA^{N_p-2}B\Delta u(k+1)+\cdots+CA^{N_p-N_c}B\Delta u(k+N_c-1)
이를 matrix form으로 정리하면 다음과 같다.
Y = Fx(k) + \Phi\Delta U
F = \begin{bmatrix}CA\\CA^2\\\vdots\\CA^{N_p}\end{bmatrix} \Phi = \begin{bmatrix}CB & 0 & 0 & \cdots & 0 \\ CAB & CB & 0 & \cdots & 0 \\ CA^2B & CAB & CB & \cdots & 0 \\ \vdots & \vdots & \vdots & \cdots & \vdots \\ CA^{N_p-1}B & CA^{N_p-2}B & CA^{N_p-3}B & \cdots & CA^{N_p-N_c}B\end{bmatrix}
이를 통해 알 수 있는 것은 현재 state 정보, x(k), 만 알고 있다면 내가 입력, \Delta U, 를 넣었을 때 미래의 출력이 어떻게 될지 알 수 있다는 것이다.
물론 실제 system에 도입하기에는 parameter uncertainty(A,B,C matrix의 부정확도) 및 system nonlinearity로 인해서 바로 도입할 수 는 없지만 기초적인 개념은 ''현재 정보를 갖고 있다면, N_c개의 입력을 design해서 N_p개의 출력을 확인할 수 있다"는 것이다. 또 이를 거꾸로 말하면, 내가 원하는 미래의 출력 모양이 있다면, 그렇게 되도록 하는 입력을 구할 수 있다는 것.
즉 이를 로봇에 적용하면, 무인 시스템이 특정 궤적(미래의 출력)을 따라가도록 하는 입력을 구할 수 있다는 것!!
'Robotics > Control Theory' 카테고리의 다른 글
MPC 란? (Model Predictive Control) 6. MATLAB 코드 구현 (0) | 2022.01.12 |
---|---|
MPC 란? (Model Predictive Control) 5. Controller Design (0) | 2022.01.11 |
MPC 란? (Model Predictive Control) 4. Optimal control (1) | 2022.01.10 |
MPC 란? (Model Predictive Control) 2. MPC 상태공간 방정식 유도 (3) | 2022.01.04 |
MPC 란? (Model Predictive Control) 1. 기본 컨셉 (0) | 2021.11.30 |
댓글