According to Wikipedia the product of two quaternions is defined as:

https://wikimedia.org/api/rest_v1/media/math/render/svg/9de609f926367377de6cf1d7c349effc959b281b

Therefore, method 4 equals to method 1 which computes the vectorial part of QbQa*. ]]>

The Jacobian for the orientation describes the resulting rotational velocities around each axis [xyz] with respect to joint velocities. The rotational velocity of each axis “happens” at the same time. However, Euler angles represent rotations in a sequence of rotations that are non commutative. For example: A rotation around x first, y, and then z [xy’z”] do not represent the same orientation as [zy’x”]. After all, with Euler angles you can’t describe a orientation with a single rotation [mostly], which is needed for the Jacobian.

Therefore, Euler angles are only accurate for differential kinematic control when the errors are small. Maybe you can achieve better results with an actual sequence of rotations? I haven’t tested it yet. ]]>

I have looked at the section about calculating the Jacobian for the orientation in your prior post. However, that was only for a planar arm. How do you calculate it for 3D kinematics? ]]>

EDIT: Actually, I’m still not having luck getting the method you describe working. If you have a working code example that would be great! My implementation works for getting to (0, 0, 0) orientation but not other target orientations.

]]>e = ne*vd – nd*ve -S(vd)*ve

Qd = {nd,vd}

Qe = {ne,ve}

S(v) = Skewmatrix