このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
driving.Path
計画された車両パス
説明
driving.Path
オブジェクトは、一連のパス セグメントで構成される車両パスを表します。これらのセグメントは、driving.DubinsPathSegment
オブジェクトか driving.ReedsSheppPathSegment
オブジェクトのいずれかとなり、driving.Path
の PathSegments
プロパティに保存されます。
vehicleCostmap
オブジェクトに対するパスの有効性を確認するには、関数 checkPathValidity
を使用します。パスの長さに沿って姿勢を内挿するには、関数 interpolate
を使用します。
作成
driving.Path
オブジェクトを作成するには、関数 plan
を使用し、pathPlannerRRT
オブジェクトを入力として指定します。
プロパティ
StartPose
— ビークルの初期姿勢
[x, y, Θ] ベクトル
この プロパティ は読み取り専用です。
車両の初期姿勢。[x, y, Θ] ベクトルとして指定します。x と y はメートルなどのワールド単位です。Θ の単位は度です。
GoalPose
— 車両のゴール姿勢
[x, y, Θ] ベクトル
この プロパティ は読み取り専用です。
車両のゴール姿勢。[x, y, Θ] ベクトルとして指定します。x と y はメートルなどのワールド単位です。Θ の単位は度です。
PathSegments
— パスに沿ったセグメント
driving.DubinsPathSegment
オブジェクトの配列 | driving.ReedsSheppPathSegment
オブジェクトの配列
この プロパティ は読み取り専用です。
パスに沿ったセグメント。driving.DubinsPathSegment
オブジェクトまたは driving.ReedsSheppPathSegment
オブジェクトの配列として指定します。
Length
— パスの長さ
正の実数スカラー
この プロパティ は読み取り専用です。
パスの長さ (ワールド単位)。正の実数スカラーとして指定します。
オブジェクト関数
interpolate | 計画された車両パスに沿った姿勢の内挿 |
plot | Plot planned vehicle path |
例
パスの計画およびその有効性の確認
最適な RRT* (Rapidly Exploring Random Tree) アルゴリズムを使用して駐車場の車両パスを計画します。パスが有効であることを確認してから、パスに沿って遷移する姿勢をプロットします。
駐車場のコストマップを読み込みます。コストマップをプロットし、駐車場、および車両が回避するインフレート エリアを確認します。
data = load('parkingLotCostmap.mat');
costmap = data.parkingLotCostmap;
plot(costmap)
車両の開始姿勢とゴール姿勢を [x, y, Θ] ベクトルとして定義します。位置 (x,y) のワールド単位はメートルです。方向角度 Θ のワールド単位は度です。
startPose = [4, 4, 90]; % [meters, meters, degrees]
goalPose = [30, 13, 0];
pathPlannerRRT
オブジェクトを使用して、開始姿勢からゴール姿勢までのパスを計画します。
planner = pathPlannerRRT(costmap); refPath = plan(planner,startPose,goalPose);
パスが有効か確認します。
isPathValid = checkPathValidity(refPath,costmap)
isPathValid = logical
1
パスに沿って遷移する姿勢を内挿します。
transitionPoses = interpolate(refPath);
コストマップ上に計画されたパスと遷移する姿勢をプロットします。
hold on plot(refPath,'DisplayName','Planned Path') scatter(transitionPoses(:,1),transitionPoses(:,2),[],'filled', ... 'DisplayName','Transition Poses') hold off
パスの計画とパスに沿った内挿
Rapidly Exploring Random Tree (RRT*) アルゴリズムを使用して、駐車場の車両パスを計画します。パスに沿った複数の点に車両の姿勢を内挿します。
駐車場のコストマップを読み込みます。コストマップをプロットし、駐車場、および車両が回避するインフレート エリアを確認します。
data = load('parkingLotCostmap.mat');
costmap = data.parkingLotCostmap;
plot(costmap)
車両の開始姿勢とゴール姿勢を [
x, y, Θ]
ベクトルとして定義します。位置 (x,y) のワールド単位はメートルです。方向角度 Θ のワールド単位は度です。
startPose = [4, 4, 90]; % [meters, meters, degrees]
goalPose = [30, 13, 0];
pathPlannerRRT
オブジェクトを使用して、開始姿勢からゴール姿勢までのパスを計画します。
planner = pathPlannerRRT(costmap); refPath = plan(planner,startPose,goalPose);
パス全体に沿って 1 m ごとに車両姿勢を内挿します。
lengths = 0 : 1 : refPath.Length; poses = interpolate(refPath,lengths);
内挿した姿勢をコストマップ上にプロットします。
plot(costmap) hold on scatter(poses(:,1),poses(:,2),'DisplayName','Interpolated Poses') hold off
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2018a で導入R2018b: 関数 connectingPoses
と driving.Path
オブジェクトのプロパティ KeyPoses
および NumSegments
は推奨されない
関数 connectingPoses
と、driving.Path
オブジェクトの KeyPoses
プロパティおよび NumSegments
プロパティは推奨されません。代わりに、関数 interpolate
を使用してください。この関数は、キーとなる姿勢、接続姿勢、遷移する姿勢、方向変更を返します。KeyPoses
プロパティおよび NumSegments
プロパティは関連しなくなりました。KeyPoses
、NumSegments
、および connectingPoses
は将来のリリースで削除されます。
R2018a では、connectingPoses
を使用すると、パス全体、またはキーとなる姿勢 (KeyPoses
で指定) の間のパス セグメントに沿って中間姿勢を取得できました。関数 interpolate
を使用すると、パス上の指定された任意の点の中間姿勢を取得できるようになりました。関数 interpolate
では、方向変更が行われる遷移する姿勢も提供されます。
KeyPoses
と NumSegments
のすべてのインスタンスを削除し、connectingPoses
のすべてのインスタンスを interpolate
に置き換えます。次の表は、connectingPoses
の典型的な用途と、代わりに interpolate
を使用するためのコードの更新方法を示しています。ここで、path
は、pathPlannerRRT
によって返される driving.Path
オブジェクトです。
非推奨の使用方法 | 推奨される置き換え |
---|---|
poses = connectingPoses(path); | poses = interpolate(path); |
segID = 1; posesSegment = connectingPoses(path,segID); |
step = 0.1; samples = 0 : step : path.PathSegments(1).Length; segmentPoses = interpolate(path,samples); |
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)