   Inverse kinematics for 2-DOF socket joint:
  Hi all, I have a little math problem:I have a skeleton containing various types of joints, one of which is a special 2-DOF socket joint. The skeleton has an end effector (usually a gun) and I want to point it to a (moving) target.For reasonable performance, each frame, I update each joint in turn and localy as a simple approximation to Inverse Kinematics with jacobian inverse matrices.The joint rotation is represented by an axis and angle or a quaternion, quaternion is probably the simplest.2-DOF joint structure:The joint rotation axis are constrained to the local XY plane of the joint.The joint has a maximum rotation angle.The joint has a maximum rotation speed.At any point in time, I am given:The previous end-effector position and orientation.The previous joint position and orientation.The current target position.Now I need a fast method to update the rotation of the joint to point the end effector somewhat better to the target, within the given joint constrains. I probably need some sort of local search iteration, but I don't know how to combine this with the given constraints.Thanks a lot,Dietger   
  Anyone? Some ideas/references on inverse kinematics with quaternions would also be appreciated, I didn't manage to find much on the web.Thanks   ;  For 2-link limbs, there are direct analytical solutions you might want to consider:http://mrl.nyu.edu/~perlin/gdc/ik/http://mrl.nyu.edu/~perlin/gdc/ik/ikTest.java.htmlraigan   ;  So you have this all working for the other joints? And you're just confused how to apply your method to the ball joint? It seems like you know a fair bit about the process to get stuck at this point.. wouldn't you just treat each of the ball joint axes as another single axis for jacobian calculation?I'm not really sure.   ;  Thanks for your reply's,I did not use the inverse Jacobian method directly, but used geometric methods for the 1-DOF joints (revolute and prismatic) as these methods are much more familiar to me. Solving the quaternion for 3-DOF boll joints is also easy as the constraints are on the rotation angle only and not on the axis.In the case of a 2-DOF joint, I have constraints on the axis and the angle, and I couldn't come up with a simple geometric method to solve this. I tried to write the Jacobian for the 2-DOF ball joint, but that became a horrible clutter of trigonometric functions. So either I did something wrong, or this is not the way to go.If I rewrite the joint as two composed rotation axis, the constraints for the angles on these axis become rather complex (according to my calculations) and I have to apply the 1-DOF method twice, therefore I hoped for a simpler method that could be applied to the 2-DOF joint immediately.   ;  I dont see any issue with applying the 1dof method twice. I'd recommend you experiment with the jacobian method on the 1DOFs before you attempt to use it for the 2DOFs.Also I think it'd be fairly trivial to geometrically decompose the target vector into polar coordinates for your 2DOF joint, since it sounds like you're doing this on a per joint basis.As far as I understand, the jacobian solution would take the entire arm into consideration. You'd need to formulate some kind of derivative finder for the whole arm, so yea, quite a bit of geometry. But no more than any geometric/analytic solution.So to me it sounds like you're doing cyclic descent, and that the 2DOF is simply polar coordinates.   