😺

【Coursera】Introduction to Self-Driving Cars: Week5

2022/09/24に公開

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

Week4はこちら
https://zenn.dev/atfujita/articles/47b63638bd20b2

Lesson 1: Proportional-Integral-Derivative (PID) Control

1.png

コントローラーの役割は現在の状態変数を検知して指示されたコマンドを満たすためのアクチュエータ信号を生成することで車両の状態を調整すること。

縦方向制御の場合、コントローラーは車両速度を検知して自動運転プランニングシステムが要望する速度に一致するようにスロットルとブレーキコマンドを調整する。

2.png

プラントモデル(システム)はアクチュエータ信号を入力としてシステムの出力変数、状態変数を生成する。これらの出力はセンサーで測定され、目的もしくは基準となる出力変数と比較され、コントローラには誤差が渡される。コントローラはアクチュエータ信号の生成によって誤差を最小化してシステムが目的の状態変数に近づくようにする。

プラントモデルは線形もしくは非線形で最も一般的には状態空間形式か伝達関数形式。伝達関数の場合は線形時不変である必要がある。

制御アルゴリズムの設計は簡単なものから非線形、時変を扱う詳細なものまで様々で、基本的でシンプルなものにLead-lag controllersとPID controllersがある。

3.png

PIDコントローラーは誤差関数に依存する3つの項(比例項、積分項、微分項)を追加する。一方で全ての項があらゆるシステムで使用されるわけではなくゼロに設定されたゲインがある場合P, PD, PIと呼ばれる。

4.png

伝達関数には積分項に由来する単一の極が含まれる。また、2つのゼロ点を持つ二次の分子も含まれ、ゲインに適切な値を選択することで複素平面のどこにでも配置できる。PIDコントローラーの設計はゼロ点位置の選択によってプラントモデルに基づき目的の出力やパフォーマンスを達成すると要約できる。Zeigler-NocholsはPIDゲインを調整する最も一般的なアルゴリズムの一つ。

5.png

  • Closed loop response: はコントローラーがプラントモデルに適用する入力を決定する際のシステムの応答を示す。

基準信号のステップ入力において

  • Rise time(立ち上がり時間): 基準値の90%に達するまでの時間
  • Overshoot: 出力がこの基準を超える最大の割合
  • Setting time(整定時間): 基準の5%以内に安定する時間
  • Steady State Error: 定常状態での出力の基準間の誤差

セルの中身は各PIDアクションにおける効果

6.png

質量-ばね-ダンパーモデルの例。m: 質量, b: バネ係数、k: 減衰係数

7.png

システムの評価のため、単位ステップ入力を使用してシステムを実行する。コントローラーがない場合、オープンループ応答と呼ばれる。

8.png

コントローラが追加され、出力が測定され、目的の出力や基準信号と比較される場合、システムの応答はクローズドループ応答と呼ばれる。

9.png

異なるPIDコントローラーのステップ応答。水平の線が望ましい出力でコントローラーの目標は出力をその基準に近づけること。

  • P: 立ち上がりが早く、オーバーシュートが顕著で発振が長引くので整定時間が長くなる。
  • PD: 微分制御を加えるとオーバーシュートと整定時間が改善するが立ち上がり時間が遅くなる。
  • PI: 代わりに積分項を加えると立ち上がり時間が短くなりオーバーシュートが減少するため、整定時間も短くなる。

シンプルなPI制御は質量-ばね-ダンパーシステム向けに優れた設計である。

10.png

3つのPID項をコントローラーに含めるとステップ応答の設計がより柔軟になる。ゲインの慎重な調整を通じて3つの項の利点を享受でき、オーバーシュートの除去、立ち上がりと整定時間を短くできる。

Lesson 2: Longitudinal Speed Control with PID

自動車の制御アーキテクチャ

  • 道路と環境の認識:センサーによって捕捉され入力リファレンスを生成
  • パス生成と速度プロファイル生成(ドライブサイクル):モーションプランニングプロセスによって生成される。
  • 縦方向・横方向の制御:パスと速度プロファイルは基準入力であり、コントローラーが必要。ここで計画に追従できるよう基準入力との誤差を最小化する。出力として車両への入力コマンド、アクチュエータ信号を生成する。
  • スロットル・ブレーキ・ステアリング:入力コマンドを実行する。

11.png

高速道路で動作するクルーズ・コントロールの例

スロットルコマンドを使用して一定の基準速度を維持し、ドライバーの要求に応じて新しい基準速度へ加速・減速する機能を実行する。車に様々な負荷、抵抗がかかるとクルーズコントローラーによってスロットル角度が変更される。

今日では多くのシステムに先行車両の測定に基づいて基準点を変更できるアダプティブクルーズコントロールのような拡張機能や車両の速度範囲全体で動作し、合流車との間隔を作り出す交通渋滞アシストなどが搭載されている(これらには追加のコントローラーが必要になる)。

コントローラーは高レベル・低レベルのコントローラーに分割できる(低レベルは必須ではない)。

  • 高レベルコントローラーは基準点の速度と車両の実際の速度との差を取得し、差を埋めるために必要な加速度を生成する。
  • 低レベルコントローラーは車両の加速度を取得し、スロットルまたはブレーキ操作の生成によって基準加速度に追従する。

この2段階のアプローチはPID制御だけでなく、速度を維持するために車両に要求される加速度に対して直接、制約やプロファイルを課すこともできる。

12.png

高レベルコントローラー

速度誤差に基づいて各タイムステップで必要な加速量を決定する。

ソフトウェアで実装するには離散化と積分を固定長タイムステップの総和に変更する。加速度またが推定車両加速度のどちらかが利用できない場合は微分項を有限差分で近似する。

13.png

低レベルコントローラー

高レベルコントローラーで計算された目的の加速度に追従する。

問題をシンプルにするためいくつかの仮定をおく

  • クルーズコントロール中の車両の速度管理にはスロットルのみが必要でブレーキが必要な場合はドライバーが引き継ぐ。
  • トルクコンバータがロックされるようにギヤ3以上で運転すると仮定(エンジンが生成するトルクはトランスミッションを損失なしで通過する)。
  • クルーズコントロールは穏やかでスリップ角とスリップ率は無視できると仮定。

14.png

低レベルコントローラーはエンジンが生成するトルクの増減によって高レベルコントローラーが望む加速度を生成するよう動く。これはスロットル角度によって制御されるが、パワートレインのDynamicsとエンジンマップによって制御されるため非線形問題になってしまう。

その代わりに目的の加速度をトルク要求に変換し、トルク要求をスロットル角度に変換する。

具体的には、車両のエンジントルクと負荷トルクの差から車両の加速度を記述した式をアレンジして既知の負荷トルクと目的の車両加速度から所望のエンジントルクを得る。そして様々な動作ポイントでのエンジンテストによって生成される定常状態のエンジンマップを使用して、必要なトルク要求量を生成するために必要なスロットル角度を決定する(標準エンジンマップでは望むエンジントルクと現在のエンジンRPMが必要なスロットル位置を定義する。また必要に応じて補完も可能。これらはデータドリブンアプローチと似ているが実際によく機能する。)

15.png

シミュレーション例

PIDコントローラを使用して車両のDynamicモデルの目標速度のステップ変化に対する制御応答をシミュレート。PIDゲインは試行錯誤で調整される。

左図は車両コマンドとしてのスロットルの時間遷移、右図は速度の時間遷移で整定時間後に基準速度に達している。しかしエンジンマップは非線形であるため、基準速度に近づくと車両の応答に乱れが出ている。

16.png

Lesson 3: Feedforward Speed Control

FeedbackとFeedforwardの比較

  • Feedbackは典型的なクローズドループ構造で現在の出力は基準信号と比較される。そして誤差がFeedbackコントローラーに送られ、プラントへの入力が生成される。
  • Feedforwardはオープンループ構造で、基準信号は直接Feedforwardコントローラーに送られ、プラントへの入力が生成される(適切な入力を直接適用する)。

17.png

多くのアプリケーションではFeedbackとFeedforwardを組み合わせてコントローラーのパフォーマンスを向上させている。

  • Feedforwardはプラントが基準信号の追跡を続けるために必要な入力を生成する(必要な入力がゼロ以外の場合に予測応答を提供する)。
  • Feedbackコントローラーは外乱やFeedforwardの不正確さによる誤差を修正する(リアクティブな応答を提供して外乱を排除する)。

プラントへの入力はFeedforwardとFeedbackの足し算になる。

両者の組み合わせは自動運転車でもとても有益。

18.png

車両速度制御の例

基準速度がFeedforwardコントローラーへの入力となり、速度誤差はFeedbackコントローラーまたはPIDコントローラーへの入力となる。両方のコントローラーはスロットルコマンドとブレーキコマンドのアクチュエーション信号を生成する。前回の低レベルコントローラーでの処理はFeedforwardコントローラーが担っている。

19.png

Feedforwardコントローラーは基準信号のみを入力として取得し、主な目的はプラントの入力を正確に設定すること。これを実現するために縦方向のDynamicモデル全体を固定ルックアップテーブルまたは参照マップへ変換する。そして、車両が定常状態にあると仮定して基準速度を対応するアクチュエータ信号にマッピングする。

このアプローチは定常状態では機能するが車両の内部のパワートレインのDymanicsを無視するため、現在の車両状態の推定を利用して一部の力や使用するDynamicモデルを解決する必要がある。

20.png

21.png

PIDコントローラーのみとPID+Feedforwardの比較

2つの差は基準速度を変化させると出てくる。PIDのみの場合は修正の前に誤差が存在する必要があるため、Feedforwardに比べて反応に遅れが出る。Feedforwardの場合では入力基準速度をすぐに適用できる。

一方で車両の応答は最終的には慣性に支配されるのでFeedforward追従は完璧ではない。また、車両の定常状態モデリングにも依存する。Feedforwardモデルが正確になるにつれて、Feedbackコンポーネントは外乱の排除に集中でき、速度プロファイルへの追従が一貫した精度で実行されるようになる。

22.png

Week5はこれにて終了。
Week6はこちら
https://zenn.dev/atfujita/articles/a82f8d12b8c6ed

Discussion