Search Unity

バーチャル走行距離 2 億 4,000 万キロへの道のり:Unity を活用した BMW の自動運転への旅路

, 8月 10, 2020

BMW の自動運転(AD)技術を量産に投入できるようにするには 2 億 4,000 万キロのバーチャル走行が必要です。Unity がどのようにして BMW の日々の走行距離の蓄積に貢献しているか、ご覧ください。

BMW の取り組みに関する最初の記事では、BMW の完全自動運転および運転支援システムに取り組むチームが、Unity を使用してシミュレーションの可視化とシナリオ作成のためのカスタムツールを開発したことを取り上げました。これらのツールを使用することで、BMW グループは、AD 開発における最も困難な日常的な課題に取り組むための十分なツールを備えることができました。

ここでは、Unity が大きく支援しているいくつかの分野を見ていきましょう。

昼夜を問わず継続的なテストを可能にする

BMW の Unity ベースのシナリオエディターにより、同社の AD の開発者は正確な制御のもとテストを行うことができる。これらの画像は、さまざまな時間帯や気象条件をパラメーター化してシミュレートされたテストを示す。

上の図のシナリオにおいて、時間帯を夜としたもの。

同じく、気象条件を雨としたもの。

シミュレーションと主要なパフォーマンス指標(例:交通車両との安全な距離を継続的に維持する)を組み合わせることで、BMW はその機能が実際にどの程度完成されているかを評価することができます。AD 機能の個々のコンポーネントが基本的なシナリオをマスターすると、BMW は、より複雑な状況で AD システム全体の大規模な検証を行うことができます。

これらのテストは複数の形態があります。

  • 小規模な機能テスト:これらのテストは最も一般的なタイプのテストであり、これらのテストにより、BMW は車両の軌道計画などの AD システムの一部を迅速に評価することができます。通常、BMW のチームは 1 日に何万キロもの距離をバーチャル空間で走破しますが、その走行距離の大半は 1 分未満の小刻みな短距離テスト(数百メートルから 1 キロメートルまでのもの)で累積されています。
  • 大規模システムテスト:特定の機能のための一連のミニテストの代わりに、このタイプのシミュレーションは、より広範な AD システムをテストするように設計されています。これは、何時間も続くこともある、実世界のシナリオを再現しようとするシミュレーションです。たとえば、ミュンヘンからシュツットガルトまでオートバーンを走っていくといったものです。これらのシミュレーションはより複雑で、多くの場合、移動する車両、歩行者、変動する気象条件、地図データ、知覚アルゴリズムへの入力としてのセンサーモデル、車両の軌道計画、車両の運動性など、多くの要素を含むバーチャル世界を使って行われます。

運転状況はシミュレーションで必要なだけ何度でも繰り返すことができるため、BMW では「夜間のドライブ」も含めて毎日ずっとテストを実施しています。Unity ベースのシナリオエディターを使用してテストを設定した後、開発者は翌朝に結果を確認し、分析ソフトウェアを活用していつ機能が障害を起こしたかを正確に特定し、Unity からレンダリングされたフレーム内で障害が起きた位置を正確に表示することができます。チームは、問題のある状況を小規模なシナリオとして自動的に抽出し、それを可視化することで、その状況が問題になったのかをよりよく理解することができます。

例えば、このシナリオでは、交通車両が突然割り込みをしてきたのに、ホスト車両がすぐに減速せず、事故に近い状態になっています。このシナリオはその後、AD 機能が適切に反応するようなるまで、コードに更新差分を加えるたびに再生することができます。

このシナリオで最初に失敗した後、交通車両がやや無理に車線に合流するのに対応して、この車両が適切にブレーキをかけるように改善する。

コーナーケースの作成

BMW の AD 開発者は、シミュレーションでリスクをゼロにしてテストすることができます。ここでは、時速 120km/h 近くで走行するホスト車両が、路肩に停められたトラックの後ろから現れた予期せぬ歩行者(オレンジ色で強調表示)をどの程度検知しているかを評価している。

BMW の開発者は、自動車の高度な自動化レベルに到達するために、可能な限り多くの状況で AD 機能の限界を見極める必要があります。しかし、下のビデオでシミュレーションされたようなシナリオは、現実世界で再現するにはコストがかかりすぎ、困難で危険です。

Unity ベースのシナリオエディターを使用することで、開発者は、交通車両が停止信号でも走ってくるなど、エッジケースのシナリオを考えることができます。バーチャル世界の中でこれらのコーナーケースを発見することで、再現性の高いテストの機会を提供しながら、より費用対効果が高く、安全なものになります。

BMW はシミュレーションを用いて、現実の運転環境では通常発生しないような異常なシナリオや、リスクが高すぎて作成できないようなシナリオをテストしている。この動画では 3 つのエッジケースを示す。1)高速道路での高速走行中に歩行者が不意にホスト車両の車線に現れた場合、2)交通車両が突然割り込んできた場合、3)ホスト車両の車線に車両が停止している場合。

ビジュアルテストとデバッグによるコード品質の向上

Unity は、BMW グループの 1,800 人の AD 開発者がそれぞれ責任を負うコードを継続的に改善するために日常的に使用されています。彼らは新しい機能を追加したり、既存の機能を改善したりするためにコードベースに変更を加えますが、それをマスターのコードにマージする前に統合テストを実行します。

例えば、知覚に焦点を当てた開発者は、Unity ベースのシナリオエディターを使用して、車両が速度制限標識を通過する複数のシナリオを設計することができます。これらの小規模なテストは、開発者の PC 上でシミュレーションされ、実行中に Unity でそのまま視覚化することができます。

開発者は、結果を視覚的に検証するだけでなく、評価指標を使用して改善点を特定したり、機能をマスターにマージできる状態かを確認したりすることができます(すなわち、車両は毎回、提示された制限値に合わせて調整します)。

開発者は、コードに加えた差分更新の結果を同時にテストし、可視化することができます。

マージ後、彼らは受け入れテストを実行して、自分のコミット結果が他の機能を壊していないかを確かめ、またその逆の状況が起きていないかも確かめます。例えば、共同で開発しているメンバーからのマージによって、速度制限標識の認識に影響を与えるバグが発生することもあるからです。開発者は Unity を使って視覚的なデバッグを行い、何が起こっているかを簡単に調べることができるので、より速く問題を修正することができます。

BMW のシステムは、開発者が運転機能とシミュレーションコード内でブレークポイントを設定できるように作られています。AD 機能とシミュレーションは常に同期しています。そのため、チームは、コードを 1 行 1 行進めていき、デバッグをしながら運転機能とシミュレーションの 2 つの世界を行き来することができます。

この同期性は可視化システムのほうにも反映されており、コードとシミュレートされた世界を同時に検査することができます。開発者は、Unity ベースのアプリケーション内を移動して値を検査することができるため、開発者は、データの透明性を可能な限り高く保ちながら、同時に開く必要のあるツールの数を減らすことができます。

これらの要素はすべて、最終的に BMW の自動運転車の動力源となる製品版のコードが、安全性と信頼性の基準を満たすことを保証するものとなります。

ホワイトペーパー「Top 5 Ways Real-Time 3D Is Revolutionizing the Automotive Product Lifecycle」では、AD シミュレーションでの Unity の活用法について、さらに詳しい内容を解説しています。

1 reply on “バーチャル走行距離 2 億 4,000 万キロへの道のり:Unity を活用した BMW の自動運転への旅路”

Very cool! Would be interesting to know how exactly is data parsed from Unity to their AD API. Would they have a Unity camera at the front of the vehicle parsing all the OpenGL data of roadsigns and road markings directly to AD processor?

Comments are closed.