質問
私は、多くのリンクの任意の連続チェーンのために逆運動学をしようとしています。
以下では 論文, 、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
.
の長さ 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
-axes。
ローカル変換を更新します:
T_local[j] := T_local[j] * R_dq[j]
上から繰り返して、エンドエフェクターを他の方向に移動します dx
.
他のヒント
任意の多くのDOFの文脈でヤコビアンへのより簡単なアプローチを提案させてください。基本的に、ヤコビアンは、任意の選択方向にエンドエフェクターフレームを移動すると、各ジョイントがどこまで移動するかを伝えます。 f(θ)を前方の運動学とし、ここで、θ= [θ1、...、θn]がジョイントです。次に、ジョイント変数に関して順方向運動学を区別することにより、ヤコビアンを取得できます。
jIJ = df私/dθj
あなたのマニピュレーターのヤコビアンです。反転すると、速度に関して逆運動学が得られます。ただし、エンドエフェクターを任意の方向に少量のΔxで移動したい場合、各ジョイントがどこまで移動する必要があるかを知りたい場合は、それはまだ有用です(位置レベルでは、これは事実上線形化になるため)Δθ = j-1Δx
これが役立つことを願っています。