Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pick_ik at Robotics Stack Exchange
Package Summary
| Version | 1.1.3 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/PickNikRobotics/pick_ik.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-08-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Tyler Weaver
Authors
- Tyler Weaver
pick_ik
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.
Getting Started
To get started using pick_ik, refer to the following README files:
Changelog for package pick_ik
1.1.3 (2026-08-03)
- Migrate from tl_expected to libexpected-dev system package
(#81)
cpp_polyfills2.0 dropped itstl_expectedsub-package, so thetl_expectedrosdep key no longer resolves on Ubuntu Resolute. Depend onlibexpected-devinstead, which is available on jammy, noble and resolute alike. Required for lyrical and rolling. - Rolling/lyrical: tf2 .hpp header renames + pick_ik include prefix (#82)
- ci: switch from custom-container CI to industrial_ci
(#83) The
pre-baked CI container was frozen at its 2023-12 build and its
weekly rebuild had been failing and then auto-disabled, so every PR
for the past two years was tested against an environment that no
longer exists. industrial_ci installs dependencies fresh per run and
follows each distro's current base OS, matching the buildfarm and
the rest of the MoveIt/PickNik release matrix. Rolling now builds
against
ros2-testingon Resolute, andgitis declared as atest_dependfor the Catch2FetchContentstep. - Contributors: LarsNobleo, Nathan Brooks
1.1.2 (2026-06-26)
- Adds header file for pick_ik_plugin (#79)
- Contributors: Mark Johnson
1.1.1 (2024-11-30)
- Initialize with the best seed instead of initial seed at population wipeout (#77)
- Fix timeout calculation if solution callback fails (#73)
- Remove incorrect override of tip_frames (#68)
- Contributors: Amal Nanavati, Sebastian Castro, Timon Engelke
1.1.0 (2023-12-13)
- Support continuous (unbounded) joints properly (#59)
- Run elite gradient descent in separate threads (#61)
- Contributors: Sebastian Castro
1.0.2 (2023-07-25)
-
- New options to control solution quality and performance
-
Fix ordering of joint limits when loading robot model (#54)
-
Fix use of solution callback (#48)
-
Remove unnecessary preprocessor macro (#40)
- Contributors: Marc Bestmann, Sebastian Castro, Erik Holum
1.0.1 (2023-03-28)
-
Set Werror through CMake presets (#39)
-
Replace lower_bounds with gt_eq (#37)
-
Upgrade with new pkgs to fix issue with ROS
-
Target include subdirectory
-
Update Catch2 version to 3.3.0
-
Fix overriding of package
-
- Fix orientation calculation in cost function and frame tests (#31)
-
- Fix orientation calculation
- Update plugin return values
- Remove redundant (and incorrect) joints bounds check
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_ros | |
| moveit_resources_panda_moveit_config | |
| generate_parameter_library | |
| moveit_core | |
| pluginlib | |
| rclcpp | |
| rsl | |
| tf2 | |
| tf2_geometry_msgs | |
| tf2_kdl |
System Dependencies
| Name |
|---|
| git |
| fmt |
| range-v3 |
| libexpected-dev |