자율주행

편집 역사 토론
시뮬레이션 소프트웨어 마지막 수정: 2026-09-14 04:24:18

1. 개요[편집]

자율주행
Autonomous Driving
표준 등급SAE J3016 레벨 0~5
고전적 스택인지 → 예측 → 계획 → 제어
작동 범위ODD(운행설계영역) — 「어디서 어떤 조건에서 켜도 되는가」
안전 표준ISO 26262(기능안전) · ISO 21448 SOTIF · UL 4600
핵심 난제실차 주행거리로는 안전성을 통계적으로 입증할 수 없다
그래서시나리오 기반 가상검증이 검증의 주력이 된다

자율주행(autonomous driving)은 차량이 주변 환경을 스스로 감지하고 주행 궤적을 결정해, 정해진 운행 조건 안에서 사람의 개입 없이 움직이는 기술 체계다. 한 덩어리의 알고리즘이 아니라 센서·인지·예측·계획·제어·안전 논증이 층층이 쌓인 시스템이고, 각 층이 실패하는 방식과 검증하는 방식이 전부 다르다.

현대적 연구의 출발점은 대개 2000년대의 DARPA 챌린지로 잡는다. 사막 코스를 완주한 차가 한 대도 없던 2004년에서 시가지 교통법규 준수까지 요구한 2007년까지가 3년이었고, 오늘날 쓰이는 스택의 골격 대부분이 그 사이에 굳었다.1

이 문서가 다루는 각도는 시뮬레이션이다. 자율주행이 시뮬레이션 위키의 주제인 이유는 편의 때문이 아니다. 실차 주행으로는 안전성을 입증할 수 없다는 통계적 사실 때문에, 가상검증이 보조 수단이 아니라 검증 체계의 본체가 되어 버린 분야이기 때문이다. 아래 「주행거리 논증」 절이 이 문서의 심장이다.

2. SAE 레벨과 ODD[편집]

SAE J3016의 6단계는 “차가 얼마나 똑똑한가”가 아니라 누가 주행을 감시할 책임을 지는가로 나뉜다. 이 점을 놓치면 레벨 2와 3의 차이가 이해되지 않는다.

레벨이름운전 임무 감시실패 시 대응(fallback)
0~1보조사람사람
2부분 자동화사람(핸들에서 손을 떼도 눈은 떼면 안 됨)사람
3조건부 자동화시스템사람(요청 시 인계, 유예시간 있음)
4고도 자동화시스템시스템(스스로 안전 정지까지)
5완전 자동화시스템시스템 (ODD 제한 없음)

레벨 2와 3 사이에 법적·공학적 절벽이 있다. 레벨 3부터는 시스템이 감시 주체이므로, “사람이 언젠가 개입하겠지”라는 가정으로 남겨 둔 미검증 구간이 곧바로 제조사 책임이 된다. 레벨 4의 실질은 “아무 데서나 달린다”가 아니라 좁게 정의된 ODD 안에서만 켜지고, 벗어나면 스스로 멈춘다는 것이다.

ODD(Operational Design Domain, 운행설계영역)는 도로 종류·속도 범위·기상·조도·교통 밀도·지리 경계 같은 조건의 집합으로 정의된다. ODD는 마케팅 문구가 아니라 검증 대상의 정의역이다. ODD가 좁으면 검증이 가능해지고, 넓으면 검증해야 할 시나리오 공간이 지수적으로 커진다. 로보택시가 특정 도시의 특정 구역에서 먼저 시작하는 이유가 이것이고, “ODD를 넓히는 것”이 곧 “검증 예산을 늘리는 것”이다.

3. 인지-예측-계획-제어[편집]

고전적 모듈형 스택은 네 층이다. 각 층이 이미 위키에 별도 문서로 있으므로 여기서는 층 사이의 접합면만 짚는다.

  • 인지(perception) — 라이다 점군, 카메라 영상, 레이더 반사를 물체·차선·신호로 바꾼다. 지면 분할에 RANSAC, 점군 군집화에 DBSCAN, 영상 쪽은 합성곱 신경망 계열 검출기와 이미지 분할이 표준이다. 이종 센서를 합치는 층위 선택(원시 데이터 융합 대 트랙 융합)은 센서 융합이 다룬다. 정적 환경을 확률 격자로 들고 다니는 표현이 점유 격자 지도다.
  • 예측(prediction) — 주변 차량·보행자가 앞으로 3~8초 동안 어디로 갈지를 분포로 낸다. 여기서 단일 궤적을 내면 안 된다는 것이 실무의 큰 교훈이다. 좌회전할지 직진할지 모르는 차를 평균 궤적 하나로 요약하면 그 평균은 어느 쪽도 아닌, 존재하지 않는 궤적이 된다. 다중 모드 예측과 그 확률이 계획 층으로 넘어간다.
  • 계획(planning) — 전역 경로(도로망 위의 A* 알고리즘 급), 행동 결정(차선 유지·변경·양보·정지), 국소 궤적 생성의 세 층으로 다시 갈린다. 아래에서 따로 본다.
  • 제어(control) — 궤적을 조향각과 가감속으로 바꾼다. 횡방향은 순수추종(pure pursuit)·스탠리 제어기 같은 기하 제어기가 여전히 현역이고, 동역학 제약과 승차감까지 묶으려면 모델 예측 제어로 간다. 차량 동역학이 비선형이라 비선형 MPC를 매 주기 실시간으로 푸는 구조가 표준이며, 그 안에서 도는 것은 결국 이차계획법 솔버다.

모듈 경계를 아예 지우고 센서 입력에서 제어 출력까지 하나의 신경망으로 잇는 엔드투엔드 접근도 있다. 데이터만 있으면 모듈 간 정보 손실이 없다는 장점이 크지만, 어디서 왜 틀렸는지 물을 인터페이스가 없다는 것이 안전 논증 관점에서 치명적이라 실무는 대개 절충형(학습된 모듈 + 규칙 기반 안전 감시자)으로 간다.

4. 주행거리 논증 — 왜 시뮬레이션이 주인공인가[편집]

여기가 핵심이다. “몇 km를 무사고로 달리면 안전하다고 말할 수 있는가”를 정직하게 계산하면 답이 절망적으로 크다.

치명 사고는 희귀 사건이다. 미국의 인간 운전자 치명사고율은 대략 1억 마일당 1.09건 수준이다. 자율주행차가 이보다 낫다는 것을 95% 신뢰수준으로 보이려면, RAND의 2016년 분석에 따르면 약 2.75억 마일(4.4억 km)을 무사고로 달려야 한다. 인간보다 20% 낫다는 것까지 통계적 검정력을 갖춰 보이려면 약 110억 마일이 필요하다. 차 100대를 시속 25마일로 24시간 365일 굴린다고 해도 앞의 숫자에 12년 이상, 뒤의 숫자에는 수백 년이 걸린다.2

이 논증에서 빠져나갈 구멍이 없다는 점이 중요하다.

  • 소프트웨어를 고치면 그 거리를 처음부터 다시 쌓아야 한다. 주행거리 통계는 특정 버전에 붙는 값이라, 개발 주기가 몇 주인 소프트웨어에 대해 수년치 주행거리를 요구하는 것은 논리적으로 성립하지 않는다.
  • 대부분의 주행거리는 아무 일도 일어나지 않는 고속도로 직진이다. 위험 시나리오의 통계적 표본은 그 안에 거의 들어 있지 않다. 즉 분모만 커지고 정보량은 안 커진다.
  • 그렇다고 사고를 일부러 낼 수는 없다.

그래서 검증의 무게중심이 거리에서 시나리오로 옮겨간다. “얼마나 많이 달렸는가” 대신 “어떤 위험 상황을 몇 가지나, 얼마나 촘촘한 변형으로 통과했는가” 를 묻는 것이다. 이 전환의 필연성이 자율주행 검증을 시뮬레이션 중심으로 만든 이유이며, 사실상 희귀 사건 시뮬레이션 문제로 바꿔 놓은 것이기도 하다. 위험한 초기조건을 균등 표집하는 대신 위험 쪽으로 편향 표집하고 가중치로 보정하는 중요도 표본추출의 논리가 여기 그대로 들어온다.

5. 시나리오 기반 가상검증[편집]

가상검증의 재료는 세 갈래이고, 셋 다 필요하다.

1) 로그 재현(log replay). 실차가 수집한 주행 로그를 그대로 다시 돌린다. 인지 모듈만 갈아 끼우고 같은 센서 데이터를 먹이는 오픈 루프 재현은 검출 성능 회귀 검사에 딱 맞고 비용이 거의 없다. 문제는 계획·제어를 바꾸면 차가 다른 곳으로 가 버려서 기록된 센서 데이터가 더 이상 유효하지 않다는 것이다. 이 지점에서 로그 재현은 무력해지고, 주변 차량이 자차 행동에 반응해야 하는 클로즈드 루프 시뮬레이터가 필요해진다. 로그에서 뽑은 상황을 파라미터화해 클로즈드 루프로 되살리는 「로그 기반 시나리오 합성」이 그 다리 역할을 한다.

2) 파라미터화된 시나리오 공간 탐색. 컷인, 교차로 좌회전 중 마주 오는 차, 정차 차량 뒤에서 나오는 보행자 같은 논리 시나리오를 정의하고, 상대 속도·진입 시점·가림 정도 같은 파라미터를 축으로 잡는다. 그러면 검증은 이 파라미터 공간에서 안전한 영역과 충돌하는 영역의 경계를 찾는 문제가 된다. 전수 격자 탐색은 차원이 조금만 늘어도 불가능하므로, 경계 근처로 표본을 몰아 주는 적응 표집이나 베이지안 최적화류의 대리모형 탐색을 쓴다. 여기서 얻는 것은 「통과/실패」 한 비트가 아니라 얼마나 여유를 두고 통과했는가(TTC 최솟값, 감속 여유)라는 연속값이고, 그게 있어야 경계를 추정할 수 있다.

3) 적대적 시나리오 탐색. 계획기를 일부러 깨뜨리는 주변 차량 정책을 최적화로 찾는다. 강화학습으로 「자차를 가장 곤란하게 만드는 NPC」를 학습시키는 방식이 대표적이다. 얻는 것은 확실하지만 함정이 크다 — 물리적으로 가능하되 현실에서 일어날 확률이 사실상 0인 시나리오를 찾아내면 그건 버그 리포트가 아니라 노이즈다. 그래서 적대적 탐색에는 반드시 현실성 제약(자연 주행 데이터에서 추정한 행동 분포에서 크게 벗어나지 않을 것)이 붙고, 발견된 실패에 발생 확률 가중치를 매겨 우선순위를 정한다.

5.1. 시나리오의 세 추상 층위[편집]

시나리오라는 말이 사람마다 다른 것을 가리켜서, 독일 PEGASUS 프로젝트가 정리한 세 층위 구분이 널리 쓰인다.

층위내용
기능 시나리오자연어 서술”앞차가 갑자기 끼어든다”
논리 시나리오파라미터와 그 값 범위·분포상대속도 −10~+30 km/h, 진입 시점 0.5~3 s
구체 시나리오파라미터에 값이 박힌 실행 가능한 한 건상대속도 12 km/h, 진입 1.4 s

검증 계획은 기능 층위에서 쓰이고, 커버리지는 논리 층위에서 정의되며, 시뮬레이터가 실제로 돌리는 것은 구체 시나리오다. 커버리지를 구체 시나리오 개수로 세는 것은 의미가 없다 — 100만 건을 돌려도 파라미터 공간의 한 구석만 훑었으면 덮은 것이 아니기 때문이다. 논리 시나리오의 파라미터 공간을 얼마나 촘촘히, 특히 안전 경계 근처를 얼마나 조밀하게 훑었는지가 보고할 값이다.

5.2. 무엇을 재나[편집]

통과/실패 한 비트만으로는 경계를 찾을 수 없으므로, 연속적인 안전 여유 지표를 함께 기록한다.

  • TTC(time to collision) — 현재 상대속도가 유지될 때 충돌까지 남은 시간. 가장 널리 쓰이지만 상대속도가 0이거나 멀어지는 상황에서 정의가 무너진다.
  • PET(post-encroachment time) — 앞 차가 충돌 지점을 떠난 시각과 뒤 차가 그 지점에 도달한 시각의 차. 교차 경로(교차로 좌회전)에 적합하다.
  • 필요 감속도 — 충돌을 피하는 데 필요한 최소 감속. 0.3 g 이하면 여유, 0.8 g에 가까우면 노면 상태에 운명을 맡기는 상황이다.
  • 규칙 위반 — 차선 이탈, 신호 위반, 안전거리 미달. 충돌이 없어도 실패로 세야 하는 항목들이다.

교통 환경 자체의 충실도도 따로 챙겨야 한다. 자차 주변 십여 대의 미시 거동은 시뮬레이터가 만들지만, 그 교통이 도시 전역의 수요와 정합적인지는 SUMO 같은 교통 시뮬레이터의 몫이다. 「주변 교통은 SUMO, 자차 센서와 렌더링은 CARLA」식의 공동 시뮬레이션 구성이 흔한 이유이고, 거시적 타당성은 결국 교통 흐름 모형이 보증한다.

6. 센서 모델과 도메인 갭[편집]

시뮬레이션이 답을 주려면 자차가 보는 것이 실제와 충분히 닮아야 한다. 층위별로 난이도가 다르다.

센서물리 모형시뮬레이션 난이도주된 갭
라이다광선 추적으로 거리·강도재질별 반사율, 빗방울·먼지 반사, 검은 차·유리 미검출
레이더밀리미터파 반사, 도플러높음다중경로·지면 반사로 생기는 유령 표적이 재현이 어렵다
카메라물리 기반 렌더링 + 센서 응답높음노출·모션 블러·렌즈 플레어·ISP 파이프라인 전체

라이다는 레이 트레이싱으로 꽤 정직하게 만들 수 있어서 기하 기반 인지 검증에는 실용적이다. 반면 카메라 기반 검출기는 렌더링-현실 갭에 가장 취약하다. 합성 영상에서 잘 맞던 검출기가 실차에서 무너지는 이유는 물체 배치가 아니라 텍스처 통계·노이즈 특성·색 응답의 미묘한 차이인 경우가 많다. 대책은 두 방향이다.

  • 갭을 줄인다 — 물리 기반 렌더링과 센서 응답 모형을 정교화하고, 실측 데이터로 보정한다. 최근에는 실제 주행 로그로 장면을 3차원 복원해 새 시점을 합성하는 신경 렌더링 계열이 여기 합류했다(이 복원의 카메라 자세를 만드는 것이 COLMAP 같은 SfM 도구다).
  • 갭에 둔감하게 만든다도메인 랜덤화처럼 시뮬레이터의 외형 파라미터를 일부러 과하게 흔들어, 현실이 그 분포 안의 한 표본으로 보이도록 훈련한다.

어느 쪽이든 “이 시뮬레이터 결과를 믿어도 되는 범위”를 따로 논증해야 한다는 점은 남는다. 시뮬레이션의 신뢰도 자체가 검증 대상이라는 것이 이 분야의 검증 및 확인이 유난히 까다로운 이유다. 검증 사다리의 아래쪽에는 소프트웨어만 도는 SIL, 실제 ECU를 물리는 하드웨어 인 더 루프, 실차를 다이나모에 올리는 VIL, 폐쇄 시험로, 그리고 공도 주행이 순서대로 놓인다.

7. 계획 — 격자, 샘플링, 프레네[편집]

국소 궤적 생성에서 실무가 오래 붙들고 있는 세 갈래가 있다. 일반론은 경로 계획이 다루므로 차량 특유의 사정만 본다.

차량은 자유롭게 못 움직인다. 옆으로 미끄러질 수 없고(비홀로노믹), 곡률과 곡률 변화율에 한계가 있고, 승차감 때문에 저크(가가속도)까지 제약된다. 그래서 격자 A*를 그대로 쓸 수 없고, 상태 격자(state lattice) — 차량이 실제로 그릴 수 있는 짧은 곡선 조각들을 미리 만들어 붙이는 방식 — 나, 연속 조향각으로 확장한 하이브리드 A*가 쓰인다. 주차나 좁은 골목 조작처럼 후진이 섞이는 문제에서 특히 강하다.

고속도로·간선도로에서 압도적으로 널리 쓰이는 것은 프레네 좌표(프레네 좌표) 표현이다. 차선 중심선을 기준 곡선으로 잡고, 좌표를 「기준선을 따라 간 거리 ss」와 「기준선에서 옆으로 떨어진 거리 dd」로 바꾼다. 이러면 굽은 도로가 곧은 도로가 되고, 문제가 종방향(ss: 얼마나 빨리)과 횡방향(dd: 어느 차선에)으로 거의 분리된다. 두 축에서 각각 5차 다항식 후보를 대량으로 뽑고, 충돌·제약·승차감·목표 준수로 비용을 매겨 최선을 고르는 것이 표준 구현이다. 차선 변경이 ”dd 를 매끄럽게 한 차선 폭만큼 옮기는 다항식”으로 한 줄에 표현되는 것이 이 좌표계의 매력이다.

한계도 분명하다. 기준선이 없거나(비정형 주차장), 곡률이 급해서 dd 가 커지면 좌표 변환 자체가 왜곡되거나 특이해진다. 그래서 실무는 도로 위에서는 프레네, 비정형 공간에서는 격자·샘플링으로 계획기를 상황에 따라 갈아 끼운다.

8. 안전 논증 — 무엇을 증명해야 하는가[편집]

표준이 셋으로 나뉘어 있고, 각각이 다른 종류의 실패를 겨냥한다.

  • ISO 26262 (기능안전) — 부품이 고장 났을 때 생기는 위험을 다룬다. 센서가 죽고, ECU가 비트를 뒤집고, 전원이 끊기는 상황. 고전적 신뢰성 공학의 영역이고, 이 부분은 비교적 잘 정리되어 있다.
  • ISO 21448 SOTIF (의도된 기능의 안전)아무것도 고장 나지 않았는데 위험한 경우를 다룬다. 검출기가 역광 속 흰 트레일러를 놓치는 것은 고장이 아니라 설계 한계다. SOTIF의 언어로는 시나리오 공간을 「알려진 안전 / 알려진 위험 / 모르는 위험」으로 나누고, 검증 활동이란 곧 세 번째 영역을 줄이는 작업이다. 시나리오 기반 가상검증이 정확히 이 칸을 겨냥한다.3
  • UL 4600 (자율 제품 안전성 평가) — 특정 기술을 규정하지 않고 안전 논증(safety case)의 구조를 요구한다. 주장, 그 주장을 받치는 증거, 반론 검토를 문서로 엮으라는 것이다. “우리는 이만큼 달렸습니다”가 증거로 인정받지 못하는 이유를 표준 차원에서 못 박은 문서이기도 하다.

여기에 판단 기준 자체를 형식화하려는 시도가 얹힌다. 안전거리와 양보 규칙을 수식으로 정의해 두고 「이 규칙을 지키면 자차가 원인인 충돌은 없다」를 논증하는 규칙 기반 모형이 대표적이다. 이런 모형의 가치는 규칙이 완벽해서가 아니라, 논쟁을 “이 파라미터 값이 타당한가”라는 검증 가능한 질문으로 좁혀 준다는 데 있다.

9. 실무에서 조심할 것[편집]

  • 주행거리 숫자를 안전의 증거로 쓰지 마라. 분모가 크다는 것과 위험 시나리오를 덮었다는 것은 다른 이야기다. 보고할 값은 거리가 아니라 시나리오 커버리지와 안전 여유 분포다.
  • 오픈 루프 지표에 속지 마라. 검출 mAP가 올랐다고 주행이 안전해지지 않는다. 계획기가 실제로 쓰는 것은 「지금 이 차가 내 경로를 막느냐」이고, 그 판단에 기여하지 않는 성능 향상은 지표상으로만 존재한다.
  • 실패 사례를 확률 가중해서 정렬해라. 시뮬레이터는 하루에 수만 건의 실패를 뱉을 수 있다. 그중 현실에서 일어날 확률이 의미 있는 것부터 고치지 않으면 팀이 노이즈를 디버깅하며 분기를 태운다.
  • ODD를 문서로 먼저 못 박아라. ODD가 말로만 존재하면 검증 범위가 은근슬쩍 넓어지고, 그 순간 「검증됐다」는 문장이 의미를 잃는다.
  • 인계(handover)를 시스템의 일부로 설계해라. 레벨 3에서 가장 위험한 순간은 자율주행 중이 아니라 사람에게 넘기는 몇 초다. 그 구간의 인간 반응 지연이 곧 설계 파라미터이며, 시뮬레이션에서도 모형으로 넣어야 한다.

10. 관련 문서[편집]

11. Footnotes[편집]

  1. 2004년 DARPA 그랜드 챌린지에서는 완주 차량이 한 대도 없었다(최고 기록이 240 km 코스 중 11.8 km). 이듬해 2005년에는 다섯 대가 완주했고, 2007년 어번 챌린지는 아예 시가지 교통법규 준수까지 요구했다. 3년 만에 벌어진 이 도약이 오늘날 업계 인력의 상당수를 배출했다는 점에서, 상금 걸린 대회의 투자 효율은 이따금 무섭도록 좋다.

  2. Kalra & Paddock(RAND, 2016), Driving to Safety. 이 보고서의 진짜 기여는 숫자가 아니라 질문의 형태를 바꾼 것이다. “몇 마일 달려야 하나”에 정직하게 답해 보니 답이 물리적으로 불가능한 크기여서, 업계 전체가 “그러면 거리 말고 뭘 세야 하나”로 넘어갈 수밖에 없었다. 참고로 이 계산은 치명사고 기준이고, 경미한 접촉사고는 빈도가 훨씬 높아 요구 거리가 그만큼 줄어든다. 문제는 규제 당국과 대중이 관심 있는 쪽이 정확히 희귀한 쪽이라는 것.

  3. 업계에서 「롱테일」이라 부르는 것의 실체는 목록으로 적을 수 없다는 점에 있다. 도로 위를 굴러가는 매트리스, 역주행하는 전동킥보드, 트럭 옆면에 인쇄된 등신대 사람 사진, 신호등 색과 같은 색의 풍선 — 이런 것들의 공통점은 사후에 보면 전부 당연하고 사전에는 아무도 안 적었다는 것이다. SOTIF가 “모르는 위험” 칸을 따로 만들어 둔 이유가 이 목록의 성질 때문이다.