  Inverse kinematics - finding joint poses that reach a given Cartesian-space
end-effector pose - is a common operation in robotics, since goals and
waypoints are typically defined in Cartesian space, but robots must be
controlled in joint space. However, existing inverse kinematics solvers return
a single solution pose, where systems with more than 6 degrees of freedom
support infinitely many such solutions, which can be useful in the presence of
constraints, pose preferences, or obstacles. We introduce a method that uses a
deep neural network to learn to generate a diverse set of samples from the
solution space of such kinematic chains. The resulting samples can be generated
quickly (2000 solutions in under 10ms) and accurately (to within 10 millimeters
and 2 degrees of an exact solution) and can be rapidly refined by classical
methods if necessary.
