このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Simulink での自動バレー パーキング
この例では、Automated Driving Toolbox™ を使用して Simulink® で自動バレー パーキング システムを構築する方法を示します。Automated Parking Valetの MATLAB® の例に忠実に従っています。
はじめに
駐車場の前に置かれた車を自動的に駐車するのは、難しい問題です。車両の自動システムは、運転を引き継いでステアリングし、車両を空いている駐車スポットに移動させる必要があります。この例では、環境で実行可能なパスを計画し、そのパスから軌跡を生成し、実行可能なコントローラーを使用して軌跡を実行することに焦点を合わせています。マップの作成および動的な障害物の回避は、この例の対象外です。
シミュレーションを行う前に、関数 helperSLCreateCostmap
がモデルのコールバック関数 PreLoadFcn
内で呼び出されます。コールバック関数の使用の詳細については、モデル コールバック (Simulink)を参照してください。関数 helperSLCreateCostmap
は、静止障害物、路面標示、駐車中の車に関する情報が含まれた、駐車場の静的なマップを作成します。このマップは、
オブジェクトとして表されます。vehicleCostmap
Simulink® で
オブジェクトを使用するために、関数 vehicleCostmap
helperSLCreateUtilityStruct
はブロックのマスク初期化で
を struct 配列に変換します。詳細については、マスクの初期化 (Simulink)を参照してください。vehicleCostmap
グローバル ルート計画は、駐車スポットに到達するために移動する車線セグメントのシーケンスとして記述されます。シミュレーションを行う前に、モデルのコールバック関数 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" ブロックに中間目標および構成を提供して、グローバル ルート計画に基づいてナビゲーション タスクのシーケンスをトリガーします。次のステップを使用して各パス セグメントを移動します。
モーション プランニング:最適な RRT* (Rapidly Exploring Random Tree) アルゴリズム (
) を使用して環境マップで実行可能なパスを計画します。pathPlannerRRT
軌跡の生成:Path Smoother Splineブロックを使用してスプライン [2] を当てはめて参照パスを平滑化します。次に、Velocity Profilerブロックを使用して速度プロファイルを生成することで、平滑化されたパスを軌跡に変換します。
車両制御:
HelperPathAnalyzer
は、車両のステアリングおよび速度を制御する Vehicle Controller サブシステムの基準信号を提供します。ゴール チェック:
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.
参考
ブロック
- Vehicle Body 3DOF (Vehicle Dynamics Blockset) | Lateral Controller Stanley | Path Smoother Spline | Longitudinal Controller Stanley | Velocity Profiler