pick_ik is an inverse kinematics (IK) solver compatible with MoveIt 2.
The solver is a reimplementation of bio_ik, which combines:
- A local optimizer which solves inverse kinematics via gradient descent
 - A global optimizer based on evolutionary algorithms
 
Critically, pick_ik allows you to specify custom cost functions as discussed in  this paper, so you can prioritize additional objectives than simply solving inverse kinematics 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.
If you are familiar with bio_ik, the functionality in this package includes:
- Reimplementation of the memetic solver (equivalent to 
bio1andbio2_memeticsolvers) - Reimplementation of the numeric gradient descent solvers (equivalent to 
gd,gd_r, andgd_csolvers) - Fully configurable number of threads if using the global solver
 - Cost functions on joint displacement, joint centering, and avoiding joint limits
 
For more details on the implementation, take a look at the paper or the full thesis.
To get started using pick_ik, refer to the following README files: