メインコンテンツ

reedsSheppConnection

Reeds-Shepp パス接続タイプ

説明

reedSheppConnection オブジェクトは、姿勢間を接続する reedsSheppPathSegment オブジェクトを計算するための情報を保持します。Reeds-Shepp パス セグメントは、2 つの姿勢を 5 つの運動のシーケンスとして接続します。運動オプションは、以下のとおりです。

  • 直進

  • 最大ステアリングで左折

  • 最大ステアリングで右折

  • 動きなし

Reeds-Shepp パス セグメントでは、前進と後退の両方の運動がサポートされます。

この接続オブジェクトを使用して、最小回転半径やパス タイプのオプションなど、ビークル運動モデルのパラメーターを定義します。この接続タイプを使用して姿勢間のパス セグメントを生成するには、関数 connect を呼び出します。

作成

説明

reedsConnObj = reedsSheppConnection は、既定のプロパティ値を使用してオブジェクトを作成します。

reedsConnObj = reedsSheppConnection(Name,Value) は、名前と値のペアを使用してプロパティ値を指定します。複数のプロパティを設定するには、名前と値のペアを複数指定します。

プロパティ

すべて展開する

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

データ型: double

無効にするパス タイプ。string スカラーのベクトルまたは文字ベクトルの cell 配列として指定します。

運動タイプ説明
"Sp","Sn"直進 (p = 前進、n = 後退)
"Lp","Ln"

ビークルの最大ステアリング角度で左折 (p = 前進、n = 後退)

"Rp","Rn"

ビークルの最大ステアリング角度で右折 (p = 前進、n = 後退)

"N"運動なし

パス セグメントの運動タイプが 5 つに満たない場合、残りの要素は "N" (運動なし) になります。

使用可能なすべてのパス タイプを確認するには、AllPathTypes プロパティを参照してください。

例: ["LpSnLp","LnSnRpSn","LnSnRpSnLp"]

データ型: cell

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

使用可能なすべてのパス タイプ。文字ベクトルの cell 配列として指定します。このプロパティはすべてのタイプをリストします。特定のタイプを無効にするには、DisabledPathTypes でこのリストからタイプを指定します。

Reeds-Shepp 接続の場合、運動タイプの可能な組み合わせは 44 通りあります。

データ型: cell

前進移動のコスト乗数。正の数値スカラーとして指定します。前進運動にペナルティを設定するには、このプロパティを大きくします。

データ型: double

後退移動のコスト乗数。正の数値スカラーとして指定します。後退運動にペナルティを設定するには、このプロパティを大きくします。

データ型: double

オブジェクト関数

connectConnect poses for given connection type

すべて折りたたむ

reedsSheppConnection オブジェクトを作成します。

reedsConnObj = reedsSheppConnection;

開始姿勢とゴール姿勢を [x y theta] ベクトルとして定義します。

startPose = [0 0 0];
goalPose = [1 1 pi];

姿勢を接続する有効なパス セグメントを計算します。

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);

生成されたパスを表示します。

show(pathSegObj{1})

Figure contains an axes object. The axes object contains 13 objects of type line, scatter. These objects represent Forward Path, Reverse Path, Heading, Start Position, Goal Position.

reedsSheppConnection オブジェクトを作成します。

reedsConnObj = reedsSheppConnection;

開始姿勢とゴール姿勢を [x y theta] ベクトルとして定義します。

startPose = [0 0 0];
goalPose = [1 1 pi];

姿勢を接続する有効なパス セグメントを計算します。

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);

生成されたパスを表示します。旋回の方向に注目してください。

show(pathSegObj{1})

Figure contains an axes object. The axes object contains 13 objects of type line, scatter. These objects represent Forward Path, Reverse Path, Heading, Start Position, Goal Position.

pathSegObj{1}.MotionTypes
ans = 1×5 cell
    {'L'}    {'R'}    {'L'}    {'N'}    {'N'}

pathSegObj{1}.MotionDirections
ans = 1×5

     1    -1     1     1     1

新しい接続オブジェクトでは、この特定の運動シーケンスを無効にします。ロボットが操縦しやすい場合は、MinTurningRadius を小さくします。後退コストを増やして、後退方向が使用される可能性を減らします。姿勢を再度接続すると、異なるパスが得られます。

reedsConnObj = reedsSheppConnection('DisabledPathTypes',{'LpRnLp'});
reedsConnObj.MinTurningRadius = 0.5;
reedsConnObj.ReverseCost = 5;

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);
pathSegObj{1}.MotionTypes
ans = 1×5 cell
    {'L'}    {'S'}    {'L'}    {'N'}    {'N'}

show(pathSegObj{1})
xlim([0 1.5])
ylim([0 1.5])

Figure contains an axes object. The axes object contains 10 objects of type line, scatter. These objects represent Forward Path, Heading, Start Position, Goal Position.

拡張機能

すべて展開する

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

バージョン履歴

R2019b で導入