주행 : 가상도로 2억 4천만 킬로미터 [유니티기술소개] 유니티와 BMW가 함께 달리는 자율

 

가상도로 2억 4천만 킬로미터 유니티와 BMW가 동시에 주행

BMW 자율주행(AD) 기술 양산 단계에 이르기 위해서는 먼저 가상도로 2억 4000만 킬로미터를 주행해야 합니다. 이번 포스팅에서는 BMW에서 유니티를 활용하여 주행거리를 늘리는 방법을 알아보겠습니다.앞서 첫 번째 포스팅에서는 BMW 완전 자율주행 및 운전자 보조 시스템 팀이 Unity를 사용하여 시뮬레이션 시각화와 시나리오 생성에 필요한 커스텀 툴을 개발한 과정에 대해 알아보았습니다. BMW 그룹은 커스텀 툴을 활용하여 AD 개발 과정에서 직면한 어려운 문제를 효과적으로 해결하고 있습니다.유니티가 어느 영역에서 활용되고 있는지 봅시다.밤낮을 불문하고 연속 테스트 BMW의 AD 개발자는 Unity 기반의 시나리오 에디터를 사용해 정밀하게 제어되는 테스트를 실시하고 있습니다.

다음 이미지는 다양한 시간대와 날씨 조건을 파라미터로 사용한 시뮬레이션 테스트를 보여줍니다.

같은 시나리오로 야간에 실시하는 테스트

동일한 시나리오로 우천 시에 실시하는 테스트

시뮬레이션과 주요 성과 지표(예: 다른 차량과 지속적으로 안전거리 유지)를 결합하여 BMW는 자율주행 기능의 실제 완성도를 평가할 수 있습니다. AD 기능의 개별 component가 기본 시나리오를 완전히 숙지하게 되면 BMW는 보다 복잡한 상황에서 전체 AD 시스템을 대량으로 검증할 수 있습니다.

검증 테스트에서는 다음과 같은 다양한 유형이 있습니다.

소규모 기능 테스트 – 가장 일반적인 유형의 테스트로, 차량 주행 경로 계획과 같은 AD 시스템의 일부 기능을 신속하게 평가합니다. BMW 팀은 일반적으로 하루에 수만 km의 가상도로 주행 데이터를 기록하지만 이 중 대부분은 1분 미만 단위로 시간을 늘리면서 시행되는 단거리 테스트(수백 m에서 1km)입니다.

대규모 시스템 테스트 – 특정 기능을 시험하기 위한 일련의 소규모 테스트가 아닌 광범위한 AD 시스템을 테스트하기 위해 설계된 시뮬레이션 유형입니다. 테스트는 몇 시간 진행되며 실제 세계시나리오를 모사하는 확장된 시나리오입니다. 독일 뮌헨이나 슈투트가르트를 오가는 아우토반 주행을 예로 들 수 있습니다. 이러한 시뮬레이션은 주행하는 차, 보행자, 다양한 날씨 조건은 물론 지도 데이터, 지각 알고리즘의 입력으로 작용하는 센서 모델, 차의 주행 경로 계획, 차량 동역학 등이 추가된 가상 세계를 포함하는 경우가 많기 때문에 더욱 복잡합니다.

주행 상황은 시뮬레이션에서 필요한 만큼 반복할 수 있기 때문에 BMW는 야간 주행을 포함해 하루 종일 테스트를 합니다. 유니티 기반 시나리오 에디터를 사용하여 테스트를 설정하면 개발자는 다음날 아침 결과를 검토하고 분석 기능을 활용하여 기능이 제대로 작동하지 않는 지점을 찾아 유니티에 렌더링한 프레임에서 정확한 지점을 찾을 수 있습니다. 문제가 된 상황을 소규모 시나리오로 자동 추출하여 시각화하면 그 문제의 원인을 보다 정확하게 파악할 수 있습니다.

예를 들어 이 시나리오에서는 다른 차량이 갑자기 끼어들었습니다만, 자율주행 차량이 즉시 감속하지 않아 사고가 일어날 것 같았습니다. AD 기능이 올바르게 반응할 때까지, 매코드 업데이트 후에는 시나리오를 반복해 실행할 수 있습니다.

BMW 자율주행

시나리오에서 발견된 초기 문제를 바탕으로 개선을 적용하면 자율주행차는 다른 차량이 신속하게 합류하여 적절히 브레이크를 밟게 됩니다.코너 케이스 생성

시뮬레이션을통해BMW의AD개발자는안전한환경에서테스트할수있습니다. 여기서는 시속 120km로 주행하는 자율주행차가 갓길에 주차된 트럭 뒤에서 예상치 못한 보행자(주황색 표시)를 얼마나 감지하는지 평가합니다.높은 수준의 자율주행을 실현하기 위해 BMW 개발자는 가능한 다양한 상황에서 AD 기능의 한계를 파악해야 합니다. 그러나 아래 동영상으로 시뮬레이션된 시나리오는 실제 세계에서 모사하기에는 너무 비용이 들거나 어렵고 위험합니다.

유니티 기반 시나리오 에디터를 사용하면 개발자는 정지 신호를 무시하고 주행하는 차량과 같은 극단적인 시나리오를 실현할 수 있습니다. 가상 세계에서 이러한 어려운 변수를 적용하는 것이 비용 면에서 훨씬 효율적이며 안전하면서도 여러 번 재현하고 테스트할 수 있습니다.BMW는 시뮬레이션을 사용해 실제 주행 환경에서 일반적으로 발생하지 않거나 구현하기에 너무 위험한 시나리오를 테스트합니다. 여기서는 세 가지 극단적인 예를 들죠.

1) 고속도로에서 빠른 속도로 주행하는 상황에서 자율주행차량의 차선에 예상치 못하고 등장하는 보행자 2), 갑자기 끼어드는 상대방 차량 3), 자율주행차량의 차선에서 정지하고 있는 상대방 차량 시각테스트와 디버깅으로 코드품질 향상 BMW 그룹의 1,800명에 달하는 AD 개발자들은 Unity를 사용하여 코드를 계속 개선하고 있습니다. 새로운 기능을 추가하거나 기존 기능을 개선하여 코드 기반으로 변경이 발생하면 개발자는 최종 기능에 병합하기 전에 먼저 통합 테스트를 수행합니다.

예를 들어 지각기능을 중점적으로 개발할 경우 유니티 기반 시나리오 편집기를 사용하여 차량이 속도제한 표지를 지나 몇 가지 시나리오를 설계할 수 있습니다. 이러한 소규모 테스트는 개발자 PC에서 시뮬레이션되며 Unity를 통해 실시간으로 시각화할 수 있습니다.

개발자는 결과를 시각적으로 검증하고 평가지표를 사용하여 개선점을 파악하여 해당 기능이 최종 기능에 병합될 준비가 되어 있는지(즉, 차량이 매회 표지의 속도를 준수하는지) 판단할 수 있습니다.

BMW 시뮬레이션 개발자는 점진적 코드 업데이트 결과를 테스트함과 동시에 시각화할 수 있습니다.병합 후에는 인수 테스트를 수행하여 병합으로 인해 발생한 다른 기능의 문제점이나 다른 기능으로 인해 발생한 병합의 문제점을 식별할 수 있습니다. 예를 들어 병합과정에서 속도제한 표지를 지각하는 기능에 버그가 발생할 수 있습니다. 유니티를 사용하면 개발자는 시각적 디버깅을 실행하여 문제점을 쉽게 파악하고 빠르게 해결할 수 있습니다.

BMW의 시스템은 개발자가 주행 기능의 내부와 시뮬레이션 코드의 내부에 중단점을 설정할 수 있도록 설계되어 있습니다. AD 기능과 시뮬레이션은 언제든지 동기화되므로 개발자는 코드를 한 줄씩 확인하고 기능과 코드를 교대로 확인하면서 디버깅을 실행할 수 있습니다.

동기는 시각화에도 적응하기 위해 코드와 시뮬레이션된 월드를 동시에 검토할 수 있습니다. 유니티 기반 어플리케이션에서는 지속적으로 앱 내부를 이동하고 값을 검토할 수 있기 때문에 동시에 열려 있는 툴 수를 줄일 수 있어 데이터를 최대한 투명하게 유지할 수 있습니다.

이 모든 요소는 BMW 자율주행차에 적용되는 최종 코드를 안전성과 신뢰성 기준에 합치시킵니다.유니티 백서: 자동차 업계 5개 주요 분야에 적용되는 실시간 3D 기술에서 유니티가 AD 시뮬레이션에 어떻게 활용되는지 자세히 확인하시기 바랍니다.Before BMW ‘ s autonomous driving technology is mass production – ready , it will need to drive 240 million virtual kilometers . Learn how Unity is helping BMW put more virtual miles on its odometer every day.blogs.unity3d.com