주행 : 가상도로 2억 4천만 킬로미터 [유니티 기술 소개] 유니티와 BMW가 공동으로 하는 자율성

 

가상도로 2억 4천만 킬로미터의 유니티와 BMW가 공동 주행하는 자율주행

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

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

동일 시나리오로 야간에 실시하는 테스트

동일 시나리오로 우천시 테스트

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

검증테스트에는 다음과 같은 다양한 종류가 있습니다.

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

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

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

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

BMW 자율주행

시나리오에서 발견된 초기 문제를 바탕으로 개선 사항을 적용하면 자율주행 차량은 다른 차량이 고속으로 합류할 때 적절히 브레이크를 작동시킵니다.코너 케이스 생성

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

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

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

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

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

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