Main Content

trapveltraj

台形速度プロファイルを使用した軌跡の生成

説明

[q,qd,qdd,tSamples,pp] = trapveltraj(wayPoints,numSamples) は、台形速度プロファイルに従う指定された一連の入力ウェイポイントを通る軌跡を生成します。この関数は、指定されたサンプル数 numSamples に基づいて、指定された時間サンプル tSamples における位置、速度、および加速度を出力します。また、この関数は、時間に対する多項式軌跡の区分的多項式 pp も返します。

[q,qd,qdd,tSamples,pp] = trapveltraj(wayPoints,numSamples,Name,Value) は、ペアの引数 Name,Value を使用して追加のパラメーターを指定します。

すべて折りたたむ

一連の 2 次元 "xy" ウェイポイントを指定して、関数 trapveltraj を使用します。

wpts = [0 45 15 90 45; 90 45 -45 15 90];

指定したサンプル数 (501) の軌跡を計算します。関数は、台形速度を使用してウェイポイントを得る多項式の軌跡の位置 (q)、速度 (qd)、加速度 (qdd)、時間ベクトル (tvec)、および多項式係数 (pp) を出力します。

[q,qd,qdd,tvec,pp] = trapveltraj(wpts,501);

各ウェイポイント間の "x" 位置および "y" 位置と台形速度プロファイルの軌跡をプロットします。

subplot(2,1,1)
plot(tvec, q)
xlabel('t')
ylabel('Positions')
legend('X','Y')
subplot(2,1,2)
plot(tvec, qd)
xlabel('t')
ylabel('Velocities')
legend('X','Y')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent X, Y. Axes object 2 contains 2 objects of type line. These objects represent X, Y.

2 次元平面における実際の位置も確認できます。q ベクトルとウェイポイントの個別の行を、"x" 位置および "y" 位置としてプロットします。

figure
plot(q(1,:),q(2,:),'-b',wpts(1,:),wpts(2,:),'or')

Figure contains an axes object. The axes object contains 2 objects of type line.

入力引数

すべて折りたたむ

軌跡のウェイポイントを表す点。n 行 p 列の行列として指定します。ここで、n は軌跡の次元で、p はウェイポイントの数です。

例: [1 4 4 3 -2 0; 0 1 2 4 3 1]

データ型: single | double

出力軌跡のサンプル数。正の整数として指定します。

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name引用符で囲みます。

例: 'PeakVelocity',5

メモ

台形速度プロファイルの性質上、次のパラメーターのうち最大で 2 つしか設定できません。

プロファイル セグメントのピーク速度。'PeakVelocity' とスカラー、ベクトル、または行列からなるコンマ区切りのペアとして指定します。このピーク速度は、台形速度プロファイル中に達した最高速度です。

スカラー値は、軌跡およびすべてのウェイポイント間のすべての要素に適用されます。n 要素ベクトルは、すべてのウェイポイント間の軌跡の各要素に適用されます。n 行 (p–1) 列の行列は、各ウェイポイントの軌跡の各要素に適用されます。

データ型: single | double

速度プロファイルの加速度。'Acceleration' とスカラー、ベクトル、または行列からなるコンマ区切りのペアとして指定します。この加速度は、速度 0 から PeakVelocity 値までの等加速度を定義します。

スカラー値は、軌跡およびすべてのウェイポイント間のすべての要素に適用されます。n 要素ベクトルは、すべてのウェイポイント間の軌跡の各要素に適用されます。n 行 (p–1) 列の行列は、各ウェイポイントの軌跡の各要素に適用されます。

データ型: single | double

p–1 個の各軌跡セグメントの持続時間。'EndTime' とスカラー、ベクトル、または行列からなるコンマ区切りのペアとして指定します。

スカラー値は、軌跡およびすべてのウェイポイント間のすべての要素に適用されます。n 要素ベクトルは、すべてのウェイポイント間の軌跡の各要素に適用されます。n 行 (p–1) 列の行列は、各ウェイポイントの軌跡の各要素に適用されます。

データ型: single | double

速度プロファイルの加速フェーズの持続時間。'AccelTime' とスカラー、ベクトル、または行列からなるコンマ区切りのペアとして指定します。

スカラー値は、軌跡およびすべてのウェイポイント間のすべての要素に適用されます。n 要素ベクトルは、すべてのウェイポイント間の軌跡の各要素に適用されます。n 行 (p–1) 列の行列は、各ウェイポイントの軌跡の各要素に適用されます。

データ型: single | double

出力引数

すべて折りたたむ

tSamples で指定された時間サンプルにおける軌跡の位置。n 行 m 列の行列として返されます。ここで、n は軌跡の次元で、m は numSamples と等しくなります。

データ型: single | double

tSamples で指定された時間サンプルにおける軌跡の速度。n 行 m 列の行列として返されます。ここで、n は軌跡の次元で、m は numSamples と等しくなります。

データ型: single | double

tSamples で指定された時間サンプルにおける軌跡の加速度。n 行 m 列の行列として返されます。ここで、n は軌跡の次元で、m は numSamples と等しくなります。

データ型: single | double

軌跡の時間サンプル。m 要素ベクトルとして返されます。出力の位置 q、速度 qd、および加速度 qdd は、これらの時間間隔でサンプリングされます。

例: 0:0.01:10

データ型: single | double

区分的多項式。区分的軌跡の各セクションの多項式を定義する構造体の cell 配列として返されます。軌跡のすべての要素が同じブレークを共有する場合、cell 配列は単一の区分的多項式構造体です。それ以外の場合、cell 配列には、異なる軌跡要素 (次元) それぞれに対応する n 要素が含まれます。各構造体には次のフィールドが含まれます。

  • form: 'pp'.

  • breaks: 区分的軌跡が形を変える時間の p 要素ベクトル。p はウェイポイントの数です。

  • coefs: 多項式の係数の n(p–1) 行 order 列の行列。n(p–1) は、軌跡の次元と pieces の数の積です。n 行の各セットは、各変動軌跡を記述した多項式の係数を定義します。

  • pieces: p–1。ブレーク数から 1 を引いた値。

  • order:多項式の次数 + 1。たとえば、3 次多項式の次数は 4 です。

  • dim: n.制御点の位置の次元。

mkpp を使用して独自の区分的多項式を作成するか、ppval を使用して指定した時間の多項式を評価できます。

区分的多項式。区分的軌跡の各セクションの多項式を定義する構造体として返されます。mkpp を使用して独自の区分的多項式を作成するか、ppval を使用して指定した時間の多項式を評価できます。構造体には次のフィールドが含まれます。

  • form: 'pp'.

  • breaks: 区分的軌跡が形を変える時間の p 要素ベクトル。p はウェイポイントの数です。

  • coefs: 多項式の係数の n(p–1) 行 order 列の行列。n(p–1) は、軌跡の次元と pieces の数の積です。n 行の各セットは、各変動軌跡を記述した多項式の係数を定義します。

  • pieces: p–1。ブレーク数から 1 を引いた値。

  • order:多項式の次数 + 1。たとえば、3 次多項式の次数は 4 です。

  • dim: n.制御点の位置の次元。

参照

[1] Lynch, Kevin M., and Frank C. Park. Modern Robotics: Mechanics, Planning and Control. Cambridge: Cambridge University Press, 2017.

[2] Spong, Mark W., Seth Hutchinson, and M. Vidyasagar. Robot Modeling and Control. John Wiley & Sons, 2006.

拡張機能

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

バージョン履歴

R2019a で導入