6

任意の数のリンクのシリアル チェーンに対して逆運動学を実行しようとしています。

次の論文で、ヤコビ行列の計算方法の例を見つけました。

Entry (i, j) = v[j] * (s[i] - p[j])

どこ:

v[j]ジョイント j の回転軸の単位ベクトル

s[i]ジョイント i の位置 (int ワールド座標?)

p[j]ジョイント j の位置 (ワールド座標系?)

この論文によると、これjは自由度が 1 の回転ジョイントの場合に機能します。しかし、私の回転関節には回転に対する制約がありません。次に、どの式が必要ですか?(または、「自由度」という用語を誤解している可能性がありますか?)

4

2 に答える 2

8

この質問は古いですが、私が考えたことはありますが、実際に実装することはできなかったので、とにかく答えます。

拘束のない回転ジョイントは、ボール ジョイントまたは球面ジョイントと呼ばれます。自由度は 3 です。各球面ジョイントをそれぞれ 1 自由度の 3 つの回転 (回転) ジョイントとしてパラメータ化する場合、チュートリアルの式を球面ジョイントにも使用できます。

例:Nを球面ジョイントの数とします。各ジョイントにローカル変換T_local[i]とワールド変換があるとします

T_world[i] = T_local[0] * ... * T_local[i]

R_world[i][k], ,を の回転行列の k 番目の列とk = 0, 1, 2ますT_world[i]3 * N関節軸を次のように定義します。

v[3 * j + 0] = R_world[i][0]
v[3 * j + 1] = R_world[i][1]
v[3 * j + 2] = R_world[i][2]

チュートリアルの式を使用して、Jエンド エフェクタのヤコビアンを計算します。s[i]すべての座標はワールド フレームにあります。

たとえば、疑似逆法を使用dqすると、エンドエフェクタを特定の方向に移動させる変位が得られますdx

の長さはdqです3 * N。定義

R_dq[j] = 
    R_x[dq[3 * j + 0]] *
    R_y[dq[3 * j + 1]] *
    R_z[dq[3 * j + 2]]

j = 0, 1, ..., N-1ここでR_x、は、 、R_y、および軸を中心とR_zした回転の変換行列です。x-y-z

ローカル変換を更新します。

T_local[j] := T_local[j] * R_dq[j]

を上から繰り返して、エンドエフェクタを他の方向に動かしdxます。

于 2010-12-06T09:13:53.220 に答える
3

任意の多くの DOF のコンテキストでのヤコビアンへのより簡単なアプローチを提案します。基本的に、ヤコビアンは、エンド エフェクタ フレームを任意に選択した方向に動かした場合に、各ジョイントがどれだけ動くかを示します。f(θ) を順​​運動学とします。ここで、θ=[θ1,...,θn] はジョイントです。次に、関節変数に関して順運動学を微分することにより、ヤコビアンを取得できます。

J ij = df i /dθ j

はマニピュレータのヤコビアンです。それを反転すると、速度に関して逆運動学が得られます。ただし、エンド エフェクタを任意の方向に少量 Δx だけ動かしたい場合に、各ジョイントをどれだけ動かさなければならないかを知りたい場合 (位置レベルでは、これは事実上線形化になるため): Δθ は依然として有用です。 =J -1 Δx
これがお役に立てば幸いです。

于 2015-06-03T23:15:08.073 に答える