Mintime Optimization: 동역학을 직접 푸는 최소시간 레이스라인
IQP와 SP는 곡률이나 이동 거리 같은 기하학적 기준으로 빠른 라인을 근사하는 방식입니다. 두 방식 모두 차량의 dynamics를 활용하지 않고 랩타임 자체도 직접 계산하지 않기 때문에, 차량이 실제로 낼 수 있는 성능의 한계까지 라인을 밀어붙이지는 못한다는 단점이 있습니다.
mintime(opt_mintime)은 여기서 한 걸음 더 나아가, 차량 동역학과 타이어 모델을 직접 풀어 이론상 가장 빠른 라인을 찾는 최적화입니다. 본 포스트에서는 mintime이 IQP·SP와 무엇이 다른지, 어떤 원리로 라인과 속도를 함께 구하는지, 그리고 어떤 파라미터로 동작하는지를 다루고, UNICORN Racing 팀이 실제 운영에서 이 방식을 채택하지 않는 이유까지 정리합니다.
mintime은 스택에 갖춰진 선택적 기능이며, UNICORN Racing 팀이 실제 운영에서 사용하는 방식은 아닙니다. 이 글은 원리와 사용법을 소개하는 데 목적이 있으며, 팀이 왜 이 방식을 택하지 않는지는 마지막 “mintime에 대한 생각”에서 다룹니다.
설계 목표
- 랩타임의 직접 최소화: IQP(최소 곡률)와 SP(최단 경로)가 “기하학적으로 좋은 라인”을 근사하는 데 비해, mintime은 랩타임 자체를 목적함수로 두고 차량 동역학을 만족하는 최적 라인과 속도 프로파일을 동시에 찾습니다.
- 선택적·고비용: CasADi/IPOPT 기반의 비선형 최적제어(OCP)를 풀기 때문에 계산이 무겁고 파라미터가 많습니다. 기본적으로 비활성화되어 있으며(
enable_mintime=false), 필요할 때만 활성화합니다.
개요: IQP/SP와 무엇이 다른가
IQP와 SP는 alpha(법선 변위)를 변수로 두고 곡률이나 이동 거리를 줄이는 기하학적 목표를 최적화합니다. 곡률이 작을수록 빠르게 주행할 수 있다는 경험적 사실에 기대는 방식이며, 랩타임 자체를 직접 계산하지는 않습니다.
mintime은 랩타임을 직접 목적함수로 삼습니다. 트랙을 따라가는 시간 최소화 최적제어 문제(OCP)를 세우고, 차량의 운동 방정식(상태: 횡위치·heading·속도·슬립 등), 타이어 마찰 한계(Magic Formula), 액추에이터 동특성을 제약으로 포함합니다. 그 결과 동역학 제약을 만족하는 범위에서 가장 빠른 라인과 속도를 함께 구합니다.
| IQP | SP | mintime | |
|---|---|---|---|
| 변수 | alpha | alpha | alpha + 속도 + 차량 상태 |
| 목적 | 곡률² 최소 | 거리 최소 | 랩타임 최소 |
| 모델 | 기하 | 기하 | 동역학 + 타이어 + 액추에이터 |
| 풀이 | 반복 QP | 단일 QP | 비선형 OCP (CasADi/IPOPT) |
| 속도 프로파일 | 사후 계산 | 사후 계산 | 최적화에 내장 |
| 비용 | 보통 | 빠름 | 느림 (수십 초~분) |
핵심 아이디어: 시간 최소화 OCP
mintime은 트랙 위치 $s$ 를 독립변수로 하는 최적제어 문제를 풉니다. 직관적으로는 “트랙의 각 지점에서 차량이 어떤 상태로, 얼마나 빠르게 지나갈지”를 모두 미지수로 두고, 전체 통과 시간을 최소화합니다.
\[\min_{u} \; T = \int_{0}^{s_{end}} \frac{1}{\dot{s}} \, ds \quad \text{s.t.} \quad \begin{cases} \dot{x} = f(x, u) \\ g(x, u) \le 0 \end{cases}\]수식의 각 항
- $x$: 차량 상태 (횡변위, heading 오차, 속도, 슬립각 등)
- $u$: 제어 입력 (조향·구동/제동)
- $f$: 차량 운동 방정식
타이어 힘은 Magic Formula(Pacejka)로 모델링되어, 종/횡 그립의 결합 한계(마찰원)를 넘지 못하도록 제약됩니다.
이 문제는 닫힌 해가 없어, CasADi로 이산화한 뒤 IPOPT(내부점 비선형 솔버)로 수치적으로 풉니다. 비선형 최적제어를 반복적으로 풀어야 하므로 계산 비용이 크다는 단점이 있습니다.
경로와 속도의 동시 최적화
IQP·SP가 라인만 최적화하고 속도는 사후에 계산하는 것과 달리, mintime은 라인과 속도 프로파일을 하나의 최적화 안에서 함께 구합니다. 동역학 제약 아래에서 랩타임이 최소가 되도록 라인과 속도를 동시에 결정하기 때문에, 레이싱 도메인의 차량 동역학을 반영한 전략적인 경로 생성이 가능합니다.
mintime의 결정적 차이는 속도가 사후 계산이 아니라 최적화 안에서 함께 결정된다는 점입니다. “어디로 달릴지”와 “얼마나 빠르게 달릴지”를 따로 정하지 않고, 동역학 한계 안에서 가장 빠른 조합을 한 번에 찾습니다.
파라미터
mintime은 두 곳의 설정을 함께 사용합니다.
stack_master/config/global_planner_params.yaml: 최적화 방식과 무관하게 공통으로 쓰이는 실행 파라미터(safety_width,required_laps등). mintime의 유효 차폭(width_opt)도 이safety_width값으로 override됩니다.stack_master/config/CAR/racecar_f110.ini: mintime 전용 파라미터. 아래 세 개의 큰 섹션이 여기에 정의되며,enable_mintime이 켜져 mintime 최적화가 선택될 때만 파싱됩니다.
optim_opts_mintime (최적화 동작)
| 키 | 값(CAR) | 의미 |
|---|---|---|
width_opt | 0.8 | mintime이 확보하는 유효 차폭 [m] (safety_width로 override) |
penalty_delta | 10.0 | 조향 변화율 페널티 (제어를 부드럽게) |
penalty_F | 0.01 | 구동력 변화율 페널티 |
mue | 0.6 | 마찰계수 (타이어 D 파라미터: D = F_z · mue) |
safe_traj | false | true면 가속도를 추가로 제한 |
vehicle_params_mintime (차량 동역학)
질량 중심·관성·축거 등 OCP가 운동 방정식에 쓰는 물성입니다. (CAR 기준 일부)
| 키 | 값 | 의미 |
|---|---|---|
wheelbase_front / rear | 0.15875 / 0.17145 | 앞/뒤 축거 [m] |
I_z | 0.04712 | 요 관성 [kg·m²] |
cog_z | 0.074 | 무게중심 높이 [m] |
power_max | 267 | 최대 출력 [W] |
f_drive_max / f_brake_max | 33.4 / 47.4 | 최대 구동/제동력 [N] |
delta_max | 0.34 | 최대 조향각 [rad] |
앞/뒤 축거는 wheelbase_front + wheelbase_rear로 합산되어 전체 wheelbase가 자동 계산됩니다.
tire_params_mintime (타이어 Magic Formula)
Pacejka Magic Formula의 B·C·E 계수들. 타이어 힘-슬립 곡선의 모양을 결정합니다.
| 키 | 값 | 의미 |
|---|---|---|
B_front / B_rear | 7.4 / 7.4 | 강성 계수 |
C_front / C_rear | 1.2 / 1.2 | 형상 계수 |
E_front / E_rear | 0.85 / 0.85 | 곡률 계수 |
f_z0 | 8.6 | 공칭 수직력 [N] |
pwr_params_mintime(파워트레인 열 모델)은pwr_behavior=false로 꺼져 있어 기본 흐름에서는 사용되지 않습니다. 모터·배터리·인버터 온도까지 고려하는 고급 옵션입니다.
산출물
mintime 결과도 IQP/SP와 동일한 포맷(s, x, y, psi, kappa, vx, ax)을 따르며, 같은 경로로 global_waypoints.json에 저장됩니다.
실행
mintime은 IQP와 동일하게 raceline 생성 런치로 실행하며, enable_mintime 인자를 활성화하면 최적화 모듈이 mintime 옵션으로 교체됩니다.
1
ros2 launch stack_master raceline_generator.launch.xml map:=<map> enable_mintime:=true
같은 트랙에 대해 최소곡률(mincurv)과 mintime이 만들어 내는 궤적을 비교하면, 두 방식이 코너를 처리하는 방식의 차이를 확인할 수 있습니다.
왼쪽: 최소곡률(mincurv) 궤적 · 오른쪽: mintime 궤적
mintime 주행 영상
mintime에 대한 생각
장점
차량의 동역학을 정확하게 측정할 수 있다면, mintime은 이론상 최대 효율을 갖는 전략적인 레이스 라인을 생성할 수 있습니다. 곡률이나 거리 같은 대리 목표가 아니라 랩타임 자체를 최적화하므로, 차량 성능을 한계까지 끌어낸 경로를 얻을 수 있습니다.
단점
- 차량의 동역학을 정확하게 측정하기 어렵습니다.
- 비선형 최적화 특성상 솔루션이 수렴하지 못하고 실패하는 경우가 자주 발생합니다.
- 제어기 성능이나 액추에이터 지연처럼 모델링하기 어려운 요소를 반영하기 어렵습니다.
UNICORN Racing 팀에서의 적용
UNICORN Racing 팀은 차량 동역학을 정확하게 알기 어려운 상황에서, 다양한 주행 상황에 robust하게 대응하기 위해 여러 플래너를 함께 운용하는 전략을 택하고 있습니다. 각 플래너가 내놓은 궤적에는 별도의 Velocity Planner가 마찰 타원과 곡률을 기반으로 속도를 입히며, 이 속도 프로파일이 곧 성능을 좌우하는 핵심 튜닝 대상이 됩니다.
즉 팀의 튜닝은 곡률을 기준으로 속도를 다듬는 방식이므로, 궤적의 곡률이 매끄러울수록 유리합니다. 그런데 mintime이 만든 궤적은 최소곡률에 비해 곡률이 고르지 못해, 곡률에 의존하는 이 튜닝 파이프라인과는 잘 맞지 않습니다. 이러한 이유로 팀은 실제 운영에서 mintime을 사용하지 않습니다.
마무리
mintime은 곡률이나 거리 같은 대리 목표 대신 랩타임 자체를 목적함수로 삼아, 차량 동역학과 타이어 모델을 제약으로 넣고 라인과 속도를 한 번에 최적화하는 방식입니다. 동역학을 정확히 측정할 수 있다면 이론상 가장 빠른 라인을 얻을 수 있는 강력한 도구이지만, 측정의 어려움과 솔버의 불안정성, 그리고 곡률이 매끄럽지 못하다는 특성 때문에 UNICORN Racing 팀의 곡률 기반 튜닝 파이프라인에서는 채택하지 않았습니다. 스택에는 기능이 갖춰져 있으므로, 차량 동역학을 정밀하게 확보한 환경이라면 하나의 선택지로 고려할 수 있습니다.



