pick_ik is an inverse kinematics (IK) solver compatible with MoveIt 2.
Important
pick_ik is deprecated by PickNik. Its performance did not meet our requirements, so PickNik no longer uses the solver or plans further feature development. We will provide only basic maintenance for existing users.
We are looking to transfer ownership to the open source community. If you are interested in owning and maintaining pick_ik, please contact us by opening an issue.
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: