자율 주행 기술, 어떻게 작동할까? (openpilot vs Autoware)

by DD
4개월 전
조회수 8

자율 주행 기술 스택은 센서 데이터 수집, 3D 환경 인식, 경로 계획, 차량 제어의 과정을 거침

openpilot은 end-to-end 딥러닝 기반, Autoware는 모듈형 ROS2 기반 아키텍처를 채택

CAN 버스를 통한 차량 통신, EKF(Extended Kalman Filter) 기반의 위치 추정 기술 사용

PointPillarsVision Transformer를 활용한 객체 인식 및 3D 환경 이해

end-to-end 학습 방식은 모듈 간의 오류 누적을 줄이지만, 해석 가능성(Interpretability)이 낮음

자율 주행 시스템의 센서 및 데이터 처리

자율 주행 시스템은 다양한 센서(Sensor)를 통해 주변 환경을 인식한다. 카메라, LiDAR, 레이더, IMU, GPS, 휠 오도메트리(Wheel Odometry) 등 다양한 센서에서 수집된 데이터는 확장 칼만 필터(Extended Kalman Filter, EKF)를 통해 융합되어 차량의 위치와 자세를 추정한다. 특히, openpilot은 카메라 기반의 시각적 측위(Visual Localization)를 활용하며, Autoware는 LiDAR 기반의 NDT(Normal Distributions Transform) 매칭을 사용한다.

CAN 버스(Controller Area Network)를 통한 차량 제어

자율 주행 시스템은 CAN 버스를 통해 차량의 ECU(Electronic Control Unit)와 통신하며, 차량의 상태 정보를 읽고 제어 명령을 전송한다. openpilot은 DBC(Database CAN) 파일을 사용하여 CAN 메시지를 파싱하고, 조향 토크(Steering Torque) 명령을 전송하여 차량을 제어한다. 안전성(Safety)을 위해 panda라는 CAN 인터페이스를 사용하며, watchdog 타이머를 통해 안전 장치를 구현한다.

모듈형 vs. End-to-End 아키텍처 비교

자율 주행 시스템은 크게 모듈형 아키텍처와 end-to-end 아키텍처로 나뉜다. Autoware는 모듈형 아키텍처(Modular Architecture)를 채택하여 객체 감지, 추적, 예측, 경로 계획 등의 모듈을 개별적으로 개발하고, openpilot은 end-to-end 딥러닝(End-to-End Deep Learning) 방식을 사용하여 센서 입력에서 직접 제어 명령을 생성한다. end-to-end 방식은 개발 속도가 빠르지만, 해석 가능성(Interpretability)이 낮다는 단점이 있다.

PointPillars와 Vision Transformer를 활용한 객체 인식

자율 주행 시스템은 PointPillars를 사용하여 LiDAR 데이터를 처리하고, Vision Transformer를 통해 카메라 이미지를 분석하여 주변 환경을 인식한다. PointPillars는 3D 객체 감지에 특화된 아키텍처로, 3D 포인트 클라우드를 처리하기 위해 고안되었다. openpilot은 FastViT를 기반으로 한 supercombo 모델을 사용하여 시각 정보를 처리하며, 20Hz의 속도로 2개의 이미지를 입력받아 경로, 차선, 리드 차량 정보를 출력한다.

실시간 제약 조건 및 안전성 확보

자율 주행 시스템은 실시간(Real-Time)으로 작동해야 하므로, QNX Neutrino RTOS와 같은 특수 운영체제를 사용한다. QNX는 마이크로커널 아키텍처를 통해 시스템의 안정성을 높이고, ISO 26262 ASIL D 인증을 획득하여 안전성을 보장한다. openpilot은 Android(Linux kernel) 기반으로 작동하며, rate monitoring, graceful degradation, panda를 통한 하드웨어 안전 장치를 통해 안전성을 확보한다.

How the Self-Driving Tech Stack Works