자율주행 리서치 - MPCC (ETH Zurich IfA, 2015): '경계선을 따라 최대한 빠르게' — 인용 598회, 1:43 RC카를 3 m/s(환산 약 465 km/h)·50 Hz 임베디드 제어로 마찰 한계까지 몰아붙인 컨투어링 MPC의 원형 (⭐1,875 · Apache-2.0 · F1TENTH·AMZ Driverless 계보의 공통 조상)

2026-10-01

주제 정보

  • 유형: 자율주행 스택의 제어(control) 계층 참조 구현 — 플래닝이 넘겨준 경로를 차량의 마찰 한계까지 추종하는 레이싱 컨트롤러. 인식·예측·플래닝을 다룬 이 블로그의 앞선 글들 뒤에 놓이는 '마지막 칸'이다
  • 프로젝트: MPCC — Model Predictive Contouring Controller for Autonomous Racing (alexliniger/MPCC)
  • 개발: ETH Zurich 자동제어연구소(IfA, Automatic Control Laboratory) — Alexander Liniger · Alexander Domahidi · Manfred Morari. C++와 MATLAB 두 구현이 함께 들어 있다
  • 논문: Optimization-based autonomous racing of 1:43 scale RC cars — Optimal Control Applications and Methods 36(5), 2015, pp.628–647 · arXiv 1711.07300(2017-11-20 제출) · DOI 10.1002/oca.2123
  • 인용: Semantic Scholar 598회(영향력 있는 인용 56회) · OpenAlex 549회 — 제어·로보틱스 계열에서 10년 넘게 인용되는 '레이싱 제어의 기준 논문'
  • GitHub 지표: ⭐1,875 · 🍴423 · 열린 이슈 9 · C++(+MATLAB) · Apache-2.0(LICENSE 파일 확인) · 2018-10-01 생성 — 오늘로 정확히 8년 · 기본 브랜치 master의 마지막 커밋 2021-11-11 · 릴리스·태그 0개 · 약 16MB
  • C++ 구현의 추가 기능: README에 명시된 대로 AMZ Driverless(ETH Formula Student 팀) 스택에서 온 기능이 더해져 있다 — arXiv 1905.05150
  • 원문/코드: https://github.com/alexliniger/MPCC

핵심 내용

트랙을 도는 문제에는 서로 충돌하는 두 요구가 있다 — 경로를 벗어나지 않을 것과 최대한 빠를 것. 고전적 2단 구조(경로 플래너 + 트래킹 NMPC)는 플래너의 예측 지평이 짧고 지평 전체의 속도를 상수로 고정하기 때문에, S자·시케인처럼 곡률이 연속으로 바뀌는 구간에서 최적 라인을 놓치고 브레이크를 더 밟는다. MPCC는 이 두 계층을 하나의 비선형 최적화 문제로 합친다.

왜 유명한가 / 활용 가치

시사점 및 결론

인식이 좋고 예측이 정확하고 플래너가 최적이어도, 그 결과가 20 ms 안에 차량이 실제로 낼 수 있는 조향·구동 입력으로 바뀌지 않으면 자율주행은 일어나지 않는다. MPCC의 메시지는 두 가지다. 하나는 계층을 합치면 더 빠르다 — 경로 플래너와 추종 제어기를 분리해 두면 플래너의 시야가 전체 성능을 제한한다. 다른 하나는 그 대가는 계산 시간이며, ms 단위 QP 솔버로 지불한다는 것. '느린 트랙에서 최적 라인'과 '한계에서 미끄러지는 차량'을 동시에 다루는 문제를, 딥러닝 이전의 도구로 실차 속도로 해결한 사례다.

2026년의 관점에서 이 저장소는 낡은 코드가 아니라 실시간 제약 아래에서 최적성을 밀어붙이는 방법의 원형이다. end-to-end 학습이 스택을 삼키는 흐름에서도 차량 한계와 안전 제약을 명시적으로 다루는 MPC 계보는 사라지지 않고 오히려 학습과 결합하고 있다(learning-based MPC, GP 모델, RL 트랙 플래너). 그래서 이 글의 실용적 유산은 코드가 아니라 질문 습관이다 — 어떤 컨트롤러를 보더라도 "몇 ms에 풀리는가, 트랙을 몇 초에 도는가, 데드라인을 몇 % 놓치는가"를 함께 적어 확인하는 태도.

원문: 논문 arXiv 1711.07300 · DOI 10.1002/oca.2123 · 코드 https://github.com/alexliniger/MPCC · 확장 계보 AMZ Driverless (arXiv 1905.05150)

목록으로 돌아가기