자율주행 ADAS 수행과정 :: 판단, 측위, 인식, 계획, 제어

자율주행(Autonomous Driving) 차량이 ADAS(Advanced Driving Assistance System)를 원활하게 수행하기 위해서는 어떤 것이 필요할까. 인간 운전자가 차를 운전하는 과정을 먼저 생각해보자.

운전자는 먼저 목적지를 정하고 목적지까지 어떻게 갈지 생각해 볼 것이다.

익숙한 지역에서 운전한다면 머릿속에 저장된 경로를 따라 주행하겠지만 낯선 지역이라면 내비게이션이나 지도 등을 보면서 목적지까지 가는 방법을 알아볼 것이다.

운전자는 이 과정에서 눈(Eyes)으로 직접 주변을 보는 것만으로도 운전에 필요한 도로 상황을 파악할 수 있다.

이렇게 입력된 주변 상황을 바탕으로 교차로에서 좌회전할 때 운전자는 맞은편에서 오는 차량을 보면서 신호를 기다리고 있다가 신호가 바뀌면 신호를 확인하고 출발할 수 있다.

좌회전 차량을 무시하고 우회전하는 부주의한 다른 차량이 보이면 곧바로 브레이크를 밟고 멈추거나 차선을 변경한다.

이러한 모든 과정은 반복학습과 연습을 통해 익숙해진다.

우리의 뇌는 상황을 빠르게 인식(Perception)하고 차량을 어떻게 움직일지를 계획(Planning)하여 차량을 제어(Control)하게 된다.

(인식→계획→제어)

자율주행차 역시 이와 같은 방법으로 차량을 제어한다.

차이라면 자율주행차는 눈이 아닌 센서(Sensor)를 통해 도로 상황과 외부 물체의 데이터를 받고, 이런 데이터를 바탕으로 정확한 정보를 판단(Detection)해야 비로소 자동차가 도로 상황을 인식(Perception)할 수 있게 된다.

인식된 정보를 바탕으로 자율주행차는 목적지까지 어떻게 나아갈지 계획(Planning)하고 이를 바탕으로 차량을 제어(Control)하는 것이다.

(판단→인식→계획→제어)

제어를 제외하면 인식과 판단은 대부분 딥러닝(Deep Learning)과 같은 SW 알고리즘을 통해 처리된다.

사람은 해당 과정을 교육과 경험을 통해 직관적으로 수행하지만 컴퓨터가 동일한 기능을 수행하기 위해서는 반복적인 학습을 통한 SW 발전이 이를 가능하게 하기 때문이다.

따라서 이러한 SW 알고리즘을 신속하게 실행할 수 있는 컴퓨팅 파워가 높은 칩셋도 필요하다.

센싱 Sensing

인간 운전자가 인식하는 과정을 다시 한번 살펴보자. 운전자가 직접 눈으로 교통상황을 알아보는 이 단순한 과정에서 우리 눈은 단순히 빛과 색깔 패턴을 저장해 뇌로 전달될 뿐이다.

입력된 시각정보를 바탕으로 과거 경험과 교육 등을 통해 얻은 지식 등을 바탕으로 복합적인 뇌작용을 통해 인식하게 된다.

이 과정을 자율주행차에 대입해보면 카메라, 초음파 센서, 레이더(Radar), 라이다(LiDAR) 같은 센서류는 시각이나 위치 정보를 뇌에 전달하는 눈과 같은 역할을 한다.

자동차용 센서는 크게 주변 에너지를 흡수하는 수동 센서(Passive Sensor)와 직접 에너지를 발산해 반사되는 에너지를 수신하는 능동 센서(Active Sensor)로 나뉜다.

카메라는 대표적인 수동 센서로 주변에 빛이 전혀 없거나 적으면 제 기능을 할 수 없다.

그러나 이에 반해 능동센서인 초음파센서, 레이더(Radar) 및 라이다(LiDAR)는 각각 초음파, 전자파 및 빛을 발사하고 그것이 물체에 맞고 반사되어 돌아오는 신호를 감지하여 물체와의 거리를 측정하므로 빛이 전혀 없는 상황에서도 정상적으로 작동한다.

각 센서는 각각의 장단점을 갖고 있어 하나만 사용하기보다는 둘 이상의 센서를 조합한 방식이 자율주행차에 적용되고 있다.

인식 Perception

센서를 통해 입력된 정보는 단순히 이미지 및 물체까지의 거리와 같은 단순한 데이터에 불과하다.

해당 데이터를 적절히 자율주행차가 이해할 수 있는 정보로 바꿔 전달하는 모든 기술이 인식(Perception) 기술에 속한다고 볼 수 있다.

차량을 둘러싼 주변 환경을 제대로 인식하지 못하면 자율주행차를 안전하게 운행하는 것이 불가능하다.

무단횡단하는 보행자를 인식하지 못하면 안전사고로 이어질 수 있다.

즉 인식기술은 자율주행차의 안전을 담보하는 핵심기술이라 할 수 있다.

인식 기술은 크게 도로나 물체 등을 인식하는 판단(Detection)과 차량의 정확한 위치를 파악하는 측위(Localization)로 나뉜다.

판단 Detection

먼저 도로, 표지판, 다른 차량 및 사람 등 차량을 둘러싼 모든 움직이거나 정지된 물체를 인식하는 기술을 판단(Detection)이라고 한다.

자율주행차가 어떻게 하면 남들처럼, 혹은 남들보다 잘 도로 환경을 파악하고 무단횡단하는 사람을 발견하고 인도에서 갑자기 튀어나오는 오토바이를 빠르게 인지할 수 있을까. 인식 기술을 거치기 전 센서를 통해 입력된 정보는 단순한 이미지 정보에 불과하다.

이는 LiDAR 등을 통해 입력된 값도 마찬가지다.

발사한 빛의 반사 후 돌아오는 시간차를 이용해 다른 사물까지의 거리를 잰 LiDAR의 Raw Data는 무질서한 인식 과정을 거쳐야 의미 있는 정보가 된다.

해당 데이터를 자율주행차 제어 프로그램이 차량이나 사람 등에서 크기까지 명확히 인식하려면 SW 처리 과정이 필수다.

일반적으로 물체 인식을 수행하기 위해 CNN(Convolutional Neural Network, 이하 CNN) 알고리즘을 많이 사용한다.

여러 층의 레이어를 통해 학습을 반복 수행하고 학습 능력을 향상시키는 신경망(Nueral Network) 이론은 알파고 등에 의해 널리 알려져 있다.

그러나 일반적인 신경망 알고리즘은 자율주행과 같은 고해상도 이미지를 지연 없이 고속으로 처리하는 데 어려움이 있다.

CNN은 형태, 색상, 모서리 및 텍스처 등 간단한 형상을 빠르게 인식하는데 최적화돼 있다.

각각의 숨은 레이어는 입력값을 받아 특정 패턴을 통해 변환시킨 후 다음 레이어로 전달하는 필터와 같은 역할을 한다.

레이어가 많을수록 매번 새로운 입력값이 다음 레이어로 전달된다.

예를 들어 첫 번째 레이어는 검은색, 흰색, 노란색 등의 색상만 식별한 뒤 다음 레이어로 전달한다.

다음 레이어는 사각, 삼각과 같은 모양을 식별한 뒤 다음 레이어로 보내고 마지막 레이어는 모양과 색깔과 같은 프론트 레이어에서 전달받은 입력값을 바탕으로 물체가 강아지인지 사람인지를 구별하는 방식이다.

기본적으로 많은 레이어를 거칠수록 인식률은 정확해진다.

이렇게 SW 처리 과정을 거친 후 SW는 자동차, 도로 표지판 및 보행자와 같은 도로 위의 정보를 인식하게 되는 것이다.

측위 Localization

측위(Localization)는 자율주행차의 정확한 위치를 최소한의 오차로 정확히 파악하는 기술이다.

차량의 정확한 위치를 자율주행 SW가 인식하지 못하면 해당 자율주행 차량은 원하는 목적지로 주행하지 못할 뿐만 아니라 고가도로 아래로 떨어지는 등 안전 문제를 일으킬 수 있어 매우 중요한 기술이라 할 수 있다.

GPS(Global Positioning System)를 통해 내비게이션이 차량의 위치를 파악하는 방법도 Localization의 예라 할 수 있다.

그러나 자율주행차가 측위를 정확히 하려면 기존 GPS만 활용한 방법으로는 한계가 있다.

GPS는 지구 중궤도를 도는 4개 이상의 인공위성이 발신하는 마이크로파를 GPS 수신기로 수신해 위치 벡터를 결정하는 방법으로 측위를 수행한다.

GPS는 신호 지연이나 전리층 등의 영향으로 작게는 수십cm에서 크게는 수m까지 오차가 생긴다.

인공위성의 마이크로파를 수신할 수 없는 터널 및 지하 등에서는 작동하지 않는데다 고가도로에서는 정확한 위치정보를 파악하기 어려운 단점이 있다.

자율주행을 안전하게 운행하려면 수㎝ 이하의 오차로 차량의 정확한 위치를 파악할 수 있어야 한다.

현재 자율주행차 기업들은 크게 HDMap을 활용한 방법과 SLAM(Simultaneous Localization And Mapping)에 기반한 알고리즘을 사용하고 있다.

HDMap을 이용한 방법은 지도상에 위치한 랜드마크 정보를 센서를 통해 인식된 정보를 기반으로 매칭 작업을 수행하고 이를 통해 정확한 차량의 위치를 확인하는 방법이다.

가장 정확한 측위가 가능한 방법이지만 HDMap이 없으면 기능할 수 없는 단점이 있다.

이에 SLAM 기법은 자율주행차가 주변 환경을 인식해 그 공간의 지도를 작성하면서 동시에 차량의 위치를 파악하는 방법으로 로봇청소기 등에서 많이 이용된다.

가장 큰 장점은 맵이 없는 상황에서도 자율주행차가 주행 가능하다는 점이다.

TeslaFSD도 SLAM 기법을 이용하고 있는 것으로 알려져 있다.

모빌리와 구글 등 자율주행 기업은 두 가지 방법을 혼용해 사용하고 있다.

계획 Planning & 제어 Control

이로써 자율주행차는 판단(Detection)과 측위(Localization) 과정을 통해 차량을 둘러싼 주변 환경과 정확한 위치를 파악할 수 있게 됐다.

다음은 목적지까지 어떻게 갈지 결정하고 정해진 경로를 따라 차량을 제어하는 일만 남았다.

로컬 경로 계획을 먼저 하고 사람이 운전하는 차량을 고려해 경로를 설정해야 한다.

다른 자동차가 경로를 변경하면 이에도 대응해야 한다.

계획(Planning)에는 다양한 알고리즘이 사용되고 있는데 공통점은 센서 및 차량 제어장치로부터 끊임없이 피드백을 받아 경로를 재설정한다는 것이다.

최근 높아진 자율주행차 연산 능력으로 Driving Corridors 경로 설정 알고리즘으로 많이 사용되고 있다.

드라이브 코리더는 차선과 장애물에서 차량이 나아가려는 방향에서 지속적으로 충돌이 없는 공간을 찾아내는 알고리즘으로 통상 SLAM에서 생성된 맵을 기반으로 작동한다.

경로 설정이 끝났다면 차량을 제어하는 것은 간단하다.

대부분의 자동차 부품이 전자제어되기 때문에 PathPlanning에 맞춰 차를 출발시킨다.

만약 장애물을 피할 수 없다면 차를 제동하고 스티어링을 통해 방향을 바꿀 뿐이기 때문이다.