본문으로 건너뛰기

M07.03 · P/PI/PID·적분 포화·미분 잡음·샘플링

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • P·I·D 항의 역할과 한계를 설명하고 가상 정상상태의 P 제어 오차를 계산한다.
  • 명시한 이산 PID의 갱신 순서에 따라 포화 전/후 출력과 조건부 적분 상태를 계산한다.
  • 미분 잡음·샘플 간격·포화 기록을 해석하여 튜닝 주장의 검증 조건과 모형의 한계를 설명한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M02의 미분/적분, M05.06의 샘플 간격, M07.02의 응답과 안정성이 선수다. 본문의 정규화 로그를 종이로 계산한다. 실제 PID 튜닝·토크 인가·모터 동작은 수행하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

현재 오차, 쌓인 오차, 변화 추세

목표 r에서 측정 y를 뺀 e=r−y를 오차로 정의한다. P(비례) 항은 현재 오차에, I(적분) 항은 시간에 걸쳐 쌓인 오차에, D(미분) 항은 빠른 변화에 반응한다. PI는 P와 I, PD는 P와 D, PID는 세 항을 결합한다. 세 항을 모두 넣을수록 언제나 좋아지는 순서는 아니다. 제어 대상의 동역학·지연·포화·잡음과 함께 판단해야 한다.

예를 들어 정적 가상 관계 y=u, P 제어 u=2(r−y), 목표 r=1이라면 정상상태에서 y=2(1−y)라 y=2/3, 오차는 1/3이다. P가 출력을 유지하려면 이 모델에서는 오차가 남아야 한다. 반대로 적분기를 가진 다른 대상에서는 P만으로 계단 오차가 0이 될 수도 있어 ‘P는 항상 정상 오차가 있다’고 일반화하지 않는다. I는 안정적이고 목표가 실현 가능한 등의 조건에서 일정 오차를 줄이는 데 도움이 되지만, 큰 적분 이득이 진동이나 불안정을 만들 수도 있다. 저자 토크 PID 비교를 이런 조건과 함께 읽는다.

이산 구현의 한 가지 규칙을 고정한다

여기서는 r, y, u를 무차원 정규화값으로 쓰고 시간은 s다. 샘플 번호는 k, 간격은 T>0이다. Kp는 무차원, Ki는 s⁻¹, Kd는 s 단위다. I[k]는 오차 적분 자체가 아니라 Ki를 이미 곱한 출력 기여량이다. 이전 I와 측정 y[k−1]을 저장한다. P는 오차, D는 목표 변화의 급격한 충격을 줄이기 위해 측정의 변화에 음의 부호로 적용한다. 목표가 바뀔 때 오차를 직접 미분하는 형식과 구분한다.

PID와 포화 후 적분 처리: 목표/측정의 오차 → P·I·D 항 계산 → 출력 범위 제한 → 적분 상태 갱신.그림 원본 크기로 보기

그림 M07.03-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

ek=rk−yk,Pk=Kpek,Dk=−Kdyk−yk−1T.e_k=r_k-y_k,\quad P_k=K_p e_k,\quad D_k=-K_d\frac{y_k-y_{k-1}}{T}. Itrial=Ik−1+KiTek,vtrial=Pk+Itrial+Dk.I_{trial}=I_{k-1}+K_iTe_k,\qquad v_{trial}=P_k+I_{trial}+D_k.

v는 포화 전의 요구 출력이고 실제 모델에 적용할 u는 [−1,1]로 제한한다. clip(v,−1,1)은 이 범위를 넘는 값을 경계값으로 자르는 함수다. 그냥 u만 자르고 I는 계속 쌓으면, 실행할 수 없는 요구가 적분 상태 안에 남을 수 있다. 목표가 바뀌어도 포화에서 오래 빠져나오지 못하는 현상을 적분 windup이라고 한다.

이번 조건부 적분(conditional integration)은 다음 순서로 정의한다. v_trial>1이면서 e>0이거나 v_trial<−1이면서 e<0이면 적분 증가가 포화를 더 밀어붙이는 방향이므로 I_trial을 거절하고 I[k]=I[k−1]로 둔다. 그 외에는 I[k]=I_trial을 수락한다. 이후 최종 v=P+I[k]+D와 u=clip(v,−1,1)을 다시 계산한다. 경계와 같은 값은 엄격한 초과가 아니므로 이 규칙에서는 거절하지 않는다. Ki≥0과 위 대칭 포화 모델을 가정한 교육용 알고리즘이다. 다른 anti-windup이나 실제 내부 구동 제한과 같은 구현이라고 가정하지 않는다.

포화된 한 행을 계산한다

Kp=2, Ki=1 s⁻¹, Kd=0.1 s, T=0.1 s, 이전 I=0.4라고 하자. r=1.8, y=0.8, 이전 y=0.7면 e=1, P=2, D=−0.1이다. I_trial=0.5, v_trial=2.4이므로 포화 출력은 +1이다. 조건부 적분을 쓰지 않으면 I=0.5가 저장된다. 조건부 적분은 양의 포화를 양의 오차가 더 밀어 I 증가를 거절하므로 I=0.4, 최종 v=2.3, u=1이다. 같은 포화 출력이라도 내부 적분 상태는 달라졌다.

다음 연속 업데이트의 합성 행에서 목표가 0.2, 측정과 이전 측정이 모두 0.8이면 e=−0.6, P=−1.2, D=0이다. 조건부 경로의 이전 I=0.4를 쓰면 I_trial=0.34, v=−0.86으로 범위 안이므로 수락한다. 적분을 언제나 멈추는 것이 아니라 복귀에 도움이 되는 변화를 허용하는 규칙이다. 무조건 적분 경로의 이전 I=0.5라면 다음 I=0.44, v=−0.76이다. 두 행은 이미 주어진 합성 측정이며 이 값들이 특정 plant의 실제 궤적을 재현한다고 주장하지 않는다.

미분과 샘플링도 제어기의 일부다

D는 빠른 변화에 반응하므로 고주파 측정 잡음을 크게 만들 수 있다. 측정이 같은 크기 0.01만큼 튀었을 때 Kd=0.1 s라면 T=0.1 s에서 D=−0.01이지만 T=0.01 s에서는 −0.1이다. 더 자주 계산한다는 이유로 같은 이득과 잡음에서 출력이 항상 좋아지는 것은 아니다. 실제 구현은 미분 필터와 측정 대역폭·시간 지연을 함께 설계한다. 측정 미분은 목표 step에 의한 직접 D 충격을 줄이지만 측정 잡음을 없애지는 않는다.

샘플 누락과 jitter가 있으면 실제 시간 간격과 고정 T의 차이를 기록한다. 시간 간격이 0이나 음수면 나눗셈을 그대로 수행하지 않고 초기화/시간 점프 규칙을 적용해야 한다. 간격을 실제값으로 바꿔 넣는 것만으로 가변 샘플 시스템의 안정성이 자동 확보되는 것도 아니다. M07.02의 연속 모델 이득을 가져올 때에도 유지·지연·포화와 이산 구현을 확인한다.

판정 기록에는 목표/측정·P/I/D·포화 전후 출력·실제 적용 가능한 입력·샘플 간격을 함께 남긴다. 오차만 줄었다고 좋은 튜닝이라고 결론 내리면 긴 포화나 큰 입력 진동을 놓칠 수 있다. 조건부 적분을 포함한 제조사 설명은 원리 비교 자료이며 MATLAB/Simulink 설치는 이 활동에 필요 없다.

선택 보충인 브라우저 PID 개념 모형은 정규화 1차 plant와 샘플 지연·포화를 비교하는 별도 모형이다. exact ZOH 갱신으로 계산하는 가상 응답이며 실제 ROS·모터·마찰 모형이나 실시간 실행이 아니다. 아래 종이 실습은 위젯 없이 완결되며, 본문의 두 합성 측정 행을 위젯의 동일한 출력이라고 가정하지 않는다.

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    6.3 출력 안정화

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    3.3 DLS 역기구학

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 본문의 두 합성 행과 Kp=2, Ki=1, Kd=0.1, T=0.1이다. 첫 행의 이전 I는 0.4다. 출력 한계는 [−1,1], 조건부 적분의 엄격한 초과 규칙을 사용한다.

  1. 정적 y=u의 P 제어 정상값과 오차를 구하고 P/I/D의 역할을 설명한다. 이 오차 결과를 모든 제어 대상에 일반화할 수 있는지 쓴다.
  2. 첫 행에서 P/D/I_trial/v_trial을 계산한다. 무조건 적분과 조건부 적분의 저장 I 및 최종 u를 비교한다. 다음 행의 두 경로도 계산한다.
  3. 측정 점프 0.01에서 T를 0.1에서 0.01 s로 바꿀 때 D를 비교한다. 더 작은 T나 anti-windup만으로 성능·안정성이 보장되지 않는 이유와 필요한 기록을 제안한다.

계산은 종이로 수행하며 실제 게인을 설정하지 않는다. 막히면 저장 I가 Ki를 포함한 값임을 확인한다. 거절한 뒤 최종 출력을 이전 I로 다시 계산하는 순서를 생략하지 않는다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

관련 기존 자료 · 보충해서 읽기

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    01_physical_ai_isaac_ros2/code/physical_ai_loop.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

  • 브라우저 계산 모형 · 관련 기존 자료 · 보충 참고

    1차원 비례 제어·입력 포화·주기 외란

    목표 일부 관련

    PID 전체·실제 모바일 운동학·물리 검증 아님 브라우저 근사 계산이며 ROS·물리 엔진·GPU·실물 실행 결과가 아닙니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

가상 정적 대상 y=u에 P 제어 u=3(1−y)를 적용한다. 정상값과 오차를 구하고, PI가 오차를 줄일 수 있다는 설명에 필요한 실현 가능성과 안정성 조건을 적어라. D를 추가하면 잡음도 자동 제거되는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

Kp=1, Ki=2 s⁻¹, Kd=0, T=0.1 s, 이전 I=0.9, r=1, y=0.5다. I_trial과 v_trial을 구하고 조건부 적분의 저장 I, 최종 v/u를 계산하라. 출력 한계는 [−1,1]이다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

측정이 0.02 튀었고 Kd=0.1 s다. T=0.1 s와 0.02 s에서 측정 미분 D를 구하라. dt=0인 행과 긴 포화가 있는 로그에서 먼저 확인할 기록 및 판단을 제안하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

선택 보충 · 브라우저 제어 개념 모형

정규화한 1차 plant의 12초 응답을 계산합니다. 목표는 0~4 s에 1.5, 이후 0.2입니다. 입력 한계 ±1 때문에 처음 목표는 도달할 수 없으며, 목표가 낮아진 뒤 적분 누적과 회복을 비교합니다. 화면의 시간은 계산 모형의 시간입니다.

출력·목표는 정규화한 무차원 값입니다. 선은 샘플 시점의 값을 직선으로 이은 표시입니다.
실선: 현재 적분 제한 적용 · 파선: 반대 설정 · 점선: 목표

-1011.504812시간 (s)

현재 · 조건부 적분 적용

최대 |e| · 전 구간
1.500
4 s 이후 최대 |e|
0.752
요청 명령 포화 시간
0.70 s
4 s 이후 ±0.05 첫 진입 시각 (전체 t)
5.10 s
요청 명령 포화 구간 1개
  1. [0.00, 0.70) s

비교 · 조건부 적분 미적용

최대 |e| · 전 구간
1.500
4 s 이후 최대 |e|
0.796
요청 명령 포화 시간
5.50 s
4 s 이후 ±0.05 첫 진입 시각 (전체 t)
10.10 s
요청 명령 포화 구간 1개
  1. [0.00, 5.50) s

포화 시간·구간은 지연 전 요청 명령 v의 |v| > 1인 구간입니다. ±0.05 첫 진입은 정착 시간·지속 안정 보장이 아닙니다. 같은 모형의 조건 비교이며 anti-windup이 모든 성능·안전에서 항상 우월하다는 뜻은 아닙니다.

모형식·계산 순서·검증 한계

연속 plant는 τ·dy/dt = −y + u_applied, τ=1 s입니다. y, r, u는 정규화한 무차원 값입니다. 샘플 구간 내 입력이 일정하다는 가정에서 exact ZOH를 사용합니다.

e[k] = r[k] − y[k]
D[k] = −Kd · (y[k] − y[k−1]) / Ts
I_trial = I_prev + Ki · Ts · e[k]
v_trial = Kp · e[k] + I_trial + D[k]
u[k] = saturation(Kp · e[k] + I[k] + D[k], −1, 1)
y[k+1] = a · y[k] + (1−a) · u[k−d], a = exp(−Ts/τ)

초기 y=0, I=0, 미분 차분=0입니다. v_trial이 상한을 넘고 e>0이거나 하한을 넘고 e<0이면, 조건부 적분은 이번 I 갱신을 거절합니다. 그 뒤 출력 포화·명령 지연·plant 갱신 순으로 계산합니다. 미분은 목표 오차 대신 측정값에 적용합니다.

d=0은 이번 명령을 즉시 현재 구간에 적용합니다. d>0은 d개 샘플 전의 포화 후 명령을 적용하며, 시작 전 큐는 0입니다. 목표 변경 인덱스는 4/Ts입니다. 아래 기록에서 요청 명령 u와 실제 모형에 적용한 u_applied를 구별하세요.

모터·다관절 동역학, 센서 잡음·양자화, 마찰, ROS 실행기·통신의 변동 지연은 포함하지 않습니다. 실제 ROS·모터·GPU 실험이 아니며 매개변수 튜닝이나 안전 인증을 대신하지 않습니다.

초기·목표 변경 전후 요청/적용 명령 기록
t(s)ryIv(포화 전)u(요청)u_applied
0.001.5000.0000.0001.5001.0001.000
0.101.5000.0950.0001.4051.0001.000
0.201.5000.1810.0001.3191.0001.000
3.801.5000.9440.4320.9880.9880.988
3.901.5000.9480.4320.9840.9840.984
4.000.2000.9520.357-0.395-0.395-0.395
4.100.2000.8240.294-0.329-0.329-0.329
4.200.2000.7140.243-0.271-0.271-0.271
4.300.2000.6200.201-0.219-0.219-0.219

선택 보충 모형은 기존 실습·세 문항을 대신하지 않습니다. 설정과 관찰 결과는 필요한 경우 답안에 직접 적으세요. 이 조작은 답안·진도·학습 완료를 자동 저장하거나 변경하지 않습니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.