자율주행 제어 판단 알고리즘: MPC(Model Predictive Control) 기반 곡선로 횡방향 제어 원리

자율주행 기술에서 중요한 과제 중 하나는 차량이 도로의 곡선을 따라 안정적으로 주행하도록 조향을 제어하는 것이다. 직선 도로에서는 목표 경로를 유지하는 것이 비교적 단순하지만, 곡선 도로에서는 차량 속도와 회전 반경, 타이어의 접지력, 조향 응답 시간 등이 복합적으로 작용한다. 조향을 지나치게 크게 입력하면 차량이 목표 경로를 벗어날 수 있고, 반대로 조향이 늦으면 곡선 바깥쪽으로 밀려날 위험이 커진다.

이러한 문제를 해결하는 데 활용되는 제어 기법이 **MPC(Model Predictive Control, 모델 예측 제어)**다. MPC는 차량의 현재 상태와 수학적 모델을 바탕으로 가까운 미래의 움직임을 예측하고, 여러 제어 입력 중 목표 경로를 가장 잘 따라갈 수 있는 입력을 계산한다. 이번 글에서는 MPC의 기본 원리부터 곡선로 횡방향 제어 과정, 기존 제어 방식과의 차이, 실제 자율주행 시스템에 적용할 때의 한계까지 살펴본다.

1. 자율주행에서 횡방향 제어란 무엇인가?

차량 제어는 일반적으로 종방향 제어와 횡방향 제어로 구분한다. 종방향 제어는 가속과 감속을 통해 목표 속도를 유지하는 역할을 한다. 횡방향 제어는 운전대에 해당하는 조향 입력을 조절해 차량이 목표 주행 경로를 따라가도록 하는 기능이다.

횡방향 제어 시스템은 카메라, 라이다, 지도 또는 위치 추정 시스템 등에서 얻은 정보를 바탕으로 목표 경로를 설정하고, 차량의 현재 위치와 방향을 비교한다. 이때 차량이 목표 경로에서 얼마나 벗어났는지를 나타내는 횡방향 오차와 차량의 진행 방향이 목표 경로의 방향과 얼마나 다른지를 나타내는 방향 오차가 중요한 기준이 된다.

예를 들어 왼쪽으로 휘어진 도로에 진입했는데 차량의 방향이 직선에 가깝게 유지된다면, 차량은 목표 경로보다 바깥쪽으로 벗어날 수 있다. 안정적인 주행을 위해서는 단순히 현재 위치의 오차만 줄이는 것이 아니라, 차량이 앞으로 어느 방향으로 움직일지도 함께 고려해야 한다.

2. MPC(Model Predictive Control)의 기본 원리

MPC는 차량의 현재 상태를 출발점으로 설정하고, 일정한 미래 시간 구간에서 차량이 어떻게 움직일지 예측하는 방식이다. 이후 목표 경로와의 오차, 조향 입력의 크기, 조향 변화량 등을 종합적으로 평가해 가장 적절한 제어 입력을 계산한다.

핵심은 한 번 계산한 조향 명령을 계속 사용하는 것이 아니라는 점이다. MPC는 실제 차량이 움직인 뒤 새로운 센서 정보를 받아 차량 상태를 다시 추정하고, 최적화 계산을 반복한다. 이러한 방식을 이동 지평선 제어 또는 반복 예측 제어라고 부른다.

일반적인 MPC의 작동 과정은 다음과 같다.

  1. 차량 상태 추정: 현재 위치, 진행 방향, 속도 등을 파악한다.
  2. 목표 경로 설정: 차량이 따라가야 할 기준 경로를 일정한 거리 또는 시간 구간으로 설정한다.
  3. 미래 움직임 예측: 차량 모델을 이용해 다양한 조향 입력에 따른 예상 궤적을 계산한다.
  4. 비용 함수 최적화: 경로 오차와 조향 입력, 조향 변화량 등을 고려해 적절한 제어 입력을 찾는다.
  5. 조향 명령 적용: 계산된 입력 중 첫 번째 제어 입력을 차량에 전달한다.
  6. 상태 갱신 및 재계산: 차량의 실제 움직임을 반영해 다음 제어 주기의 계산을 시작한다.

이처럼 MPC는 미래의 움직임을 예측하면서 현재의 제어 입력을 결정한다. 따라서 곡선의 형태가 미리 알려져 있거나 차량 주변의 경로 정보를 안정적으로 확보할 수 있는 상황에서 유용하게 활용될 수 있다.

3. 곡선로 횡방향 제어에 사용되는 차량 모델

MPC가 미래의 차량 움직임을 계산하려면 차량의 동작을 수학적으로 표현한 모델이 필요하다. 기본적인 자율주행 제어 연구에서는 차량을 앞바퀴와 뒷바퀴의 움직임으로 단순화한 자전거 모델(Bicycle Model)을 자주 사용한다. 실제 차량에는 네 개의 바퀴가 있지만, 제어 원리를 분석할 때는 앞바퀴와 뒷바퀴를 각각 하나의 대표 바퀴로 간주할 수 있다.

단순화된 자전거 모델은 차량의 속도, 조향각, 휠베이스 등을 이용해 차량의 진행 방향과 위치가 어떻게 변하는지 예측한다. 휠베이스는 앞바퀴 축과 뒷바퀴 축 사이의 거리다. 일반적으로 차량 속도가 높거나 곡선의 반경이 작을수록 조향 제어의 정확성과 차량 모델의 적절성이 중요해진다.

다만 단순한 운동학적 모델은 타이어가 미끄러지는 현상이나 차체의 횡방향 힘을 충분히 표현하지 못할 수 있다. 따라서 속도가 높거나 노면 상태가 불안정한 조건에서는 차량의 질량, 요 레이트, 횡방향 속도, 타이어 특성 등을 고려한 동역학 모델이 필요할 수 있다.

어떤 모델을 선택할지는 제어 성능뿐 아니라 계산 자원, 차량 속도, 도로 조건과 시스템의 안전 요구 사항에 따라 달라진다.

4. MPC의 비용 함수는 어떻게 조향 방향을 결정할까?

MPC의 핵심 요소 중 하나는 비용 함수(Cost Function)다. 비용 함수는 각 제어 입력에 따른 예상 주행 결과를 수치로 평가하는 기준이다. 제어 시스템은 이 비용을 최소화하는 방향으로 조향 입력을 계산한다.

곡선로 횡방향 제어에서는 일반적으로 다음과 같은 항목을 고려할 수 있다.

  • 횡방향 오차: 차량이 목표 경로에서 얼마나 벗어나는지 평가한다.
  • 방향 오차: 차량의 진행 방향과 목표 경로의 방향이 얼마나 다른지 평가한다.
  • 조향 입력: 지나치게 큰 조향각이 발생하지 않도록 제어 입력에 비용을 부여한다.
  • 조향 변화량: 조향 입력이 급격하게 변하지 않도록 변화량을 평가한다.
  • 안전 제약 조건: 차량의 상태와 조향 입력이 설정된 운용 한계를 벗어나지 않도록 제한한다.

개념적인 비용 함수는 다음과 같이 나타낼 수 있다.

[
J=\sum_{k=0}^{N-1}
\left(
q_e e_y(k)^2+
q_\psi e_\psi(k)^2+
r_\delta \delta(k)^2+
r_{\Delta\delta}\Delta\delta(k)^2
\right)
+J_{\mathrm{terminal}}
]

여기서 (e_y)는 횡방향 오차, (e_\psi)는 방향 오차, (\delta)는 조향각, (\Delta\delta)는 조향각의 변화량을 의미한다. (q_e), (q_\psi), (r_\delta), (r_{\Delta\delta})는 각 항목의 중요도를 조절하는 가중치다. (J_{\mathrm{terminal}})은 예측 구간의 마지막 상태를 평가하는 항이며, 실제 설계에서는 필요에 따라 포함한다.

이 식은 이해를 돕기 위한 일반적인 예시이며, 실제 자율주행 시스템의 비용 함수가 모두 같은 형태인 것은 아니다. 가중치를 어떻게 설정하는지에 따라 경로 추종 정확도와 조향의 부드러움 사이의 균형이 달라진다. 경로 오차를 지나치게 강하게 줄이도록 설정하면 조향이 급격해질 수 있고, 조향 변화량을 너무 크게 억제하면 급격한 곡선에 충분히 대응하지 못할 수 있다.

따라서 MPC 설계에서는 도로 형태와 차량 특성, 속도 범위를 고려해 각 항목의 가중치를 검증해야 한다.

5. 곡선로에서 MPC가 작동하는 과정

곡선로에서 MPC가 조향을 제어하는 상황을 살펴보자. 차량이 오른쪽으로 휘어진 도로에 접근하면 시스템은 먼저 목표 경로의 곡률과 차량의 현재 상태를 확인한다. 이후 여러 조향 입력을 가정하고, 각 입력에 따라 차량이 미래에 어느 위치를 통과할지 예측한다.

예측 결과 중 목표 경로와의 오차가 작고 조향 변화가 지나치게 크지 않은 경로가 선택될 수 있다. 최적화 결과로 계산된 첫 번째 조향 입력이 차량에 적용되며, 다음 제어 주기에서는 갱신된 위치와 방향을 기준으로 다시 계산한다.

이 과정에서 중요한 것은 예측 구간의 길이다. 예측 구간이 너무 짧으면 멀리 앞에 있는 곡선 변화에 충분히 대응하기 어려울 수 있다. 반대로 예측 구간이 길어지면 더 많은 미래 경로를 고려할 수 있지만, 계산량이 증가하고 차량 모델의 예측 오차가 누적될 가능성도 있다.

또한 차량 속도에 따라 같은 곡선이라도 필요한 제어 수준이 달라진다. 속도가 높을수록 차량의 움직임이 조향 변화에 민감해질 수 있으므로, 속도와 곡률을 함께 고려하는 설계가 중요하다. 실제 시스템에서는 MPC가 조향 명령을 계산하더라도 차량 안정성 제어, 속도 제어 및 안전 감시 기능과 협력하도록 구성할 수 있다.

6. MPC와 PID 제어의 차이

PID 제어는 현재의 오차와 오차의 누적값, 오차의 변화율 등을 이용해 제어 입력을 계산하는 대표적인 제어 방식이다. 구조가 비교적 단순하고 계산 부담이 작다는 장점이 있어 다양한 차량 제어 시스템에서 활용된다.

반면 MPC는 차량 모델과 미래 경로를 이용해 여러 단계의 움직임을 예측하고, 제약 조건을 포함한 최적화 문제를 풀 수 있다. 이 때문에 곡률 변화나 조향 입력 제한을 명시적으로 고려해야 하는 문제에 적합할 수 있다.

하지만 MPC가 모든 상황에서 PID보다 우수한 것은 아니다. MPC는 차량 모델의 정확도와 최적화 계산 시간에 영향을 받으며, 시스템을 설계하고 검증하는 과정도 복잡할 수 있다. PID 역시 적절하게 조정하면 특정 운행 조건에서 충분한 성능을 제공할 수 있다.

실제 제어 시스템에서는 요구 성능과 계산 자원, 안전 요구 사항을 바탕으로 방식을 선택하며, 서로 다른 제어 기법을 조합하는 설계도 가능하다.

7. 실제 자율주행 차량에 적용할 때의 한계

MPC 기반 횡방향 제어는 미래 경로를 예측한다는 장점이 있지만, 실제 도로에서는 여러 변수가 제어 성능에 영향을 미친다.

첫째, 차량 모델과 실제 차량 사이에 차이가 존재한다. 타이어의 마모 상태, 적재량, 노면 마찰, 강한 횡풍 등은 차량의 움직임을 변화시킬 수 있다. 모델이 이러한 변화를 충분히 반영하지 못하면 예측 궤적과 실제 궤적 사이에 오차가 발생한다.

둘째, 위치 추정과 경로 정보의 정확도가 중요하다. 차선 인식이 불안정하거나 위치 추정 오차가 커지면 MPC가 올바르지 않은 기준 경로를 따라갈 수 있다. 따라서 센서 데이터의 품질을 확인하고, 이상 상황에서 제어를 제한하거나 안전한 상태로 전환하는 기능이 필요하다.

셋째, 최적화 계산은 정해진 시간 안에 완료되어야 한다. 계산이 지연되면 이미 차량 상태가 달라진 뒤의 제어 입력을 적용하게 될 수 있다. 이를 줄이기 위해 모델을 적절히 단순화하고, 예측 구간과 최적화 알고리즘을 조정하며, 제어 주기별 실행 시간을 검증해야 한다.

마지막으로, 시뮬레이션에서 좋은 성능을 보였다는 사실만으로 실제 도로에서도 안전하다고 단정할 수는 없다. 다양한 속도와 곡률, 노면 상태, 센서 오차를 포함한 시험이 필요하며, 시뮬레이션과 실제 차량 시험 결과를 비교해 모델과 제어기를 개선해야 한다.

8. MPC 기반 곡선로 제어의 발전 방향

앞으로의 자율주행 제어 기술은 MPC와 실시간 차량 상태 추정, 도로 마찰 추정, 속도 계획 기능을 연계하는 방향으로 발전할 수 있다. 예를 들어 전방 도로의 곡률이 커지거나 노면이 미끄럽다고 추정되면, 경로 추종 제어와 속도 계획이 함께 대응하도록 설계할 수 있다.

또한 차량 모델의 불확실성을 고려하는 강인 MPC(Robust MPC)나 확률적 MPC(Stochastic MPC)와 같은 방법도 연구되고 있다. 이러한 기법은 모델 오차나 불확실성이 존재하는 상황을 더 체계적으로 고려하는 데 목적이 있다. 다만 실제 적용 가능성과 성능은 알고리즘 설계, 계산 자원, 센서 정확도 및 검증 결과에 따라 달라진다.

MPC 기반 곡선로 횡방향 제어는 자율주행 차량이 목표 경로를 안정적으로 추종하도록 돕는 중요한 기술이다. 차량의 미래 움직임을 예측하고 경로 오차와 조향 변화량을 함께 고려한다는 점에서 유용하지만, 차량 모델의 정확성, 실시간 계산 성능, 센서 품질과 안전 검증이 함께 확보되어야 한다.

결국 안정적인 자율주행은 하나의 알고리즘만으로 완성되지 않는다. 정확한 인지와 위치 추정, 적절한 경로 계획, 예측 기반 제어, 그리고 예외 상황에 대응하는 안전 설계가 유기적으로 연결될 때 실제 도로 환경에서 신뢰할 수 있는 주행 시스템을 구현할 수 있다.

참고 자료 및 추가 학습 방향

MPC의 이론과 자율주행 차량 제어를 더 깊이 이해하려면 다음 자료를 참고할 수 있다.

위 자료는 추가 학습을 위한 출발점이다. 실제 게시할 때는 글에서 인용한 특정 개념이나 수치가 있다면 해당 내용을 직접 뒷받침하는 문서 또는 논문을 확인해 구체적인 제목과 링크를 연결하는 것이 좋다.

댓글 남기기