자동차 업계에서 테스트에 시뮬레이션 시나리오를 사용하는 것은 잘 정립된 관행입니다. 그러나 과거에 ABS 브레이크 시스템을 훈련하는 데 사용했던 시나리오는 자율주행차 훈련에 충분하지 않습니다. 기본적으로 자율 주행 차량은 사람처럼 행동하도록 훈련해야 하며, 이를 위해서는 매우 복잡한 시뮬레이션이 필요합니다.
자율주행차 훈련 시뮬레이션에서 가장 중요한 부분은 시뮬레이션 환경입니다. 엔지니어링 팀은 실시간 3D 렌더링 플랫폼인 Unity를 사용하여 감각적, 물리적 복잡성이 풍부한 자율주행차 훈련을 위한 시뮬레이션 환경을 효율적으로 제작하고, 매력적인 인지적 과제를 제공하며, 동적인 멀티 에이전트 상호 작용을 지원합니다.
이 문서에서는 시뮬레이션 환경을 구성하는 요소와 자율주행차 훈련 환경 제작에 Unity가 어떻게 사용되는지에 대한 유용한 개요를 제공합니다.
사람과 마찬가지로 자율 주행 차량에도 '두뇌'가 필요한데, 이는 네 가지 주요 영역으로 구성된 자율 주행 시스템입니다:
제어: 이 부분은 제동, 가속, 조향 등 자동차가 해야 하는 동작을 처리합니다.
계획 계획 파트는 차량이 어떻게 탐색하고, 추월하고, 장애물을 피하는지를 관리합니다.
인식: 여기에서는 자동차가 현실 세계에 대한 정보를 얻는 방법을 다룹니다. 다음과 같은 센서를 조합하여 정보를 수집할 수 있습니다:
- 카메라를 사용하는 경우 컴퓨터 비전
- LiDAR(빛 감지 및 거리 측정) 센서
- 레이더
마지막으로 센서 퓨전이라는 프로세스를 통해 위의 방법으로 수집된 정보를 취합하여 자동차가 실제로 이해할 수 있는 정보로 조합합니다.
조정 이 부분은 자동차가 다른 스마트카와의 관계에서 어떻게 작동하는지를 다루기 때문에 계획 부분과 연결되어 있습니다. 다른 차량 및 인프라와의 통신이 필요하며, 그 예로는 다음과 같은 것들이 있습니다:
- 플래투닝: 고속도로에서 차량이 서로 밀착하여 일종의 '기차'를 형성함으로써 공기 저항을 줄여 연료를 최적화하는 방법.
- 병합 및 교차로: 차량이 교통 흐름에 맞춰 일괄적으로 조정하는 방법.
- 스워밍: 위의 조정을 용이하게 하는 개념입니다.
필요한 모든 데이터를 어떻게 수집하나요? 머신 러닝은 자율 주행 차량의 핵심이며, 데이터를 많이 사용하는 시스템입니다. 자율주행차를 학습시키려면 방대한 양의 데이터가 필요합니다. 이를 비용 효율적이고 정확하게 수행하려면 어떻게 해야 할까요?
자동차는 데이터가 무엇인지 어떻게 이해하나요? 데이터를 수집하는 것만으로는 충분하지 않으며, 자동차가 단순히 물체를 보는 것뿐만 아니라 그 물체가 나무인지, 도로인지, 사람인지 등 데이터의 내용을 이해해야 합니다.
데이터를 어떻게 정렬하고 구조화하나요? 자율 주행 차량은 모든 데이터를 이해해야 하는데, 이 과정은 사람이 수행할 경우 비용이 많이 들고 오류가 발생하기 쉽습니다. 이 작업을 자동으로 수행할 수 있다면 필요한 알고리즘에 훨씬 더 빠르고 안전하게 도달할 수 있습니다.
예상치 못한 돌발 상황에 어떻게 대비하고 있나요? 실제 세계에서만 수집된 데이터는 자율주행 차량이 이미 주변에서 볼 수 있는 것에 대해서만 준비할 수 있습니다.
풍부하고 복잡한 시뮬레이션 환경을 통해 엔지니어링 팀은 데이터 생성을 제어할 수 있으며, 궁극적으로 예상치 못한 시나리오와 에지 케이스를 포함한 모든 시나리오에 대비할 수 있도록 자율 주행 차량 시스템을 훈련할 수 있습니다.
자율 주행 차량 시스템을 훈련하려면 실제 도로에서 볼 수 있는 것과 최대한 유사한 환경을 만들어야 합니다. 시뮬레이션 환경의 핵심 부분은 다음과 같습니다:
차량 동역학: 아스팔트와의 마찰 등 차량이 물리적으로 어떻게 움직이는지 파악합니다.
환경: 이 부분은 세 가지 하위 카테고리로 구성되어 있습니다:
- 도로, 나무, 정지 신호등 표지판과 같은 정적 요소.
- 보행자나 다른 차량과 같은 동적 요소는 시나리오 내에서 다양한 변수를 제공하고 차량의 데이터를 검증하거나 수집하는 데 사용할 수 있는 시나리오를 생성할 수 있습니다.
- 주어진 시나리오에 적용하여 다양한 상황을 재현할 수 있는 시간대 및 다양한 기상 조건과 같은 매개변수를 사용할 수 있습니다.
이러한 다양한 환경 요인의 결합으로 현실에서는 보기 드문 엣지 케이스를 만들어낼 수 있습니다.
센서 모델: 시뮬레이션 시나리오는 LiDAR 센서, 카메라 또는 레이더와 같은 센서 모델을 통해 자율 시스템에서 가져와야 합니다. 이 정보에 의존하는 알고리즘이 가상 환경에서도 실제와 동일하게 작동할 수 있을 정도로 물리적으로 정확해야 합니다.
시뮬레이션 환경을 엔지니어링하려면 조명 및 물리, 파티클 및 날씨 시스템, 애니메이션, 머신러닝 등 다른 유형의 풍부한 인터랙티브 콘텐츠를 제작하는 데 사용되는 것과 동일한 기능과 툴셋이 필요합니다.
Unity는 게임 및 기타 인터랙티브 콘텐츠 개발을 위한 글로벌 선도적인 실시간 3D 렌더링 플랫폼입니다. 수백만 개의 멀티 플랫폼 게임과 애플리케이션을 지원하는 검증된 플랫폼으로, 모든 기능을 갖추고 있습니다. 또한 에셋 스토어의 고유한 장점(자세한 내용은 아래 참조)과 업계 간 개발자 및 크리에이터로 구성된 방대한 커뮤니티를 제공합니다.
스크립팅 유연성: 팀은 강력한 C# 스크립팅 시스템과 포괄적인 API를 통해 Unity를 워크플로에 맞게 조정할 수 있습니다. 숨겨져 있는 C++ 개발을 위해 소스 코드 액세스를 구매할 수도 있습니다.
속도 Unity 에디터의 직관적인 UI를 통해 빠르게 프로토타이핑할 수 있습니다. 에디터에서 '재생' 모드에 있으면 애플리케이션이 최종 빌드에서 어떻게 보일지 재생하고 미리 볼 수 있습니다. 씬을 일시 중지하고 값, 에셋, 스크립트 및 기타 속성을 변경하고 결과를 즉시 확인할 수 있습니다. 또한 프로젝트를 프레임별로 단계별로 진행하여 쉽게 디버깅할 수 있습니다.
풍부한 인터랙션 기능 유니티는 물리, 렌더링, 애니메이션, 커뮤니케이션을 비롯한 모든 시스템에 액세스할 수 있는 강력하고 잘 문서화된 API를 제공하여 풍부한 인터랙션 모델과 다른 시스템과의 통합을 지원합니다.
하이엔드 그래픽: 스크립터블 렌더 파이프라인 (SRP)을 사용하면 렌더링 루프의 핵심을 C#으로 코딩할 수 있으므로 콘텐츠에 맞게 씬을 그리는 방식을 훨씬 더 유연하게 커스터마이징할 수 있습니다.
고해상도 렌더 파이프라인 ( HDRP)은 고성능 하드웨어에서 세계 최고 수준의 화질을 제공하며, 유니버설 렌더 파이프라인 (URP)은 모바일용으로 확장할 때 반응성이 뛰어난 성능을 유지합니다.
VR 및 AR 지원 ( 기타 25개 플랫폼에 배포). 광범위한 플랫폼 지원으로 AAA 게임 스튜디오, 최고의 크리에이티브 에이전시, 영화 스튜디오, 자동차, 우주 및 기타 산업 분야의 연구팀에서 몰입형 애플리케이션을 제작하는 데 Unity를 사용하고 있습니다.
고급 아티스트 및 디자이너 도구: Unity에는 3D 씬 디자인 툴, 스토리텔링 및 시네마틱, 라이팅 및 특수 효과, 오디오 시스템, 강력한 도프시트 애니메이션 시스템이 포함되어 있습니다.
머신 러닝 및 AI 기능: Unity ML-Agents 툴킷을 사용하면 머신러닝 연구자가 Unity를 사용하여 복잡한 동작을 연구하고 인터랙티브 콘텐츠 개발자에게 지능형 에이전트를 개발할 수 있는 최신 머신러닝 기술을 제공할 수 있습니다.
에셋 스토어: 에셋 스토어에서는 개발 시간을 절약할 수 있도록 환경 제작을 위한 다양한 에셋과 생산성 도구가 포함된 최대 규모의 기성 에셋 마켓플레이스에 액세스할 수 있습니다.
BMW 그룹은 개발 중인 자율주행(AD) 기능을 테스트하고 검증하는 프로세스를 대폭 간소화하는 그래픽 시나리오 에디터를 개발하는 데 Unity를 사용했습니다. 이 인터페이스를 통해 AD 개발자는 기능 완성도와 준비성을 높여주는 수천 개의 시뮬레이션 시나리오를 쉽게 시각화하고 설정할 수 있습니다.
BMW의 자율주행 테스트 주행거리 중 거의 95%가 가상 세계에서 가상의 차량으로 주행됩니다.
자세한 내용은 블로그 시리즈를 읽어보세요.
세계 유수의 자동차 제조업체가 Unity를 사용하여 자율주행차 개발과 설계부터 마케팅, 유지보수에 이르는 전체 제품 라이프사이클을 가속화하는 방법을 자세히 알아보세요.