티스토리 뷰
원래는 Data Driven Control이란 개념이 존재하는 지에대해 알아보던중 신기하게도 정말 그런 개념이 있었고 관련 강의 영상을 찍은사람이 있다는 사실을 알게되었다. 학부시절 시스템 해석이나 신호및 시스템같은 시스템을 해석하고 분석하기위한 과목들은 들었지만 실제로 제어하기위한 과목은 들은 적이 없어 공부해보기위해 Steven L. Brunton이란 분의 강의를 들어보기로 했다. 워싱턴 대학의 교수이며 데이터를 통해 제어시스템을 모델링하는 연구를 하시는 분 같았고 홈페이지를 들어가보니 수학공식을 이용한 예술작품을 그리는 것도 좋아하는 것 같았다. 아무튼 이 Control Bootcamp 강의는 고전 시스템 부터 현대 최적제어까지의 내용들을 다루며, 굉장히 딥하게는 들어가지 않지만 수학적으로나 개념적으로 꽤나 high한 레벨까지 다룰 것이라고 말했다. 강의는 꾸준히 들을 것이지만 매 강의마다 리뷰 집필은 매주 한편씩이 최대 속도 일것 같다. 36개의 강의로 이뤄져 있으면 10분부터 30분까지 다양한 플레이 타임으로 강의가 이뤄져 있다. 리뷰 대부분의 그림과 설명들은 강의를 인용했다.
1. Control의 종류
제어에 대한 정의는 구글링 해보면 금방 알 수 있다. 이 강의에서 다루는 제어는 공학에서의 시스템제어를 말하는데 시스템이란 입력이 들어오면 자신이 갖는 어떤 속성에 의해 출력을 만들어내는 모델을 시스템이라고 한다.
예)
$y=2x$ 라는 시스템은 실수 x의 입력을 주면 그 입력(input)의 두배인 실수 y를 출력(output)하는 시스템이다. 나중에는 더 많은 요소들을 다루기위해 행렬 같은 도구를 이용하여 시스템을 수학적으로 모델링한다.
정의에 대해 정확히 하려면 전공 문헌을 보는 것이 더 좋다고 생각한다.
1-1. Passive Control
기계적인 관점에서 passive control은 모터같은 구동장치(actuator)를 사용하지않고 수동적인 기계요소인 스프링(spring), 댐퍼(damper), 질량(mass)을 이용해 "어디선가로부터 전달되는 에너지"를 시스템이 원하는 방향으로 작동할 수 있게하는 제어이다. 예를 들면 수레에 바퀴와 연결된 부분에 스프링, 댐퍼를 적당히 달아서 울툴불퉁한 지형에서도 진동이 좀 덜한 모델을 만들어내는 것이 passive control이다. 이때 입력은 땅으로 부터 전달되는 에너지와 출력은 수레의 흔들림이라고도 볼 수 있다.
1-2 Active Control
active control은 actuator를 사용하여 시스템에 에너지를 전달할 수 있는 제어를 말한다. 여기부터가 좀 우리눈에서 로봇시스템같은 멋져보이는 제어들을 할 수 있게된다. 사실 수학적으로 보면 passive control도 상당히 재밌기 때문에 나는 둘다 좋아한다. 그리고 passive control에대한 이해는 시스템해석과목을 들으면 좋다. active control은 두가지 갈래로 나눠지는데, Open loop control과 Closed loop control로 나뉜다.
1-3 Open Loop Control
open loop제어는 어떤 입력을 액츄에이터를 통해서 주면 시스템이 원하는 출력을 내도록 모델링하는 것을 open loop제어라고 한다. 교수님은 예로 손바닥에 긴 막대를 세우는 제어를 하고싶을 때를 설명했다. open loop control의 개념을 사용하게 된다면, 손바닥에 막대를 올려놓고 위아래로 진동하게 움직여보거나 앞뒤로 진동하게 일정 입력을 가해서 세워진 막대라는 결과를 얻게하려고 노력하는 것인데 이때 출력은 막대와 손바닥 사이의 각도로 볼수 있다. 이 각도가 90도가 되게하는 것이 제어의 목표이고 손바닥을 움직이는 근육이 시스템에 에너지를 전달하는 actuator인 것이다.
이 시스템은 단점이 하나 있는데 출력과 시스템이가지는 많은 불확실성들을 모두 정확히 캐치하지 못한다면 원하는 제어를 하지 못한다는 것이다. 그리고 출력에대한 "측정"을 하지 않기 때문에 원하는 입력이 나오도록 시스템에 계속 변화를 주지 못한다. 즉 막대가 넘어져도 그냥 손바닥은 계속 같은 방식으로 이동하기에 다른 입력을 찾기위해 다시 처음부터 노력해야한다. 이에 대해서는 다음 섹션에서 자세히 설명하도록 하겠다. 이 불편사항을 해결하기위해 나온것이 Closed loop control이다.
1-4 Closed loop control
이제 Open loop control의 문제를 해결하기 위해 만들어진 Closed loop control에대해 알아보자.
closed loop control은 그림과 같이 출력 y가 controller라는 시스템에 다시 들어가고 그 시스템의 출력값이 다시 입력인 u와 합쳐지는 양상을 띄고있다. d는 어떤 예상치못한 방해를 뜻하는데 이게 뭔지는 아래에서 설명하겠다. 이런 형태를 feed back한다고 한다. 그럼 feed back을 왜 하는 것일까? 교수님은 이 부분을 엄청나게 중요하다고 했다.
why feedback?
1. uncertainty
- 우리는 어떤 목적을 달성하기위해 적절한 입력을 시스템에 주거나 시스템의 수학적으로 잘 설계하여 달성하려고한다. 그런데 우리가 어떤 시스템을 완벽히 수학적으로 모델링 할 수있는 것이아니다. open loop 제어만으로는 그것을 극복하기가 힘들다. 즉 불확실성(uncerntainty)가 우리를 괴롭히게된다.
2. Instability
- 이때 이런 불확실성은, 시스템의 불안정화(instability)를 가져오게 된다. 우리는 feed back제어를 통해 시스템(A)의 eigen value를 바꿀 수 있고 eigen value를 바꿈으로 인해 uncertainty로 인해 발생한 시스템 A의 instability를 stable하게 조정해줄 수 있다. 나는 이 부분에서 수학을 통해 시스템을 제어한다는 매력을 느꼈다.
3. disturbance
- 심지어 우리가 완벽히 시스템을 모델링 하였다 하더라도 우리가 예상하지 못한 방해(d: disturbance)가 들어온다면, 또 우리가 원하는 출력을 잘 내놓지 못하게된다. feed back제어는 이런 방해까지도 극복하게 해주는데 이것은 곧 알아보게 된다.
4. efficient cotrol
- feed back제어는 수학적으로 최적의 제어 방식을 찾기위해 노력하는 모델이기에 효율적인 제어를 할 수 있다고 한다.
이부분에 대해서는 좀 더 강의를 들어봐야 와닿을 듯 하다.
이 시스템을 간단하게 수식으로 표현해보자. 우선 시스템에대한 표현을 해야한다.이 수업에서는 시스템에대한 표현으로 state space system of ordinary differential equation을 사용한다. 상태공간에대한 미분방정식인데 이또한 공업수학을 배우며 배울수 있다.
$$\dot{x}=Ax$$
$$x(t) = e^{At}x(0)$$
-$x$: state variable, 즉 시스템에관한 모든 요소를 표현한 변수들이다. 비행기라는 시스템을 예로들면 비행기의 xyz 자세와 roll pitch yaw각도 3개로 이뤄진 6차원 벡터를 생각할 수 도 있다.
-$A$: 우리는 수학을 통해 시스템을 A라는 행렬로 나타낼수있다.
위 식을 통해 우리는 linear system을 구성하게된다. linear함이란 무엇인지에 대해서는 관련 수학 자료들을 참고하길 바란다. 아마 이후강의에서 간단하게 언급할 수 도 있다.
이제 입력에 관한 항을 추가해보자.
$$\dot{x} = Ax + Bu$$
-$B$: 시간변화에따라 u가 시스템에 영향을 주는지 나타낸다.
-$u$: 액츄에이터혹은 어떤 방식으로든 들어오는 입력이다.
출력 $y$에 관해 표현을 해보자.
$$y = Cx$$
- 우선 앞서 말했듯이 $x$는 시스템에 관한 모든 변수를 나타내기 때문에 $y$는 $x$들의 조합으로 나타낼 수 밖에 없고 그를 위한 항 $C$는 $x$에 대한 측정을 표현하기 위한 것이다. 우리는 실제로 정확히 모든 $x$에 대해 측정할 수 없기 때문에 $Cx$는 $x$에 대한 제한된 측정 집합이라고 볼 수 있다. 예를 들면 로봇의 상태를 측정할 때 가지고 있는 센서에 따라 측정 할 수있는 $x$의 요소들이 다르다는 것이다.
여기서 설명의 편의를 위해 우리는 모든 상태를 측정 할 수 있다고 해보자. 그러면 $y=Cx$는 $y=x$가 될 것이다. 이제 그림에서 볼 수 있듯이 우리는 이 측정된 출력 $y$를 우리가 설계하고자하는 제어기(controller)에 통과시켜 입력으로써 다시 시스템에 넣을 것이다.
$$u = -Kx$$
-$K$: controller를 표현한 항, 왜 음수를 사용햇는지는 아직 안알려줬다.
이제 u를 feed back시스템을 표현한 식에 대입해보자.
$$\dot{x} = Ax-BKx$$
$$\dot{x} = (A-BK)x$$
이제 우리는 K를 통해 시스템의 반응을 제어할수 있게되었다! 어떻게 K를 조절하냐에 따라 $A-BK$는 시스템을 stable하게 만드는 eigen value를 가질수 있게 될 것이다. 이 과정을 설명할때 행렬들이 어떤 차원을 가질지 유추하면서 전개해 나가는 것이 인상적이었다. 나도 다음에 다른 식을 볼때 이런 관점에서 확인해보면 재밌을 것 같다.
끝
앞으로 MATLAB을 사용한 실습도 할 예정이라하니 기대가 된다. d에관해서는 나중에 설명해줄듯하다
'keep9oing' 카테고리의 다른 글
강화학습과 latent space (0) | 2020.02.14 |
---|---|
깃허브 gist 실험 (1) | 2020.02.06 |
Motion planning - 3. 알고리즘들 (3) | 2019.04.01 |
Motion planning - 2. 개념 (0) | 2019.03.24 |
Motion Planning - 1. 개요 (0) | 2019.03.15 |