로봇이 사람의 손짓처럼 자연스럽게 움직이려면 미래를 예측하면서 행동을 선택해야 해요. 그 가장 강력한 도구가 바로 모델 예측 제어(Model Predictive Control, MPC)예요. MPC는 미래 일정 구간의 상태를 시스템 모델로 예측하고, 비용 함수를 최소화하는 최적 입력을 매 순간 다시 계산하는 제어 기법이에요. 자율주행 자동차의 부드러운 경로 추종, 사족 보행 로봇의 안정적 보폭, 드론의 정밀 호버링까지 모두 MPC가 뒤에서 받쳐주고 있어요. 이 글에서는 MPC의 수학적 배경부터 로봇 적용에서 자주 마주치는 실전 이슈, 그리고 학습 기반 제어와의 결합 동향까지 차근차근 짚어드릴게요.

모델 예측 제어(MPC)란 무엇인가요
모델 예측 제어는 1970년대 화학 공정 산업에서 출발한 고급 제어 기법이에요. 이름 그대로 시스템의 동적 모델을 이용해 미래 상태를 일정 구간(예측 지평선, prediction horizon)만큼 시뮬레이션하고, 그 구간 동안 누적되는 비용을 최소화하는 제어 입력 시퀀스를 매 샘플마다 새로 계산하는 방식이에요. 흥미로운 점은 계산된 입력 시퀀스 전체를 적용하지 않고 첫 번째 입력만 실제로 사용한 뒤, 다음 샘플에서 다시 처음부터 최적화한다는 거예요. 이를 수신지평선 원리(receding horizon principle)라고 불러요.
왜 받아쓰기처럼 매번 다시 푸나요
현실 로봇은 항상 외란과 모델 오차에 노출돼요. 바닥의 미끄러움이나 바람, 카메라 노이즈 같은 요소가 예측을 어긋나게 만들어요. 그래서 한 번 계산한 계획을 그대로 끝까지 따라가면 작은 오차가 누적돼 실패해요. MPC는 매 샘플마다 현재 측정값을 초기 조건으로 다시 최적화하므로, 외란을 피드백으로 흡수하면서도 미래 지향적인 행동을 유지할 수 있어요.
전통 PID와의 본질적 차이
PID 제어는 단일 출력의 현재 오차에만 반응하는 반면, MPC는 다음 세 가지 요소를 동시에 고려해요. 첫째, 다입력 다출력(MIMO) 시스템을 자연스럽게 다룰 수 있어요. 둘째, 관절 각도 한계나 토크 상한 같은 제약 조건을 명시적으로 포함시킬 수 있어요. 셋째, 미래를 내다보기 때문에 사전 동작(feed-forward) 효과를 갖춰요. 이 세 가지가 로봇에 적합한 결정적 이유예요.
MPC의 수학적 구조와 풀이 방식
일반적인 이산시간 MPC 최적화 문제는 다음과 같이 정의돼요. 상태 x, 입력 u, 비용 함수 J, 예측 지평선 N에 대해
min J(x, u) = Σ (xₖᵀ Q xₖ + uₖᵀ R uₖ) + x_NᵀP x_N
s.t. xₖ₊₁ = f(xₖ, uₖ), 입력·상태 제약, 초기 조건 x₀
여기서 Q와 R은 상태 오차와 제어 노력 사이의 균형을 정하는 가중치 행렬이에요. 종단 비용 P x_N²은 지평선 끝에서 시스템이 안정점에 가까워지도록 유도해요.
선형 MPC와 비선형 MPC
모델이 선형이고 제약이 볼록하면 문제는 이차 계획법(QP)으로 환원돼 매우 빠르게 풀려요. 산업용 로봇 팔의 끝점 추종처럼 동작 점 근처에서 선형화가 가능한 경우 적합해요. 반면 휴머노이드 보행이나 사족 로봇의 동역학은 강한 비선형성을 가지므로 비선형 MPC(NMPC)가 필요해요. NMPC는 일반적으로 SQP(Sequential Quadratic Programming)나 내부점 방법으로 풀어요. 보스턴 다이내믹스의 Spot, MIT 미니 치타, 취리히 공대의 ANYmal 모두 실시간 NMPC를 탑재하고 있어요.
실시간성을 어떻게 확보하나요
로봇 제어 주기는 보통 100Hz에서 1kHz 사이예요. 즉, 한 번의 최적화를 1~10밀리초 안에 끝내야 해요. 이를 위해 다음 트릭들이 동원돼요.
- 웜 스타팅(warm starting): 이전 샘플의 해를 다음 샘플의 초기점으로 사용해 반복 횟수를 줄여요.
- 실시간 반복(Real-Time Iteration, RTI): 수렴까지 풀지 않고 SQP 한두 번만 수행해요.
- GPU·전용 솔버: acados, OCS2, CasADi, OSQP, HPIPM 같은 전용 라이브러리가 표준이 됐어요.
- 모델 단순화: 전체 동역학을 풀지 않고 단순화된 단단한 몸체 동역학(SRBD)이나 중심선 모델(centroidal model)을 활용해요.
로봇 분야별 MPC 적용 사례
MPC는 이미 다양한 로봇 도메인에서 검증된 표준 기술이에요. 적용 분야마다 모델 추상화 수준과 최적화 전략이 달라요.
사족 보행 로봇과 휴머노이드
사족 보행 로봇은 접촉 일정(contact schedule)이 미리 정해진 상황에서 중심선 동역학을 단순화해 MPC로 푸는 접근이 일반적이에요. MIT의 미니 치타는 50Hz 주기로 SRBD 기반 MPC를 돌려 트로팅, 갤로핑 같은 다양한 보행을 안정적으로 수행해요. 휴머노이드의 경우 양발 지지(Double Support) 단계까지 포함된 LIP(Linear Inverted Pendulum) 모델과 WBC(Whole-Body Control)를 결합한 계층적 구조가 표준이에요. 최근에는 접촉 일정 자체를 최적화 변수에 포함시키는 접촉-암묵적 MPC가 활발히 연구되고 있어요.
자율주행과 모바일 로봇
자율주행 자동차는 운동학적 자전거 모델(kinematic bicycle model)을 활용한 선형 MPC가 표준이에요. 차선 변경, 부드러운 회전, 정밀 주차 같은 시나리오에서 MPC가 PID 기반 추종기보다 압도적으로 좋은 승차감을 만들어요. 라스트마일 배송 로봇이나 실내 자율 로봇도 차분기반 동역학 모델을 기반으로 한 MPC를 채택하는 추세예요.
드론과 비행체
쿼드콥터는 본질적으로 불안정한 시스템이라 빠른 반응이 필수예요. 지오메트릭 MPC는 회전을 SO(3) 매니폴드 위에서 직접 다뤄 짐벌 락 없이 공격적인 기동을 가능하게 해요. 취리히 공대의 자율 드론 레이싱 연구는 카메라 기반 인식과 MPC를 결합해 시속 100km 가까운 속도로 코스를 통과시키는 데 성공했어요.
매니퓰레이터와 협동 로봇
산업용 로봇 팔에서는 가공 정밀도 향상과 충돌 회피를 위해 MPC가 도입되고 있어요. 특히 장애물 회피를 비용 함수의 페널티 항이나 부등식 제약으로 자연스럽게 모델링할 수 있다는 점이 큰 강점이에요. 사람과 같은 공간에서 일하는 협동 로봇(cobot)은 사람의 미래 궤적 예측과 결합해 안전 거리를 동적으로 조정하는 MPC를 사용해요.
MPC 구현에서 자주 마주치는 실전 이슈
이론은 깔끔하지만 실제 로봇에서 MPC를 안정적으로 돌리려면 디테일이 많아요. 다음 항목들은 현장 엔지니어가 거의 매번 만나는 주제예요.
예측 지평선과 가중치 튜닝
예측 지평선 N이 너무 짧으면 근시안적 행동이 나오고, 너무 길면 계산 부하가 커져요. 보통 보행 한 주기 정도의 시간(0.5~1초)을 잡되, 가까운 미래는 촘촘하게 먼 미래는 듬성하게 샘플링하는 가변 시간 격자를 쓰면 효율적이에요. Q, R 가중치는 수동 튜닝이 일반적이지만, 베이지안 최적화나 강화학습으로 자동 튜닝하는 연구도 활발해요.
모델 오차와 강건성
실제 로봇은 마찰, 기어백래시, 케이블 텐션 변화 같은 비모델링 동역학을 가져요. 강건 MPC(robust MPC)와 튜브 MPC(tube MPC)는 모델 불확실성 집합을 명시적으로 다뤄 최악의 경우에도 안전을 보장해요. 다만 보수적이 되기 쉬워 성능 손실이 있어요. 그 대안으로 적응형 MPC가 주목받는데, 온라인으로 모델 파라미터를 갱신하면서 점진적으로 정확도를 높여요.
제약 조건 핸들링
관절 한계, 토크 한계, 충돌 한계 같은 하드 제약은 직접 풀이에 포함시키지만, 항상 가능 해(feasible solution)가 존재하리란 보장은 없어요. 이를 위해 슬랙 변수를 도입해 일부 제약을 소프트화하거나, 우선순위 기반 다단계 최적화로 안전 제약을 최상위에 두는 방식이 사용돼요.
상태 추정과 센서 융합
MPC의 입력은 정확한 현재 상태 x₀예요. 실제로는 IMU, 엔코더, 카메라, LiDAR가 만들어내는 잡음 섞인 측정치를 칼만 필터나 인자 그래프 기반 추정기로 합쳐 추정해요. 상태 추정과 MPC가 별도 스레드에서 돌면서 동기화 지연(latency)을 어떻게 보상할 것인가가 또 다른 핵심 주제예요.
학습 기반 제어와 MPC의 결합 동향
최근 5년 동안 가장 흥미로운 흐름은 MPC와 머신러닝의 융합이에요. 둘은 경쟁자가 아니라 상호 보완적이에요.
학습 기반 모델로 MPC 강화하기
해석적 모델로 표현하기 어려운 마찰, 공기역학, 접촉 동역학을 가우시안 프로세스나 신경망으로 학습한 뒤 MPC의 동역학 항으로 삽입하는 접근이 활발해요. ETH 취리히의 Learning-based MPC는 가우시안 프로세스로 잔차 동역학을 학습해 모터 레이싱 시뮬레이션에서 인간 드라이버 수준의 랩 타임을 달성했어요. 트랜스포머 기반 다이내믹스 모델을 사용한 연구도 빠르게 늘고 있어요.
MPC를 정책 학습의 교사로 사용하기
강화학습은 보상 설계와 안전성 보장이 어려워요. 이때 MPC를 전문가 정책(expert policy)으로 두고 신경망 정책이 이를 모방학습으로 흉내내게 하면, 실시간 추론은 신경망의 속도로, 안전성은 MPC의 보장으로 달성할 수 있어요. NVIDIA의 GR00T 시뮬레이션 파이프라인이나 Diffusion Policy 연구 일부가 이 아이디어를 차용해요.
미분 가능한 MPC
Differentiable MPC는 MPC 자체를 미분 가능한 모듈로 만들어 신경망과 함께 종단간(end-to-end) 학습하는 접근이에요. 비용 함수의 가중치나 모델 파라미터를 데이터로부터 학습할 수 있어요. 또 다른 방향은 강화학습의 가치 함수를 MPC의 종단 비용으로 활용하는 방식이에요. Wikipedia의 MPC 항목에서 기초 개념을 더 깊이 살펴볼 수 있어요.
MPC를 시작하려는 분들을 위한 실전 가이드
이론을 어느 정도 익혔다면 실제 코드를 만져보는 게 가장 빠른 학습이에요. 다음은 처음 입문할 때 추천하는 순서예요.
오픈소스 도구 선택
- CasADi: 심볼릭 자동 미분과 다양한 솔버 인터페이스를 제공해요. Python·MATLAB·C++ 지원.
- acados: 실시간 NMPC에 특화된 고성능 솔버. C 코드 생성으로 임베디드 시스템에 배포 가능해요.
- OCS2: ETH 취리히가 공개한 다리 달린 로봇용 MPC 프레임워크예요.
- do-mpc: 파이썬 친화적이고 학습 곡선이 완만해 초보자에게 좋아요.
학습 경로 추천
먼저 도립진자(inverted pendulum)에 대한 선형 MPC를 do-mpc로 구현해보세요. 그다음 2바퀴 모바일 로봇 경로 추종으로 비선형 MPC를 경험하고, 마지막으로 쿼드콥터 호버링이나 매니퓰레이터 충돌 회피로 확장하면 좋아요. 시뮬레이션은 MuJoCo, Isaac Sim, Gazebo가 표준이에요. 실제 하드웨어 이전에는 도메인 랜덤화로 모델 오차에 대한 강건성을 충분히 확보하는 게 중요해요.
실패하지 않는 디버깅 팁
MPC가 발산하거나 진동하면 다음 순서로 점검해보세요. 첫째, 시뮬레이션 모델과 컨트롤러 모델이 일치하는지 확인해요. 둘째, 시간 격자와 적분 방식을 살펴봐요(오일러 vs RK4). 셋째, 가중치 행렬의 스케일이 적절한지 봐요. 넷째, 솔버의 수렴 상태를 로깅해 SQP 반복 수와 잔차를 모니터링해요. 다섯째, 웜 스타팅 실패가 가장 흔한 원인이므로 이전 해를 적절히 변환해서 다음 샘플에 넘기는지 확인해요.
결론: MPC는 로봇의 미래를 설계하는 언어예요
모델 예측 제어는 단순한 제어 기법을 넘어 로봇이 자기 미래를 미리 그리고 행동을 선택하는 사고 방식을 제공해요. 제약 조건과 다변수를 자연스럽게 다루고, 모델·학습·최적화를 잇는 다리 역할을 한다는 점에서 앞으로 로봇 분야의 핵심 인프라로 자리잡을 거예요. 학습 기반 동역학, 미분 가능한 최적화, 강화학습과의 융합은 점점 더 빠르게 진화하고 있어요. 이 글이 MPC에 한 발 내딛는 분들께 좋은 지도가 됐길 바라요.