このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
interpolate
計画された車両パスに沿った姿勢の内挿
構文
説明
例
パスの計画およびその有効性の確認
最適な 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
入力引数
refPath
— 計画された車両パス
driving.Path
オブジェクト
計画した車両パス。driving.Path
オブジェクトとして指定します。
出力引数
poses
— 車両姿勢
[x, y, Θ] のベクトルからなる m 行 3 列の行列
パスに沿った車両姿勢。[x, y, Θ] のベクトルからなる m 行 3 列の行列として返されます。m は返される姿勢の数です。
x と y は、車両の位置をメートルなどのワールド単位で指定します。Θ は車両の向きの角度を度単位で指定します。
poses
には、パスに沿って指定された点にのみ内挿する場合でも、遷移する姿勢が常に含まれます。入力引数 lengths
を指定しない場合、poses
には遷移する姿勢のみが含まれます。
directions
— 運動方向
1s (前進運動) と –1s (後退運動) からなる m 行 1 列のベクトル
車両姿勢の運動方向。1s (前進運動) と –1s (後退運動) からなる m 行 1 列のベクトルとして返されます。m は返される姿勢の数です。directions
の各要素は poses
の行に対応します。
詳細
遷移する姿勢
パスは、運動 (左折、直進、右折など) の組み合わせからなる複数のセグメントで構成されます。"遷移する姿勢" とは、ある運動の終了と別の運動の開始に対応する車両姿勢です。これらは、車両の方向または向きの変化に対応するパスに沿った点を表します。関数 interpolate
は、パスに沿って指定された点にのみ姿勢を内挿する場合でも、遷移する姿勢を常に返します。
遷移する姿勢間のパスの長さは、パス セグメントの MotionLengths
プロパティで指定されます。たとえば、次のパスを考えます。これは単一の Dubins パス セグメントで構成される driving.Path
オブジェクトです。このセグメントは、セグメントの MotionLengths
プロパティと MotionTypes
プロパティで記述されるように、3 つの運動で構成されています。
関数 interpolate
は、次の遷移する姿勢を次の順序で内挿します。
車両の初期姿勢
StartPose
。車両が最大ステアリング角度で 4.39 メートル左折 (
"L"
) した後の姿勢。車両が 6.32 メートル直進 (
"S"
) した後の姿勢。車両が最大ステアリング角度で 4.39 メートル右折 (
"R"
) した後の姿勢。これはパス全体の最後の姿勢であるため、この姿勢はゴール姿勢でもあります。
プロットは、これらの遷移する姿勢を示しており、それらは [x, y, Θ] のベクトルです。x と y は、車両の位置をメートルなどのワールド単位で指定します。Θ は車両の向きの角度を度単位で指定します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2018b で導入
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)