Matlab 강의(PID 제어란?) 를 참고해서 간단하게 정리해보았습니다.
혹시 틀린 내용이나 피드백 등 다양한 의견 언제든지 환영입니다...!!

- plant : 우리가 제어하고자 하는 시스템
=> 입력 - 동작 신호 / 출력 - 제어 변수
즉 이 plant에서는 우리가 원하는 제어 변수(출력)을 산출할 수 있도록 적절한 동작 신호(입력)을 생성하는 방법을 파악하게 된다.
제어 엔지니어는 원하는 출력을 얻기 위해 시스템에 대한 올바른 입력을 생성하는 것을 하게 된다.
피드백 제어에서 시스템의 출력은 피드백을 전달하는 역할을 합니다.
그리고 이를 명령과 비교하여 우리가 원하는 지점과 시스템 차이를 확인하게 된다.
⇒ 이 차이를 오차항(error) 라고 부르게 된다.
따라서 문제는 어떻게 해야 이 오차항을 적절한 actuator 명령으로 변환하여 시간에 따라 0으로 수렴하게 만드느냐 입니다.
⇒ 이 문제에 대한 해답이 바로 제어기 이다.
예시) Walking Control
Controller의 역할 : 얼마나 빠른 속도로 가야 하는지
만약 Controller 값을 0.1로 설정했고 나의 위치로부터 목표점까지의 거리는 50m라고 한다면
처음에 5m/s 속도가 부여된다. 그리고 가까워질수록 속도는 줄게 되며 도착점에 도달했을 경우 제어기에 의해 제어된 속도는 0m/s가 될 것이다.
그런데 만약 다른 시스템의 경우 예를 들어 쿼드콥터 드론의 고도 제어기를 설계한다고 가정하자.
프로펠러의 속도가 증가하면 드론이 이륙하고 이에 따라 오차가 줄어들게 된다.
하지만 이렇게 상승하게 되는 드론은 목표지점에 도달했을 경우 속도가 0이 되고 다시 하강하게 되어 오차가 발생하고 그러면 다시 오차에 의해 목표점까지 상승하게 되고 가 반복되게 된다.
만약 프로펠러가 100rpm으로 회전해야 한다고 가정해보자.
만약 Proportional gain이 2라면 50*2=100이기 때문에 지상에 머물게 된다.
만약 Proportional gain이 5라면 100이상이기 때문에 상승하지만
error가 20m일 때 rpm이 100이 되기 때문에 30m 상승하고 멈추게 된다.
만약 Proportional gain이 10라면 100이상이기 때문에 상승하지만
error가 10m일 때 rpm이 100이 되기 때문에 40m 상승하고 멈추게 된다.
만약 Proportional gain이 100라면 100이상이기 때문에 상승하지만 error가 1m일 때 rpm이 100이 되기 때문에 49m 상승하고 멈추게 된다.
즉, proportional gain을 얼마나 높이든 상관없이 error는 0이 되지 않는다.
따라서 단순한 P제어기로는 해결되지 않는 상황이 존재한다.
우리는 목표지점을 steady state라고 하며 정오차 즉 steady state erorr를 0으로 만드는 것이 중요하다.
그렇다면 제어기를 어떻게 조정해야 이러한 state steday error를 없앨 수 있을까?
⇒ 제어기가 과거 정보를 사용하면 가능해진다. 즉 적분 경로를 추가하는 것이다.
비례 제어기가 아닌 적분 제어기는 누적 합계를 유지하면서도 시간 경과에 따른 입력 신호의 총량을 계산하여 이전에 일어났던 일에 대한 메모리를 가지고 있다.
드론이 원하는 고도 이하에서 steady state 에 도달하면 오차항이 0이 아닌 상태가 되며, 적분되면 출력이 증가하게 된다.
시스템에 오차가 있는 한 적분 출력은 계속 변경될 것이다.
적분 제어기에서 값이 높아지면 플로펠러 속도가 빨라지고 드론은 계속 상승하게 된다.
이것이 PI 제어기이다. 하지만 목표점에 도달하기 위해 움직이는 경로는 이상적이지 않을 수 있다.
예를 들어, 드론이 50m상공에 도착하기 바로 직전을 생각해보자.
오차가 너무 작기 때문에 P 제어기 값은 0이지만 계속 상승 중이기 때문에 I제어기 값은 100보다 크게 된다.
따라서 목표점을 넘어서게 되면 overshooting 현상이 발생하며 음의 오차가 발생하여 이를 제거해줘야 한다.
하지만 이러한 음의 오차를 발생시키는 것은 바람직하지 않는다.
=> 따라서 이러한 문제를 해결하기 위해 derivative 제어기 를 추가한다.
이 제어기는 오차의 변화율에 대한 측정값을 산출한다.
오차가 얼마나 빠르게 감소하는지 증가하는지를 측정한다.
=> 따라서 오차의 변화율에 따라 속도를 줄일지 늘릴지를 제어할 수 있다.
따라서 현재 오차와 과거 오차 그리고 미래 오차에 대한 PID 제어기를 구축할 수 있습니다.
이 3가지 제어기는 각각 제어기의 전체 출력에 어느 정도 기여하며,
엔지니어는 각 기여도의 수준을 결정하게 된다. 이를 “제어기 튜닝” 이라고 한다.
나머지 강의들도 정리해서 올려보도록 하겠습니다..!! ㅎㅎ
참고: https://www.youtube.com/watch?v=EbT0KJoSfHE&list=PLH1vM2UZr5n-HwkFwTDS3oDM_v-iFzZrx