Robotics

[AI Day 기념] 자율주행 그거 그냥 하면 되는거 아닌가요? - 자율주행에 대해 살짝만 알아보자

콩지니어 2022. 9. 30. 23:28

이번 포스팅에서는 테슬라의 두번째 AI Day를 앞두고, 자율주행이 어떤 기술이고, 어떤 점이 어려운지, 이를 해결하기 위해 테슬라에서 택한 접근법은 무엇인지 쉽고 간단히 설명을 한번 적어보고자 합니다.

로보틱스에서의 자율주행

글 작성에 앞서 먼저 짧게 제 소개를 드리자면, 저는 실내 자율주행 로봇으로 석사학위를 받고 로봇 연구직에 있습니다. 학위과정 후반에 아래 자율주행 로봇을 시연했었죠.

실내 자율주행 시연

실내(Indoor) v.s. 실외(Outdoor)

로보틱스 분야에서는 자율주행을 Autonomous Navigation, 혹은 짧게 Navigation 으로 칭합니다. 그 중, Indoor와 Outdoor를 구분하는데, 이는 이 둘이 구분 될 만큼 다른 조건을 가정하기 때문입니다.

바퀴달린 로봇이면 전기차랑 같은거 아닌가요

기계적으로는 전기차와 별로 다를게 없습니다. 문제는 두 시스템이 전제로 하는 환경이 매우 다르다는 것 입니다. 아주 심플하게 두 시스템의 특징을 적어보면 이렇습니다.

실외 자율주행
- 차선이 주어짐
- 정지해야 하는 위치를 신호등 혹은 표지판으로 알 수 있음
- 목표로 하는 속도가 빠름
- 이동 형태가 좌회전,우회전 등으로 정해져 있음
실내 자율주행
- 차선 없이 빈 공간을 알아서 찾아가야 함 (주행 조건이 다양함)
- 정지신호가 주어지지 않으며, 사람 혹은 장애물을 고려하여 판단해야 함
- 목표로 하는 속도가 느림
- 로봇 형태에 따라, 혹은 공간의 제약에 따라 제자리회전 등 다양한 모션 발생 가능

이러한 이유로 일반적으로 실내 자율주행이 더 어려운 조건에서 동작해야 하는 더 어려운것으로 여겨집니다.
이번 AI Day에서 휴머노이드 관련 이야기가 나올 가능성이 좀 있어보입니다. 여러 투자자들 및 유튜버들의 말씀을 들어보면 "같은 FSD를 휴머노이드에 넣으면 끝"이라는 의견이 많은데, 여기에는 확실히 그렇다고 동의하기 난해한 이유가 실내와 실외가 일반적으로는 조건 자체가 다르고, 심지어 로봇이 바뀌면 완전히 다른 모델이 된다고 보기 때문입니다.

자율주행의 요구사항

사람은 조금만 연습하면 무리없이 운전을 할 수 있으니, 자율주행의 개발이 빨리 안되는걸 보다 보면 이런 생각이 들기 마련입니다.

신호 지키면서 차선 따라 가다가 문제 있으면 피하면 되는거 아닌가요

이 문장에는 총 4가지 요구사항이 있습니다.

  1. 신호를 보고 판단할 수 있어야 한다.
  2. 차선을 보고 따라갈 수 있어야 한다.
  3. 돌발 상황이 발생했음을 판단할 수 있어야 한다.
  4. 상황에 맞는 대처가 무엇인지 알아내야 한다.

위 4가지는 각각 따로가 하나의 연구 주제였던 일종의 자율주행의 요소 중 일부 입니다.

신호등 - 카메라 영상 중 신호등이 있는지 없는지, 있다면 어디에 있고 어떤 색인지 판단
차선 - 카메라 영상에서 선을 추출하고, 차량이 선을 따라가기 위해 방향을 어디로 얼만큼 돌려야 하는지 판단
돌발상황 - 주행 중 일정 거리 이내에 계획에 없던 무언가 감지되는지 확인
상황대처 - 발생된 돌발상황에 따라 제동, 턴 등 상황을 최대한 피하는 쪽으로 액션을 알아 냄

엄밀히 정확한 구분은 아니지만, 대충 이정도만 해도 자율주행이 왜 어려운지 감은 오실거라 생각합니다.

주행의 요소

사람이 운전을 할 때도 마찬가지인데, 차량의 주행은 아래와 같이 표현 가능한 직진과 회전으로 구분할 수 있습니다.

car motion
차량의 주행

직진 속도는 흔히 우리가 km/h로 표시하는 그 속도와 같고, 회전 속도는 초당 몇 도 회전하는가를 나타냅니다. 최종적인 차량의 주행은 이 두 속도의 조합으로 표현합니다.

주행 = 직진 + 회전

회전이 0이면 직진만, 직진이 0이면 회전만 한다는 건데, 차량은 제자리회전을 못하니 후자의 경우는 없겠죠.

주행 메커니즘

우리가 운전을 한다고 가정, 신호가 떨어져서 시속 50 km/h로 직진만 하고자 한다고 가정해보겠습니다. 신호가 떨어진 후 우리는 가속페달을 정확히 얼만큼 얼마나 오래 밟고 있어야 하는지 계산하지 않고, 적당히 밟아보면서 차가 직진을 잘 하는지 확인을 합니다. 차가 예상과 달리 살짝 옆으로 간다면 핸들을 조금 돌리고도 하죠.
자율주행도 마찬가지 입니다. 실제 환경에서는 계산한 대로 정확히 주행하게 된다는 보장이 없기 때문에, 처음 계산하고 무작정 직진하는 것이 아니라 카메라 등 여러 센서로 계속 확인하면서 잘 직진하고 있는지, 조금 틀어지거나 너무 빠르다면 이를 보정하는 방향으로 목표속도를 정합니다. 이를 시각적으로 표현하면 아래 그림 정도로 정리될 것 같습니다.

scheme

이처럼 목표한 움직임이 있고, 의도한 대로 움직여 보고, 의도와 실제 간 오차가 있으면 이를 보정반복하면서 주행을 이어가는 시스템을 제어공학 분야에서는 Feedback Control System 이라고 합니다. 여기서 목표 이동을 알아서 찾아낸다면 주행 앞에 “자율”을 붙일 수 있게 됩니다.

오차 보정을 위해서는 차량의 상태를 알아야 한다.

위 제어 시스템은 오래전 부터 연구가 많이 되어 최신기술이라고 하기도 어려운 아주 잘 알려진 그리고 잘 풀린 문제인데, 자율주행의 경우에는 제어 자체가 아니라 [차이측정]이 어렵기 때문에 상용화에 애를 먹고 있는 부분이 있습니다.
의도한 바와 얼마나 차량이 다르게 움직였는지를 확인하려면 당연히 차량이 어디서 어떻게 얼마나 움직였는지 알아야 하는데, 이를 마치 전압 측정하듯 손쉽게 확인할 수 있는 방법은 없습니다. 이에, 다양한 센서와 방법을 시도해보는 과정이 전체 자율주행 개발 중 작지 않은 부분인데, 그 중 하나가 테슬라가 내세우는 [카메라]를 이용하는 방법 입니다.
테슬라는 잠시 뒤로 하고, 자율주행의 연구는 카메라/영상처리 연구 보다 한발 앞서 불붙은 감이 있습니다. 아직 카메라로 주변 환경을 파악하기는 기술이 부족할 때라 연구자에겐 옵션이 별로 없었죠.
자율주행 초반에는 초음파 센서를 활용하기도 했지만, 결국 정밀도/정확도 문제로 레이저 기반의 LiDAR 센서를 활용한 자율주행이 가장 활발하게 연구되었습니다. 자율주행의 아버지격 되는 Sebastian Thrun이라는 분이 DARPA Urban Challenge 라는 자율주행 대회에서 활용한 방법이기도 합니다. 2005년인 만큼 요즘 자율주행에 사용되는 센서 보다 오래된 모델이 사용되었습니다.

autonomous vehicle
출처: https://stanford.edu/~cpiech/cs221/apps/driverlessCar.html

이후 멀지않은 미래에 머신러닝의 부흥을 타고 정체되어 있던 카메라 영상처리의 연구성과가 비약적인 발전을 이룹니다만, 여전히 정확도에서 레이저 기반의 센서를 따라갈 수는 없었습니다. (엄밀히 말하면 지금도 그렇습니다.)
그도 그럴것이, LiDAR는 레이저를 이용해 직접 측정을 하는것이고, 카메라는 들어온 영상으로 부터 "이럴 것이다" 라고 "추측" 하는 방식이기 때문에, LiDAR 자체가 기준이 되는 정확도를 이길 순 없겠죠. 이런 이유로 자율주행을 연구하는 대다수의 사람들이 LiDAR 사용을 고수하였습니다.
처음 일론 머스크가 LiDAR를 떼고 카메라로만 하겠다 라고 했을 때 연구자들이 물음표를 머리위로 띄운 이유가 여기에 있죠.

머신러닝으로 빈 자리를 떼워보겠다는 일론 머스크

돌아보면 일론 머스크의 말은 산업적인 측면에서 일리가 있습니다.
LiDAR는 정확한 것만 빼면 카메라를 이용한 방식에 비해 나은게 거의 없습니다. 비싸고, 크고, 약합니다. 거기에, LiDAR를 실제로 여러대 두고 실험해 본 사람이 아니면 잘 알기 어려운 문제가 있는데, 현재 LiDAR는 주변에 다른 LiDAR가 다수 존재할 때 간섭을 받고, 아직 이를 근본적으로 해결한 사례가 없다는 점 입니다. (제가 겪어봤던 문제죠..)
문제는 색정보만 감지하는 카메라를 가지고 어떻게 자율주행을 위한 상황판단을 할 수 있느냐 인데, 이걸 자세하게 다루면 너무 전문적인 내용이 되어버려 이 포스팅의 범주를 넘어가니, 방법론은 생략하도록 하겠습니다.
핵심은, 카메라던 LiDAR던 뭐라도 이용해서 차량의 상태를 측정해 내야 위 제어를 통한 주행을 완성할 수 있다는 점 입니다.

머신러닝은 뭔데 카메라로 이걸 하나요


머신러닝이 무엇인지 역시 자칫 자세히 설명하려다간 글 범주를 넘어가 버리니 아주 심플한 선에서 적어보도록 하겠습니다.
온도의 단위변환을 예로 들어보겠습니다. 우리는 섭씨-화씨간 관계를 (구글에 찾아보면) 알기 때문에 쉽게 섭씨 온도를 화씨로 계산할 수 있습니다.

ml example
온도 단위 변환. 변환식을 알면 쉽다.

그런데, 만약 우리가 (구글링 하기 전 저와 같이) 변환식을 모른다면? 25 °C 가 화씨로 얼마인지 알 길이 없죠.
그런데, 이빨이 없으면 잇몸으로 라는 정신으로, 만약 우리가 25 °C는 아니지만, 다른 변환 결과물이 있다면 정확한지는 몰라도 때려 맞춰볼 수 있다고 의지를 다져볼 수 있습니다.

ml example
유추 쌉가능?

의지는 좋았으나, 손으로 뭔 해보려니 귀찮고 막막하죠. 그래서 이걸 컴퓨터한테 시켜보자 하는게 쉽게 말하면 머신러닝 입니다. 이 데이터들을 알려주는 과정을 "학습" 이라고 하고, 이것이 머신러닝의 러닝(Learning) 입니다.

이게 카메라랑 무슨상관 인가요?

온도변환의 경우 처럼 입력은 있는데 출력을 어떻게 내야하는지 모른다 라는 점을 카메라에 적용하면 이렇습니다.

뭔가 찍었는데, 이걸로 차량의 현재 상태를 어떻게 파악하는지는 모른다.

그런데, 만약에 수많은 카메라 이미지와 이 때의 자동차 상태를 데이터를 쌓아놓았다면? 머신러닝을 통해 유추해보라고 시켜볼 수 있다.
즉, [데이터를 무지막지하게 쌓아놓고 학습을 잘 시키면 LiDAR 같은 좋은 장비 없이도 어느정도 차의 상태를 파악하는 것이 가능할 수 있다] 라는 것이 머신러닝 기반 카메라 자율주행의 핵심 아이디어 입니다.

테슬라는 진짜 이렇게 하나요?

어찌보면 이게 우리가 AI Day에서 눈여겨 봐야 하는 점 일 수 있습니다. 카메라를 이용해 뭘 어떻게 학습시키고, 카메라 데이터로 부터 무엇을 알아내는지 등.
비전문가라면 너무 어려운 내용 보다는 결과적으로 테슬라가 카메라로 어떻게, 얼마나 잘 차량의 상태를 알아내더라 정도를 관심있게 보시면 어떨까 싶습니다.
아직 두번째 AI Day 행사가 열리지 않은 시점에서 봤을 때, 정말 테슬라는 제가 위에 적은 내용대로 개발중일까요?
사실 제가 몇달 전 테슬라에서 주최한 리크루팅 행사에 초대되어 참석한 적이 있습니다. 여기서 제가 몇가지 작정하고 물어봤던 내용이 있었는데, 그 중 하나가 바로 위 내용이랑 관련이 있습니다.
엄청 자세히 알려주지는 않았지만, 테슬라에서는 카메라 이미지로 부터 이동 명령까지 한번에 뽑아 내도록 학습을 시킨다 정도의 답변을 들었습니다.

tesla event
학회 참석 중 초대받고 참석한 테슬라 Happy Hour Event. 서서 돌아다니며 이야기를 나누는 방식의 행사.

 

결론: AI Day에서 자율주행 관련 주목할 점

자율주행 자체가 원래 조금만 설명하려고 해도 전문적인 내용이 나와버리고, 테슬라에서도 AI Day는 리크루팅용 전문적인 내용이 나온다고 공언을 한 만큼, 테슬라가 어떻게 컴퓨터한테 학습을 시키더라 하는 자세한 내용을 이해하려고 하기 보다는, 카메라로 찍은 사진/영상에서 무엇을 알아내고, 이전과 어떤 발전이 있었다 등 큼직한 흐름을 이해하신다면 보다 재밌는 AI Day 행사를 즐기실 수 있을지 않을까 싶습니다.
개인적으로는 기존 FSD 기술을 어떻게 휴머노이드에 녹여내려고 하는가가 궁금한데, 만약 이번 행사에서 휴머노이드를 공개한다면, 이것도 함께 설명이 나오지 않을까 기대해 보고 있습니다.
나름 쉽게 써보려고 노력은 했는데 이해하기 쉽게 설명이 되었는지 잘 모르겠네요 ^^;

여담

사실 저도 이번 AI Day 초대장 받았는데, 도저히 미국에 갈 수가 없어서 날렸네요 ㅜㅠ

tesla invitation
이메일로 날아온 "그림의 떡" 초대장

Flag Counter