동그리동동 강의

PID 제어 인터랙티브 강의 기초 이론부터 VEX IQ 실습까지

환영합니다

로봇을 "정확히" 움직이는 기술, PID 제어를 직접 만지며 배웁니다.

이 강의에서 하는 것

슬라이더를 돌리면 로봇 팔이 실시간으로 움직이고, 그래프가 그려지고, P·I·D 각 항이 지금 얼마의 힘을 내는지 막대로 보입니다. 설명을 읽고 → 직접 실험하고 → 퀴즈와 튜닝 챌린지로 확인합니다.

목표는 단 하나: 로봇 팔을 위치 100에 빠르고·정확하고·안 흔들리게 멈추기. 이걸 PID로 해냅니다.

위 메뉴를 순서대로 따라가세요. 각 장을 보면 메뉴에 ✓가 켜집니다.

1. 제어란? — 열린 루프 vs 닫힌 루프

결과를 "보면서" 조절하느냐가 핵심입니다.

열린 루프 (open loop)

“3초 동안 50% 힘으로 가” — 결과를 안 보고 명령만. 무게·마찰·배터리가 바뀌면 매번 빗나갑니다. 스스로 못 고칩니다.

닫힌 루프 (closed loop)

“현재 위치를 계속 보며 목표까지 힘을 조절” — 센서로 확인하며 보정합니다. 정확하고 외란에 강합니다. PID가 바로 이것.

눈으로 비교하기

아래 버튼을 누르면 두 방식이 동시에 목표(점선)로 출발합니다. 어느 쪽이 목표에 멈추나요?

열린 루프(왼쪽)는 일정한 힘만 줘서 목표를 그냥 지나쳐 끝까지 갑니다. 닫힌 루프(오른쪽)는 가까워질수록 힘을 줄여 목표 근처에 멈춥니다.

2. 오차 — 모든 것의 출발점

PID의 P·I·D는 모두 이 "오차" 하나를 가공할 뿐입니다.

오차(error) = 목표값(100) − 현재값

실시간 계산 — 현재 위치를 움직여 보세요

현재 위치 40
목표 100현재 40 =오차 +60
+ 오차면 더 가야 하고, 오차면 지나친 것, 0이면 도착. PID는 이 부호와 크기를 보고 모터 힘을 정합니다.

3. P (비례) — 멀수록 세게

오차에 비례해 힘을 줍니다. 가장 직관적이지만, 혼자서는 부족합니다.

P 출력 = Kp × 오차

아래에서 Kp만 조절합니다. 슬라이더를 바꾸면 팔이 다시 움직입니다. 두 가지 문제를 직접 확인해 보세요.

문제 ① 못 닿음: Kp가 작으면 중력을 못 이겨 목표 아래에서 멈춥니다(정상상태 오차). 멈추려면 힘이 필요한데, 오차가 줄면 힘도 줄기 때문.
문제 ② 진동: Kp를 키우면 관성 때문에 목표를 지나쳤다 되돌아오며 출렁입니다.
실험: Kp를 2 → 8로 올려 보세요. 오차는 줄지만 오버슈트(목표 초과)가 생기죠? 이래서 D가 필요합니다.

4. D (미분) — 브레이크

오차가 줄어드는 "속도"를 보고 미리 제동을 겁니다.

D 출력 = Kd × (이번 오차 − 지난 오차)

지금 Kp는 진동이 보이게 맞춰 뒀습니다. Kd를 0 → 3~4로 올리며 출렁임이 사라지는지 보세요.

주차할 때 벽이 멀어도 빠르게 접근 중이면 미리 브레이크를 밟는 것과 같습니다. 단, 정상상태 오차는 못 고칩니다(멈추면 변화율=0 → D=0). 너무 키우면 노이즈로 떨립니다.

5. I (적분) — 끈질김

작은 오차도 계속 쌓아 힘을 키워, 끝내 목표에 닿게 합니다.

I 출력 = Ki × (오차의 누적합)

지금은 PD 상태라 목표보다 살짝 아래에서 멈춰 있습니다. Ki를 0 → 1 정도로 조금씩 올려 남은 오차가 사라지는지 보세요.

부작용 와인드업: 누적이 과하면 목표를 넘겨 다시 출렁입니다. 그래서 Ki는 아주 조금씩 올리고, 코드에선 누적값에 상한을 둡니다(이 시뮬레이터도 포화 중엔 적분을 멈춥니다).

6. 종합 시뮬레이터 — 직접 완벽 튜닝

세 항을 모두 다룹니다. 코치와 체크리스트를 보며 완벽 튜닝(초록불 3개)에 도전하세요.

튜닝 순서: Kp → Kd → Ki. Kp로 진동이 막 보이게 → Kd로 진동 잡기 → Ki로 남은 오차 제거.

7. 튜닝 챌린지 — 더 무거운 팔

이번 팔은 더 무겁습니다(부하 ↑). 6장의 값을 그대로 넣으면 통과 못 합니다 — 직접 다시 튜닝하세요!

목표: 체크리스트 3개(오버슈트 ≤ 5%, 정상상태 오차 ≤ 1.0, 정착 ≤ 3.5초)에 모두 초록불을 켜세요.

8. 제자리 회전 — 회전도 똑같이 PID

VEX 실습 미리보기: 로봇이 제자리에서 목표 각도(90°)로 정확히 돌도록 튜닝합니다. 위에서 본 로봇이 실제로 회전합니다.

회전엔 중력 같은 일정 부하가 없어 P + D 만으로 오차 0이 가능합니다. (그래서 회전에선 보통 I를 쓰지 않습니다 — 제어는 시스템에 따라 다릅니다!)

“P만 (진동)”을 누르면 로봇이 목표를 휙 지나쳤다 되돌아옵니다. Kd를 올려 한 번에 멈추게 만들어 보세요.

실제 VEX IQ에서는 브레인 관성센서로 각도를 재 이 PID를 그대로 돌립니다. 코드는 다음 장(VEX 코드)에서.

9. 퀴즈 — 개념 확인

배운 내용을 점검합니다. 보기를 누르면 정답과 해설이 나옵니다.

10. VEX IQ 실습 코드

시뮬레이터에서 익힌 그대로 실제 로봇에 옮깁니다 — 제자리 회전(목표 각도 맞추기). 각도는 브레인 내장 관성센서로 잽니다 (VEXcode IQ · 2세대 브레인).

제자리 회전 PID — 관성센서로 목표 각도(90°) 맞추기

먼저 드라이브트레인을 고르고, 언어 탭을 선택하세요. 맨 위 Kp/Ki/Kd 세 숫자만 바꿔가며 튜닝합니다. 포트 번호는 배선에 맞게 바꾸세요. integral은 "계속 더하기", derivative는 "이번−지난"입니다.


    
드라이브트레인을 탱크 2모터 / X드라이브 4모터 중 골라 코드를 받으세요. 회전엔 일정 부하가 없어 보통 P + D만으로 오차 0이 됩니다 — Kp를 키워 오버슈트를 눈으로 본 뒤 Kd로 잡고, 끝에 남는 1~2도가 있으면 Ki를 아주 조금 더합니다. 시작 직후 관성센서 캘리브레이션(2~3초) 동안엔 로봇을 가만히 두세요.

수료

한 줄 정리: P는 현재, I는 과거, D는 미래의 오차. 튜닝은 P → D → I.

진행 상태: 퀴즈 미완료 챌린지 미완료