Model Predictive Control (MPC)
모델 예측 제어(MPC)는 모델을 사용해 짧은 행동 시퀀스를 계획하고 첫 번째 행동만 적용한 다음 매 단계 다시 계획합니다. 구성 요소, 활용 사례, 코드를 다룹니다.
모델 예측 제어(MPC)는 시스템 모델을 사용해 가까운 미래 구간의 동작을 예측하고, 제약 조건을 지키면서 목표를 가장 잘 달성하는 동작 시퀀스를 선택한 뒤 첫 번째 동작만 적용합니다. 그런 다음 새로운 측정값을 바탕으로 다음 시간 단계에서 전체 과정을 반복하는 제어 방법입니다. 계획, 실행, 재계획의 이 주기는 이동 지평선 제어라고 하며, 현재 오차에만 반응하지 않고 앞으로 일어날 일을 예측할 수 있게 합니다. MPC는 1970년대 후반 정유 및 화학 공정 분야에서 발전했으며, Shell의 Dynamic Matrix Control은 초기 산업용 구현 가운데 하나였습니다. 현재 MPC는 로봇, 자율주행차, 건물 기후 제어 시스템을 제어합니다.
MPC 컨트롤러의 구성 요소#
모든 MPC 컨트롤러는 네 가지 구성 요소를 결합합니다:
- 동역학 모델: 현재 상태와 동작으로부터 다음 상태를 예측합니다. 예를 들어 특정 조향각에서 자동차의 위치와 방향이 어떻게 바뀌는지 예측합니다. 물리 방정식, 기록된 데이터에 대한 시스템 식별, 또는 기록된 궤적으로 학습한 신경망을 활용해 모델을 만들 수 있습니다.
- 비용 함수: 예측 궤적을 평가하며, 일반적으로 목표와의 거리, 에너지 사용량, 제어 입력의 급격한 변화를 페널티로 부과합니다.
- 제약 조건: 모든 계획이 충족해야 하는 제한으로, 최대 모터 토크, 속도 제한, 장애물 주변의 진입 금지 구역 등이 있습니다. 제약 조건을 명시적으로 처리할 수 있다는 점이 MPC의 주요 장점입니다. 오류가 발생한 뒤에만 반응하며 제한을 미리 예측할 수 없는 기존 PID 제어와 차별화됩니다.
- 최적화기: 각 제어 단계에서 지평선 내 최적의 동작 시퀀스를 탐색합니다.
모델에 따라 최적화의 난도가 결정됩니다. 선형 모델에 이차 비용을 적용하면 이차 계획법 문제가 되며, 전용 솔버는 이를 밀리초 이내에 해결합니다. 비선형 모델에는 보통 상태를 추정하는 확장 칼만 필터 또는 샘플링 기반 탐색과 함께 비선형 MPC 솔버가 필요합니다. 각 제어 단계에서 최적화기는 후보 계획을 예측하고 개선하는 내부 루프를 실행하며, 제어기는 하나의 동작을 실행한 뒤 새로 측정한 상태를 바탕으로 다시 시작하는 외부 루프를 실행합니다.
지평선 길이는 핵심 조정 변수입니다. 지평선이 길면 차량이 급커브에 대비해 일찍 제동할 수 있지만, 단계가 하나 늘어날 때마다 연산량이 증가하고 모델의 예측 오차가 누적됩니다. 또한 전체 최적화가 한 제어 주기 안에 완료되어야 합니다.
코드로 살펴보는 이동 지평#
아래 코드 조각은 위치 5까지 이동한 뒤 멈춰야 하는 카트를 제어하며, 가속도는 -1에서 1 사이로 제한됩니다. 각 단계에서 가속도 계획 500개를 무작위로 샘플링하고, 카트의 동역학을 사용해 각 계획의 궤적을 예측한 다음, 비용이 가장 낮은 계획의 첫 행동을 실행하고 새로운 상태에서 다시 계획합니다:
import numpy as np
rng = np.random.default_rng(0)
position, velocity, target = 0.0, 0.0, 5.0
dt, horizon = 0.1, 30
for _ in range(100):
# Sample 500 candidate plans of accelerations within the actuator limit of +/-1
plans = rng.uniform(-1, 1, size=(500, horizon))
# Predict every plan's trajectory with the cart's dynamics model
v = velocity + dt * plans.cumsum(axis=1)
p = position + dt * v.cumsum(axis=1)
# Cost: distance from the target at each step plus speed at the end of the horizon
cost = ((p - target) ** 2).sum(axis=1) + 10 * v[:, -1] ** 2
# Apply only the first action of the cheapest plan, then replan from the new state
velocity += dt * plans[cost.argmin(), 0]
position += dt * velocity
print(f"position: {position:.2f}, velocity: {velocity:.2f}")시뮬레이션 시간 10초가 지나면 카트는 위치 5.04, 속도 0.04에 도달합니다. 무작위 계획 하나만으로는 좋은 결과를 얻을 수 없지만, 한 단계를 실행하고 측정한 상태에서 재계획하면 오류를 지속해서 보정할 수 있습니다. 랜덤 슈팅이라고 하는 이 접근 방식은 샘플링 기반 MPC 계열에서 가장 단순한 방법입니다. 이 계열에는 교차 엔트로피 방법과 모델 예측 경로 적분(MPPI) 제어도 포함되며, Georgia Tech 연구자들은 MPPI를 사용해 5분의 1 크기 랠리 자동차로 비포장 트랙을 주행했습니다.
공장, 로봇, 자동차, 건물에서의 MPC#
- 공정 산업: 정유소, 화학 공장, 발전소는 MPC를 사용해 온도, 압력, 제품 품질을 생산량을 극대화하는 한계에 가깝게 유지합니다. 이는 MPC가 처음 개발된 분야입니다.
- 다리형 로봇: MIT의 Cheetah 3은 볼록 MPC를 사용해 달리고 균형을 잡았으며, 초당 여러 번 지면 반력을 다시 계산했습니다. 이후 MIT는 Mini Cheetah를 위해 해당 제어기를 오픈 소스 소프트웨어로 공개했습니다.
- 주행: 자율주행차의 경로 추종 제어기는 MPC를 사용해 조향, 가속, 승차감 제한을 지키면서 계획된 궤적을 부드럽게 따라갑니다.
- 건물: 난방 및 냉방 컨트롤러는 날씨와 재실 예측을 바탕으로 몇 시간 뒤의 실내 온도를 예측하고, 에너지 비용이 가장 저렴할 때 미리 냉방하거나 난방합니다.
MPC와 관련 접근 방식 비교#
- PID 제어: PID 제어기는 현재 오차, 오차의 적분값, 오차의 변화율로 출력을 계산합니다. 간단하고 비용이 적게 들지만 미래에 대한 모델이 없고 제약 조건을 고려하지 않습니다.
- 선형 이차 조절기(LQR): LQR은 이차 비용이 있는 선형 시스템에 대해 무한 지평선의 최적 피드백 법칙을 닫힌 형식으로 구합니다. MPC는 유한 지평선 버전을 온라인으로 풀기 때문에 제약 조건을 적용하고 비선형 모델을 처리할 수 있습니다.
- 강화 학습: RL은 배포 전에 경험을 통해 정책을 학습하며, 배포 후 동작 선택에는 빠른 순전파 한 번만 필요합니다. MPC는 명시적 모델을 사용해 온라인에서 새로운 최적화를 풉니다.
두 접근 방식은 점점 더 결합되고 있습니다. 모델 기반 심층 강화 학습은 월드 모델을 학습하고 MPC로 그 모델 안에서 계획을 세웁니다. TD-MPC2와 같은 방법은 학습된 잠재 공간에서 계획을 세우고, 학습된 가치 함수로 짧은 지평선이 끝난 뒤의 결과를 평가합니다. 학습된 동역학 모델은 예측 모델링의 한 형태이며, 지평선에 걸친 정확도에 따라 이러한 제어기가 유용하게 계획할 수 있는 범위가 정해집니다.
MPC를 위한 인식#
MPC 제어기는 인식 성능만큼만 계획을 잘 세울 수 있습니다. 사람들 사이를 이동하는 로봇과 같은 물리적 AI 시스템의 상태에는 사람들의 위치와 이동 방향이 포함되어야 합니다. 추적 모드로 실행되는 Ultralytics YOLO26 카메라는 모든 프레임에서 각 사람에 대해 바운딩 박스와 지속적인 추적 ID를 제공합니다. 이 추적 결과를 깊이 추정 또는 카메라 보정, 칼만 필터와 결합하면 장애물의 위치와 속도를 얻을 수 있으며, 제어기의 제약 조건은 이를 피하도록 설정됩니다.










