Main Content

plannerAStarGrid

グリッド マップの A* パス プランナー

R2020b 以降

    説明

    plannerAStarGrid オブジェクトは、A* パス プランナーを作成します。このプランナーは、占有マップで A* 探索を実行し、グリッドの指定された開始位置からゴール位置までの障害物のない最短のパスを見つけます。最短のパスはヒューリスティック コストによって決定されます。

    作成

    説明

    planner = plannerAStarGrid は、幅と高さが 10 メートルでグリッド分解能が 1 メートルあたり 100 セルの binaryOccupancyMap オブジェクトを使用して plannerAStarGrid オブジェクトを作成します。

    planner = plannerAStarGrid(map) は、指定されたマップ オブジェクト map を使用して plannerAStarGrid を作成します。mapbinaryOccupancyMap オブジェクトまたは occupancyMap オブジェクトとして指定します。map 入力は、Map プロパティの値を設定します。

    planner = plannerAStarGrid(___,Name,Value) は、1 つ以上の名前と値のペアを使用して プロパティ を設定します。指定されていないプロパティは既定値になります。プロパティ名はそれぞれ引用符で囲みます。

    たとえば、plannerAStarGrid(map,'GCost','Manhattan') は、Manhattan コスト関数を使用して A* パス プランナー オブジェクトを作成します。

    プロパティ

    すべて展開する

    地図表現。binaryOccupancyMap オブジェクトまたは occupancyMap オブジェクトとして指定します。このオブジェクトはロボットの環境を占有グリッドとして表現します。各グリッド セルの値は、マップ内の関連付けられた位置の占有状態を示します。

    例: planner.Map = binaryOccupancyMap(zeros(50,50));

    グリッド内の任意の 2 点間を移動する一般的なコスト。事前定義されたコスト関数 'Chebyshev''Euclidean''EuclideanSquared'、または 'Manhattan' のいずれかとして指定します。

    直交座標 (x1,y1) および (x2,y2) の 2 点間を移動するコストは、以下のように計算されます。

    • チェビシェフ

      d=max(|x2x1|,|y2y1|)

    • ユークリッド

      d=(x2x1)2+(y2y1)2

    • 2 乗ユークリッド

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    メモ

    事前定義されたコスト関数またはカスタムのコスト関数のいずれかを使用できます。カスタムのコスト関数を使用するには、GCostFcn プロパティを参照してください。

    例: planner = plannerAStarGrid(map,'GCost','Manhattan');

    例: planner.GCost = 'Chebyshev';

    データ型: string | char

    カスタムの GCost 関数。関数ハンドルとして指定します。関数ハンドルは、2 つの姿勢の入力を [row column] ベクトルとして受け入れ、double 型のスカラーを返さなければなりません。

    メモ

    事前定義されたコスト関数またはカスタムのコスト関数のいずれかを使用できます。事前定義されたコスト関数を使用するには、GCost プロパティを参照してください。

    例: planner = plannerAStarGrid(map,'GCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    例: planner.GCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    データ型: function_handle

    グリッド内の点からゴールまでのヒューリスティック コスト。事前定義されたコスト関数 'Chebyshev''Euclidean''EuclideanSquared'、または 'Manhattan' のいずれかとして指定します。

    直交座標 (x1,y1) および (x2,y2) の 2 点間を移動するコストは、以下のように計算されます。

    • チェビシェフ

      d=max(|x2x1|,|y2y1|)

    • ユークリッド

      d=(x2x1)2+(y2y1)2

    • 2 乗ユークリッド

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    メモ

    事前定義されたコスト関数またはカスタムのコスト関数のいずれかを使用できます。カスタムのコスト関数を使用するには、HCostFcn プロパティを参照してください。

    例: planner = plannerAStarGrid(map,'HCost','Manhattan');

    例: planner.HCost = 'Chebyshev';

    データ型: string | char

    カスタムの HCost 関数。関数ハンドルとして指定します。関数ハンドルは、2 つの姿勢の入力を [row column] ベクトルとして受け入れ、double 型のスカラーを返さなければなりません。

    メモ

    事前定義されたコスト関数またはカスタムのコスト関数のいずれかを使用できます。事前定義されたコスト関数を使用するには、HCost プロパティを参照してください。

    例: planner = plannerAStarGrid(map,'HCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    例: planner.HCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    データ型: function_handle

    タイブレーカー モードの切り替え。'on' または 'off' として指定します。

    TieBreaker プロパティを有効にすると、同じ長さのパスが複数ある場合に、A* パス プランナーはヒューリスティック コストの値を調整していずれかを選択します。

    例: planner = plannerAStarGrid(map,'TieBreaker','on');

    例: planner.TieBreaker = 'off';

    データ型: string | char

    斜め探索モードの切り替え。'on' または 'off' として指定します。

    このプロパティを 'on' に設定すると、A* パス プランナーはグリッドの他の 4 方向と共に斜め方向で探索を行います。このプロパティを 'off' に設定すると、A* パス プランナーはグリッドの 4 方向でのみ探索を行います。

    データ型: char | string

    オブジェクト関数

    planFind shortest obstacle-free path between two points
    showPlot and visualize A* explored nodes and planned path

    すべて折りたたむ

    A* パス計画アルゴリズムを使用して、障害物グリッド マップを通る衝突のない最短のパスを計画します。

    関数mapClutterを使用して、障害物がランダムに散乱したbinaryOccupancyMapオブジェクトを生成します。

    rng('default');
    map = mapClutter;

    マップを使用してplannerAStarGridオブジェクトを作成します。

    planner = plannerAStarGrid(map);

    開始点とゴール点を定義します。

    start = [2 3];
    goal = [248 248];

    開始点からゴール点までのパスを計画します。

    plan(planner,start,goal);

    オブジェクト関数showを使用してパスおよび探索されたノードを可視化します。

    show(planner)

    Figure contains an axes object. The axes object with title AStar, xlabel Columns, ylabel Rows contains 8 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Path, Start, Goal, GridsExplored.

    拡張機能

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

    バージョン履歴

    R2020b で導入