Main Content

stateSpaceSE2

SE(2) 状態空間

R2019b 以降

説明

stateSpaceSE2 オブジェクトには、SE(2) 状態空間のパラメーターと状態が格納されます。これは、[x, y, θ] で表される状態ベクトルで構成されます。x と y は直交座標で、θ は向きの角度です。このオブジェクトでは、距離の計算にはユークリッド距離が使用され、状態の並進と回転の計算には線形内挿が使用されます。

作成

説明

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

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

プロパティ

すべて展開する

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

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

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

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

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

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

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

データ型: double

x と y の距離の計算に適用される重み。非負の実数のスカラーとして指定します。

このオブジェクトでは、次のように距離が計算されます。

d=(wxy(dx2+dy2))+wθdθ2

wxy は x 座標と y 座標に適用される重み、wθ は θ 座標に適用される重みです。dx、dy、dθ は、それぞれ x、y、θ の方向の距離です。

データ型: double

θ の距離の計算に適用される重み。非負の実数のスカラーとして指定します。

このオブジェクトでは、次のように距離が計算されます。

d=(wxy(dx2+dy2))+wθdθ2

wxy は x 座標と y 座標に適用される重み、wθ は θ 座標に適用される重みです。dx、dy、dθ は、それぞれ x、y、θ の方向の距離です。

データ型: 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

すべて折りたたむ

SE(2) 状態空間を作成します。

ss = stateSpaceSE2;

作成された状態空間を使用して、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'); % for repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

結果を可視化します。

map.show; 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, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line.

拡張機能

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

バージョン履歴

R2019b で導入