  This paper presents the open-source robot inverse kinematics (IK) solver
IK-Geo, the fastest general IK solver based on published literature. In this
unifying approach, IK for any 6-DOF all-revolute (6R) manipulator is decomposed
into six canonical geometric subproblems solved by intersecting circles with
other geometric objects. We present new efficient and singularity-robust
solutions to these subproblems using geometric and linear algebra methods.
IK-Geo finds all IK solutions including singular solutions and sometimes
least-squares solutions by solving for subproblem solutions in all cases,
including in a continuous and sometimes least-squares sense when a solution
does not exist. Robots are classified into kinematic families based on cases of
intersecting or parallel joint axes, and robots in the same family use the same
IK algorithm. 6R robots with three intersecting or parallel axes are solved in
closed form, and all solutions are found exactly without iteration. Other 6R
robots are efficiently solved by searching for zeros of an error function of
one or two joint angles. The subproblem and IK solutions are easy to
understand, implement, test, and modify, meaning this method is readily ported
to new languages and environments. We connect our geometric method with less
efficient but more robust polynomial-based methods: rather than using search,
subproblems and error functions may be written in terms of the tangent
half-angle of one joint. This results in a system of multivariate polynomial
equations from which the univariate polynomial with zeros corresponding to IK
solutions is readily derived.
