자율주행차 만들기

|

자율 주행 자동차 만들기

  • 리우 샤오샨, 리 리윤, 탕 지에, 우 슈앙, 장 뤽 고디오 지음
  • 남기혁, 김은도, 서영빈 옮김 (에이콘)

1. 자율 주행 개요

자율 주행 알고리즘

센싱

  • GPS와 IMU(Inertial measurement unit)
    • 자율 주행차의 위치 파악을 위해 필요함
    • 관성정보 및 지리적 위치에 대한 측정 값을 200Hz 이상의 빠른 주기로 알려줌
    • GPS는 로컬라이제이션 센서 중 상당히 정확하지만 업데이트 주기가 약 10Hz 수준으로 긴 편
    • 따라서 최신 위치 정보를 실시간 제공받을 수 없음
    • IMU는 시간 흐름에 따른 누적 오차로 인해 위치 추정 값의 정확도가 갈수록 떨어짐
    • 하지만 IMU는 주기가 200Hz 이상으로 굉장히 짧아 실시간성이 좋음
    • 따라서 GPS와 IMU를 조합하여 차량 위치에 대한 정확한 정보를 실시간으로 업데이트함
  • 라이다
    • 매핑, 로컬라이제이션, 장애물 회피등에 사용됨
    • 레이저 빛의 ToF를 측정해 거리를 측정하고 단색 3D 맵을 생성
    • 정확도가 높기 때문에 HD맵을 생성하고 이동중인 자동차 위치를 파악해 로컬라이제이션(추정)한 뒤, 전방의 장애물을 감지하는 작업에 주로 사용됨
      • 벨로다인 64빔 레이저는 10Hz 주기로 회전하며 측정값을 초당 130만번 읽음
  • 카메라
    • 차로, 신호등, 보행자 감지 등과 같이 객체 인지 및 추적 작업에 활용됨
    • 현재는 안전성을 높이기 위해 1080p 카메라를 8개 이상 사용함
    • 이를 토대로 전방, 후방, 좌우 객체를 감지하고 인지하고 추적함
    • 초당 약 1.8GB에 해당하는 원본 데이터를 생성함
  • 레이더와 소나
  • 장애물 회피를 위한 최후의 수단으로 사용됨
  • 차량 이동 경로 선상에서 가장 가까이 있는 대상까지의 거리와 속도 정보를 담고있음
  • 레이더와 소나에서 생성된 데이터는 가공을 잘 하지 않음
  • 또한 메인 연산 파이프라인을 거치지 않고 제어 장치로 곧바로 전달해 방향을 전환하거나 브레이크를 밟거나 안전벨트를 당기는 긴급한 동작 수행

    인지

  • 로컬라이제이션, 객체 감지, 객체 추적의 3단계로 구성
    로컬라이제이션
    • GPS/IMU를 활용해 현재 위치를 계산
    • GPS의 느린 주기와 높은 정확도, IMU의 빠른 주기와 큰 누적 오차의 장점들을 잘 융합하도록 칼만 필터 를 사용함
      • IMU는 5ms마다 차랑의 최신 위치 정보를 알려주지만 시간이 갈수록 오차가 누적됨
      • 이런 IMU의 오차를 100ms마다 GPS 정보로 보정함
    • GPS와 IMU를 조합한 장치로 전파 업데이트 모델을 구현함으로써 로컬라이제이션 결과를 빠르고 정확하게 계산
views
  • 하지만, GPS와 IMU만을 이용해 조합한 결과를 완전히 믿을 순 없음
    • 정확도는 1미터 범위에서만 보장됨
    • GPS신호는 다중 경로 문제를 갖고 있기 때문에 신호가 건물에 반사되며 노이즈가 증가
    • 하늘이 가려진 곳에서는 GPS신호를 정확히 수신 불가
  • 카메라를 이용해 비전 기반으로 로컬라이제이션 파이프라인을 구성하면 다음과 같음
    • 스테레오 이미지 쌍에 대한 삼각 측량으로 disparity map 만들기
      • 각 포인트의 깊이 정보를 추출하는데 활용됨
    • 연속적으로 들어오는 스테레오 이미지 프레임 사이에서 두드러진 특징을 찾아 각 각 특징점 사이의 상호 연관 관계 파악
    • 특징점과 기존에 파악한 맵을 비교하는 방식으로 차량의 현재 위치를 알아 낼 수 있음
    • 하지만 비전 기반의 위치 측정 기법은 조명 상태에 민감하기에 이 방법만으론 구현 불가
    • 파이프라인
      • 스테레오 이미지로 삼각측량->특징감지->특징매칭->동작예측->차량위치
        • 중간에 이전 시차 맵을 사용
  • 위와 같은 이유들로 인해 라이다 기반 시스템의 particle filter 기법을 주로 사용함
    • 라이다로 생성된 포인트 클라우드로 주변 환경에 대한 형태를 만들고
    • 파티클 필터를 이용해 관측된 형태를 기존에 파악된 맵과 비교하는 방식으로 불확실성을 줄임
      • 파티클 필터를 적용해 라이다 측정 값과 맵의 상호 연관성을 파악하는 방식으로 이동 중인 차량의 로컬라이제이션을 처리함
      • 파티클 필터 기법은 10cm 수준의 정확도로 로컬라이제이션을 실시간으로 처리 할 수 있으며 도시 환경에서 효과적임
    • 하지만 라이다 자체도 주변 대기 환경(비, 안개 등)에 민감하게 반응하므로 신뢰성을 높히기 위해 센서 퓨전 프로세스를 적용함
  • 센서 퓨전은 각 센서가 갖는 장점 특성을 융합해 취합하는 프로세스
views
객체 인지 및 추적
  • 주로 라이다나 CNN 기반의 영상처리를 이용해 객체 인지 작업 수행
    • 영상 속에 어떤 객체가 어느 크기로 어느 위치에 존재하는지를 찾는 작업
  • 객체 추적이란 원하는 객체를 선택해서 해당 객체의 이동 궤적을 자동으로 추정하는 기법
    • 주변의 자동차나 보행자 등을 추적하는데 이 기법을 적용해 충돌 방지에 활용함
동작
  • 차량의 주변 환경을 파악했다면 의사결정 단계에서 안전하고 효율적인 동작 계획을 실시간으로 생성
  • 동작 예측
    • 안전한 운행을 위해선 동작 예측이 필수임
    • 다른 차량의 도달 가능한 지점에 대한 확률 모델을 만들고, 도달 가능한 지점에 대한 확률 분포를 구하는 기법이 있음
  • 경로 계획
    • 일반적으로 가능한 모든 경로를 탐색하고 비용함수로 최적의 경로를 선택하면 된다고 생각하지만, 이는 엄청난 연산량이 필요하며 실시간 처리가 불가
    • 이처럼 결정적인 알고리즘을 적용할 때엔 계산 복잡도를 줄여 실시간 처리를 위해 확률 기반의 기법을 주로 사용함
  • 장애물 회피
    • 물체와 부딪히지 않도록 장애물 회피 메커니즘을 두 단계 이상으로 구성함
    • 첫 번째는 등동형 메커니즘으로, 교통 예측을 기반으로 처리
      • 차량이 주행하는 동안 교통 예측을 통해 충돌까지 남은 시간이나 최소 거리에 대한 추정치 등을 계산하며, 이 정보를 토대로 장애물 회피 메커니즘이 작동해 주변 경로를 다시 계획
    • 두 번째는 레이더 데이터 기반의 수동형(반응형) 메커니즘으로, 경로 상의 물체가 감지되면 주행 제어 시스템에 개입해 장애물을 피하도록 조작

자율 주행 클라이언트 시스템

  • 실시간 및 신뢰성 요구사항을 만족하도록 앞의 알고리즘을 통합함
    • 데이터량이 많으므로 방대한 양의 데이터가 충분히 처리 가능할 정도의 프로세싱 파이프라인이 빨라야 하고
    • 한 부분에서 오류가 발생하더라도 복구 가능할 정도로 견고해야 함
    • 이 연산을 처리함에 있어 에너지 및 리소스 제약사항도 만족해야 함

ROS

  • 각 작업을 수행하는 노드를 만들고, 이를 연결하여 전체 시스템을 구성
    • 각 노드는 토픽, 서비스를 통해 서로 통신함
  • 문제점
    • 신뢰성: 마스터는 하나만 존재하고 장애가 발생한 노드를 복구하기 위한 모니터가 없음
    • 성능: 메시지를 브로드캐스트 방식으로 보내는 과정에서 같은 메시지가 여러 번 중복되어 성능저하 유발
    • 보안: 인증과 암호화 메커니즘이 없음 (ROS2.0에서 보완)
  • 신뢰성
    • 마스터 노드가 하나기때문에 마스터 노드가 죽으면 전체 시스템이 죽음
      • 이를 해결하기 위해 백업 마스터 노드를 설정
      • 메인 노드가 죽으면 백업 노드가 이어받아 시스템이 그대로 구동되게 함
      • 또한 주키퍼 메커니즘을 통해 모니터링하다가 장애가 발생한 노드 발견 시 이를 재구동해 전체 ROS 시스템의 신뢰성을 보장
  • 성능
    • 공유 메모리 메커니즘을 적용해 메시지가 TCP/IP 스택을 거치지 않고 목적지 노드로 곧바로 가도록 처리
    • ROS 노드가 메시지를 브로드캐스팅하는 과정에서 여러 개의 복사본을 만들어 느려짐
      • 멀티캐스트 메커니즘으로 대체하여 시스템 처리량을 향상시켜 보완 가능
  • 보안
    • 해커가 ROS 노드에 침투해 메모리를 끊임없이 할당시켜 전체 메모리를 고갈시켜 시스템을 뻗게 할 수 있음
      • 리눅스 컨테이너를 사용해 각 노드마다 허용된 리소스 양을 제한하는 방식으로 해결 가능
    • ROS 노드끼리 주고받는 메시지를 중간에 가로채는 중간자 공격에 취약
      • 통신 과정에서 메시지를 암호화 시켜서 해결 가능

하드웨어 플랫폼

  • 책 저자는 ARM SoC를 이용해 최대 전력소비량이 15W에 불과한 시스템을 이용함
    • 25FPS로 로컬라이제이션 수행 가능
    • 3FPS로 객체탐지
    • 6ms로 계획 및 제어 파이프라인 구동
    • 시스템을 차량에 장착해 로컬라이제이션 과정에 손실 없이 시속 8km/h로 구동

2. 자율 주행을 위한 로컬라이제이션

  • 자율 주행 자동차에서 가장 핵심적인 테스크는 자동차의 위치를 실시간으로 정확하게 알아내는 로컬라이제이션임

GNSS를 이용한 로컬라이제이션

GNSS 오차 분석

  • 사람이 운전할 땐 주로 위성 항법 시스템(GNSS, Global Navigation Satellite System)을 사용해 로컬라이제이션함
  • 자율주행 차량도 GNSS를 이용
  • GNSS에는 GPS, GLONASS, Galileo, BeiDou 등이 존재함
  • GNSS의 오차요소는 아래와 같음
    • 위성 시계 오차: 위성 내부 원자 시계의 오차, 작은오차로도 영향력이 큼
    • 궤도 오차: 위성이 움직이면서 궤도 내에서 발생하는 오차 (최대 2.5m 까지 발생)
    • 이온층 지연: 대기 중 이온층 내부의 이온의 영향으로 위성 신호가 지연되는 현상 (태양의 활동이나 계절 등에 따라 달라짐)
    • 대류층 지연: 대류층의 온도, 습도, 대기압에 따른 지연 현상
    • 다중 경로 오차: 빌딩 벽과 같이 물체에 반사된 GNSS 신호를 안테나가 수신할 경우 발생하는 현상

위성 기반 오차 보정 시스템

  • 자세한 내용 책 참조

HD 맵과 라이다를 이용한 로컬라이제이션

  • 웨이모, 바이두, BMW 등 사용 자율주행 자동차 시제품은 대부분 라이다와 HD맵을 통해 로컬라이제이션을 수행함
라이다 개요
  • 펄스 레이저를 쏘아 반사된 펄스를 센서로 측정하는 방식으로 ToF를 계산해 물체와의 거리를 측정함
    • 빛은 항상 같은 속도로 움직이기때문에 정확하고 정밀한 3D 지도를 만들 수 있음
  • 라이다에는 간섭성 탐지 방식과 비간섭성 탐지 방식(에너지 탐지 방식)이 있음
  • 간섭성은 도플러 주파수나 위상 변화를 측정하는데 적합
    • 낮은 전력을 소모하지만, 복잡한 송수신 장치가 필요
    • 전자기 스펙트럼 안에서 광학적인 부분이나 주변에만 에너지파를 생성하도록 특화된 다이오드를 사용하기때문에 전력 소모량이 적음
  • 비간섭성은 빛을 발사하면 모든 방향으로 버져나가는 특성을 이용
    • 넓은 범위에 빛을 방사하므로 전력 소모량이 비교적 큼
  • 간섭성과 비간섭성 모두 고에너지 시스템과 마이크로펄스 시스템으로 구분됨
    • 고에너지 시스템은 사람의 눈에 해로운 수준의 빛을 사용함
    • 마이크로펄스 시스템은 안전한 저전력의 빛을 사용
      • 수신부는 고체 가이거 모드 애벌랜츠 포토 다이오드 검출기에서 광자를 세는 방식으로 작동
  • 대부분 자율주행 시스템에선 안전한 간섭성 마이크로펄스 시스템 모델을 사용
  • 주로 600~1,000nm 파장 레이저 사용하며, 1,550nm 파장의 레이저는 낮은 정확성으로 먼 거리의 목표물을 측정할 때 사용됨
    • 1,550nm 레이저는 야간투시경으로 볼 수 없기때문에 군사용으로도 사용 가능
    • 또한 비나 안개 등의 상황에 조금 더 강건해짐
HD맵 개요
  • 자율주행을 위해선 센티미터급의 정밀 지도가 필요(HD급)
  • 도로의 변화가 반영되도록 지도의 업데이트가 수행되어야 함
  • 다른 모듈과 매끄럽게 연동되어야 함
  • HD맵 제작의 핵심 기술은 다음과 같음
    • 주변 환경의 세밀한 지도를 만들어서 GNSS/INS 항법을 보완
    • 자동차의 라이다 센서로 HD맵 기준의 자동차 위치를 알아냄
    • 즉, GNSS/INS/LiDAR를 이용한 센서 퓨전으로 완성됨
  • 우선, GNS/INS로 대략적인 위치 정보를 생성하고
  • 라이다를 이용해 2D 위치를 좀 더 정밀하게 측정
    • 외에도 카메라 등의 다양한 센서 융합/사용
  • 라이다 스캔으로 수집한 데이터는 주변 환경에 대한 로컬 지도처럼 사용 가능함
  • 좀 더 넓은 영역의 지도를 생성하기 위해 맵 매칭 과정을 통해 로컬 지도를 하나의 글로벌 지도로 만들어야 함
    • 맵 매칭은 로컬 라이다 스캔 데이터를 서로 비교해 데이터가 겹치는 영역을 찾아서 해당 영역을 로컬 지도를 엮는 연결고리로 활용함
라이다와 HD맵을 이용한 로컬라이제이션
  • 일반적으로 로컬라이제이션 과정에 파티클 필터를 적용
    • 거리 데이터를 분석해 자동차 아래의 지평면을 추출하고
    • 이와 측정한 적외선 반사 지도 정보에 대한 상관함수를 피어슨 적률 상관함수를 통해 계산
    • 각 파티클은 시간에 대한 속도를 투영한 값을 가짐
    • 현재 속도는 휠 오도메트리, INS, GNSS를 사용하는 tightly coupled 관성 항법 시스템을 통해 추정함
  • 파티클 필터 이전에는 주로 칼만 필터를 사용해 state space model을 풀었음
    • 칼만 필터는 선형 가우시안 상태 공간 모델에 대한 최적해를 구하는 필터
    • 선형성 또는 가우시안 조건을 만족하지 않는 환경이라면 확장 칼만 필터나 무향 칼만 필터를 적용
  • 파티클 필터는관측 할 수 있는 시점부터 실시간으로 동작해 잠재 프로세스에 대한 주변 분포의 근사치를 구함
    • 중요도 샘플링 과정을 통해 파티클이라 부르는 이산 값과 그 값에 대한 비중의 집합으로 각 시점마다 분포의 근사치를 구함
  • 파티클 필터는 HD맵의 로컬라이제이션 과정에서 실시간으로 적용됨
  • 자세한 내용은 책 참조 (p.64)
비주얼 오도메트리 (p.68)
  • 하나 이상의 카메라에서 입력된 데이터만으로 자동차의 움직임을 추정하는 과정
    • 현재 이미지와 이전 이미지 사이의 상대적인 변화를 구하고, 이를 통해 자동차의 궤적을 구함
    • 비주얼 오도메트리로 자세가 변할 때마다 경로를 점진적으로 복원함
  • 비주얼 오도메트리의 진행과정 (새로 들어온 이미지마다 모두 수행)
    • 특징점 추출
    • 추출된 특징점과 일치하는 부분이 이전 프레임에 존재하는지 검사
      • 여기서 각기 다른 프레임에서 공통되는 3차원 특징을 2D 특징으로 재투영하는것을 이미지 대응이라고 함
    • 모션 추정
      • 현재 사진과 이전 사진 두 시간 사이 상대적인 움직임을 계산하고, 이를 이용해 이전 자세를 결합해 현재 자동차의 자세를 구함
    • 최신 프레임(현재 프레임)에 대해 번들 조정을 수행해 로컬 궤적 추정치의 정확도를 높힘
      • 번들 조정: 좀 더 정확한 로컬 궤적의 추정치를 구하기 위해 최근 자세 x에 대한 교정 작업을 반복하며, 최근 m개의 이미지에 대해 재구성한 3D 지점들의 재투영 오차의 제곱합을 최소화 하는 방식으로 진행
스테레오 비주얼 오도메트리
  • 관성 센서는 한쪽으로 흐르는 드리프트 현상이 발생하기 쉽고
  • 휠 오도메트리는 울퉁불퉁한 오프로드 지형에서는 측정 값이 불안정함
  • 실시간 로컬라이제이션에 스테레오 비주얼 오도메트리를 주로 사용함
    • 연속적으로 들어오는 스테레오 이미지 쌍으로부터 프레임 단위로 카메라의 움직임을 추정하는 방식으로 작동
    • Disparity image를 기반으로 추정
    • 오차가 적고(4,000프레임 동안 1m) 연산속도가 빠름(20ms)
  • 스테레오 비주얼 오도메트리 작동 방법
    • 코너 특징 탐지 방식으로 각 프레임마다 특징을 검출
    • 로컬 윈도에 대한 절대 합을 통해 프레임 사이의 특징을 매칭
    • 일관된 매칭 집합 중 가장 큰 것을 찾음(인라이어 검출)
    • 인라이어 집합에 있는 특징에 대한 재투영 오차를 최소화하는 프레임 사이의 움직임을 찾음
모노큘러 비주얼 오도메트리
  • 자세한 내용 책 참조(p.71)
관성 비주얼 오도메트리
  • 자세한 내용 책 참조(p.72)