Longitudinal Controller Stanley
ライブラリ:
Automated Driving Toolbox /
Vehicle Control
説明
Longitudinal Controller Stanley ブロックは、車両の速度を制御する加速コマンドと減速コマンドをメートル/秒単位で計算します。基準速度、現在の速度、および現在の走行方向を指定します。コントローラーは、これらのコマンドを計算するために、Stanley の手法[1]を使用します。この手法は、積分アンチワインドアップを使用した離散比例-積分 (PI) コントローラーとしてブロックによって実装されます。詳細については、アルゴリズムを参照してください。
また、Stanley の手法を使用して、車両のステアリング角度コマンドを計算することもできます。Lateral Controller Stanley ブロックを参照してください。
端子
入力
出力
パラメーター
アルゴリズム
Longitudinal Controller Stanley ブロックは、PID Controller ブロックのアンチワインドアップ手法, Anti-windup methodアンチワインドアップ手法Anti-windup method (Simulink)パラメーターで記述されているように、積分アンチワインドアップを使用した離散比例-積分 (PI) コントローラーを実装します。このブロックは、次の方程式を使用します。
u(k) は、k 番目のタイム ステップにおける制御信号です。
Kp は、[比例ゲイン、Kp] パラメーターで設定されている比例ゲインです。
Ki は、[積分ゲイン、Ki] パラメーターで設定されている積分ゲインです。
Ts は、[サンプル時間 (s)] パラメーターで設定されているブロックのサンプル時間 (秒単位) です。
e(k) は、k 番目のタイム ステップにおける速度誤差 ([CurrVelocity] – [RefVelocity]) です。各 k で、この誤差は現在の速度入力と基準速度入力の差 ([CurrVelocity] – [RefVelocity]) と等しくなります。
制御信号 u によって、加速コマンド [AccelCmd] および減速コマンド [DecelCmd] の値が決まります。このブロックは、加速コマンドおよび減速コマンドをそれぞれ範囲 [0, MA] および [0, MD] に飽和させます。ここで、
MA は、[縦方向の最大加速度 (m/s^2)] パラメーターの値です。
MD は、[縦方向の最大減速度 (m/s^2)] パラメーターの値です。
各タイム ステップで、[AccelCmd] 端子と [DecelCmd] 端子のどちらか一方の値のみが正で、もう一方の端子の値は 0
です。つまり、車両は 1 つのタイム ステップで加速または減速できますが、一度に両方を行うことはできません。
[Direction] 入力端子で指定されている運動方向によって、特定のタイム ステップでどちらのコマンドが正なのかが決まります。
Direction 端子の値 | 制御信号値 u(k) | AccelCmd 端子の値 | DecelCmd 端子の値 | 説明 |
---|---|---|---|---|
1 (前進運動) | u(k) > 0 | 正の実数スカラー | 0 | 車両は前進するにつれて加速 |
u(k) < 0 | 0 | 正の実数スカラー | 車両は前進するにつれて減速 | |
-1 (後退運動) | u(k) > 0 | 0 | 正の実数スカラー | 車両は後退するにつれて減速 |
u(k) < 0 | 正の実数スカラー | 0 | 車両は後退するにつれて加速 |
参照
[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. August 2007, pp. 2296–2301. doi:10.1109/ACC.2007.4282788.
拡張機能
バージョン履歴
R2019a で導入
参考
ブロック
- Lateral Controller Stanley | Path Smoother Spline | PID Controller (Simulink) | Velocity Profiler