Main Content

stateSpaceDubins

Dubins ビークルの状態空間

説明

stateSpaceDubins オブジェクトには、Dubins 状態空間のパラメーターと状態が格納されます。これは、[x, y, θ] で表される状態ベクトルで構成されます。x と y は直交座標で、θ は向きの角度です。Dubins 状態空間では、状態間の移動に関して回転半径の下限があり (オブジェクトの MinTurningRadius プロパティで指定)、実行可能な最短の曲線を使用して状態が接続されます。

作成

説明

space = stateSpaceDubins は、x、y、および θ に既定の状態の範囲を使用して Dubins 状態空間オブジェクトを作成します。

space = stateSpaceDubins(bounds) は、x、y、および θ の bounds を指定します。範囲内に収まるように範囲外の状態値は切り捨てられます。入力 boundsStateBounds プロパティの値を設定できます。

プロパティ

すべて展開する

状態空間の名前。string として指定します。

このプロパティは読み取り専用です。

状態空間の次元。正の整数として指定します。

状態変数の範囲。3 行 2 列の実数値の行列として指定します。

  • 1 行目は x 状態 (メートル単位) の下限と上限を指定します。

  • 2 行目は y 状態 (メートル単位) の下限と上限を指定します。

  • 3 行目は θ 状態 (ラジアン単位) の下限と上限を指定します。

データ型: double

最小回転半径 (メートル単位)。正のスカラーとして指定します。最小回転半径は、ビークルが一方向に最大ステアリングで旋回できる最小の円の半径です。

オブジェクト関数

copyCreate deep copy of state space object
distanceDistance between two states
enforceStateBoundsReduce state to state bounds
interpolate状態間の内挿
sampleGaussianSample state using Gaussian distribution
sampleUniformSample state using uniform distribution

すべて折りたたむ

Dubins 状態空間を作成し、最小回転半径を 0.2 に設定します。

ss = stateSpaceDubins;
ss.MinTurningRadius = 0.2;

作成された状態空間を使用して、occupancyMap ベースの状態バリデーターを作成します。

sv = validatorOccupancyMap(ss);

例のマップから占有マップを作成し、マップの分解能を 1 メートルあたり 10 セルとして設定します。

load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;

バリデーターの検証距離を設定します。

sv.ValidationDistance = 0.01;

状態空間の範囲を更新してマップ制限と同じにします。

ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];

パス プランナーを作成し、最大接続距離を増やします。

planner = plannerRRT(ss,sv);
planner.MaxConnectionDistance = 0.3;

開始状態とゴール状態を設定します。

start = [0.5,0.5,0];
goal = [2.5,0.2,0];

既定の設定を使用してパスを計画します。

rng(100,'twister'); % repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

結果を可視化します。

show(map);
hold on;
plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion
plot(pthObj.States(:,1), pthObj.States(:,2),'r-','LineWidth',2) % draw path

Figure contains an axes object. The axes object with title Occupancy Grid contains 3 objects of type image, line.

拡張機能

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

バージョン履歴

R2019b で導入