Main Content

Lateral Controller Stanley

Stanley の手法を使用した、パス追従のための車両のステアリング角度の制御

  • Lateral Controller Stanley block

ライブラリ:
Automated Driving Toolbox / Vehicle Control

説明

Lateral Controller Stanley ブロックは、車両の現在の速度と方向が与えられたときに、車両の現在の姿勢が参照姿勢に一致するように調整するステアリング角度コマンドを度単位で計算します。コントローラーは、このコマンドの計算に Stanley の手法[1]を使用します。この制御速は、運動学的二輪モデルと動的二輪モデルの両方に基づきます。モデルを切り替えるには、[車両モデル] パラメーターを使用します。

  • 運動学的二輪モデルは、駐車場など、慣性の影響が最小の低速環境におけるパス追従に適しています。

  • 動的二輪モデルは、ハイウェイなど、慣性の影響がより顕著な高速環境におけるパス追従に適しています。この車両モデルは、車両のダイナミクスを記述する追加のパラメーターを提供します。

端子

入力

すべて展開する

参照姿勢。[x, y, Θ] ベクトルとして指定します。x と y の単位はメートル、Θ の単位は度です。

x と y は、車両の進行方向の基準点を指定します。Θ はこの基準点におけるパスの方向角度を指定し、反時計回りの方向が正です。

  • 前進運動の車両の場合、この基準点は車両の前車軸の中心に最も近いパス上の点です。

    Vehicle in forward motion with reference point on path marked. Units are in world coordinates.

  • 後退運動の車両の場合、この基準点は車両の後車軸の中心に最も近いパス上の点です。

    Vehicle in reverse motion with reference point on path marked. Units are in world coordinates.

データ型: single | double

車両の現在の姿勢。[x, y, Θ] ベクトルとして指定します。x と y の単位はメートル、Θ の単位は度です。

x と y は、車両の位値を指定します。これは、車両の後車軸の中心として定義されます。

Θ は、位置 (x、y) における車両の方向角度を指定し、反時計回りの方向が正です。

Vehicle with pose marked. Units are in world coordinates.

車両の姿勢の詳細については、Automated Driving Toolbox の座標系を参照してください。

データ型: single | double

車両の現在の縦方向の速度。実数スカラーとして指定します。単位はメートル/秒です。

  • 前進運動の車両の場合、この値は 0 より大きくなければなりません。

  • 後退運動の車両の場合、この値は 0 より小さくなければなりません。

  • 値 0 は、車両が運動していないことを表します。

データ型: single | double

車両の走行方向。前進運動は 1、後退運動は -1 として指定します。走行方向により、ステアリング角度コマンドの計算に使用される位置誤差と角度誤差が決まります。詳細については、アルゴリズムを参照してください。

基準点におけるパスの曲率 (ラジアン/m)。実数スカラーとして指定します。

  • 前進運動の車両の場合、この基準点は車両の前車軸の中心に最も近いパス上の点です。

    Vehicle in forward motion with reference point on path marked. Units are in world coordinates.

  • 後退運動の車両の場合、この基準点は車両の後車軸の中心に最も近いパス上の点です。

    Vehicle in reverse motion with reference point on path marked. Units are in world coordinates.

パスの曲率は、Path Smoother Spline ブロックの Curvatures 出力端子から取得できます。また、車線境界線の曲率も、Scenario Reader ブロックの車線境界線の出力構造体から取得できます。

依存関係

この端子を有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の現在のヨー レート (度/秒)。実数スカラーとして指定します。現在のヨー レートは、車両の角速度の変化率です。

依存関係

この端子を有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の現在のステアリング角度 (度単位)。実数スカラーとして指定します。この値は、反時計回りの方向が正です。

Vehicle with front wheels turned and steering angle marked

詳細については、Automated Driving Toolbox の座標系を参照してください。

依存関係

この端子を有効にするには、[車両モデル][動的二輪モデル] に設定します。

出力

すべて展開する

ステアリング角度コマンド (度単位)。実数スカラーとして返されます。この値は、反時計回りの方向が正です。

Vehicle with front wheels turned and steering angle marked

詳細については、Automated Driving Toolbox の座標系を参照してください。

パラメーター

すべて展開する

車両モデルのタイプを選択して、ブロックで使用する Stanley 法の制御則を設定します。

  • 運動学的二輪モデル — 駐車場など、慣性の影響が最小の低速環境におけるパス追従用の運動学的二輪モデル

  • 動的二輪モデル — ハイウェイなど、慣性の影響がより顕著な高速環境におけるパス追従用の動的二輪モデル

車両が前進運動しているときの車両の位置ゲイン。正のスカラーとして指定します。この値により、位置誤差がステアリング角度に影響する程度が決まります。一般的な値は範囲 [1, 5] にあります。ステアリング角度を大きくするには、この値を増加します。

車両が後退運動しているときの車両の位置ゲイン。正のスカラーとして指定します。この値により、位置誤差がステアリング角度に影響する程度が決まります。一般的な値は範囲 [1, 5] にあります。ステアリング角度を大きくするには、この値を増加します。

ヨー レート フィードバック ゲイン。非負の実数スカラーとして指定します。この値により、ブロックがステアリング角度コマンドを計算する際に、車両の現在のヨー レートに与えられる重みの大きさが決まります。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

ステアリング角度フィードバック ゲイン。非負の実数スカラーとして指定します。この値により、現在のステアリング角度コマンド [SteerCmd] と現在のステアリング角度 [CurrSteer] との差が次のステアリング角度コマンドに影響する程度が決まります。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の前後の車軸間の距離 (メートル単位)。実数スカラーとして指定します。この値は、車両が前進運動している場合にのみ、つまり [方向] 入力端子が 1 の場合にのみ適用されます。

依存関係

このパラメーターを有効にするには、[車両モデル][運動学的二輪モデル] に設定します。

車両の質量 (キログラム単位)。正の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の重心から前車軸までの縦方向の距離 (メートル単位)。正の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の重心から後車軸までの縦方向の距離 (メートル単位)。正の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

フロント タイヤのコーナリング剛性 (N/rad)。正の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[車両モデル][動的二輪モデル] に設定します。

車両の最大許容ステアリング角度 (度単位)。範囲 (0, 180) の実数スカラーとして指定します。

[SteerCmd] 端子からの出力は、範囲 [–M, M] に飽和します。ここで、M は [最大ステアリング角度 (度)] パラメーターの値です。

  • –M より小さい値は –M に設定されます。

  • M より大きい値は M に設定されます。

ヒント

  • 車両環境の変更に応じて、二輪モデルを切り替えることができます。バリアント サブシステムに 2 つの Lateral Controller Stanley ブロックを追加して、各ブロックに異なる二輪モデルを指定します。例については、横方向制御のチュートリアルを参照してください。

アルゴリズム

ステアリング角度コマンドを計算するために、コントローラーは参照姿勢を基準とする現在の姿勢の位置誤差と角度誤差を最小にします。車両の走行方向によってこれらの誤差の値が決まります。

車両が前進運動している場合 ([方向] パラメーターが 1 の場合) は次のとおりです。

  • "位置誤差" は、車両の前車軸の中心からパス上の基準点までの横方向の距離です。

  • "角度誤差" は、参照パスを基準とした前輪の角度です。

車両が後退運動している場合 ([方向] パラメーターが -1 の場合) は次のとおりです。

  • "位置誤差" は、車両の後車軸の中心からパス上の基準点までの横方向の距離です。

  • "角度誤差" は、参照パスを基準とした後輪の角度です。

運動学的二輪モデルと動的二輪モデルについて、コントローラーがこれらの誤差を最小にする方法の詳細については、[1]を参照してください。

参照

[1] Hoffmann, Gabriel M., Claire J. Tomlin, Michael Montemerlo, and Sebastian Thrun. "Autonomous Automobile Trajectory Tracking for Off-Road Driving: Controller Design, Experimental Validation and Racing." American Control Conference. 2007, pp. 2296–2301. doi:10.1109/ACC.2007.4282788

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2018b で導入