Pick IK: A new IK solver for MoveIt!

We are excited to announce a new inverse kinematics (IK) solver for MoveIt 2 called pick_ik. This solver is a reimplementation of bio_ik, which combines a local optimizer based on gradient descent with a global optimizer based on evolutionary algorithms.

One unique aspect of pick_ik is that it allows you to specify custom cost functions, which enables you to prioritize additional objectives beyond simply solving IK at a specific frame. For example, you can minimize joint displacement from the initial guess, enforce that joints are close to a particular pose, or even pass custom cost functions to the plugin.

pick_ik includes several features from bio_ik, including the memetic solver (equivalent to bio1 and bio2_memetic solvers), numeric gradient descent solvers (equivalent to gd, gd_r, and gd_c solvers), and a configurable number of threads for the global solver. It also includes additional cost functions for joint displacement, joint centering, and avoiding joint limits.

Sebastian Castro and Tyler Weaver did this work at PickNik Robotics, and we are currently using it internally on MoveIt Studio and our customer projects.

The pick_ik code is available on GitHub at GitHub - PickNikRobotics/pick_ik: Inverse Kinematics solver for MoveIt, and we plan to release it into ROS Humble and Rolling soon. In the meantime, users can build it from the source.

We are excited to see how PickIk will be used in the community, and we welcome any feedback or contributions. Try it out, and let us know what you think!