자율주행 시스템과 안전
센서, 인지, 계획, 제어를 각각 잘 만드는 것과 그것을 한 대의 차로 묶어 사람을 태우는 것은 다른 문제다. 묶는 순간 지연이 쌓이고, 부품은 고장 나고, 고장이 없어도 알고리즘은 처음 보는 상황에서 틀린다. 이 장은 앞의 네 장에서 만든 부품을 조립해 전체 시스템을 보고, 그 시스템이 충분히 안전하다는 것을 어떻게 설계하고 어떻게 증명하는지를 다룬다.
- 센서에서 액추에이터까지 각 단계의 주기와 지연을 더해 종단 간 반응 시간과 정지 거리를 계산한다.
- 모듈형 스택과 엔드투엔드 학습의 구조와 장단점을 비교한다.
- ODD, 최소 위험 기동, 레벨 3과 레벨 4에서 책임이 갈리는 지점을 설명한다.
- 심각도·노출·제어 가능성으로 ASIL을 결정하고, 이중화 구조의 고장 확률을 계산한다.
- 고장이 없어도 생기는 위험(SOTIF)과 RSS 안전 거리 식을 이해한다.
- 주행 거리만으로 안전을 증명하기 어려운 이유를 푸아송 통계로 계산한다.
- V2X가 가려진 위험을 어떻게 미리 알려 주는지, 지연과 손실이 어떤 영향을 주는지 본다.
스택을 조립하면 시간이 쌓인다
자율주행 소프트웨어는 보통 네 단계의 사슬로 그린다. 18장의 센서가 세계를 측정하고, 19장의 인지와 측위가 그 측정값을 "어디에 무엇이 있고 나는 어디에 있는가"로 바꾸며, 20장의 예측·계획이 앞으로 몇 초 동안 갈 궤적을 정하고, 제어기가 그 궤적을 조향각과 가감속 명령으로 바꾼다. 마지막에는 10장의 전동 조향 장치와 8장의 브레이크, 구동 모터가 실제로 차를 움직인다.
각 단계는 자기 주기로 돈다. 카메라는 대표적으로 초당 30장 안팎, 라이다는 10~20회 회전, 계획기는 초당 10~20회, 제어기는 50~100회 정도다. 여기서 중요한 것은 처리 속도 그 자체보다 지연의 합이다. 앞차의 브레이크등이 켜진 순간부터 내 차의 브레이크 압력이 올라갈 때까지 걸리는 시간을 종단 간 반응 시간(end-to-end latency)이라 한다.
반응 시간 동안 차는 감속 없이 그대로 달린다. 시속 100 km면 0.1초에 2.8 m다. 지연 100 ms를 줄이는 것은 그 속도에서 차 반 대 길이만큼의 여유를 버는 일이다. 그래서 시스템 설계자는 전체 반응 시간의 목표를 먼저 정하고 그것을 각 단계에 나누어 주는데, 이를 지연 예산(latency budget)이라 한다.
지연 예산과 정지 거리
센서 대기 33 ms, 인지 70 ms, 계획 80 ms, 제어 15 ms, 브레이크 압력 형성 180 ms를 더하면 약 0.38 s다. 시속 100 km(27.8 m/s)에서 공주 거리는 \(27.8 \times 0.38 \approx 10.5\) m다. 마른 노면(\(\mu = 0.9\))의 제동 거리 \(27.8^2 / (2 \times 0.9 \times 9.81) \approx 43.7\) m를 더하면 정지 거리는 약 54 m다. 반응에 1.2 s가 걸리는 사람은 같은 조건에서 공주 거리만 약 38 m여서 정지 거리가 약 82 m가 된다.
지연에는 평균만 있는 것이 아니다. 어떤 프레임은 장면이 복잡해서 인지가 두 배 오래 걸리고, 운영체제가 다른 작업을 끼워 넣으면 계획이 한 주기를 건너뛴다. 안전을 따질 때는 평균이 아니라 최악의 경우가 기준이 된다. 그래서 자율주행 컴퓨터는 실시간 운영체제, 고정된 실행 주기, 각 단계의 시간 초과 감시를 쓰고, 센서 데이터에는 측정 시각을 붙여 뒤 단계가 "이 정보는 몇 ms 전의 세계인가"를 알고 보정하게 한다. 20장에서 본 예측은 이 지연 동안 세계가 얼마나 움직였을지를 메우는 역할도 한다.
모듈형과 엔드투엔드, 그리고 컴퓨터
그림 21-1처럼 단계마다 사람이 정한 인터페이스(객체 목록, 차로, 궤적)를 두는 방식을 모듈형 스택이라 한다. 각 모듈을 따로 개발하고 따로 시험할 수 있고, 사고가 났을 때 "인지가 보행자를 놓쳤는가, 계획이 잘못 판단했는가"를 추적할 수 있다. 약점은 인터페이스가 정보를 버린다는 점이다. 인지가 "차량, 위치, 속도"만 넘기면, 그 차의 앞바퀴가 이미 꺾여 있다거나 운전자가 이쪽을 보고 있다는 단서는 계획 단계에 도달하지 못한다. 또 앞 단계의 오류가 뒤로 그대로 전파된다.
엔드투엔드 학습(end-to-end learning)은 센서 입력에서 궤적 또는 조향·가감속까지를 하나의 신경망으로 잇고 전체를 한꺼번에 학습한다. 가장 단순한 형태는 모방 학습(imitation learning)으로, 사람이 운전한 기록에서 "이 장면에서 사람은 이렇게 갔다"를 정답으로 삼는다. 중간 표현을 사람이 정하지 않으므로 필요한 정보가 끝까지 흐르고, 데이터가 늘면 성능이 따라 오른다. 실제 시스템은 양 극단 사이에 있다. 내부적으로 조감도(BEV) 특징, 객체, 지도 같은 중간 출력을 유지하면서 전체를 함께 미분 가능하게 학습하는 구조가 많다.
| 모듈형 | 엔드투엔드 | |
|---|---|---|
| 정보 손실 | 인터페이스에서 발생 | 적다. 필요한 특징을 스스로 학습 |
| 해석 가능성 | 높다. 단계별 출력을 볼 수 있다 | 낮다. 왜 그렇게 갔는지 설명이 어렵다 |
| 검증 | 모듈별 요구 사항과 시험 가능 | 전체를 통계적으로 평가해야 한다 |
| 개선 방식 | 규칙과 모듈을 사람이 수정 | 데이터를 더 모아 다시 학습 |
| 드문 상황 | 규칙이 없으면 대응 불가 | 학습 분포 밖에서 예측 불가능하게 실패 |
모방 학습에는 고유한 함정이 있다. 사람의 운전 기록에는 차로 가운데를 잘 달리는 장면만 있고, 차로를 벗어났다가 돌아오는 장면은 거의 없다. 신경망이 작은 실수로 기록에 없던 위치에 놓이면 무엇을 할지 배운 적이 없어 오차가 커지고, 그 결과 더 낯선 상태로 밀려난다. 이를 분포 이동(distribution shift)이라 한다. 또 "앞차가 멈추면 나도 멈춘다" 대신 "내 속도가 줄고 있으면 계속 줄인다" 같은 엉뚱한 상관관계를 배울 수도 있다. 시뮬레이터 안에서 자기 행동의 결과를 겪게 하는 폐루프 학습, 교란을 준 데이터 증강, 충돌·규칙 위반에 대한 추가 손실이 대응책으로 쓰인다.
데이터 엔진과 섀도 모드
학습 기반 시스템의 성능은 모델 구조만큼이나 데이터를 모으는 체계에 달려 있다. 흔히 데이터 엔진이라 부르는 순환은 다음과 같다. 차량이 주행하며 어려운 장면을 골라 올린다. 사람이나 대형 오프라인 모델이 정답을 붙인다. 다시 학습한다. 시뮬레이션과 재생 시험으로 회귀를 확인한다. 배포한다. 어려운 장면을 고르는 방법 가운데 하나가 섀도 모드(shadow mode)다. 새 소프트웨어를 차에 싣되 액추에이터에는 연결하지 않고, 사람이 운전하는 동안 뒤에서 "나라면 이렇게 했다"만 계산한다. 사람의 행동과 크게 어긋난 순간이 수집 대상이 된다. 위험 없이 넓은 범위의 실제 도로를 시험할 수 있지만, 시스템이 실제로 조작했다면 주변 차들이 어떻게 반응했을지는 알 수 없다는 한계가 있다.
컴퓨팅 플랫폼
이 모든 연산은 차 안의 컴퓨터가 정해진 시간 안에 끝내야 한다. 자율주행용 SoC(System on Chip)는 범용 CPU 코어, 신경망 추론 가속기(GPU 또는 전용 NPU), 영상 신호 처리기, 안전 감시용 마이크로컨트롤러를 한데 묶는다. 추론 성능은 흔히 초당 연산 수 TOPS(Tera Operations Per Second)로 표시하는데, 운전자 보조 수준은 대표적으로 수~수십 TOPS, 고도 자동화는 수백 TOPS 이상을 쓴다. 다만 TOPS는 정밀도와 메모리 대역폭에 따라 실효 성능이 크게 달라지므로 서로 다른 칩을 숫자만으로 비교하기는 어렵다.
전력도 제약이다. 소비 전력은 대표적으로 수십 W에서 수백 W이고, 그만큼의 열을 냉각수 회로로 빼내야 한다. 전기차에서는 주행 거리와 바로 연결된다(16장). 차량 내 전원과 통신 구조는 13장에서 다뤘다.
컴퓨터와 센서가 합쳐 300 W를 쓰고 도심 평균 속도가 시속 30 km라면 1 km당 \(300 / 30 = 10\) Wh, 100 km당 1 kWh다. 전비가 100 km당 15 kWh인 차라면 약 7 %가 늘어난다. 같은 300 W라도 고속도로에서 시속 100 km로 달리면 100 km당 0.3 kWh, 약 2 %로 줄어든다. 느리게 오래 달리는 도심 로보택시에서 연산 전력이 더 아픈 이유다.
ODD와 책임의 경계
어떤 자율주행 시스템도 "모든 곳, 모든 조건"에서 작동하도록 설계되지는 않는다. 시스템이 작동하도록 설계된 조건의 집합을 운영 설계 영역(Operational Design Domain, ODD)이라 한다. 도로 종류(자동차 전용 도로, 도심), 지리적 범위, 속도 범위, 시간대, 날씨, 노면 상태, 차선 표시 유무 등이 여기에 들어간다. ODD를 좁게 잡을수록 만나게 될 상황의 종류가 줄어 안전을 입증하기 쉬워지고, 넓힐수록 쓸모가 커진다. 자율주행 개발의 진행은 대부분 ODD를 조금씩 넓혀 가는 과정이다.
17장에서 본 자동화 레벨은 결국 "문제가 생겼을 때 누가 수습하는가"로 갈린다. 레벨 2는 사람이 항상 감시하므로 수습도 사람이 한다. 레벨 3은 ODD 안에서 시스템이 운전하고 사람은 전방을 보지 않아도 되지만, 시스템이 요청하면 정해진 시간 안에 운전을 넘겨받아야 한다. 레벨 4는 사람이 넘겨받지 않아도 시스템이 스스로 안전한 상태까지 간다. 레벨 3에서 까다로운 지점은 넘겨받는 시간이다. 다른 일을 하던 사람이 상황을 파악하고 운전대를 잡는 데는 수 초가 걸린다. 국제 규정의 한 예는 제어권 전환 요청 뒤 최소 10초가 지나기 전에는 비상 기동을 시작하지 않도록 정하고 있다. 그 10초 동안 시스템은 계속 안전하게 운전할 수 있어야 하므로, 레벨 3 시스템도 갑작스러운 고장을 사람에게 떠넘길 수 없다.
사람이 넘겨받지 않거나 넘겨받을 사람이 없을 때 시스템이 수행하는 동작을 최소 위험 기동(Minimal Risk Maneuver, MRM), 그 결과로 도달하는 상태를 최소 위험 상태(Minimal Risk Condition)라 한다. 가장 단순한 MRM은 비상등을 켜고 차로 안에서 부드럽게 정지하는 것이다. 하지만 고속도로 본선에 서 있는 차는 그 자체가 위험이므로, 더 나은 MRM은 갓길이나 안전한 장소까지 이동해 정차한다. 그러려면 주 컴퓨터나 주 센서가 죽은 상태에서도 수십 초 동안 차로 변경과 정차를 수행할 수 있는 예비 계통이 필요하다. 이것이 다음 절의 이중화로 이어진다.
운전석에 사람이 없는 레벨 4 차량은 스스로 판단하기 어려운 상황, 예를 들어 공사 구간에서 수신호를 따라 중앙선을 넘어야 하는 경우에 원격 지원(remote assistance)을 요청한다. 관제 센터의 사람은 보통 차를 직접 조종하지 않는다. 통신 지연과 끊김이 있는 무선망으로 조향을 직접 맡기기는 위험하기 때문이다. 대신 "이 경로로 지나가도 된다", "저 물체는 무시해도 된다" 같은 상위 수준의 힌트를 주고, 실제 주행과 충돌 회피는 차량이 계속 책임진다.
기능 안전: 고장이 나도 안전하게
전자 부품은 언젠가 고장 난다. 메모리의 비트가 뒤집히고, 커넥터가 빠지고, 소프트웨어에는 버그가 있다. 기능 안전(functional safety)은 전기·전자 시스템의 오동작이 사람을 다치게 하지 않도록 하는 체계이고, 자동차에서는 국제 표준 ISO 26262가 이를 다룬다. 출발점은 위험원 분석 및 위험 평가(HARA)다. 기능마다 "어떤 오동작이 어떤 상황에서 어떤 사고로 이어지는가"를 나열하고, 각각을 세 가지 척도로 평가한다.
- 심각도 S(Severity): 사고가 나면 얼마나 크게 다치는가. S0(부상 없음)부터 S3(생명을 위협하거나 치명적)까지.
- 노출 E(Exposure): 그 오동작이 위험해지는 주행 상황에 얼마나 자주 놓이는가. E0(사실상 없음)부터 E4(높은 확률, 거의 매 주행)까지.
- 제어 가능성 C(Controllability): 운전자나 주변 사람이 사고를 피할 수 있는가. C0(일반적으로 제어 가능)부터 C3(제어가 어렵거나 불가능)까지.
세 등급의 조합이 ASIL(Automotive Safety Integrity Level)을 정한다. 낮은 쪽부터 QM(일반 품질 관리로 충분), A, B, C, D다. 표준의 표는 규칙이 단순하다. S, E, C의 숫자를 더해 10이면 D, 9면 C, 8이면 B, 7이면 A, 그 아래는 QM이다. 어느 하나가 한 단계 낮아지면 ASIL도 한 단계 내려간다. ASIL이 높을수록 개발 절차, 검증 범위, 하드웨어 고장률 목표가 엄격해진다.
ASIL 결정기
ASIL D의 무작위 하드웨어 고장 목표는 대표적으로 시간당 \(10^{-8}\) 미만, 즉 10 FIT 미만이다. FIT(Failures In Time)은 10억 시간당 고장 수다. 차 한 대가 하루 한 시간씩 달린다면 평균 27만 년에 한 번꼴이다. 부품 하나로 이 수준을 달성하기는 어렵다. 그래서 두 가지 수단을 쓴다. 하나는 진단이다. 고장을 검출해 안전한 상태로 전환하면 그 고장은 위험한 고장으로 세지 않는다. 다른 하나는 이중화다.
fail-safe와 fail-operational
전통적인 차량 전자 장치는 fail-safe로 설계된다. 고장을 감지하면 기능을 끄고 경고등을 켠다. 전동 조향 보조가 꺼지면 운전대가 무거워질 뿐 사람이 기계적 연결을 통해 계속 조향할 수 있다. 운전자가 안전한 상태로 가는 길을 맡는 셈이다. 운전자가 없거나 주의를 기울이지 않는 자율주행에서는 기능을 꺼 버리는 것이 안전하지 않다. 시속 100 km로 달리는 차의 조향이 꺼지면 그것이 곧 사고다. 고장 뒤에도 최소 위험 기동을 마칠 때까지 기능을 유지해야 하고, 이것을 fail-operational이라 한다. 성능을 낮춘 채 유지하는 경우는 fail-degraded라 한다.
이중화의 대상은 사슬 전체다. 전원은 독립된 두 공급 경로를 두어 한쪽이 단락돼도 다른 쪽이 살아 있게 한다. 컴퓨터는 주 컴퓨터와, 성능은 낮아도 정차까지는 수행할 수 있는 예비 컴퓨터를 둔다. 조향은 모터 권선과 인버터, 토크·각도 센서를 두 벌로 만들어 한 벌이 죽어도 절반의 힘으로 조향한다. 제동은 전동 부스터와 ESC 유압 유닛이 서로의 예비가 된다. 통신선과 센서도 계통을 나눈다. 이때 두 계통이 같은 원인으로 한꺼번에 죽지 않게 하는 것이 핵심이다. 같은 전원선, 같은 커넥터, 같은 소프트웨어 버그, 같은 침수 위치가 공통 원인 고장(common cause failure)을 만든다. 그래서 설계 방식이 다른 칩, 다른 알고리즘, 다른 센서 원리를 섞는 다양성을 함께 쓴다.
식의 둘째 항이 중요하다. 독립 고장은 제곱으로 줄지만 공통 원인 항 \(\beta\lambda T\)는 그대로 남는다. \(\beta\)가 몇 퍼센트만 되어도 이중화의 이득은 \(1/\beta\)배 근처에서 멈춘다. 채널을 세 개로 늘려도 이 한계는 넘지 못한다.
이중화와 고장 확률
ASIL D 요구 사항 하나를 충분히 독립적인 두 요소에 나누어 맡기면 각 요소는 더 낮은 등급으로 개발할 수 있다. 예를 들어 D를 B(D) + B(D)로 나눈다. 인지처럼 ASIL D 수준으로 증명하기 어려운 신경망을 쓰는 기능에서, 서로 다른 센서와 서로 다른 알고리즘으로 된 두 경로가 교차 감시하는 구조가 이 원리에 기대고 있다. 전제는 두 경로의 독립성이며, 독립성을 보이는 분석이 따로 요구된다.
SOTIF: 고장이 없어도 틀린다
ISO 26262는 "설계대로 동작하지 않을 때"를 다룬다. 그런데 자율주행의 사고 가운데 상당수는 모든 부품이 설계대로 동작했는데도 일어난다. 카메라는 정상인데 역광 속의 흰 트레일러를 하늘과 구분하지 못했고, 레이더는 정상인데 정지한 차를 고가 도로의 반사와 함께 걸러 버렸다. 고장이 아니라 성능의 한계와 명세의 빈틈이다. 이런 위험을 다루는 표준이 ISO 21448, 흔히 SOTIF(Safety Of The Intended Functionality)라 부르는 것이다.
SOTIF는 가능한 모든 주행 시나리오를 두 축으로 나눈다. 우리가 아는가 모르는가, 그리고 그 시나리오에서 시스템이 안전한가 위험한가다.
문제는 영역 3이다. 모르는 것을 얼마나 모르는지 알아야 한다. 도로 위의 상황은 롱테일(long tail) 분포를 따른다. 앞차를 따라가는 상황, 신호 대기, 차로 변경이 대부분을 차지하고, 그 뒤로 "도로에 떨어진 매트리스", "휠체어를 타고 오리를 쫓는 사람", "트럭 뒤에 실린 신호등" 같은 드문 상황이 끝없이 이어진다. 각각은 극히 드물지만 종류가 너무 많아서 합치면 무시할 수 없다.
아래 시뮬레이터는 2,000종류의 시나리오가 순위 \(i\)에 대해 \(p_i \propto 1/i^{s}\)의 확률로 나타난다고 놓고 주행을 시작한다. 새로운 종류를 만날 때마다 칸이 칠해진다. 처음에는 빠르게 채워지다가 곧 느려진다. 눈여겨볼 값은 미발견 확률, 즉 다음 상황이 아직 한 번도 본 적 없는 종류일 확률이다. 이 값이 영역 3의 크기에 해당한다.
롱테일에서 시나리오 발견하기
SOTIF의 대응은 세 갈래다. 첫째, 약점을 일으키는 촉발 조건(triggering condition)을 체계적으로 찾는다. 센서 원리별 한계(18장), 알고리즘의 가정, 사람의 오용을 표로 훑는다. 둘째, 찾은 약점은 기능을 고치거나 ODD에서 뺀다. 폭우에서 성능을 보장할 수 없으면 폭우에서는 작동하지 않게 한다. 셋째, 잔여 위험이 수용 기준보다 낮다는 것을 주행과 시뮬레이션으로 뒷받침한다. 셋째가 가장 어렵고, 뒤의 검증 절의 주제다.
RSS: 안전을 수식으로 정의하기
학습된 계획기가 내놓은 궤적이 안전한지를 통계로만 말하면 "대체로 안전하다" 이상을 말하기 어렵다. 다른 접근은 안전을 규칙으로 정의하고, 계획기가 무엇을 내놓든 그 규칙을 어기지 않는지 따로 검사하는 것이다. RSS(Responsibility-Sensitive Safety)는 그런 정식화의 대표적인 예다. "조심해서 운전한다"는 상식을 몇 개의 수식으로 옮기고, 모든 차가 이 규칙을 지키면 사고가 나지 않으며, 사고가 났다면 규칙을 어긴 쪽에 책임이 있다고 본다.
가장 기본이 되는 것이 종방향 안전 거리다. 최악의 경우를 가정한다. 앞차가 지금 이 순간 낼 수 있는 최대 감속도 \(b_{max}\)로 멈춘다. 뒤차는 반응 시간 \(\rho\) 동안 그것을 모르고 오히려 최대 \(a_{max}\)로 가속하다가, 그 뒤에 최소한 보장되는 감속도 \(b_{min}\)으로 제동한다. 그래도 부딪히지 않으려면 처음 간격이 다음보다 커야 한다.
RSS 종방향 안전 거리
두 차 모두 27.8 m/s, \(\rho = 0.5\) s, \(a_{max} = 2\), \(b_{min} = 4\), \(b_{max} = 8\) m/s²로 둔다. 반응 시간 동안 뒤차는 \(27.8 \times 0.5 + 0.5 \times 2 \times 0.25 = 14.1\) m를 가고 속도는 28.8 m/s가 된다. 제동 거리는 \(28.8^2 / 8 = 103.5\) m다. 앞차는 \(27.8^2 / 16 = 48.2\) m만에 선다. 따라서 \(d_{min} = 14.1 + 103.5 - 48.2 \approx 69\) m, 시간으로는 약 2.5초 간격이다. 사람이 흔히 유지하는 1~2초 간격보다 길다. 파라미터를 보수적으로 잡을수록 안전하지만 차는 소심해지고 도로 용량은 줄어든다.
RSS는 종방향 거리 외에도 횡방향 안전 거리, 우선권은 "주어지는 것이지 취하는 것이 아니다"라는 규칙, 시야가 가려진 곳에서의 속도 제한, 위험한 상황에서의 적절한 대응을 정의한다. 이런 규칙 기반 검사기는 학습 기반 계획기 뒤에 놓여 궤적을 통과시키거나 거부하는 안전 덮개로 쓰인다. 계획기 자체는 증명하기 어려워도 덮개는 작고 결정적이어서 높은 ASIL로 개발할 수 있다. 한계도 있다. 규칙은 인지 결과가 옳다는 전제 위에 서 있으므로 보지 못한 물체에 대해서는 아무것도 보장하지 못하고, 파라미터 값을 어떻게 정할지는 사회적 합의의 문제로 남는다.
검증: 몇 km를 달려야 하는가
"사람보다 안전하다"를 보이는 가장 직관적인 방법은 많이 달려 보는 것이다. 문제는 사람이 생각보다 안전하다는 점이다. 사망 사고는 대표적으로 1억 km당 0.5~1건 수준이고, 부상 사고는 수십 건, 신고되는 모든 사고는 수백 건 수준이다(나라와 도로 종류에 따라 크게 다르다). 사건이 이렇게 드물면 통계는 잔인해진다.
사고가 서로 독립이고 일정한 비율 \(\lambda\)(건/km)로 일어난다면 \(n\) km를 달리는 동안의 사고 건수는 평균 \(\lambda n\)인 푸아송 분포를 따른다. 사고가 한 건도 없을 확률은 \(e^{-\lambda n}\)이다. 우리가 원하는 것은 그 반대 방향의 추론이다. \(n\) km를 무사고로 달렸을 때 "실제 사고율이 \(\lambda\)보다 낮다"고 신뢰 수준 \(C\)로 말하려면, 사고율이 \(\lambda\)인 시스템이 운 좋게 무사고로 통과할 확률이 \(1-C\) 이하여야 한다.
몇 km를 달려야 증명되는가
사망 사고율이 1억 km당 0.7건(\(\lambda = 7 \times 10^{-9}\)/km)보다 낮다는 것을 95 % 신뢰 수준으로 보이려면 \(n = 3.0 / (7\times10^{-9}) \approx 4.3\)억 km를 사망 사고 없이 달려야 한다. 시험차 100대가 하루 960 km씩 달리면 하루 9만 6천 km이고, \(4.3\times10^8 / 9.6\times10^4 \approx 4{,}460\)일, 약 12년이다. 이것은 "사람과 비슷하다"를 보이는 데 드는 거리다. "사람보다 20 % 안전하다"처럼 작은 차이를 통계적으로 구분하려면 수십 배가 더 필요하다. 게다가 소프트웨어를 한 번 고치면 엄밀하게는 처음부터 다시 세어야 한다.
그래서 주행 거리만으로는 증명할 수 없고, 여러 증거를 쌓아 안전 논증(safety case)을 구성한다.
- 시나리오 기반 시험. 무작위로 달리며 드문 상황을 기다리는 대신, 위험한 상황을 직접 만들어 시험한다. "앞차 끼어들기"라는 논리 시나리오를 정하고 상대 속도, 끼어드는 거리, 노면 마찰 같은 파라미터의 범위를 정한 뒤, 그 공간을 격자나 표본으로 훑는다. 실패 경계 근처를 집중적으로 찾는 탐색도 쓴다.
- 시뮬레이션. 실제 도로 1 km는 대부분 아무 일도 일어나지 않지만 시뮬레이션은 사건만 골라 수천 배 빠르게 돌릴 수 있다. 기록된 센서 데이터를 다시 흘려보내는 재생(log replay), 주변 차량이 자차의 행동에 반응하는 폐루프 시뮬레이션, 센서 신호까지 합성하는 방식이 있다. 실제 구간을 측량해 그대로 옮긴 가상 환경을 디지털 트윈이라 한다. 시뮬레이션의 결과는 시뮬레이터가 현실을 얼마나 닮았는지만큼만 믿을 수 있으므로, 같은 시나리오를 시험장에서 실제로 돌려 일치하는지 확인하는 과정이 필요하다.
- 폐쇄 시험장과 실도로. 시험장은 시뮬레이션의 정확도를 확인하고 물리적으로 까다로운 상황을 재현한다. 실도로 주행은 통계 증명보다 "생각하지 못한 시나리오"를 발견하는 역할이 크다. 앞 절의 롱테일 곡선이 그 발견 속도다.
개입 횟수는 무엇을 말해 주는가
시험 주행에서 안전 요원이 자동 주행을 해제한 횟수, 즉 개입(disengagement) 사이의 평균 주행 거리가 진척 지표로 자주 인용된다. 같은 회사의 같은 지역에서 추세를 보는 데는 쓸모가 있지만 회사 간 비교에는 맞지 않는다. 한적한 교외 도로와 복잡한 도심은 난이도가 다르고, 무엇을 개입으로 셀지의 기준이 회사마다 다르며, 조심스러운 안전 요원일수록 개입이 많다. 개입했을 때 정말 사고가 났을지는 그 장면을 시뮬레이션으로 되돌려 봐야 알 수 있다. 숫자를 좋게 만들려고 쉬운 길만 달릴 유인도 생긴다. 지표가 목표가 되면 지표로서의 가치를 잃는다는 전형적인 사례다.
V2X와 보안: 차 밖과 연결하기
차에 달린 센서는 직선으로만 본다. 건물 모퉁이 뒤, 대형 트럭 앞, 언덕 너머는 어떤 센서로도 보이지 않는다. V2X(Vehicle-to-Everything)는 차량이 다른 차량(V2V), 신호등 같은 도로 시설(V2I), 보행자 단말(V2P), 통신망(V2N)과 무선으로 정보를 주고받는 기술이다. 각 차량이 자기 위치·속도·방향을 초당 10회 정도 방송하면, 받는 쪽은 눈에 보이기 전에 상대의 존재를 안다.
무선 기술로는 무선랜 계열의 DSRC와 이동통신 계열의 C-V2X(Cellular V2X)가 있다. C-V2X는 기지국을 거치지 않고 차량끼리 직접 주고받는 방식과 기지국을 거치는 방식을 함께 쓴다. 직접 통신의 도달 거리는 대표적으로 수백 m, 지연은 수십 ms 수준이다. 응용은 단계적으로 확장된다. 자기 상태를 알리는 기본 안전 메시지, 신호등의 현재 신호와 잔여 시간, 한 차량이나 도로변 센서가 본 물체 목록을 나눠 주는 협력 인지, 그리고 여러 차량이 가속과 제동을 맞추는 협력 주행이 있다. 군집 주행(platooning)은 트럭들이 통신으로 앞차의 제동 명령을 직접 받아 반응 시간을 줄이고, 그만큼 좁은 간격으로 달려 공기 저항을 줄인다(12장).
가려진 교차로와 V2X
V2X는 보조 수단이지 기반이 될 수는 없다. 모든 차와 보행자가 단말을 갖추지는 않았고, 메시지는 지연되거나 사라지며, 보낸 쪽의 위치가 틀릴 수도 있다. 그래서 설계 원칙은 "V2X 정보가 있으면 더 일찍, 더 부드럽게 대응하되, 없어도 안전해야 한다"가 된다. 수신한 메시지는 하나의 센서 입력으로서 19장의 융합에 들어가고, 자체 센서와 어긋나면 신뢰도를 낮춘다.
사이버 보안과 OTA
바깥과 연결되는 순간 차는 공격 대상이 된다. 원격으로 제동과 조향을 조작할 수 있는 차는 그 자체가 안전 문제이므로, 보안은 기능 안전과 따로 떼어 생각할 수 없다. 자동차 사이버 보안은 ISO/SAE 21434 표준과 국제 규정이 다루며, 제조사가 개발부터 폐차까지 위협을 분석하고 대응하는 관리 체계를 갖추도록 요구한다. 차량 안의 기술적 수단은 층층이 쌓는다.
- 경계 분리. 외부 통신 모듈과 인포테인먼트를 주행 제어 네트워크에서 분리하고 게이트웨이가 허용된 메시지만 통과시킨다(13장).
- 메시지 인증. 차량 내부 통신에 인증 코드를 붙여 위조된 조향·제동 명령을 걸러 낸다. V2X 메시지는 전자 서명으로 발신자를 확인하되, 위치 추적을 막기 위해 인증서를 주기적으로 바꾼다.
- 보안 부팅. 전원을 켤 때마다 소프트웨어의 서명을 하드웨어 보안 모듈에 들어 있는 키로 검증해 변조된 코드는 실행하지 않는다.
- 침입 탐지. 평소와 다른 통신 패턴을 감지해 기록하고 보고한다.
OTA(Over-The-Air) 무선 업데이트는 발견된 취약점과 결함을 정비소 방문 없이 고치는 수단이자, 자율주행 소프트웨어를 계속 개선하는 통로다. 동시에 가장 강력한 공격 경로이기도 하다. 그래서 업데이트 패키지는 서명되고, 설치 전 검증되며, 저장 공간을 둘로 나누어 새 버전이 부팅에 실패하면 이전 버전으로 되돌린다. 주행 기능을 바꾸는 업데이트는 그 변경이 기존 안전 논증을 깨지 않는지 다시 검증해야 하며, 어떤 차에 어떤 버전이 설치돼 있는지를 추적 관리해야 한다.
사회 속의 자율주행
두 갈래의 접근
현재의 개발은 출발점이 다른 두 갈래로 나뉜다. 하나는 로보택시다. 처음부터 운전자가 없는 레벨 4를 목표로, 제한된 지역 안에서 서비스한다. 차량 한 대에 라이다·레이더·카메라를 여러 벌 싣고, 그 지역의 정밀 지도를 만들고, 원격 지원 센터와 정비 거점을 운영한다. 차량은 운영사가 소유하고 관리하므로 센서 세척과 교정, 소프트웨어 버전을 통제할 수 있고, 비싼 하드웨어 비용은 운전자 인건비를 대체하는 것으로 회수한다. 확장의 병목은 새 도시마다 필요한 지도 작성과 검증, 운영 기반이다.
다른 하나는 개인 승용차다. 소비자가 살 수 있는 가격의 센서로 레벨 2 운전자 보조에서 시작해, 수많은 차량에서 모은 데이터로 기능과 ODD를 점차 넓힌다. 어디서나 켤 수 있지만 사람이 계속 감시해야 하고, 감시 의무를 없애는 순간 앞에서 본 이중화, 안전 논증, 책임 문제를 모두 만난다. 한쪽은 좁은 ODD에서 완전한 자율로 출발해 영역을 넓히고, 다른 쪽은 넓은 ODD에서 부분 자동화로 출발해 자율의 수준을 높인다. 두 길이 어디에서 만날지는 아직 정해지지 않았다.
| 로보택시 | 개인 승용차 | |
|---|---|---|
| 목표 레벨 | 레벨 4 (운전자 없음) | 레벨 2에서 시작해 3 이상으로 |
| ODD | 지정된 지역, 점진적 확대 | 넓은 도로망, 사람이 감시 |
| 센서 | 다중 라이다·레이더·카메라, 이중화 | 비용 제약, 카메라·레이더 중심 |
| 지도 | 사전 구축한 정밀 지도 의존 | 일반 지도 + 실시간 인지 비중이 큼 |
| 예외 대응 | MRM + 원격 지원 | 운전자에게 인계 |
| 사고 책임 | 운영사·제조사 | 감시 의무가 있는 동안은 운전자 |
윤리와 법, 책임
자율주행의 윤리라 하면 "한 명을 칠 것인가 다섯 명을 칠 것인가" 하는 딜레마가 먼저 떠오르지만, 실제 설계에서 그런 선택이 등장하는 일은 드물다. 차는 누구를 칠지 고르기 전에 제동을 한다. 실제의 윤리적 결정은 훨씬 평범한 곳에 있다. 주차된 차 옆을 얼마나 띄우고 지날지, 가려진 횡단보도 앞에서 얼마나 감속할지, RSS의 파라미터를 얼마나 보수적으로 잡을지가 모두 탑승자의 편의와 다른 도로 이용자의 위험 사이에서 위험을 나누는 결정이다. "얼마나 안전하면 충분한가"도 같은 종류의 물음이다. 평균적인 사람보다 조금 나은 수준이면 되는지, 주의 깊은 숙련 운전자 수준이어야 하는지에 따라 앞 절의 필요 주행 거리가 몇 배씩 달라진다.
법적 책임은 레벨에 따라 옮겨 간다. 사람이 감시 의무를 지는 레벨 2에서는 사고의 일차 책임이 운전자에게 있다. 시스템이 운전 주체가 되는 레벨 3 이상에서는 작동 중의 사고 책임이 제조사나 운영사 쪽으로 이동하는 방향으로 각국의 제도가 만들어지고 있다. 그러려면 사고 순간에 누가 운전하고 있었는지를 가려야 하므로, 자동 주행의 작동 여부, 전환 요청, 운전자 조작을 기록하는 장치가 요구된다. 형사 책임, 보험, 소프트웨어 업데이트 뒤의 책임, 원격 지원자의 지위 같은 문제는 나라마다 다르고 지금도 정리되는 중이다.
남은 과제
- 롱테일. 드문 상황은 끝이 없다. 새로운 상황에서도 상식적으로 행동하는 일반화 능력이 필요하고, 대규모 사전 학습 모델을 주행에 결합하려는 시도가 이어지고 있다.
- 학습 시스템의 검증. 신경망이 왜 그 출력을 냈는지 설명하기 어렵고, 요구 사항에서 코드까지 추적하는 기존 안전 표준의 방식이 그대로 들어맞지 않는다. 규칙 기반 안전 덮개, 다양성을 가진 이중 경로, 통계적 논증을 조합하는 방법이 다듬어지고 있다.
- 악천후와 센서 한계. 폭우, 폭설, 짙은 안개에서는 사람도 운전이 어렵지만, 사람은 못 가겠다고 판단하고 멈춘다. 시스템도 자기 한계를 아는 것이 먼저다.
- 사람과의 상호작용. 눈짓과 손짓으로 이루어지던 양보와 합류를 기계가 어떻게 주고받을지, 그리고 레벨 2·3에서 사람이 지루한 감시를 계속할 수 있는지가 문제다. 자동화가 잘 작동할수록 사람의 주의는 풀어진다.
- 비용과 확장. 센서와 컴퓨터, 이중화된 액추에이터의 가격, 그리고 지역을 넓힐 때마다 드는 검증 비용이 보급 속도를 정한다.
자율주행은 하나의 발명이 아니라, 이 책의 앞 장들에서 다룬 기계·전기·제어 기술 위에 인지와 판단을 얹고, 그 전체가 안전하다는 것을 사회가 받아들일 수 있는 방식으로 보이는 긴 과정이다. 책에 나온 용어는 22장에서 한꺼번에 찾아볼 수 있다.
핵심 정리
- 종단 간 반응 시간은 센서 대기·인지·계획·제어·액추에이터 지연의 합이고, 그동안 차는 감속 없이 \(v\,T_{react}\)만큼 간다. 안전에서는 평균이 아니라 최악의 지연이 기준이다.
- 모듈형 스택은 해석과 검증이 쉽고 인터페이스에서 정보를 잃는다. 엔드투엔드 학습은 정보를 끝까지 흘리지만 분포 밖에서의 동작을 설명하고 검증하기 어렵다. 실제 시스템은 그 사이에 있다.
- ODD는 시스템이 작동하도록 설계된 조건의 집합이다. 레벨 3은 사람에게 인계를 요청하고, 레벨 4는 스스로 최소 위험 기동을 수행해 최소 위험 상태에 도달한다.
- ISO 26262는 심각도 S, 노출 E, 제어 가능성 C로 ASIL(QM, A~D)을 정한다. 운전자가 수습할 수 없는 자율주행은 fail-safe가 아니라 fail-operational이어야 하고, 전원·컴퓨터·조향·제동을 이중화한다.
- 이중화의 이득은 공통 원인 고장 비율 β에 의해 제한된다. 독립성과 다양성이 이중화의 실제 가치를 정한다.
- SOTIF(ISO 21448)는 고장 없이도 성능 한계로 생기는 위험을 다룬다. 알려지지 않은 위험 시나리오를 발견해 줄이는 것이 목표이며, 롱테일 때문에 발견 속도는 주행 거리의 로그에 가깝게 느려진다.
- RSS는 최악의 가정 아래 안전 거리를 수식으로 정의해, 학습 기반 계획기 뒤에서 궤적을 검사하는 결정적 안전 덮개로 쓰인다.
- 사고율 λ 이하임을 신뢰 수준 C로 보이려면 \(-\ln(1-C)/\lambda\) km를 무사고로 달려야 한다. 사망 사고 수준에서는 수억 km가 필요해, 시나리오 기반 시험과 시뮬레이션을 결합한 안전 논증이 필수다.
확인 퀴즈
시속 72 km(20 m/s)로 달리는 차의 종단 간 반응 시간이 0.4 s에서 0.25 s로 줄었다. 공주 거리는 얼마나 줄어드는가?
어떤 위험원이 S3, E3, C3으로 평가되었다. ASIL은?
운전자가 전방을 보지 않는 자율주행 차의 조향 계통을 fail-safe가 아니라 fail-operational로 만들어야 하는 이유는?
채널 고장 확률이 \(10^{-3}\)인 장치를 1oo2로 이중화했다. 공통 원인 비율 β가 10 %일 때 시스템 고장 확률에 가장 가까운 값은?
다음 중 SOTIF(ISO 21448)가 다루는 위험의 예로 가장 알맞은 것은?
1,000만 km당 1건인 사고율보다 낮다는 것을 95 % 신뢰 수준으로 보이려면 무사고로 약 몇 km를 달려야 하는가?