PID Control
개요 및 구성
- PID Control은 비례(Proportional), 적분(Integral), 미분(Derivative) 을 결합한 피드백 제어 기법으로, 산업환경 및 드론과 자율주행 로봇 등의 자세 안정화에 폭넓게 활용된다.
- PID 제어기는 차량의 목표값과 현재값 사이의 오차(Error)를 이용하여 제어 입력을 생성하며, 차량의 정확한 동역학 모델을 알 필요가 없기 때문에 Black Box Control로 분류된다.
- Vehicle Control 개요 참고 : (AD) Vehicle Control - Overview
-Vehicle-Control---PID-Control_image_1.png)
- PID Control의 기본 구조는 다음과 같이 목표값과 현재 측정값의 차이를 이용해 제어 입력 을 생성 한다.
- : 목표값 (Reference)
- : 측정값 (Measurement)
- : 오차 (Error)
PID Control 알고리즘
- PID Control의 수학적 표현은 다음과 같이 세개의 항을 더하여 제어값 를 계산하도록 구성되어 있다.
- : 목표값과 측정값의 차이 (Error)
- : 비례 항 - 현재 발생한 오차의 크기에 비례하여 제어 작용을 함.
- : 적분 항 - 과거부터 누적된 오차의 합을 계산하고 보정함.
- : 미분 항 - 오차의 변화율을 예측하여 제어함. 과도응답의 오버슈트를 억제함.
-Vehicle-Control---PID-Control_image_2.gif)
P Control
- 비례(Proportional) 제어는 현재 오차에 비례하여 제어 입력을 생성한다.
- 오차가 더 클수록 더 큰 제어 입력을 생성한다.
- 값을 크게 하면 응답 속도는 빨라지지만 진동이 커지므로 목표값 부근에서 Overshoot 발생 가능성이 있고, 정상상태 오차 (Steady-State Error)가 남을 수 있다.
-Vehicle-Control---PID-Control_image_3.png)
- 정상상태 오차는 목표값의 일정 범위 내에 제어값이 들어오기는 했으나, 끝내 없어지지 않고 남아있는 오차를 말한다. (잔류편차)
- 즉, 설정값에 매우 근접한 상태에서 안정화되어 측정값과 설정값이 같아질 수 없는 상태가 된다.
I Control
- 적분(Integral) 제어는 과거 오차의 누적 값을 바탕으로 제어값을 생성한다.
- 비례 제어만으로는 해결할 수 없는 시스템의 정상상태 오차를 제거하는 역할을 한다.
- 값이 클수록 Overshoot가 커지고 상승시간이 약간 감소한다.
-Vehicle-Control---PID-Control_image_4.png)
- 물리적 한계나 외란 등으로 인해 오차가 계속 누적되어 적분 값이 과도하게 부풀어 오르는 Integral Windup 현상이 발생 할 수 있다. (제어량의 발산 유발)
- 이러한 문제를 막기 위해 실제 제어 소프트웨어를 구현할 때는 적분 값의 한계를 설정하거나 적분을 초기화하는 등의 Anti-Windup 기법을 사용한다.
D Control
- 미분(Derivative) 제어는 오차의 변화율을 이용하여 미래에 발생할 오차를 예측하고 미리 감쇠(Damping) 시키는 역할을 한다.
-Vehicle-Control---PID-Control_image_5.png)
- 짧은 샘플링 시간이나 갑작스런 외란 등 노이즈는 미분값을 크게 변화시킬 수 있어 저역통과필터(Low-Pass Filter) 등을 통과한 값을 미분 항에 사용한다.
PID Control은 이러한 P, I, D 동작을 조합하여 단일 제어로는 얻기 어려운 빠른 응답, 오차 제거, 안정성 향상 등 다양한 제어 성능을 동시에 얻을 수 있으며, 조합에 따라 PI Control, PD Control 등 역시 주로 사용된다.
PID Control 파라미터 튜닝
- 빠르게 목표값을 달성할 수 있는 적절한 값을 찾아야 하며, 이러한 과정을 게인 튜닝(Gain Tuning)이라 한다.
- 모델에 대한 정보가 없는 Balck Box Contorl에서 PID의 파라미터를 경험적으로(휴리스틱) 설정하는 대표적인 방법으로 Ziegler-Nichols 방법이 있다.
Ziegler-Nichols Method
- 으로 둔 상태에서 시스템이 일정한 진폭으로 진동할 때까지 값을 서서히 올린다.
- 이때의 값을 임계이득(Ultimate Gain), 진동하는 주기(Oscillation Period)를 라고 측정한다.
- 측정된 값을 바탕으로 아래와 같이 파라미터를 공식에 따라 설정한다.
- 이러한 공식은 경험적 시작값일 뿐이며, 실제 도메인에서 미세조정(Fine Tuning)이 필요하다.
PID Control in Self-Driving
- 자율주행의 Vehicle Control 에서 PID Control의 예시
Longitudinal Vehicel Control
차량 목표 속도 추종
- 현재 시점의 목표 속도 는 아래와 같이 설정할 수 있다.
- 선행 차량과 가까워지면 목표 속도가 감소한다.
- : 최대 허용 속도
- : 선행 차량과의 거리
- : 거리-속도 관계를 조정하는 파라미터
PID Control 정의
- 목표값 = = = target velocity
- 제어값 = = gas/brake pedal
- 관찰값 = = current velocity
- 에러 = =
Lateral Vehicel Control
- 차량과 경로 사이의 횡방향 오차를 이용하여 경로를 추종한다.
-Vehicle-Control---PID-Control_image_6.png)
PID Control 정의
- 목표값 = = 0 = minimize track error
- 제어값 = = = steering angle
- 관찰값 = = track error
- 에러 = = = track error
Waypoint-based Vehicel Control
- Longitudinal, Lateral PID Control 를 이용하여 경로의 점 집합을 추종한다.
-Vehicle-Control---PID-Control_image_7.png)
- : 미래 경로상의 waypoints
- Vehicle Controller는 이 waypoint들을 보고 얼마나 빠르게 갈것인가 (Longitudinal), 어느 방향으로 조향할 것인가 (Lateral)을 결정한다.
PID Control 정의
Velocity Control
- 두 waypoint 사이의 거리()를 시간 간격 로 나눈 값 (=waypoint 사이의 속도)의 평균
- 이 평균 속도 를 PID Control의 목표값 으로 설정하여 속도를 제어할 수 있다.
Steering Angle Control
- 점 는 waypoint 들을 원형 피팅하여 얻은 목표점 이며 차량 좌표계를 기준으로 의 위치로 나타낸다.
- 차량에서 목표점 까지의 방향각을 그대로 조향각 로 사용한다.
- 이 조향각 를 PID Control의 목표값 로 설정하여 조향각을 제어할 수 있다.