この質問は古いですが、私が考えたことはありますが、実際に実装することはできなかったので、とにかく答えます。
拘束のない回転ジョイントは、ボール ジョイントまたは球面ジョイントと呼ばれます。自由度は 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ます。