【Coursera】Introduction to Self-Driving Cars: Week1
Courseraのトロント大学が提供している専門講座Self-Driving CarsのIntroduction to Self-Driving Carsコースのメモ
Introduction
自動運転は自動車の発明と同じくらいの時期からいつかは実現させたいテーマの一つとして研究されてきた。古くから大学や自動車メーカーで研究が活発であり、レーン認識や人のいない道路などで実績を重ねてきた。そして近年、研究のスピードが一段と加速している。
一方で…
2016年、TESLAのモデルSで事故...
- カメラとレーダーの同時障害が原因。米フロリダ州の高速道路を半自動運転システムで走行中のテスラ車が、信号のない交差点で大型トレーラーに衝突し、運転手が死亡した。米運輸安全委員会は事故原因を、トレーラーの白い色と強い日差しによってシステムがトレーラーを物体と認識できなかったためと述べ、車自体には欠陥がなかったと報告した。ただ運転手が当時、システム側が警告していたのにも関わらずハンドルを握っていなかったことも問題視した。テスラはその後、システム側の警告に運転手が反応しない場合には半自動運転機能を使用できないようにする仕様変更を発表している。
2018年、Uberの自動運転車が歩行者をはねた...
- NHTSAで大規模な事故調査が行われた。2018年3月にUberの自動運転車が実証実験中に死亡事故を起こした。自転車を押しながら車道を渡る49歳の歩行者をはねて死亡させた事故で、運転席には人も同乗していたが事故発生直前は携帯電話でテレビを視聴していたという。この事故は自動運転車が世界で初めて歩行者を死亡させた事故となり、自動運転の安全性に対して世間が厳しい目を向けるきっかけにもなった。この事故に関して米道路安全保険協会(IIHS)は、車両に搭載されていた衝突防止システムが稼働すれば事故を回避できていた可能性があると報告している。報告によれば、Uberの自動運転システムには独自の自動ブレーキ機能が備わっており、車両動作が不安定になることを防ぐために(車両側の)衝突防止システムを無効にしていたという。
悲しいことに過酷な状況でのテストが頻繁に行われていくに連れて、事故は増えていくだろう。自動運転の時代はすぐそこに来ているように見えるがまだまだ多くのサポートが必要。
この分野全体はロボット工学、コンピュータービジョン、ディープラーニングの基礎に依存しており、幅広く学ぶことができる分野。そして適応できるアプリケーションも多い。
Lesson 1: Taxonomy of Driving
Driving Taskは大きく3つのサブタスクで構成される。
- Perception
- 運転している環境を認識。車の動きを追跡することが含まれる。路面、車両、歩行者などさまざまな要素を識別し移動するオブジェクトを追跡し、それらの将来の動きを予測する。
- Motion Planning
- 目的地へどのように到達するか。車線変更や交差点横断なども検討する。
- Vehicle control
- 適切な操舵。車両の道路上での位置とスピードを制御する。
これらは常に実行する必要がある。
ドライビングシステムにおける自動化レベルをどのように分類するか?
考慮すべき点がいくつかあり、
- ドライバーの注意はどれくらい必要か?
- 通勤中に映画を観れるか、もしくは常にハンドルに注意を向ける必要があるか
- 実際にドライバーの行動はどれくらい必要になるか?
- ドライバーは操縦する必要があるか?速度はドライバーとシステムどちらが管理するか?車線変更は?
- ドライバーが自動運転にどこまで期待するか
2014年にSAEが提案した定義がよく使われる。
Driving Taskの詳細
- Lateral control(横方向の制御:ステアリング)
- 右左折、直進、カーブなどを制御するタスク
- Longitudinal control(縦方向の制御:ブレーキ、アクセル)
- 位置、速度を制御するタスク
- OEDR(Object and Event Detection and Response: オブジェクトとイベントの検出と応答)
- Driving Taskに即座に影響を与えて適切に反応するタスク。オブジェクトとイベントを検出する機能。実際、自動運転の大部分を網羅する。ODDと組み合わせて使用される。
- Planning
- Tripに必要な長期(目的地への経路)・短期(レーン変更など)の計画を立てる。
- Miscellaneous(その他の雑タスク)
- 他のドライバーとコミュニケーションするためのライト、ウィンカーなどによるシグナル伝達などのアクション。
自動運転システムの分類
- Lateral controlタスクを行えるか?
- Longitudinal controlタスクを行えるか?
- OEDRタスクを行えるか?その程度は?
- 重要なのはシステムが緊急事態に対処できるか
- システムだけで対処できるか、ドライバーが常に注意を払う必要があるか
- システムは全てのシナリオと全ての条件下で機能するか?それとも制限付きのODDや動作条件があるか?
一般的に使用されるSAE Standard J3 016で定義された自動化レベルでみていく
- Level 0
- 全てドライバーで制御し、自動化システムは存在しない。
- Level 1 (運転支援)
- Lateral controlもしくはLongitudinal controlのどちらかを自動化。Adaptive Cruise Control(Longitudinal control)やレーンキーピングアシスタンス(Lateral control)が良い例。
- Adaptive Cruise Controlではシステムは車の速度を制御して、ステアリングはドライバーで制御する。
- 今日のシステムではレーンキーピングアシスタンスは視覚的な検出に依存しており、車線の境界検出と自己位置推定、Lateral controlを組み合わせて制御する。
- Level 2 (部分的な自動運転)
- 特定の運転シナリオにおいてLateral controlとLongitudinal controlを自動化。GMのSuper CruiseとNissanのProPilot Assistが良い例。システムに対するドライバーの監視が常に必要。
- Level 3 (条件付きの自動運転)
- Lateral control、Longitudinal controlに加え、OEDRを(ある程度)自動化。故障、障害の場合はドライバーが制御を引き継ぐ。
- Level 2との主な違いは特定の状況ではドライバーが注意を払う必要がないところ。(常にそうできるわけではないので議論の余地があるが)システムがドライバーが介入するのに間に合うように警告できるため。
- 渋滞時や高速道路などの条件で商用化されている。
- Level 4 (高度に自動化された運転システム)
- Lateral control、Longitudinal control、OEDRを自動化。ドライバーが緊急事態に間に合わないケースでもシステムが最小限のリスク条件に達することができる場合、システムは緊急事態を処理できる。一方で不必要な緊急事態処理を減らすためにドライバー側に制御を委ねることもできる。
- このレベルでドライバーは映画を観たりすることができるが、自動運転は制限付きのODDでのみ許可される。
- Waymoは、特定の地理的領域で事前定義された名目上の条件時にのみドライバーを必要とせずに動作するシステムとして認可を受けた。
- Level 5 (完全な自動運転)
- 制限のないODDであらゆる条件下で自動運転システムが動作する。無人タクシー、配送システムなど社会が変わるポイント。
Lesson 2: Requirements for Perception
非常に大まかに言えば、運転タスクは2つに分類される。
- 自車がどこにいて(自己位置推定)、周りで何が起きているかを認識する(Perception)
- アクション(運転)の意思決定
あらゆる運転タスクには程度は違えどOEDR(身の周りを認識して応答)が必要なので自動運転を実現するためにOEDRを実行する必要がある。
OEDRの重要な部分は、身の回りにあるものが何なのかを認識する。そして将来的な位置を予測できること(動いている物体の軌跡を認識)。
認識すべきものとして、
- 静的オブジェクトの識別
- 道路、車線、横断歩道、縁石などは運転できる境界を示す。
- 信号、標識などは運転に条件を与える。
- 動的オブジェクトの認識
- 4輪車:自動車、バス、トラック
- 2輪車:バイク、自転車(4輪車よりも移動の自由度が高いので予測が難しくなる)
- 歩行者(最も予測が難しい)
また、自己位置推定も運転の意思決定において重要になる。
- 自己位置推定に利用されるデータはGPS, IMU, オドメトリセンサなどを組み合わせて使用する。
なぜ、Perception、自己位置推定が難しいか
- ロバストな検出とセグメンテーション
- 検出やセグメンテーションには最新の機械学習手法でアプローチできるが、人間レベルの信頼性、パフォーマンスを達成するためには大規模なデータセットへのアクセスが必要。考えられる全ての動的オブジェクト、気象条件、路面状況などのデータを収集してアノテーションするのは高コストで時間がかかるプロセスになる。
- センサーの不確実性
- 視認が難しいケース、GPS測定値の破損、LIDAR、レーダーのノイズなど依存するサブシステムの不確実性を考慮する必要がある。
- 具体的にはオクルージョンや反射、劇的な照明変化によるレンズフレア、トンネルでGPSを受信できない、気象条件に影響を受けるソースなどいくつかのセンサー情報が曖昧になったり、完全に利用できないケースがある。これらを克服するためにも複数の冗長なソースが必要。
Lesson 3: Driving Decisions and Actions
Perceptionのステップの次に意思決定し、決定を実行するステップがある。
運転に関する意思決定は時間軸の異なるPlanningの傘下にあってそれらの中で決定する。
- 長期的な計画(目的地に向けてどの道路、どの車線に入るかなど)
- 短期的な計画(車線変更して安全か、交差点での左折をいつ実行するかなど)
- 即時決定(カーブを曲がるためにどのようなステアリング、アクセル、ブレーキ入力を適用するかなど状況に応じた意思決定)
信号のある交差点を左折するケースでは
- 左折車線に変更する必要があるか確認(短期)
- 必要があれば車線変更する(短期)
- 信号が赤ならドライバーが不快感を感じないように減速(短期)
- 信号が赤なら停止線の手前で停車(短期)
- 信号が青ならスムースに左折する。(短期)
実際はさらに状況に合わせたOEDRが必要になる。
- もし前の車が急に左折車線に入ってきたら?(即時)
- もし停止線がマークされていなければ?(即時)
- 信号が青でも、もし前の車が交差点で立ち往生していたら?(即時)
- その時にもし後ろに車が迫ってきたら?(即時)
単純な交差点の左折でも、考えられるシナリオを挙げていけば最終的に膨大な数のリストになる。またその中で3-4つのレベルの決定が必要。そしてリアルタイムに情報が更新されていくため、それらに対して絶え間なく意思決定する必要がある。
マルチレベルの意思決定の課題に対処する方法
- リアクティブなルールベースアプローチ
- 現在の自車と他のオブジェクトの状態を考慮した一連のルールを定義。今使える情報で即座に意思決定し、アクションを起こす(現在の状態を考慮しているが未来の予測は考慮しない)。
- Predictive Planning
- 現在の情報と予測情報を使用して意思決定する。こちらの方が人間の運転に近い。一方で正確な予測に依存している。ただこれによって車が安全に処理できるシナリオが大幅に拡大する。
Week1はこれにて終了。
Week2はこちら
Discussion