자율주행차는 소프트웨어다

오늘은 지금까지 자율주행차 소개를 하는 내용 중에서 가장 어려운(?) 것을 다루려고 합니다. 아래에서 소개하려고 하는 몇몇 용어만으로도 현재 엄청난 연구가 진행되고 있는 것들입니다. 그럼에도 불구하고 제가 소개를 하는 이유는 자율주행차가 등장하게 된 가장 중요한 요소이기 때문입니다. 조금은 이해가 어렵고 힘드실 수도 있지만, 그냥 이런 내용들도 있구나, 자율주행차 개발이 그렇게 쉬운 것은 아니구나 하는 정도로 알고 계셔도 좋을 것 같습니다. 가능한 간단히 설명을 하려고 합니다. 즉 생략과 축약이 포함된 내용들이 될 것입니다.  (ㅎ_ㅎ)

 

(◍’◡’◍)
Episode 5 출발합니다! 

Ep1. 자율주행차라고 들어는 본 것 같다
Ep2. 자율주행차가 세상을 보는 방법은 여러가지이다
Ep3. 자동차가 사람을 믿지 못한다. 그래서 나서고 있다
Ep3 확장판. 테슬라 오토파일럿만 있는 것은 아니다
Ep4. 자동차 센서는 완전히 믿음을 주지 못한다
Ep5. 자율주행차는 나름 많은 생각을 하면서 운전한다
Ep6. 자율주행차가 도대체 어떻게 움직이는지 궁금하다
Ep7. 그런데 자율주행차만 있으면 안 된다
Ep8. 그래서 자율주행차가 우리에게 뭘 줄 수 있는데요?

 

학습하는 로봇

 

들어가기

여러분은 자율주행차가 하드웨어라고 생각하시나요? 만약 그러시다면 간단히 바퀴 달린 쇳덩어리 정도로 표현할 수 있을 듯… 1950년대는 그랬을 수도 있습니다. 하지만 지금 여러분이 사용하는 자동차들은 버튼 하나를 누르면 에어컨이 원하는 온도에 따라 조정되고, 음성으로 창문도 내리고, 음악도 켜기도 합니다. 하지만 실제로 자동차의 많은 움직이는 부품에는 ECU(Electronic Control Unit)라고 불리는 조그마한 컴퓨터가 있어서 자동차 부품의 상태를 확인하고 제어도 할 수 있습니다.

즉 여러분의 안전과 편리함을 위해 자동차는 전자 신호를 통해 제어되는 컴퓨터가 이미 장착되어 있습니다. 그리고 그 안에는 각 부품에 필요한 프로그램이 되어 있습니다. 그런 이유로 이미 자동차는 움직이는 컴퓨터라는 표현을 합니다. 그렇기 때문에 종종 해킹의 위험에 자동차가 노출될 수 있다는 뉴스가 등장합니다.

 

조금 간단히(?) 알아보는
자율주행차의 인공지능 

저는 늘 자율주행차를 소개할 때 꼭 하는 이야기는 “자율주행차는 소프트웨어이다” 입니다. 제가 자율주행차를 정의할 때에 자율주행차를 간단히 로봇이 운전하는 자동차라고 했습니다. 로봇가 움직일 수 없다면 기계덩어리에 불과합니다. 로봇을 움직이게 하는 것이 바로 소프트웨어입니다. 그래서 자율주행차도 로봇이기 때문에 소프트웨어가 중요하다고 할 수 있습니다. 앞서 제가 이미 자동차에는 프로그램이 되어 있다고 했습니다. 프로그램은 소프트웨어를 의미하기도 합니다.

네, 맞습니다. 이미 자동차에는 엄청난 양의 소프트웨어가 포함되어 있습니다. 하지만 자율주행차는 또 다른 종류의 소프트웨어가 필요하다는 것을 알 수 있습니다. 현재의 자동차들을 자율주행차라고 부르지 않고 있는 것으로 봐서는 말이지요.

 

ECU / Silvaco

 

몇 년 전, 영어로 쓴 글을 한글로 번역해
주는 것이 신기했던 적이 있었습니다.
몇 년 전, 사진을 골라주는 기능이
포함되어 있다는 휴대폰 광고가 있었습니다. 
몇 년 전, 조그마한 스피커를 사용자가 말로
제어할 수 있다는 것이 유행한 적이 있었습니다.

 

이런 내용들에 공통으로 포함하고 있는 것이 무엇이었을까요? 바로 인공 지능(Artificial Intelligence, AI) 기술이 사용된 것들이었습니다. 그리고 현재 이 기술은 엄청나게 발전해서 정말 여러 분야에서 사용되고, 시도되고 있습니다. 그 중에서도 딥러닝(심층 학습, Deep Learning)이라는 분야가 두드러지게 부각된 적이 있었습니다. 이세돌 9단과 알파고의 바둑대결로 갑자기 말이지요. 그 당시에는 프로그램이 사람과 같이 엄청나게 학습을 하고, 사람과 비슷한 능력을 발휘할 수 있다는 것을 보여준 대표적인 사건이었습니다.

 

이세돌 vs 알파고

 

본격적인 자율주행차의 발전도 바로 다양한 기계학습(Machine Learning, ML)과 딥러닝(Deep Learning, DL) 으로 표현되는 인공지능과 함께 시작되었다고 생각하시면 될 것 같습니다.

제가 자율주행차가 세상을 보는 방법 중에서 가장 대표적인 것이 바로 카메라라고 했습니다. 즉 사람의 시력 역할을 하는 센서입니다. 하지만 자율주행차가 카메라 찍은 영상을 그냥 사용할 수는 없고 영상 중에 포함된 사물에 대해서 이해를 해야 합니다.

이런 기술이 Computer Vision 이라고 부르는 것입니다. 앞서 언급한 휴대폰에서 사진을 분류해내는 기술과 같다고 생각하시면 될 것 같습니다. 카메라에 찍힌 사진에 자동차, 보행자, 자전거 등을 구분해야 자율주행차가 주행을 할 때 피해야 할 장애물로 인식을 할 수 있으니까요. 카메라 외에 사용되는 센서인 레이더, 라이더에서 입력된 정보도 분석하고, 자율주행차가 주변 사물과 도로 상황을 이해할 수 있는 인지 능력(Perception)을 위한 인공 지능 기술이 필요합니다.

 

인지 능력 / Waymo

 

이렇게 인지된 주변 상황을 가지고 자율주행차는 주행에 필요한 계획(Planning)을 해야 합니다. 이런 계획에는 주행 중 순간순간 자동차의 움직임을 결정하는데 필요한 계획과 출발지와 목적지가 정해졌을 때 필요한 전체 이동 경로 계획이 있습니다.

순간순간 자동차의 움직임은 간단히 자동차 주변 상황에 바로 대응할 수 있는 능력으로 이해하시면 편하실 것 같습니다. 그리고 주행 경로는 우리가 네비게이션을 이용하는 것과 같이 출발지와 목적지를 지정했을 때, 최적의 경로를 결정하고 자율주행차가 이동하는 경로를 결정하는 것으로 이해하시면 좋을 것 같습니다. 이런 과정에서 자율주행차는 학습이라는 과정을 통해 일반적인 상황이외에 특수한 상황에도 대응할 수 있는 능력을 키워야 합니다.

 

이동 경로 계획 / Waymo

 

그리고 최종적으로 자율주행차를 제어(Control)할 수 있는 소프트웨어가 필요합니다. 이 과정에서도 상황에 따라 가속을 할지, 감속을 할지, 운전대를 조작할지 등의 판단이 필요하기 때문에 다양한 기계 학습이 필요하기도 합니다.

조금 복잡한 내용을 설명한 것 가지만, 실제로 여러분이 운전을 할 때에 무의식적으로 하는 행동의 과정을 분리해 놓을 것으로 생각하시면 될 것 같습니다. 여러분이 운전을 하면서 주변 상황에 보이는 것에 따라 본능적(?)으로 운전대를 조작해서 자동차를 움직이는 것을 구분해 놓은 것입니다.

 

 

그리고 초보 운전자와 10년 경력의 운전자에 따라 운전하는 능력과 상황 대처 방법이 다른 것처럼 자율주행차도 많은 상황에 대해 대응하는 방법을 학습하는 것에 따라 보다 더 똑똑한 로봇으로 태어난다고 생각하시면 될 것 같습니다. 그래서 관심이 있으신 분들은 들어 보셨을 것 같은 자율주행차의 주행 거리에 대한 이야기가 바로 이것과 관련이 있는 것입니다. 얼마나 많은 거리를 주행했고, 무사고로 주행을 했다고 홍보하는 것을 말이지요. 즉 우리 기업의 자율주행 기술은 이렇게 긴 이동 거리를 주행했다고 자랑하는 것은 여러분이 “내가 운전 경력이 얼마인데…” 라고 이야기하는 것과 같다고 보시면 될 것 같습니다.

즉 많은 주행 거리와 다양한 상황에 대응할 수 있는 학습을 통해 자율주행차의 인공 지능의 능력을 향상시키는 것은 필수인 것입니다. 종종 자율주행차의 능력을 비교할 때, 언급되는 기업은 Google의 Waymo와 Tesla 입니다.

이 두 기업은 비교 자체가 조금은 어려운 부분이 있기는 합니다. 두 기업이 추구하는 자율주행 기술의 방향이 다르기 때문입니다. 그럼에도 불구하고 일반적인 접근으로 본다면 Waymo는 특정 정해진 구역에서의 지속적인 주행을 통해 완벽한 주행 능력을 키우고, Tesla의 경우는 판매된 자신들의 자동차에서 수집된 다양한 주행 기록을 기반으로 인공 지능 능력을 확장하고 있다고 합니다. 그러한 접근으로 본다면 Tesla는 어마어마한 주행 거리를 확보할 수 있습니다. 두 가지 방법이 각각 장단점이 있습니다.

 

 

조금은 어려운 용어로 표현하는
자율주행차의 인공지능

앞선 글에서 제가 간단히 알아보는 자율주행차의 인공지능이라고 했지만, 결코 간단하지 않다고 생각하시는 분도 계실 것 같습니다. 제 능력의 한계일 것입니다. ㅠㅠ 그래도 나름 노력은 했습니다. 이제 조금만 더 깊이 자율주행차의 인공 지능에 대해서 들어 가볼까 합니다. 그래도 자율주행차의 인공지능에서 사용하는 용어 정도는 들어 보시면 좋을 것 같아서… 읽으시다가 어렵다 생각되시면 그냥 넘기셔도 됩니다. ^^

예전 에피소드 2에서 자율주행차의 센서에 대해서 설명할 때, GPS, IMU 등과 같은 센서를 설명한 적이 있습니다. 그리고 HD 지도가 중요한 역할을 한다는 것도 설명을 했습니다. 그러면서 이러한 센서들은 자율주행차가 자신의 위치에 대해서 이해할 때 필요한 것이라고 설명했습니다. 즉 자율주행차가 계획(Planning)을 하기 위해서는 나는 어디에 있고, 어디로 가야 하는지에 대해서 알아야 합니다. 자율주행차 주변을 이해하면서 자신의 정보도 가지고 있어야 한다는 것입니다. 이런 과정을 위해서 지역화(Localization)이라는 기술을 통해 자신이 움직이는 것을 이해하고 있어야 합니다.

만약 여러분이 운전을 할 때, 네비게이션도 고장 나고, 도로 표지판도 없다면 아마 자신이 원하는 방향으로 운전을 하는 것이 쉽지는 않을 것입니다. 뭐, 그래도 난 무조건 직진이라는 가치관을 가지고 계신 분이 있을 수도 있겠지만요. ^^ 하지만 자율주행차는 무조건 직진이라는 것은 아마 존재하지 않을 수도 있습니다. 계획되지 않은 움직임은 상상할 수 없습니다. 너무 무모하니까요. 한마디로 안전하지 않은 행위이기 때문입니다.

 

지역화 / DeepMap

 

이렇게 자율주행차가 인공지능을 사용한다고 했는데 전문적으로 어떤 기술이 사용되는지 정도는 한 번 언급해보겠습니다. Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Reinforcement Learning(DRL) 을 필두로 다양한 기계학습 기술이 사용하고 있습니다. 여기에 한 가지만 더 추가하자면 앞에서 자율주행차는 인지, 계획, 제어의 단계를 통해 움직인다고 했는데요. End2End Learning 이라는 기술은 이 모든 단계를 한 번에 처리하는 방법도 있습니다.

다시 말씀드립니다. 그냥 이런 것이 있다는 정도로만 이해하시길… 너무 당황하지 마시고요 (◍’◡’◍)

 

Deep Learning

 

자율주행차와 컴퓨터

여러분이 만약 컴퓨터를 사용하시다 보면 처음에는 빠르다고 느끼시지만, 점점 시간이 지나면서 느려지는 것을 경험하시게 될 것입니다. 왜 그렇게 될까요? 다양한 이유가 있겠지만, 한 가지 경우로 어떤 최신 프로그램이 많은 기능과 편리하다고 해서 사용하고 싶지만, 본인이 가지고 있는 컴퓨터는 5년 전에 구매한 오래된 모델인 경우가 있습니다. 이런 경우 설치를 해도 제대로 동작을 안 할 수 있습니다. 보다 쉬운 예로는 최신 게임을 하시기 위해 컴퓨터를 교체해야 하는 경우를 생각하시면 될 것 같습니다. 휴대폰도 마찬가지입니다.

앞서 언급한 수많은 역할을 하기 위해 많은 소프트웨어를 사용하기 위해서는 자동차도 거기에 맞는 컴퓨터 능력을 갖추고 있어야 합니다. 그래야 순간순간에 빠른 판단과 적절한 제어를 할 수 있습니다. 하지만 이것이 우리가 사용하는 일반적인 컴퓨터와 다른 것은 자율주행차는 사람의 목숨과 바로 이어지는 중요한 판단을 한다는 것입니다.

EVPOST에 접속하시는 분들이 Tesla에 관심이 많으실 것 같아서 Tesla를 예로 들어보겠습니다. Tesla 가 새로운 오토파일럿의 기능을 소개하면서 반드시 같이 했던 것이 바로 오토파일럿을 위한 하드웨어입니다. HW2, HW2.5, HW3 이라고 부르는 것으로 각각에 따라 AP, EAP, FSD 기능을 사용할 수 있는 것이 제한됩니다. 즉 자율주행 소프트웨어가 많아지고, 복잡해지는 것에 따라 처리를 위해 필요한 하드웨어도 사양이 좋아져야 한다는 것입니다.

이러한 자율주행차를 위한 컴퓨터를 만드는 대표적인 기업은 NVIDIA, Intel-Mobileye, Qualcomm 등이 있습니다. 그 외에도 Waymo, Tesla, Apple 등은 자체적으로 제작을 하는 기업이기도 합니다.

 

Tesla HW3

 

NVIDIA DRIVE AGX PEGASUS

 

나오기

이번 소식은 나름 쉽게 쓴다고 썼지만, 어렵다 느끼셨을 수도 있습니다. 이번 시리즈에서 가장 어려운 글이 될 것이라고 하기는 했지만, 처음 접하시는 분들은 많이 어려운 글이었을 것 같습니다. 하지만 사용자 입장에서 본다면 크게 관심을 가질 만한 내용은 아닙니다. 뭐, 자율주행 옵션 선택하고 알아서 내가 원하는 대로 움직이면 되는 것이지요. ^^ 그래도 시리즈 시작의 취지가 자율주행차에 관련 뉴스를 접할 때 나오는 용어 정도는 이해하셨으면 하는 것을 목표로 하고 있기에 그 정도로 정리를 해봤습니다. 그래서 너무 많이 생략과 축약을 했습니다.

다음 에피소드에서는 지금까지 소개했던 에피소드들의 내용들을 한꺼번에 묶어서 서로 어떤 관계로 이어지는지에 대해서 알아보겠습니다.

Over the Vehicle !!!

 

OTV
Over the Vehicle
자율주행차 그 이상의 가치

 

자동차 센서는 완전히 믿음을 주지 못한다.