Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

plannerHybridAStar

ハイブリッド A* パス プランナー

説明

ハイブリッド A* パス プランナー オブジェクトは、非ホロノミック拘束をもつビークルに対し与えられた 2-D 空間で、滑らかなパスを生成します。

メモ

ハイブリッド A* プランナーは、stateValidator オブジェクトの ValidationDistance プロパティに基づいて運動プリミティブと解析的展開を内挿することにより、マップ内で衝突をチェックします。ValidationDistance プロパティが Inf に設定されている場合、オブジェクトは状態バリデーターで指定されているマップのセル サイズに基づいて内挿します。ビークル サイズを考慮して、占有マップをプランナーに割り当てる前にインフレートします。

作成

説明

planner = plannerHybridAStar(validator) は、ハイブリッド A* アルゴリズムを使用してパス プランナー オブジェクトを作成します。validator 入力を、validatorOccupancyMap または validatorVehicleCostmap オブジェクトとして指定してください。validator 入力は、StateValidatorプロパティの値を設定します。

planner = plannerHybridAStar(validator,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、パス プランナーのプロパティを設定します。プロパティ名はそれぞれ一重引用符 (' ') で囲みます。

プロパティ

すべて展開する

計画用の状態バリデーター。SE(2) 状態空間に基づいて validatorOccupancyMap または validatorVehicleCostmap オブジェクトとして指定します。

生成される運動プリミティブの長さ。'MotionPrimitiveLength' とメートル単位の正のスカラーからなるコンマ区切りのペアとして指定します。大規模なマップやスパースな環境では長さを増やします。密な環境では長さを減らします。

メモ

'MotionPrimitiveLength' は、'MinTurningRadius' に基づく円の円周長の 4 分の 1 を超えることはできません。

データ型: double

ビークルの最小回転半径。'MinTurningRadius' とメートル単位の正のスカラーからなるコンマ区切りのペアとして指定します。

メモ

'MinTurningRadius' の値は、これに基づく円の円周長の 4 分の 1 を 'MotionPrimitiveLength' が超えることができないように設定されます。

データ型: double

生成される運動プリミティブの数。'NumMotionPrimitives' と 3 以上の正の奇数の整数スカラーからなるコンマ区切りのペアとして指定します。

前進方向に移動するためのコスト乗数。'ForwardCost' と正のスカラーからなるコンマ区切りのペアとして指定します。前進運動にペナルティを設定するにはコスト値を増やします。

データ型: double

後退方向に移動するためのコスト乗数。'ReverseCost' と正のスカラーからなるコンマ区切りのペアとして指定します。後退運動にペナルティを設定するにはコスト値を増やします。

データ型: double

運動方向切り替え用の加法コスト。'DirectionSwitchingCost' と正のスカラーからなるコンマ区切りのペアとして指定します。方向切り替えにペナルティを設定するにはコスト値を増やします。

データ型: double

そのインスタンスで使用可能な、コストの最も低いノードから解析的展開を試行する間隔。'AnalyticExpansionInterval' と正の整数スカラーからなるコンマ区切りのペアとして指定します。

ハイブリッド A* パス プランナーは、そのインスタンスで使用可能な最も低いコストのノードから運動プリミティブを展開します。

  • 展開されるノードの数は、両方向で生成されるプリミティブの数とそれらの有効性によって異なり、このサイクルは 'AnalyticExpansionInterval' に達するまで繰り返されます。

  • その後プランナーは、Reeds-Shepp モデルを使用して、ツリーからゴール姿勢に達するための解析的展開を試行します。試行が失敗した場合、プランナーはサイクルを繰り返します。

アルゴリズムのパフォーマンスを上げるには、間隔を短くして、Reeds-Shepp の最終ゴールへの接続のチェック数を増やします。

出力パスにおける内挿された姿勢間の距離。'InterpolationDistance' とメートル単位の正のスカラーからなるコンマ区切りのペアとして指定します。

データ型: double

オブジェクト関数

planFind obstacle-free path between two poses
showVisualize the planned path

すべて折りたたむ

ハイブリッド A* アルゴリズムを使用して、駐車場を通るビークルの衝突のないパスを計画します。

マップの作成と状態バリデーターへの割り当て

駐車場のビークル コストマップでセルのコスト値を読み込みます。

load parkingLotCostVal.mat % costVal

コスト値をもつbinaryOccupancyMapを作成します。

map = binaryOccupancyMap(costVal);

衝突チェック用の状態バリデーター オブジェクトを作成します。

validator = validatorOccupancyMap;

マップを状態バリデーター オブジェクトに割り当てます。

validator.Map = map;

パスの計画と可視化

plannerHybridAStarオブジェクトを状態バリデーター オブジェクトで初期化します。プランナーの MinTurningRadius および MotionPrimitiveLength プロパティを指定します。

planner = plannerHybridAStar(validator,'MinTurningRadius',4,'MotionPrimitiveLength',6);

ビークルの開始姿勢とゴール姿勢を [x, y, theta] ベクトルとして定義します。"x""y" は位置をメートル単位で指定し、"theta" は向きの角度をラジアン単位で指定します。

startPose = [6 10 pi/2]; % [meters, meters, radians]
goalPose = [90 54 -pi/2];

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

refpath = plan(planner,startPose,goalPose);

関数 show を使用してパスを可視化します。

show(planner)

Figure contains an axes object. The axes object with title Hybrid A* Path Planner contains 6 objects of type image, line, scatter. These objects represent Forward Motion Primitives, Reverse Motion Primitives, Forward Path, Start, Goal.

参照

[1] Dolgov, Dmitri, Sebastian Thrun, Michael Montemerlo, and James Diebel. Practical Search Techniques in Path Planning for Autonomous Driving. American Association for Artificial Intelligence, 2008.

[2] Petereit, Janko, Thomas Emter, Christian W. Frey, Thomas Kopfstedt, and Andreas Beutel. "Application of Hybrid A* to an Autonomous Mobile Robot for Path Planning in Unstructured Outdoor Environments." ROBOTIK 2012: 7th German Conference on Robotics. 2012, pp. 1-6.

拡張機能

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

バージョン履歴

R2019b で導入