Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Stateflow チャートを使用してインテリジェント車両の制御を自動化

この例では、同じ判定ロジックで制御するインテリジェント車両を使用したハイウェイのシナリオをモデル化する方法を説明します。各車両は、スタンドアロンの Stateflow® チャートにより定義されたロジックに基づいて、加速、減速、車線変更をどの時点で行うかを決定します。運転条件 (付近の車両の相対位置や相対速度など) は車両ごとに異なるため、MATLAB® での別々のチャート オブジェクトにより、ハイウェイを走行中の個別の車両を制御します。

運転シナリオを開く

例を開始するには、スクリプト sf_driver_demo.m を実行します。このスクリプトは、長距離のハイウェイと数台の車両の 3 次元アニメーションを表示します。この表示は、1 台の車両とその周囲に注目したものです。この車両がハイウェイに沿って移動すると、スタンドアロンの Stateflow チャート sf_driver に、この車両のアクションを決定する判定ロジックが表示されます。

各車両はランダムな位置から、ターゲット速度での移動を試みます。ターゲット速度はランダムに選択されているため、車両同士が互いに邪魔になることがあります。このような場合、車両は車線を変更してターゲット速度での走行を再開しようと試みます。

クラス ファイル HighwayScenario は、ハイウェイと走行中の車両が含まれる 3 次元環境を表すdrivingScenario (Automated Driving Toolbox)オブジェクトを定義します。車両の運動を制御するため、drivingScenario オブジェクトは Stateflow チャート オブジェクトの配列を作成します。各チャート オブジェクトは、シミュレーションでそれぞれ異なる車両を制御します。

車両用の判定ロジックの実行

Stateflow チャート sf_driverLaneKeepLaneChange の 2 つの最上位ステートで構成されています。

LaneKeep ステートがアクティブである場合、対応する車両は同じ車線にそのままとどまります。このステートに存在する可能性があるサブステートは、次の 2 つです。

  • Cruise は、車両のすぐ前のゾーンに他の車両がなく、車両がターゲット速度で走行できる場合にアクティブとなります。

  • Follow は、車両のすぐ前のゾーンに他の車両があり、ターゲット速度が前方の車両の速度より速い場合にアクティブとなります。この場合、車両は強制的に減速し、車線変更を試みます。

LaneChange ステートがアクティブになると、該当する車両は車線変更を試みます。このステートに存在する可能性があるサブステートは、次の 2 つです。

  • Continue は、車両の横のゾーンに他の車両がなく、車両が安全に車線を変更できる場合にアクティブとなります。

  • Abort は、車両の横のゾーンに他の車両がある場合にアクティブとなります。この場合、車両は強制的に元の車線に残ることになります。

ステート LaneKeep および LaneChange の間での遷移は、isLaneChanging の値によりガードされます。LaneKeep ステートでは、サブステート Follow がアクティブで、車両の横に車線変更できるだけの空間がある場合に、チャートがこのローカル データをtrue に設定します。LaneChange ステートでは、車両が車線変更を完了すると、チャートがこのローカル データを false に設定します。

参考

(Automated Driving Toolbox)

関連するトピック