표준 PID 제어기 알고리즘에서 미분항은 다음과 같이 구했습니다.DTerm = Kd * (dError / dT); 하지만 실제로 사용하는 미분항은 다음과 같이 구합니다.dInput = Input - prevInput; DTerm = -Kd * (dInput / dT); 왜 기존에 나와 있는 알고리즘대로 사용하지 않고 미분항을 수정해서 사용하게 될까요?Error = Setpoint - Input;이므로 Setpoint 값의 변경은 갑작스런 Error 변화를 유도하고 그렇게 되면 미분항의 값은 갑자기 확 커지게 됩니다. 이는 결국 output의 갑작스런 변화를 유도하게 됩니다. 그 이유를 예를 들어 설명하겠습니다. 미분항을 그대로 사용하게 될 경우 초래되는 문제 드론이 수평을 유지하도록 하기 위해 Setpo..
표준 PID 제어기 알고리즘은 다음과 같습니다. 이 알고리즘을 코드로 간단하게 표현하자면 다음과 같습니다.Error = Setpoint - Input;PTerm = Kp * Error;ITerm += Ki * Error * dt; 현재 오차(Error)는 설정(Setpoint) 값에서 현재 입력(Input) 값을 빼서 구합니다. 비례항(PTerm)은 비례항 이득값(Kp)에 현재 오차를 곱해서 구합니다. 적분항(ITerm)은 적분항 이득값(Ki)에 현재 오차와 주기(dt)를 곱해서 더해줍니다. 미분항(DTerm)을 구하기 위해서는 다음과 같이 구합니다.dError = Error - prevError;DTerm = Kd * (dError / dt); 오차 변화(dError)는 현재 오차(Error)에서 이전..
이번 포스팅은 드론의 자세 제어를 위해 사용했던 PID 제어기에 대해서 설명하도록 하겠습니다. PID 제어기란? PID 제어기란 비례-적분-미분 제어로서, 가장 많이 사용되는 대표적인 형태의 제어 기법입니다.PID 제어기는 제어하고자 하는 대상의 출력값을 측정하여 이를 원하고자 하는 설정값과 비교하여 오차를 계산하고, 이 오차값을 제어에 필요한 제어값으로 변환하는 구조로 되어 있습니다. 표준적인 형태의 PID 제어기는 위와 같이 세 개의 항을 더하여 제어값(Output)을 계산하도록 되어있습니다. P항, I항, D항은 각각 오차값, 오차값의 적분, 오차값의 미분에 비례하며, 각 항에 들어가는 이득값(Gain)인 Kp, Ki, Kd를 ..
- Total
- Today
- Yesterday
- 오실로스코프
- C++
- 초기화 리스트
- 터미널
- SPI
- 고도필터
- computer_science
- 드론개발
- compile
- teraterm
- Effective C++
- 멤버 초기화 리스트
- UART
- DMA
- 로그
- 컴퓨터구조
- 칼만필터
- 컴파일
- pwm
- c
- DCM
- STM32
- PID
- 드론
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |