ADAS (先進運転支援システム)

 

ADASとは?

これだけは知っておきたい3つのこと

先進運転支援システム (ADAS) はドライバーの役割を自動化するハードウェアとソフトウェアのコンポーネントです。ADASの例としてはアダプティブクルーズコントロールやブラインドスポットモニター、レーン変更検出やレーン追従、自動緊急ブレーキ等が挙げられます。

なぜADASが重要か

ADASによりヒューマンエラーが最小化され、交通環境がより安全になります。例えば、レーン変更を行う際、死角に他車両がいるシーンなど危険なシナリオを事前にドライバーに警告することで、より安全な運転を行うようにドライバーを支援できます。また、衝突を回避するために自動緊急ブレーキを備えた車両もあり、交通事故低減を目的としてドライバーの振る舞いを自動化し、負担を軽減するようなシステムが数多く登場しています。

実際、ボストンコンサルティンググループの調査によると、米国ではADASによって交通事故数が28%現象しており、年間9,900人の命が救われているという結果が出ています。

 

ADASのレベル分け

自動運転には5段階のレベルがあり、SAE(Society of Automotive Engineers)によって定義されています。今日現在、私たちの周りを走行している殆どの車両はレベル0からレベル3までの範囲で定義されているADAS機能を有しています。自動運転の最先端で研究開発を重ねている企業はレベル4もしくはレベル5で定義される自動運転機能の実現を目指しています。

SAE J3016TM Levels of Driving AutomationTM

SAE J3016™ Levels of Driving Automation™

ADASテクノロジーの進化に伴い、システムの安全性やサイバーセキュリティ、ポリシーに関する問題等、多くの問題を解決する必要がありますが、将来的に完全自動運転車は現実のものとなっていくでしょう。

ADAS機能の設計方法

どのようにADASの機能が設計されるのかを理解するために、アダプティブクルーズコントロールを例にとって説明します。ご存知の方も多いと思いますが、このADAS機能を利用すると先行車両との車間距離が適切に保たれるように車速が制御されます。先行車両との距離が接近している場合には減速され、距離が十分空いている場合には車両を加速させて航行速度を上げます。

アダプティブクルーズコントロール(ACC)設計の最初のステップは車両に搭載されたセンサーからのデータを収集することです。アダプティブクルーズコントロールを実現するために、一般的にはカメラやレーダーといったセンサーが必要となります。カメラによって周辺の物体(他車両、歩行者、樹木等の障害物)が認識され、レーダーによってそれらの物体までの正確な距離が算出されます。

センサーからのデータを収集した後、関連するADASアルゴリズム開発を進めることになります。アダプティブクルーズコントロールに関連するアルゴリズムは以下の3つに大別することができます:

A perception algorithm to detect if there is a vehicle in front of us
  1. 先行車両を検出するための認識アルゴリズム
  2. 自車両と先行車両の間の距離を算出するためのレーダーアルゴリズム
  3. 算出された距離の情報を基に、車速を調整するための制御アルゴリズム

ここまでADASの例としてACCについてお話ししてきましたが、適切なセンサーを利用してアルゴリズムを開発する、という一般的な方法論は他の全てのADAS機能開発にも適用されています。

センサーの重要性

ADAS機能を実現するために利用されているセンサーとしては、カメラ、レーダー、Lidarの3つタイプが挙げられます。

カメラ

カメラはADASの認識に関連するタスクのために用いられます。車両側方に設置されたカメラによって死角の情報を得ることができますし、車両前方に設置されたカメラではレーンや車両、標識、歩行者や自転車等を検出することが出来ます。ADASの認識系のアルゴリズムは一般的に従来の画像処理やコンピュータービジョン、ディープラーニングの技術により実現されます。カメラが持っている利点は以下の通りです:

  • 物体検出のための優れたデータ
  • 比較的安価 –多くのコストを掛けることなく、様々なタイプのカメラをテストできる
  • 様々なオプション – 魚眼、単眼、ピンホールやステレオ等、様々な選択肢
  • 広範な研究成果 – 3つのセンサーの中でも歴史が古く、最も多く研究されている

カメラは非常に優れたセンサーである一方、物体までの距離計測においてはほかのセンサータイプに比べて研究が少ないという面があります。このため、ADAS開発用途の場合、カメラはレーダーと組み合わせて利用されることが多くなっています。

レーダー

レーダーセンサーは高周波を周辺環境に向けて放射し、環境における物体からの反射波を記録します。このデータは物体までの距離算出に利用することができます。ADASでは、通常車両の前方にレーダーが搭載されることになります。

レーダーは他のセンサーに比べて天候の変化に強く、自動緊急ブレーキやアダプティブクルーズコントロールといった機能において非常に実用性の高いセンサーです。

レーダーセンサーは物体検出に用いることもできますが、物体の分類精度はそれほど高くありません。このため、ADAS用途の場合、レーダーはカメラと組み合わせて利用されることが多くなっています。

Lidar

Lidar (light detection and ranging) センサーはレーザー光を周辺環境に向けて照射し、反射した光を記録します。このデータはLidarが配置された周辺環境を表現する3次元点群データとして再構成されます。Lidarのデータはセンサー周辺にある物体までの距離算出に用いることができます。

ADASに使用されるLidarには主に2つのタイプがあります:

  1. 機械式(回転式) Lidar - 機械式のLidarは車両天井に配置され、周辺環境の3次元点群データを作成するために回転して反射光を観測します。
  2. ソリッドステート式 Lidar – 新しいタイプのLidarで、機械的に駆動する部品を持ちません。長期的には、ソリッドステート式のLidarは機械式に比べてより高速、安価かつ正確な計測が可能であると言われています。一方、量産に利用するためには解決しなければならない課題も残っており、安全性や測距距離等に関する技術的課題が挙げられています。

Lidarのデータを利用することでADASにおける測距および物体認識の両方を実現することができますが、Lidarのデータ処理にはカメラやレーダーのデータに比べてより多くの計算コストが必要となるため、ADASアルゴリズムの開発者はいくつかの課題に直面しています。

シミュレーションを活用したADASアルゴリズムの開発

現実世界のハードウェアを利用したテストはコストが掛かるため、エンジニアはまず仮想環境を利用してADASソリューションをテストします。シミュレーション環境は2次元の場合、3次元の場合とありますが、目的によって使い分けられます。

2次元のシミュレーション環境はカメラやレーダー向けADASアルゴリズム開発・テストに活用することができます。この場合、道路や歩行者、自転車、車両等の交通参加者を含む仮想のシーンを作成するところから開始します。その後、自車両を仮想シーンに配置し、さらに仮想のカメラ・レーダーセンサを自車両に設定します。自車両の動きをプログラムして仮想シーンを走らせることで、ADASのアルゴリズム開発やテストに活用できる合成センサーデータを生成することが出来ます。

3次元のシミュレーション環境は2次元のシミュレーション環境をベースに構築できます。3次元環境の場合、カメラやレーダーに加えてLidarのテストも可能となります。3次元環境は2次元環境に比べて相対的に複雑になるため、実行するためにはより計算コストが掛かります。

シミュレーション環境でADASアルゴリズムを開発したら、次の開発ステージはハードウェアインザループ(HIL)テストです。これには実際のハードウェアを利用したADASアルゴリズムのテストが含まれ、シミュレーション環境を実際のハードウェア - ブレーキシステム等実車両 - と接続してアルゴリズムのテストを実施します。HILテストは車両に搭載されたADASコンポーネントが実世界でどのように振舞うかについて感触を得るのに役立ちます。

ドライバーインザループのような他のADASテストもあります。このようなテストは全てのモジュールが統合された際に車両がどのように機能するかを理解するための車載テストへと繋がっていきます。ドライバーインザループは最もコストを要するタイプのADASテストではありますが、振る舞いは実車両に最も近く、量産へ移行する前に要求されるテストの一つです。

MATLAB/SimulinkによるADAS機能の開発

MATLAB®とSimulink®はADAS開発におけるワークフローの様々なタスクをサポートします。

  1. データ解析
  2. ドライビングシナリオの合成
  3. ADASのプランニングや制御アルゴリズムの設計
  4. 認識系アルゴリズムの設計
  5. アルゴリズムの実装
  6. 統合・テスト

データ解析

MATLABを利用することで、ADAS開発のために車両から取得した様々なデータへのアクセス、可視化とラベル付け等が可能です。また、MATLABではHERE HD Live Maps, OpenStreetMap, Zenrin Japan API等様々な地図データへのアクセスがサポートされています。これらのデータはADASのアルゴリズム開発および検証に頻繁に使用されています。

この例ではアプリ左側に動画、右側にLidar点群データが表示されており、車の部分に青色のラベルが付けられています。動画に対しては2次元の境界ボックス、点群データに対しては3次元の境界ボックスが付与されています。

動画、連続する静止画や点群データに対して対話的に真値をラベリングできるGround Truth Labeler アプリ

ドライビングシナリオの合成

仮想シナリオを活用したADASアルゴリズムの開発やテストのために、MATLABでは2つのシミュレーション環境を利用することができます。1つは制御、センサーフュージョン、パスプランニング等に適した’Cuboid’タイプのシミュレーション環境、もう一つは認識系まで含めた開発やテストに利用できるUnreal Engineとの連携によるシミュレーションです。リアルな3Dシーンを作成する必要がある場合にはRoadRunner が利用できます。

この例ではアプリ左側にシーンキャンバス、右側に鳥観図が表示されています。左側には交差点に複数の車両が配置されており、青色の自車両が北側に向かって走行しています。右側には鳥瞰図から見た同じ交差点が表示されており、自車に搭載されたカメラ・レーダーセンサのカバレッジと物体検出結果を確認できます。

ADASのシナリオ設計、センサーモデルのコンフィグレーションや合成データの生成を行う事が可能なDriving Scenario Designer アプリ

ADASプランニングや制御アルゴリズムの設計

MATLABにはADAS/自動運転に関する多くのリファレンスアプリケーションが含まれており、独自のADASパスプランの設計や制御系アルゴリズムの開発をする際の参考例として役立ちます。

この例では自車両が右端の車線を走行しており、軌道候補が実線もしくは破線で表示されています。軌道は幾つかありますが、最適な軌道、衝突軌道、制約上選択できない軌道等に色分けされています。

鳥観図で見た高速道における車両軌道候補の評価と可視化

認識系アルゴリズムの設計

MATLABはカメラ、レーダー、Lidar等のセンサーデータを利用して認識系アルゴリズムを開発するための様々なツールを提供しています。コンピュータービジョンディープラーニング、レーダーやLidarの点群データ処理、センサーフュージョンといった技術を利用してアルゴリズムを開発できます。

運転手から見た車両前方画像。標識が黄色の境界ボックスで囲まれており、認識結果が可視化されている “stopSign: (Confidence = 0.995492)”

MATLABによる事前学習済のR-CNNを利用した一時停止標識の検出

ADASアルゴリズムの実装

MATLAB Coder™, Embedded Coder™GPU Coder™ といったToolboxを利用することで、MATLAB上で開発したADASアルゴリズムから各種コードを自動生成し、組み込み機器やサービス指向アーキテクチャ(ROSやAUTOSAR等)へ実装・配布することができます。

“NVIDIA Jetson TX2 ボード”

GPU Coderを利用してCUDAコードを生成し、NVIDIA Jetson TX2へ実装

統合・テスト

Simulinkのツールを使うと、開発した認識、プランニング、制御といった各種アルゴリズムを統合し、テストすることができます。Simulink Requirements™を利用することでADASに対する要求仕様を取り込んで管理でき、Simulink Test™ により各種テストを自動化し、かつ並列実行できます。

Simulink Requirementsの要件エディターで各種テスト要求を表示(左側はファイルビューワー、右側は該当ファイルのプロパティ表示)。プロパティにはテスト詳細を記述したテーブルが含まれ、カーブでの”Stop and go”テストにおけるターゲット車両の振る舞いや自車両に対する要求が定義されています。

高速道レーン追従のリファレンスアプリケーション向けに定義されたテスト要求