This is a terrible way to do IK. It is numerically unstable and will give vastly different solutions upon slight changes to the input. Coordinated Cyclic Descent using twist and swing quaternions give much better results:<p><a href="http://www.tandfonline.com/doi/abs/10.1080/2165347X.2013.823362?src=recsys&journalCode=ujgt21" rel="nofollow">http://www.tandfonline.com/doi/abs/10.1080/2165347X.2013.823...</a>
(typo: all instances of "Jacobian Transform" should be replaced by "Jacobian Transpose".)<p>This post only scratches the surface. There are many interesting topics in IK. Joint weights, null space optimization when the robot is overactuated wrt the end effector, self-intersection, singularities, stability when reaching for unreachable points, hybrid position/force control, ...
3-joint inverse kinematics doesn't have a unique solution. You need an additional metric to pick the solution you want. Closest to previous position? Best looking?<p>2-joint inverse kinematics has a simple analytical solution, which can be found in robotics textbooks.
The problem essentially reduces to finding the roots of a system of polynomials. This article suggests solving the system basically with Newtons method (generalized to higher dimensions). But an alternative approach is to use Groebner bases[1] which can give you not just a single (arbitrary) solution (which is what Newtons method produces) but all solutions. SymPy has a good implementation of groebner bases if you want to try it out.<p>[1] <a href="http://www.scholarpedia.org/article/Groebner_basis" rel="nofollow">http://www.scholarpedia.org/article/Groebner_basis</a>
Can anyone with experience comment on the FABRIK algorithm [1] for solving IK? There's an online demo here [2]
Basically, do you think the FABRIK method would be better than the Jacobian methods for a use-case in 3-dimensional space only (e.g. being used on a robotic arm)? There's a project I am interested in joining that involves IK and just want to know a 3rd-party opinion.<p>[1] <a href="http://www.andreasaristidou.com/FABRIK.html" rel="nofollow">http://www.andreasaristidou.com/FABRIK.html</a><p>[2] <a href="https://weffe.github.io/InverseKinematics/" rel="nofollow">https://weffe.github.io/InverseKinematics/</a>
Why are ahead-of-time inverse kinematics so much more popular than feedback control methods? The numerical iteration involved in this method seems a lot more expensive than the iteration used in feedback control, which is also simpler to implement.<p>Does anybody know?