TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Math & Physics > 2D/3D 물리 오브젝트의 흔들림 없는 타깃 추적을 위한 PID 제어기 구현
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# 클래스

PIDController.cs
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;
    }
}

참고자료 & 관련 링크