質問

私は、多くのリンクの任意の連続チェーンのために逆運動学をしようとしています。

以下では 論文, 、Jacobian Matrixを計算する方法の例を見つけました。

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

どこ:

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

s[i] ジョイントiの位置(int world coords?)ですか

p[j] ジョイントjの位置(世界座標?)ですか

論文には、これが機能すると言っています j 単一の自由度を持つ回転ジョイントです。しかし、私の回転ジョイントには、回転に制約がありません。それからどんな式が欲しいですか? (または、「自由の程度」という用語を誤解している可能性がありますか?)

役に立ちましたか?

解決

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

制約のない回転ジョイントは、ボールジョイントまたは球状ジョイントと呼ばれます。彼らには3度の自由があります。球形の関節のチュートリアルの式を使用することもできます。各球体関節をそれぞれ1つの自由度の3つの回転(革新)ジョイントに関してパラメーター化する場合も使用できます。

例:let N 球状の関節の数になります。各ジョイントに局所的な変換があるとします T_local[i] そして世界の変容

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

させて R_world[i][k], k = 0, 1, 2, 、k-th の回転マトリックスの列 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.

の長さ dq3 * 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-axes。

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

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

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

他のヒント

任意の多くのDOFの文脈でヤコビアンへのより簡単なアプローチを提案させてください。基本的に、ヤコビアンは、任意の選択方向にエンドエフェクターフレームを移動すると、各ジョイントがどこまで移動するかを伝えます。 f(θ)を前方の運動学とし、ここで、θ= [θ1、...、θn]がジョイントです。次に、ジョイント変数に関して順方向運動学を区別することにより、ヤコビアンを取得できます。

jIJ = df/dθj

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top