예측·계획·제어
센서와 인지가 "지금 주변에 무엇이 어디에 있는가"에 답했다면, 이제 차는 "그래서 어떻게 움직일 것인가"를 정해야 한다. 주변 차와 보행자가 몇 초 뒤 어디에 있을지 예측하고, 목적지까지의 길을 찾고, 차로를 바꿀지 기다릴지 판단하고, 승객이 편안하면서도 부딪히지 않는 궤적을 그린 다음, 조향과 가감속으로 그 궤적을 실제로 따라간다. 이 장은 그 판단과 조작의 사슬을 위에서 아래로 따라 내려가며 하나씩 손으로 돌려 본다.
- 경로 탐색 → 행동 결정 → 궤적 계획 → 제어로 이어지는 계층 구조와 각 층의 시간 규모를 설명한다.
- 등속 모델, 차로 기반 모델, 다중 가설 예측의 차이와 한계를 비교한다.
- 다익스트라와 A*의 탐색 과정을 이해하고 휴리스틱이 하는 일을 설명한다.
- 프레네 좌표계와 5차 다항식으로 저크가 작은 차로 변경 궤적을 만들고 비용으로 고른다.
- 곡률과 횡가속도 한계로부터 코너 제한 속도와 속도 프로파일을 계산한다.
- 퓨어 퍼슈트, 스탠리, MPC가 궤적을 따라가는 원리와 조정 변수의 영향을 설명한다.
인지 다음에 오는 일
19장의 인지와 측위는 차 주변의 세계를 숫자로 바꿔 놓았다. 내 차의 위치와 자세, 차로의 형상, 주변 물체의 위치·속도·종류가 초당 수십 번 갱신된다. 하지만 이 정보만으로는 스티어링 휠이 한 눈금도 돌아가지 않는다. 사람이 운전할 때 머릿속에서 일어나는 일을 떠올려 보자. 내비게이션이 알려 준 길을 따라가다가, 앞의 느린 트럭을 보고 추월을 마음먹고, 옆 차로의 빈틈을 확인한 뒤, 부드럽게 핸들을 꺾어 차로를 옮긴다. 이 과정에는 서로 다른 규모의 결정이 층층이 쌓여 있다.
자율주행 소프트웨어도 같은 문제를 여러 층으로 나누어 푼다. 한 번에 "목적지까지의 모든 조향각"을 계산하는 것은 불가능에 가깝기 때문이다. 위층일수록 멀리 보고 천천히 결정하며, 아래층일수록 가까이 보고 빠르게 반응한다.
| 층 | 질문 | 출력 | 대표 기법 |
|---|---|---|---|
| 예측 | 다른 차와 보행자는 어디로 갈까 | 물체별 미래 궤적과 확률 | 운동 모델, 차로 기반 가설, 학습 모델 |
| 경로 탐색 | 어느 길로 갈까 | 도로·차로의 순서 | 다익스트라, A* |
| 행동 결정 | 지금 무엇을 할까 | 행동 목표(차로 변경, 정지선 정지 등) | 상태 기계, 비용 기반 선택 |
| 궤적 계획 | 정확히 어떤 선을 어떤 속도로 그릴까 | 수 초 길이의 궤적 | 다항식 샘플링, 격자 탐색, 최적화 |
| 제어 | 그 선을 따라가려면 얼마나 꺾고 밟을까 | 조향·가속·제동 명령 | PID, 퓨어 퍼슈트, 스탠리, LQR, MPC |
층을 나누면 각 층을 따로 설계하고 시험할 수 있다는 장점이 있다. 대신 층 사이의 약속이 어긋나면 문제가 생긴다. 행동 결정이 "차로를 바꿔라"라고 했는데 궤적 계획이 차의 운동 한계 안에서 그런 궤적을 찾지 못할 수 있다. 그래서 아래층은 실패를 위층에 알리고, 위층은 다른 행동을 고르는 되먹임이 반드시 필요하다. 최근에는 이 층들을 하나의 신경망으로 묶으려는 시도도 활발한데, 이는 장의 끝과 21장에서 다룬다.
예측: 다른 차의 몇 초 뒤
계획은 미래에 대한 것이므로, 지금의 장면만으로는 부족하다. 교차로에 다가오는 저 차가 3초 뒤에 내 앞을 가로지를지, 속도를 줄여 우회전할지에 따라 내가 할 일이 달라진다. 예측(prediction)은 인지가 추적해 준 물체의 현재 상태(위치, 속도, 방향, 종류)를 받아 앞으로 대표적으로 약 3~8초 동안의 위치를 내놓는다.
운동 모델로 미는 예측
가장 단순한 방법은 "지금 하던 대로 계속한다"고 가정하는 것이다. 등속 모델(Constant Velocity, CV)은 현재 속도 벡터를 그대로 연장한다.
회전하고 있는 차에는 요 레이트까지 유지된다고 보는 등속 회전 모델(Constant Turn Rate and Velocity, CTRV)이 더 맞는다. 이런 운동 모델은 칼만 필터의 예측 단계와 같은 식이며, 1초 이내의 짧은 구간에서는 꽤 정확하다. 문제는 그다음이다. 도로가 굽어 있으면 등속 모델은 차를 도로 밖으로 내보내고, 교차로 앞에서 감속 중인 차에 등가속 모델을 적용하면 몇 초 뒤에는 뒤로 달리는 차가 된다. 운동 모델은 물리는 알지만 도로와 의도는 모른다.
차로를 아는 예측, 여러 가설
차는 대개 차로를 따라 달린다. 그래서 정밀 지도의 차로 중심선을 가져와 "이 차는 이 차로를 따라간다"고 가정하면 훨씬 먼 미래까지 그럴듯한 예측이 나온다. 다만 교차로처럼 갈 수 있는 차로가 여럿이면 하나만 고를 수 없다. 이때는 직진·좌회전·우회전 각각을 가설로 두고, 관측이 각 가설과 얼마나 맞는지에 따라 확률을 매긴다.
예측에는 위치뿐 아니라 불확실성도 함께 붙는다. 먼 미래일수록 가능한 위치가 넓게 퍼지므로, 계획 쪽은 확률이 낮더라도 위험한 가설을 완전히 무시하지 않도록 설계한다. 아래 시뮬레이터에서 서쪽에서 교차로로 들어오는 차를 세 가지 방법으로 예측해 보자.
교차로 진입 차량의 예측 비교
상호작용
지금까지의 예측은 상대를 내 행동과 무관하게 움직이는 물체로 취급했다. 실제 도로에서는 그렇지 않다. 내가 차로 변경을 시작하면 뒤차가 속도를 줄여 주고, 내가 머뭇거리면 상대가 먼저 지나간다. 예측과 계획을 완전히 분리하면 혼잡한 합류 구간에서 "빈틈이 생길 때까지 영원히 기다리는" 문제가 생긴다. 이를 줄이려고 내 후보 궤적별로 상대의 반응을 조건부로 예측하거나, 여러 참여자의 미래를 한꺼번에 추론하는 학습 기반 모델을 쓴다. 최근의 예측 모델은 지도와 주변 물체의 과거 궤적을 입력으로 받아 여러 개의 미래 궤적과 그 확률을 직접 출력한다.
전역 경로 탐색: 다익스트라와 A*
가장 위층의 계획은 내비게이션과 같은 일을 한다. 도로망을 그래프로 본다. 교차로나 차로의 분기점이 노드, 그 사이의 도로 구간이 간선이며, 간선에는 거리나 예상 소요 시간 같은 비용이 붙는다. 자율주행에서는 도로 단위가 아니라 차로 단위의 그래프를 쓰고, 차로 변경도 비용이 있는 간선으로 넣는다.
다익스트라(Dijkstra) 알고리즘은 출발점에서 가까운 노드부터 차례로 확정해 나간다. 출발점에 물을 부었을 때 물이 퍼지는 순서와 같다. 반드시 최단 경로를 찾지만, 목표가 어느 쪽에 있는지 모르는 채로 사방으로 퍼지므로 쓸데없는 곳까지 조사한다.
A*는 여기에 "목표까지 대략 얼마나 남았는가"라는 추정값, 즉 휴리스틱(heuristic) \(h(n)\)을 더한다.
휴리스틱이 실제 남은 비용을 절대 넘지 않으면(직선 거리가 대표적이다) A*는 다익스트라와 똑같이 최단 경로를 보장하면서 조사하는 노드 수를 크게 줄인다. \(w\)를 1보다 키우면 목표 쪽으로 더 탐욕스럽게 달려가 훨씬 빨라지지만, 찾은 경로가 최단이 아닐 수 있다. 계산 시간과 경로 품질을 맞바꾸는 것이다.
격자 지도에서의 다익스트라와 A*
실제 도로망은 노드가 수백만 개에 이르므로, 미리 계산해 둔 계층 구조(고속도로 우선 탐색, 축약 계층 등)를 함께 써서 대륙 규모의 경로도 밀리초 단위로 찾는다. 경로 탐색은 한 번 계산해 두고 길을 벗어나거나 통제 구간이 생겼을 때만 다시 한다.
행동 결정: 지금 무엇을 할 것인가
경로가 "2 km 앞에서 오른쪽 출구로 나간다"를 정했다면, 행동 결정 층은 그 사이의 전술을 정한다. 앞차를 따라갈지, 추월할지, 언제 출구 쪽 차로로 옮길지, 신호등 앞에서 설지를 고른다. 가장 오래되고 지금도 널리 쓰이는 방법은 유한 상태 기계(Finite State Machine, FSM)다. 차가 있을 수 있는 행동 상태를 몇 개로 나누고, 어떤 조건이 만족되면 다른 상태로 넘어가는지를 규칙으로 적는다.
| 현재 상태 | 전이 조건 | 다음 상태 |
|---|---|---|
| 차로 유지 | 앞차와의 시간 간격이 줄어들고 앞차가 내 희망 속도보다 느림 | 추종 |
| 추종 | 앞차가 희망 속도보다 충분히 느린 상태가 일정 시간 지속 | 차로 변경 준비 |
| 차로 변경 준비 | 옆 차로의 앞·뒤 간격이 모두 필요 간격 이상 | 차로 변경 |
| 차로 변경 | 목표 차로 중심에 도달 | 차로 유지 |
| 추종 | 앞이 비거나 앞차가 빨라짐 | 차로 유지 |
간격 수락
차로 변경이나 합류, 비보호 좌회전에서 핵심은 "저 빈틈에 들어가도 되는가"다. 이를 간격 수락(gap acceptance)이라 한다. 옆 차로에서 내 앞에 있을 차와 뒤에 있을 차에 대해 각각 필요한 간격을 계산하고, 둘 다 만족할 때만 진입한다. 뒤차가 나보다 빠르면 그 차가 급하지 않게 감속해서 속도를 맞출 수 있을 만큼의 거리를 더 요구한다.
고속도로 행동 상태 기계
규칙 기반과 비용 기반
상태 기계는 이해하기 쉽고, 왜 그런 결정을 했는지 추적할 수 있어 안전 검증에 유리하다. 하지만 상황이 복잡해질수록 상태와 전이 조건이 폭발적으로 늘어나고, 조건의 경계에서 결정이 이리저리 뒤집히는 문제가 생긴다. 그래서 요즘은 규칙으로 후보 행동을 걸러 낸 다음, 남은 후보마다 비용(예상 소요 시간, 위험도, 편안함, 교통 법규 위반 정도)을 계산해 가장 낮은 것을 고르는 방식을 많이 쓴다. 행동 트리, 확률적 의사결정 모델(POMDP의 근사), 학습 기반 정책도 같은 자리에 들어갈 수 있다. 어떤 방식이든 "한 번 정한 행동은 약간 더 싸게 쳐 준다"는 이력 효과를 넣어 결정이 떨리지 않게 한다.
궤적 계획: 부드럽고 안전한 선
행동이 "왼쪽 차로로 옮긴다"로 정해졌다. 이제 앞으로 몇 초 동안 차가 지나갈 정확한 선과 시각을 만들어야 한다. 좋은 궤적은 세 가지를 만족한다. 다른 물체와 부딪히지 않고(안전), 가속도와 그 변화가 작으며(편안함), 목적지에 쓸데없이 늦지 않는다(효율). 그리고 무엇보다 차가 실제로 따라갈 수 있어야 한다.
프레네 좌표계
도로는 굽어 있지만 운전자는 "차로를 따라 얼마나 갔는가"와 "차로 중심에서 옆으로 얼마나 벗어났는가"로 생각한다. 프레네 좌표계(Frenet frame)는 이 직관을 그대로 좌표로 만든 것이다. 기준선(보통 차로 중심선)을 따라 잰 거리 \(s\)와 기준선에서 수직으로 벗어난 거리 \(d\)를 쓴다. 굽은 도로를 곧게 펴서 보는 셈이어서, 차로 변경은 도로 형상과 상관없이 "\(d\)를 0에서 3.5 m로 옮기는 일"이 된다.
저크를 최소로 하는 5차 다항식
승객이 느끼는 불쾌감은 가속도 자체보다 가속도가 변하는 빠르기, 즉 저크(jerk)와 관계가 깊다. 시작과 끝의 위치·속도·가속도가 주어졌을 때 저크 제곱의 적분을 최소로 하는 곡선은 시간에 대한 5차 다항식임이 알려져 있다. 미지수가 여섯 개이고 경계 조건도 여섯 개(양 끝의 위치·속도·가속도)이므로 계수가 하나로 정해진다. 횡방향으로 정지 상태에서 정지 상태로 \(D\)만큼 옮기는 경우는 식이 특히 간단하다.
후보를 뿌리고 비용으로 고른다
하나의 궤적만 계산하면 그 궤적이 장애물과 겹칠 때 대안이 없다. 그래서 끝 조건을 조금씩 바꾼 후보를 한꺼번에 여러 개 만든다. 차로 변경 시간 \(T\)를 여러 값으로, 목표 횡 위치 \(D\)를 차로 중심 좌우로 조금씩 바꿔 부채꼴 모양의 후보 다발을 만든 다음, 각 후보에 대해 다음을 차례로 검사한다.
저크 최소 차로 변경과 후보 샘플링
격자 탐색과 최적화
다항식 샘플링은 차로가 분명한 도로에서 빠르고 잘 동작한다. 하지만 주차장이나 공사 구간처럼 기준선이 없는 비정형 공간에서는 쓸 수 없다. 이때는 앞에서 본 A*를 차에 맞게 고친 하이브리드 A*를 쓴다. 일반 A*는 격자 칸에서 옆 칸으로 아무 방향이나 이동하지만, 차는 제자리에서 옆으로 움직일 수 없다. 하이브리드 A*는 노드를 (위치, 방향)의 연속 상태로 두고, "최대로 왼쪽·직진·최대로 오른쪽, 그리고 전진·후진"으로 짧게 굴러간 결과만을 이웃으로 삼는다. 그래서 찾은 경로는 처음부터 차의 최소 회전 반경을 지킨다.
하이브리드 A* 주차 경로
샘플링이나 탐색으로 얻은 궤적은 후보가 이산적이어서 조금 거칠다. 최적화 기반 계획은 궤적을 수십 개의 점으로 나타내고, 부드러움과 장애물과의 거리, 차의 운동 한계를 비용과 제약으로 적은 다음 수치 최적화로 푼다. 품질은 가장 좋지만 좋은 초기값이 없으면 엉뚱한 해에 빠지므로, 실제 시스템은 탐색이나 샘플링으로 대략의 궤적을 찾은 뒤 최적화로 다듬는 2단 구성을 많이 쓴다.
차가 따라갈 수 있는 궤적
종이 위에서는 어떤 선이든 그릴 수 있지만, 차는 그렇게 움직이지 못한다. 계획이 지켜야 하는 차의 운동 제약을 가장 간단하게 담은 것이 기구학 자전거 모델(kinematic bicycle model)이다. 좌우 바퀴를 하나로 합쳐 앞바퀴 하나와 뒷바퀴 하나로 보고, 타이어가 옆으로 미끄러지지 않는다고 가정한다. 타이어의 슬립각까지 고려하는 동역학 모델은 10장에서 다뤘다.
이 식에서 두 가지 제약이 나온다. 첫째, 조향각에는 기계적 한계가 있으므로 최소 회전 반경이 있다. 휠베이스 2.7 m에 앞바퀴 최대 조향각이 35°라면 뒤 차축 중심 기준으로 \(R = 2.7/\tan35° \approx 3.9\) m이고, 차체 바깥 모서리 기준의 최소 회전 반경은 대표적으로 약 5~6 m다. 경로의 곡률이 \(1/R_{\min}\)보다 크면 차는 그 경로를 따라갈 수 없다. 둘째, 조향각은 순간적으로 바뀌지 못하므로 곡률은 연속이어야 한다. 직선에 원호를 바로 이어 붙인 경로는 접점에서 스티어링 휠을 순간 이동시키라고 요구하는 셈이다. 그래서 도로 설계와 궤적 계획 모두 곡률이 서서히 변하는 완화 곡선이나 스플라인을 쓴다.
속도는 곡률이 정한다
속도가 붙으면 타이어의 한계가 더 엄한 제약이 된다. 곡률 \(\kappa\)인 경로를 속도 \(v\)로 돌면 횡가속도는 \(a_y = v^2\kappa\)다. 7장에서 본 대로 타이어가 낼 수 있는 힘은 마찰원 안에 있으므로, 횡가속도와 종가속도를 합친 크기가 \(\mu g\)를 넘을 수 없다. 자율주행차는 승차감을 위해 이보다 훨씬 낮은 편안함 한계를 스스로 건다.
코너 제한 속도만으로는 속도 계획이 끝나지 않는다. 코너 직전에서 순식간에 속도를 떨어뜨릴 수는 없기 때문이다. 그래서 두 번 훑는다. 후진 패스는 경로의 끝에서 시작점 쪽으로 거슬러 오르며 "다음 지점의 속도까지 허용 감속도로 줄일 수 있는 최대 속도"로 깎는다. 전진 패스는 시작점에서 끝으로 가며 "이전 지점에서 허용 가속도로 올릴 수 있는 최대 속도"로 다시 깎는다.
곡률 기반 속도 계획
제어: 궤적을 따라가는 손과 발
궤적 계획이 내놓은 것은 "0.1초 뒤에는 여기, 0.2초 뒤에는 저기"라는 목표의 나열이다. 제어기는 지금의 위치·속도와 목표의 차이를 보고 조향각과 구동·제동 명령을 계산한다. 보통 속도를 맡는 종방향 제어와 조향을 맡는 횡방향 제어로 나누어 설계한다.
종방향: PID
속도 제어의 기본은 17장의 ACC에서 본 PID 제어다. 목표 속도와 실제 속도의 차이에 비례하는 항, 그 누적에 비례하는 항, 변화율에 비례하는 항을 더해 가속도 명령을 만들고, 이를 엔진·모터 토크나 브레이크 압력으로 바꾼다. 계획이 준 목표 가속도를 그대로 더해 주는 앞먹임(feedforward)을 함께 쓰면 오차가 생기기 전에 미리 움직일 수 있다.
횡방향: 퓨어 퍼슈트
퓨어 퍼슈트(pure pursuit)는 사람이 운전할 때 "저 앞의 한 점을 보고 그쪽으로 간다"는 감각을 그대로 옮긴 기하학적 방법이다. 뒤 차축 중심에서 경로 위로 전방 주시 거리(lookahead distance) \(L_d\)만큼 떨어진 점을 목표점으로 잡는다. 지금 자세에서 출발해 그 점을 지나는 원호는 하나뿐이고, 그 원호의 반경에 맞는 조향각을 자전거 모델로 구한다.
조정 변수는 사실상 \(L_d\) 하나다. 짧게 잡으면 경로에 바짝 붙지만 작은 오차에도 크게 꺾어 차가 좌우로 흔들린다. 길게 잡으면 부드럽지만 코너에서 안쪽을 깎아 지나간다. 그래서 보통 속도에 비례해 \(L_d = k\,v\)로 늘린다. 사람도 빨리 달릴수록 멀리 본다.
스탠리와 LQR
스탠리(Stanley) 제어기는 앞 차축을 기준으로 삼는다. 조향각은 두 항의 합이다. 하나는 경로의 방향과 차의 방향 차이 \(\psi_e\)를 그대로 메우고, 다른 하나는 앞 차축이 경로에서 벗어난 거리 \(e\)에 비례해 경로 쪽으로 꺾는다. 속도로 나누어 주므로 빨리 달릴수록 같은 오차에 조향을 덜 쓴다.
LQR(Linear Quadratic Regulator)은 한 걸음 더 나아가 차량 모델을 직접 쓴다. 횡 오차, 방향 오차와 그 변화율을 상태로 두고, 차의 운동을 선형 모델로 적은 다음 "오차 제곱과 조향 사용량 제곱의 가중 합"을 최소로 하는 되먹임 게인을 수학적으로 구한다. 게인을 감으로 맞추는 대신 "오차를 얼마나 싫어하는가"와 "조향을 얼마나 아끼는가"의 비율만 정하면 된다.
퓨어 퍼슈트와 스탠리 경로 추종
MPC: 미래를 내다보는 제어
지금까지의 제어기는 현재의 오차에 반응했다. 모델 예측 제어(Model Predictive Control, MPC)는 차량 모델로 앞으로 몇 초 동안의 움직임을 직접 계산해 보고, 그 구간 전체에서 비용이 가장 낮은 입력의 열을 최적화로 찾는다. 가속도와 저크의 한계, 앞차와의 최소 간격 같은 제약을 식에 그대로 넣을 수 있다는 것이 가장 큰 장점이다.
여기서 중요한 점은 최적화로 얻은 입력 열 중 첫 번째 입력만 실제로 쓴다는 것이다. 다음 주기가 되면 새로 측정한 상태에서 출발해 예측 구간을 한 칸 밀고 다시 최적화한다. 이를 이동 구간(receding horizon) 방식이라 한다. 모델이 완벽하지 않고 앞차가 예상과 다르게 움직여도, 매번 다시 계획하므로 되먹임 효과가 생긴다. 아래 시뮬레이터는 앞차를 따라가는 종방향 문제를 MPC로 풀고, 같은 상황의 PID 제어와 나란히 비교한다.
MPC 맛보기: 앞차 추종
횡방향에도 같은 원리를 쓴다. 자전거 모델로 예측 구간 동안의 경로 이탈을 계산하고 조향각의 크기와 변화율 한계를 제약으로 넣는다. 종·횡을 한꺼번에 푸는 MPC는 마찰원 제약까지 다룰 수 있어 한계 주행이나 긴급 회피에 강하다. 대가는 계산량이다. 매 주기(대표적으로 10~50 ms) 안에 최적화가 끝나야 하므로, 모델을 선형화해 2차 계획 문제로 바꾸거나 전용 해법을 쓴다.
현실의 제약: 지연, 승차감, 안전 여유
지연과 액추에이터 한계
센서가 장면을 찍은 순간부터 바퀴가 실제로 꺾일 때까지는 시간이 걸린다. 인지 처리, 계획 계산, 차량 네트워크 전송, 그리고 조향 모터와 브레이크 유압이 움직이는 시간이 모두 더해지면 전체 지연은 대표적으로 약 0.1~0.3초에 이른다. 시속 100 km에서 0.2초는 5.6 m다. 제어기가 이 지연을 모른 채 게인만 높이면 앞의 퓨어 퍼슈트 시뮬레이터에서 본 것처럼 진동한다. 그래서 제어기는 "명령이 실제로 반영될 시점의 차 상태"를 모델로 미리 계산해 그 상태를 기준으로 제어하고, MPC는 지연과 액추에이터의 응답을 모델에 포함한다.
액추에이터에는 크기와 속도의 한계도 있다. 조향 모터가 낼 수 있는 조향 속도, 브레이크 압력이 올라가는 속도, 모터와 엔진이 낼 수 있는 토크는 유한하다(8장, 15장). 계획이 이 한계를 무시한 궤적을 내놓으면 제어기는 따라가지 못하고 오차가 쌓인다. 좋은 스택은 위층부터 한계를 알고 계획한다.
승차감
사람이 운전하는 차에서는 운전자가 자기 조작을 예상하므로 멀미를 덜 느낀다. 자율주행차의 탑승자는 모두 승객이다. 그래서 가속도와 저크의 한계를 사람이 운전할 때보다 보수적으로 잡는다. 일상 주행에서 종가속도는 대표적으로 약 ±2 m/s², 저크는 약 1~2 m/s³ 이내가 편안하다고 본다. 물론 긴급 상황에서는 편안함 제약을 풀고 타이어 한계까지 쓴다. 평상시와 비상시의 한계를 구분해 두는 것도 계획의 일이다.
안전 여유: RSS 맛보기
"안전하게 운전한다"를 수식으로 적을 수 있을까. 책임 민감 안전(Responsibility-Sensitive Safety, RSS)은 상식적인 운전 규칙을 수학적 조건으로 옮기려는 시도다. 가장 기본이 되는 것은 앞차와의 최소 안전 거리다. 앞차가 낼 수 있는 가장 강한 제동으로 멈추고, 나는 반응 시간 동안 오히려 가속하다가 그 뒤에 약한 제동으로 멈춘다는 최악의 경우에도 부딪히지 않는 거리다.
이런 규칙 기반 안전 검사는 계획 알고리즘과 별도로 두고, 계획이 무엇을 내놓든 마지막에 걸러 내는 안전 감시층으로 쓰는 경우가 많다. 횡방향 간격, 우선권, 시야가 가려진 곳에서의 속도 같은 나머지 규칙과 시스템 차원의 안전 설계는 21장에서 이어서 다룬다.
학습 기반 계획
규칙과 비용 함수를 사람이 일일이 쓰는 방식은 드문 상황이 끝없이 나오는 실제 도로에서 한계가 있다. 그래서 사람의 주행 데이터를 흉내 내도록 신경망을 학습시키는 모방 학습, 시뮬레이터에서 시행착오로 정책을 익히는 강화 학습, 그리고 센서 입력에서 궤적까지를 하나의 신경망으로 잇는 엔드투엔드 방식이 빠르게 발전하고 있다. 학습 기반 계획기는 복잡한 상호작용에서 사람처럼 자연스럽게 움직이는 장점이 있지만, 왜 그런 결정을 했는지 설명하기 어렵고 학습 데이터에 없던 상황에서의 동작을 보장하기 어렵다. 현재의 실용적인 구성은 학습 모델이 후보 궤적을 제안하고, 이 장에서 본 운동 제약 검사·충돌 검사·규칙 기반 안전 감시가 그 제안을 검증하는 혼합 방식이다.
핵심 정리
- 판단과 조작은 경로 탐색 → 행동 결정 → 궤적 계획 → 제어의 층으로 나뉘며, 아래로 갈수록 보는 범위는 짧고 갱신은 빠르다.
- 예측은 운동 모델(등속·등가속·등속 회전)로 짧은 미래를, 차로 기반 다중 가설과 확률로 긴 미래를 다룬다. 불확실성은 시간이 갈수록 커진다.
- A*는 \(f = g + h\)가 작은 노드부터 펼친다. 휴리스틱이 실제 비용을 넘지 않으면 최단 경로를 보장하면서 다익스트라보다 적게 탐색한다.
- 행동 결정은 상태 기계와 비용 비교로 이루어지며, 차로 변경은 옆 차로의 앞·뒤 간격이 모두 필요 간격 이상일 때만 시작한다.
- 프레네 좌표의 5차 다항식은 저크가 최소인 궤적을 준다. 최대 횡가속도는 \(5.77D/T^2\), 최대 저크는 \(60D/T^3\)이며, 여러 후보를 만들어 한계 검사·충돌 검사·비용으로 고른다.
- 차는 최소 회전 반경과 연속 곡률을 지켜야 하고, 코너 속도는 \(v = \sqrt{a_y/\kappa}\)로 제한된다. 후진·전진 패스로 가감속 한계를 반영한 속도 프로파일을 만든다.
- 퓨어 퍼슈트는 전방 주시 거리 하나로 조향을 정한다. 짧으면 진동하고 길면 코너를 깎는다. 스탠리는 앞 차축의 방향 오차와 횡 오차를 함께 쓴다.
- MPC는 예측 구간에서 제약을 지키며 입력을 최적화하고 첫 입력만 쓴 뒤 다시 푼다. 지연, 액추에이터 한계, 승차감, 안전 거리(RSS)가 모든 층의 설계를 제약한다.
확인 퀴즈
A*에서 휴리스틱 가중치를 0으로 두면 어떤 알고리즘과 같아지는가?
차로 폭 3.5 m의 차로 변경을 5차 다항식으로 계획한다. 변경 시간을 6초에서 3초로 줄이면 최대 횡저크는 몇 배가 되는가?
반경 50 m 커브를 횡가속도 2 m/s² 이내로 돌 때 제한 속도에 가장 가까운 것은?
퓨어 퍼슈트 제어기로 달리는 차가 직선 구간에서 좌우로 계속 흔들린다. 가장 먼저 해 볼 조치는?
MPC가 예측 구간 전체의 입력 열을 구하고도 첫 입력만 쓰고 다음 주기에 다시 푸는 이유로 가장 알맞은 것은?
교차로에서 감속 중인 차의 5초 뒤 위치를 등가속 모델로 예측했더니 차가 뒤로 가는 결과가 나왔다. 이 문제의 근본 원인은?