본문으로 바로가기

이번에는 지난번 선형동역학의 상태방정식 표현에 이어 대표적인 선형제어기인 LQR에 대해 이야기를 할려고합니다. 깊이있는 이야기가 아니라 그저 소개와 함께 실제로는 어떻게 LQR 제어 게인을 얻는지에 관한 이야기입니다.

기본적인 LQR의 개념 !

일반적인 선형시스템의 상태방정식은 dot_X = A*X+B*U의 형태입니다. 거기서 제어입력 U를 

U=-KX

로 두고 다시 정리하면

dot_X=(A-B*K)*X

가 되는데요. 이걸 다시 H=A-BK로 두고 위와 같이 정리해둘 수 있습니다.

일단 성능지표(performance index)라고 하는 것을 위와 같이 생각해 볼 수 있습니다. 위의 상태 X는 벡터의 형태이기 때문에 사실상은 각 상태의 제곱의 합으로 표현한 것입니다. 상태의 제곱의 합이 작을 수록 좋은 것이지요. 결국 위의 정능지표를 최소화하는 뭔가가 필요한 것입니다.

이제 다시 일반적인 시스템에서 위의 수식을 만족하면 시스템은 안정(stable)하다고 볼 수 있습니다. 그러면, 그렇게 만들어주는 행렬 P를 찾으면 되는 것이지요.

그것을 대입해서 정리하면 됩니다. 그러면 위의 마지막 수식에서

이걸 만족하는 P,H를 찾으면 되죠. 문제는 식하나에 미지수가 2개네요.

처음 생각했던 성능지표에 다시 대입해서 풀면

를 찾을 수 있습니다. 이제 

위의 1,2번 식을 만족하는 미지수 P,H를 찾으면, 제어게인 K를 찾을 수 있습니다. 그런데 일반적으로 성능지표는 각 상태에 가중치를 줄 수 있고, 제어입력의 크기에 대해서도 가중치를 설정할 수 있도록

를 많이 사용하는 편입니다. 문제는 성능지표를 저렇게 두면, 손으로 푸는게 좀 어렵고 귀찮습니다. 그래서 많이 사용하는 것이 당연히 MATLAB이지요^^ 

MATLAB을 이용한 LQR 게인 구하기 !

지난 시간까지 우리가 다루던 시스템의 상태방정식입니다. 여기서 A, B행렬을 얻을 수 있지요.

그리고, Q, R을 적절히 선정하고 MATLAB에서 LQR이라는 명령을 사용해주면 끝납니다.^^ 쉽죠^^

위 그림은 시뮬링크에서 LQR게인을 적용한 부분입니다.

이것은 그 결과이지요. 자유운동을 시켰을 때 보다 확실히 성능이 좋아졌네요. 이렇게 되면, 아마 Q, R값을 조절해 보면 좀더 성능이 좋아 질 것입니다.^^

신고