Main Content

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

Simulink での自動バレー パーキング

この例では、Automated Driving Toolbox™ を使用して Simulink® で自動バレー パーキング システムを構築する方法を示します。Automated Parking Valetの MATLAB® の例に忠実に従っています。

はじめに

駐車場の前に置かれた車を自動的に駐車するのは、難しい問題です。車両の自動システムは、運転を引き継いでステアリングし、車両を空いている駐車スポットに移動させる必要があります。この例では、環境で実行可能なパスを計画し、そのパスから軌跡を生成し、実行可能なコントローラーを使用して軌跡を実行することに焦点を合わせています。マップの作成および動的な障害物の回避は、この例の対象外です。

シミュレーションを行う前に、関数 helperSLCreateCostmap がモデルのコールバック関数 PreLoadFcn 内で呼び出されます。コールバック関数の使用の詳細については、モデル コールバック (Simulink)を参照してください。関数 helperSLCreateCostmap は、静止障害物、路面標示、駐車中の車に関する情報が含まれた、駐車場の静的なマップを作成します。このマップは、vehicleCostmap オブジェクトとして表されます。

Simulink® で vehicleCostmap オブジェクトを使用するために、関数 helperSLCreateUtilityStruct はブロックのマスク初期化で vehicleCostmap を struct 配列に変換します。詳細については、マスクの初期化 (Simulink)を参照してください。

グローバル ルート計画は、駐車スポットに到達するために移動する車線セグメントのシーケンスとして記述されます。シミュレーションを行う前に、モデルのコールバック関数 PreLoadFcn は、ルート計画を読み込み、テーブルとして格納します。このテーブルは、セグメントの開始姿勢と終了姿勢、およびセグメントのプロパティ (制限速度など) を指定します。

routePlan =

  5×3 table

       StartPose              EndPose           Attributes
    ________________    ____________________    __________

     4     12      0      56      11       0    1×1 struct
    56     11      0      70      19      90    1×1 struct
    70     19     90      70      32      90    1×1 struct
    70     32     90      52      38     180    1×1 struct
    53     38    180    36.3      44      90    1×1 struct

この例における多くのブロックの入出力は、Simulink バス (Simulink.Bus (Simulink) クラス) です。モデルのコールバック関数 PreLoadFcn で、関数 helperSLCreateUtilityBus がこれらのバスを作成します。

プランニングは階層的なプロセスであり、各後続レイヤーがより詳細なタスクを担当します。動作レイヤー [1] はこのスタックの最上位にあります。"Behavior Planner" ブロックは、"Motion Planning" ブロックと "Trajectory Generation" ブロックに中間目標および構成を提供して、グローバル ルート計画に基づいてナビゲーション タスクのシーケンスをトリガーします。次のステップを使用して各パス セグメントを移動します。

  1. モーション プランニング:最適な RRT* (Rapidly Exploring Random Tree) アルゴリズム (pathPlannerRRT) を使用して環境マップで実行可能なパスを計画します。

  2. 軌跡の生成:Path Smoother Splineブロックを使用してスプライン [2] を当てはめて参照パスを平滑化します。次に、Velocity Profilerブロックを使用して速度プロファイルを生成することで、平滑化されたパスを軌跡に変換します。

  3. 車両制御:HelperPathAnalyzer は、車両のステアリングおよび速度を制御する Vehicle Controller サブシステムの基準信号を提供します。

  4. ゴール チェック:helperGoalChecker を使用して車両がセグメントの最終姿勢に達したかどうかを確認します。

サブシステムの詳細

Vehicle Controller サブシステムには、Lateral Controller StanleyブロックおよびLongitudinal Controller Stanleyブロックが含まれています。これらのブロックは、車両の姿勢と速度をそれぞれ制御するためのものです。現実的な車両運動 [3] を処理するために、Lateral Controller Stanley ブロックの [車両モデル] パラメーターは Dynamic bicycle model に設定されます。この構成では、ステアリング コマンドを計算するために、パスの曲率、車両の現在のヨー レート、現在のステアリング角度などの追加入力が必要です。Longitudinal Controller Stanley ブロックは切り替わる比例-積分コントローラーを使用して、車両でブレーキおよびスロットルを作動させる加速コマンドと減速コマンドを計算します。

パフォーマンスを示すために、車両コントローラーが Vehicle Model ブロックに適用されます。このブロックには、1 次系としてモデル化された簡易ステアリング システム [3]、および Automated Driving Toolbox™ と Vehicle Dynamics Blockset™ で共有されるVehicle Body 3DOF (Vehicle Dynamics Blockset)ブロックが含まれています。この Vehicle Model ブロックは、タイヤのスリップやステアリング サーボの作動といった慣性の効果を考慮しているため、Automated Parking Valetの MATLAB® の例で使用されている運動学的二輪モデルより正確です。

シミュレーション結果

Visualization ブロックは、車両が参照パスを追従する方法を示します。また、スコープ内の車両速度およびステアリング コマンドも表示します。次のイメージは、この例のシミュレーション結果です。

シミュレーションは、約 45 秒で停止します。これは、車両が目的地に到達したときです。

まとめ

この例では、Simulink で自動バレー パーキングを実装する方法が示されています。

参考文献

[1] Buehler, Martin, Karl Iagnemma, and Sanjiv Singh.The DARPA Urban Challenge:Autonomous Vehicles in City Traffic (1st ed.).Springer Publishing Company, Incorporated, 2009.

[2] Lepetic, Marko, Gregor Klancar, Igor Skrjanc, Drago Matko, and Bostjan Potocnik, "Time Optimal Path Planning Considering Acceleration Limits."Robotics and Autonomous Systems, Volume 45, Issues 3-4, 2003, pp. 199-210.

[3] 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.

参考

ブロック

オブジェクト

関連するトピック