Math & Physics
Intermediate
Unity 2021.3+ / Unity 6
2D/3D 물리 오브젝트의 흔들림 없는 타깃 추적을 위한 PID 제어기 구현
비례(P), 적분(I), 미분(D) 항을 결합하여 차량 조향, 드론 수평 유지, 물리 기반 부드러운 카메라 팔로우 시 오버슈트(Overshoot)를 억제하는 제어 이론.
#Math #Physics #PID #ControlTheory #Robotics
핵심 개념단순 P 제어(오차에 비례해 힘을 줌)는 목표 지점을 지나치는 진동(Overshoot)이 발생합니다. 미분(D) 항으로 감속 브레이크를 걸고, 적분(I) 항으로 누적 잔류 오차를 해소하면 실제 물리 로봇처럼 안정적으로 목표에 안착합니다.
1. PID 제어기 C# 클래스
using UnityEngine;
[System.Serializable]
public class PIDController
{
public float Kp = 5.0f; // 비례 게인
public float Ki = 0.1f; // 적분 게인
public float Kd = 1.2f; // 미분 게인
private float _integral;
private float _lastError;
public float Update(float current, float target, float dt)
{
if (dt <= 0.0001f) return 0f;
float error = target - current;
_integral += error * dt;
float derivative = (error - _lastError) / dt;
_lastError = error;
return (Kp * error) + (Ki * _integral) + (Kd * derivative);
}
public void Reset()
{
_integral = 0f;
_lastError = 0f;
}
}