티스토리 뷰

Robotics/control

[control] LQR control

robotics.guru 2022. 4. 5. 15:01

이론

LQR(Linear Quadratic Regulator)는 최적제어(optimal control) 중 하나로. Full State Feedback을 이용하는 제어론이다. 제어하고자 하는 시스템의 state-space 및 시스템 모델링 통한 제어이기 때문에, 당연한 거지만 명시하자면 제어하고자 하는 시스템의 모델링을 할 수 있어야 한다.

최적제어의 Pole Placement와 LQR은 정확히 똑같은 생김새에 Block Diagram을 가진다. 두 가지 제어 모두 입력과 출력에 대한 gain K을 구하여 제어를 하게 되는데, 두 제어의 차이점은 바로 K를 어떻게 선택 및 결정하는지에서 따라서 달라진다. Pole Placement는 단순히 Pole의 위치를 구하여 최적의 제어를 하게 되는데, 단점으로 어느 pole의 위치가 최적인지를 찾기가 힘들다는 데에 있다. 

 

LQR 제어는 입력 u와 출력 y에 관한 목적 함수(cost function, J)를 두고 목적 함수를 최소화하는 gain K를 구하는 제어론이라는 다른 점을 가지고 있다. 여기서 최적의 K를 구하기 위해 LQR은 시스템의 특성을 파악하고, 그에 대한 performance와 effort에 대한 비교를 통해 본인의 제어에 필요한 최적의 K를 구하게 되는 것이다. (뭐 쉽게 말하면 Q, R은 둘 중 어떤 거를 더욱 중요시할 거냐와 같은 가중치와 같은 개념으로 접근하면 이해하기 쉬울 듯)

$$ \small J = Q \cdot performance + R\cdot effort $$  

LQR제어는 아래와 같은 순서를 통해 제어가 된다. $$ \small J= \int_{0}^{\infty}(x(t)^TQx(t)+u(t)^TRu(t))dt $$$$ u = -Kx $$

각 변수에 대한 설명을 하자면

  • J는 Q와 R을 통해 구하고자 하는 cost function값, 이를 통해 최적의 K를 구한다.
  • Q와 R은 각 performance와 effort의 가중치를 결정하는 정방행렬(state의 개수에 따라서 행렬의 크기가 바뀌며, 빠르게 desired 한 state에 도달하고 싶다면, Q행렬의 해당 state의 변수 값을 높이게 되고, 액츄에이터의 효율이나, 전체 시스템의 에너지 효율을 높이고 싶다면 해당 입력의 R 변수 값을 높여주면 된다.)
  • K는 위의 LQR을 통해 결정되는 gain값.
  • u는 제어 input

여기서 integral를 해주는 이유는 initial state에서 desired state에 도달할 때까지의 state-time의 그래프 면적에 따라서 performance가 좋은지 안좋은지를 판단하게 된다. 즉 면적이 작을수록 좋은 성능을 가지게 되는 것. cost function을 quadratic function으로 바꿔주어서 definite minimum point를 잡아내는 것이다. 

 

Q와 R은 어떻게 튜닝을 해야하는가? 두 행렬을 단위행렬로 시작하여, 단순하게 생각하면 desired state에 잘 도달했는지와 전기적으로 어느 정도의 에너지 효율을 높였는지는 오실로스코프 같은 걸로 측정하면서 하면 되지 않을까 싶다..(너무 주먹구구식일 수도..)


예제

간단한 예시로 AtsushiSakai/PythonRobotics의 Inverted_pendulum예제를 통해 어떻게 제어되는지 확인해 보겠다.

 


결론

왜 LQR은 optimal control인가? 최적제어라는 수업을 들어본 적 없는 나로서, 예상을 해보자면, peformance를 최적으로 할 것이냐, effort(에너지 효율)을 최적으로 할 것이냐를 Q와 R 매트릭스를 통해 결정할 수 있기 때문인 것 같다. 기존에 많이 사용하던 PID 제어는 단순히 reference입력까지 도달하기 위래, overshoot 없이 빠르게 정상상태에 도달하는 것을 목표로 하기 때문에, 모터의 에너지 효율과 같은 개념을 놓치기 때문에, LQR를 최적제어 중 하나로 얘기하는 게 아닌가 싶다. 

 

연구실에서 개발하는 휴머노이드의 보행은 ZMP를 기반으로 한 MPC제어를 사용한다. 곧 졸업하니, 의미 없겠지만 제어에 대한 공부를 더 해보게 된다면 여러 가지 제어 방법론을 휴머노이드 제어에 올려보면 재미있을 것 같다. 


참조

'Robotics > control' 카테고리의 다른 글

[manipulator] Repeatability  (0) 2022.04.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함