🙌

【Coursera】Introduction to Self-Driving Cars: Week2

2022/09/23に公開

Courseraのトロント大学が提供している専門講座Self-Driving CarsIntroduction to Self-Driving Carsコースのメモ

https://imp.i384100.net/c/4062842/1242836/14726?prodsku=crse%3Ap2jYHVPxEein9xItvIlMSA&u=https%3A%2F%2Fwww.coursera.org%2Flearn%2Fintro-self-driving-cars&intsrc=PUI2_9419

Week1はこちら
https://zenn.dev/atfujita/articles/9987ccefccf2a8

Lesson 1: Sensors and Computing Hardware

センサーデータの品質によって、最高のPerceptionアルゴリズムも制限される。センサーは慎重に選択する。
センサーとは環境の特性を測定、検出するデバイス。大きく二つに分類される。

  • exteroceptive: 外部環境の特性を測定
    • カメラ(集光センサー)
      • 解像度、視野(FOV、水平・垂直の角度範囲、レンズ選択とズームによって変更できる)、ダイナミックレンジ(最も明るい部分と暗い部分の差、夜間運転での照明条件などで重要)の大きく3つの比較指標がある。
      • 解像度とFOVにはトレードオフがある。視野を広げる場合、同じ品質で知覚するには解像度を上げる必要がある。
      • カメラには知覚に影響を与える焦点距離、被写界深度(DOF)、フレームレートなどの特性もある。
      • 視野が重なる2台のカメラの組み合わせをステレオカメラと呼ぶ。同期した画像ペアから奥行きが推定できる。また視差マップからピクセル単位での深度推定もできる。
    • LIDAR(光検出と測距センサー)
      • レーザー光線を環境に向けて発射してその反射を測定(返ってくる光の量と飛行時間)する。通常、複数の光源が積み重ねられた回転要素が含まれる。3D点群マップを出力し、空間認識に有用。
      • 独自の光源を持つアクティブセンサーなので、環境の光に影響を受けない(カメラが機能しないような暗い環境でも動作する)。
      • 比較指標はレーザー光線の数(一般的に8, 16, 32, 64など)、1秒あたりに収集できるポイントの数(多いほど3D点群が詳細になる)、回転数(高いほど3D点群の更新が速くなる)、視野(LIDARの角度範囲)。検知範囲は光源の出力によって決まる。
    • RADAR(Radio検出と測距センサー)
      • LIDARよりも長く使用されてきており、環境内の大きなオブジェクトを確実に検出する。悪天候でも影響を受けずに機能する。
      • 比較指標は、検出範囲、視野、位置と速度の測定精度。視野が広く検出距離が短いものか、視野が狭く距離が長いものが利用できる。
    • ソナー(音波を使用しての測距)
      • 安価なデバイスで短距離のセンサー。他の車との距離が近いパーキングのシナリオに適している。安価で天候や光の影響を受けない。
      • 比較指標は、測定できる最大範囲、検出視野、コスト。
  • proprioceptive: 自車の特性を測定
    • GNSS
      • 自車の位置、速度、向きを測定する。精度は測位方法(RTK, PPP, DGPSなど)に大きく依存する。
    • IMU
      • 加速度、回転角加速度、向きを測定する。
    • ホイールオドメトリセンサー
      • ホイールの回転速度を追跡し、自車の速度と進行方向の変化率を推定する(走行距離の追跡と同じセンサー)。

最適なセンサー構成の選択は簡単ではない。

コンピューティングシステム

全てのセンサーからのデータを受け取り、運転に必要なコマンドを出力する。一般的なハードウェアは

  • NvidiaのDrive PX
  • Intel & MobileyeのEye Q

自動運転のためには特定の処理を行うためのコンピューティングモジュールが必要。オブジェクト検出、セグメンテーション、マッピングにはGPU, FPGA, カスタムASICsなどが使用される。Drive PXにはGPU、Eye QにはFPGAが搭載されている。

ハードウェアの同期

複数のハードウェアで時間を同期させる必要がある。GPSのタイムスタンプが利用できる場合は基準クロックとして機能する。

Lesson 2: Hardware Configuration Design

センサーをどう構成するか?

まず、センサーで念頭に置いているODDをキャプチャする必要がある。そしてODDの状況下で運転タスクに十分な入力が得られるようにセンサーを構成する必要がある。

許容できる減速度などを仮定する。

積極的な減速度(急停止)=5m/s^2
快適な減速度(通常の減速)=2m/s^2
制動距離d=v^2/2a

vは車両の速度、aは減速度。また制動距離にはシステムの反応時間や路面状況を考慮することもできる。

高速道路の例

3つの基本的な操作

  • 緊急停止
    • 速度120km/hで緊急停止をを想定すると制動距離は約110mになる((120/3.6)^2/(2×5)=111.111.... )ので前方約110mを感知できるようにする必要がある。実際、ほとんどの自動運転システムは150-200mくらいを採用している。
    • 横方向では側面衝突回避や車線変更して障害物にぶつからないようにするために少なくとも隣接する車線を検知する必要がある(日本なら3.5m、北米なら3.7m)。
  • 速度維持
    • 安全な車間距離の維持のため、現在の車線から前の車との相対位置と速度を把握できる必要がある。安全な車間距離は通常時間単位(反応時間)で定義され、人間のドライバーでは2秒に設定されている。120km/hでは約65m(120×2/3.6=66.666...)となる。一般的なシステムでは100mを採用している。
    • また、横方向では隣接する車線のどこで何が起きているかを知る必要がある。別の車両が合流しようとしているケースでは、追跡のために160-180度の広い視野と車間スペースを見つけるため40-60mは検出できる必要がある。
  • レーン変更
    • 安全なレーン変更のためには、縦方向では前方車両との距離と後方車両との距離がわかる必要がある。
    • 横方向は同時に他の車両が移動したい車線に入ってくるケースもあるので、車線だけではなく車の検知と衝突を回避できるような操作が必要。

単純なシナリオでも縦方向、横方向、広い視野の中短距離、狭い視野の長距離のセンサーが必要になる。

街中での例

高速道路よりも複雑さが増し、上記3つに加えて以下のケースで必要なセンサーを考える。

  • 停車中の車の追い越し
    • (前方で)停車している車と対向車を検知するため、縦方向では長距離と短距離のセンサーが必要。
    • 横方向では高速道路と同様に隣接車線とその向こう側を見る必要がある。
  • 交差点での右左折
    • 考えうるあらゆる種類の動き(車、バイク、歩行者など)を検知するため全方向のセンサーが必要。
  • ラウンドアバウト
    • 横方向に広範囲の近距離センサーが必要。加えてラウンドアバウト周辺の動きを把握できるよう縦方向にも広範囲の近距離センサーが必要。

センサーの構成は実行したい操作の要件によって決まる。また故障などに備えた冗長性や予算によっても異なる(唯一の答えはない)。

Lesson 3: Software Architecture

1.png
ソフトウェアアーキテクチャの全体像

Environment Perception

  • 自己位置推定(ローカリゼーション)
    • GPS、IMU、ホイールオドメトリ、場合によってはカメラ、LIDARから自己位置を推定する。
  • 動的オブジェクトの検知
    • カメラ、LIDAR、RADARから動的オブジェクトの3Dバウンディングボックスを作成する。3Dバウンディングボックスはクラス、位置、方向、サイズをエンコードする。
    • 検知した動的オブジェクトはトラッキングモジュールで追跡して現在の位置だけでなく、検知されてから現在までのバスも記録する。
    • さらにモーション予測モジュールで過去から現在までのパスを使用して将来のパスを予測する。
  • 静的オブジェクトの検知
    • カメラとLIDARの組み合わせに依存してシーン内の重要な静的オブジェクトを識別する。これには車線、標識、信号などの規制要素の位置が含まれる。

Environment Mapping

  • 占有グリッドマップ
    • 車両の周囲の環境にある全ての静的オブジェクトのマップ(動的オブジェクトは削除される)。LIDARがマップの作成に使用され、環境を各グリッドセルに確率とともに関連付けて測定データの不確実性を処理する。
  • ローカリゼーションマップ
    • LIDARまたはカメラから構築されたローカリゼーションマップはGPSやIMUなどのセンサーデータと比較され自己位置の精度を改善させる。
  • 詳細ロードマップ
    • 現在運転している運転環境を表す道路セグメントのマップ。事前に記録された地図データと車の自己位置、認識した静的オブジェクト、セグメンテーションの情報を組み合わせたもので、モーションプランニングに使用できるよう標識や車線区分線を捉える。

Motion Planning

モーションプランニングを単一のプロセスで解決するのは困難で問題をいくつかの抽象化レイヤーに分割している。

  • Misshion Planner
    • 長期計画を処理し、現在位置、詳細ロードマップ、目的地の情報から出発地点から目的地までの道路セグメントの最適なシーケンス(ミッションパス)を次のレイヤーに渡す。
  • Behavior Planner
    • 短期的な計画を処理し、ミッションパスに沿って移動中に実行する一連の安全なアクション・操作を確立するのに加え、制約も提供する。入力はミッションパス、詳細マップ、占有グリッドマップ、動的オブジェクトを組み合わせる。
  • Local Planner
    • 即時決定やリアクティブな計画を実行する。スムーズで安全、効率的な計画を実行する必要がある。Behaviorの制約、自己位置、占有グリッドマップ、動的オブジェクトの情報を組み合わせて将来の短期間のパスと速度プロファイルを組み合わせた計画軌道を出力する。

Vehicle Controller

計画軌道を取得して車両に適用する一連の動作コマンドへ変換する。

  • 速度コントローラー(Longitudinal control)
    • アクセル、ブレーキの調整
  • ステアリングコントローラー(Lateral control)
    • 角度の調整

両方のコントローラーは、計画軌道との誤差を計算して現在の動作コマンドを調整しながら、将来のエラーを最小限に抑える。

System Supervisor

自動運転車のあらゆる面を継続的に監視し、サブシステムに障害が発生した場合に適切な警告を発するモジュール。

  • ハードウェアスーパーバイザー
    • センサーの破損、測定値の欠損、情報の低下がないか確認する。実行するドメインと一致しないセンサー出力がないかも確認する(カメラが何かで覆われている、点群データが雪などで破損しているなど)。
  • ソフトウェアスーパーバイザー
    • ソフトウェアモジュール間の出力に不一致がないか確認する。

Lesson 4: Environment Representation

Environment Mappingについてに解説。

  • ローカリゼーションマップ
    • LIDARまたはカメラから構築されたローカリゼーションマップはGPSやIMUなどのセンサーデータと比較され自己位置の精度を改善させる。
    • 車の動きを環境を通じて詳細に表現できることはローカリゼーションモジュールにとって非常に価値がある。
    • ローカリゼーションマップは非常に大きくなる可能性があり、その内容を圧縮してローカライズに必要な機能のみを保持する必要がある。
  • 占有グリッドマップ
    • 車両の周囲の環境にある全ての静的オブジェクトの2D or 3Dの離散化マップ(動的オブジェクトや車両の邪魔にならない静的オブジェクトは削除される)。LIDARがマップの作成に使用され、安全で衝突のない経路を計画するために使用される。
    • 識別するものは樹木、建物、縁石など走行不可能な表面が含まれる。
    • フィルタリング処理が完璧ではないため、盲目的に信頼はできないので時間の経過とともにグリッドセルの可能性を追跡して確率的に表現する。
  • 詳細ロードマップ
    • 現在運転している運転環境を表す道路セグメントのマップ。車線や道路規制情報が含まれ、現在地から目的地までの経路を計画するために使用される。
    • 完全オンライン(リアルタイムで作成する負荷が高すぎて滅多に使用されない)、完全オフライン(道路情報の更新にリアルタイムに適応できない)、オフライン作成・オンライン更新の3つの作成方法がある。

Learn from Industry Experts

オックスフォード大学のPaul Newman教授が「完全な自動運転車が手に入るのはいつか?」という質問は完璧なコンピュータが使えるようになるのはいつか?と聞いているのと同じという返しが印象的。自動運転車はコンピュータと同じようなもので、すでに実用化されているし、毎日進化していく。でも完全な自動運転は扱っている問題がとても複雑で遠い道のり。その質問には誰も答えることができないと述べている。

Week2はこれにて終了。
Week3はこちら
https://zenn.dev/atfujita/articles/a50fc41a2ddb23

Discussion