No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
kilted

Package Summary

Version 2.1.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version kilted
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.1.1 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.1.0 (2025-05-20)

  • Switch from ament_target_dependencies to target_link_libraries. (#43)
  • Fix deprecated header warnings (#41)
  • Add a constructor TRAC_IK::TRAC_IK that does not require a rclcpp::Node as argument (#40)
  • Contributors: Kenji Brameld, Roelof

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
rolling

Package Summary

Version 2.2.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version rolling
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.2.0 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.1.0 (2025-05-20)

  • Switch from ament_target_dependencies to target_link_libraries. (#43)
  • Fix deprecated header warnings (#41)
  • Add a constructor TRAC_IK::TRAC_IK that does not require a rclcpp::Node as argument (#40)
  • Contributors: Kenji Brameld, Roelof

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
indigo

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.0.2
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version jazzy
Last Updated 2025-07-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.
% Manip3: runs for full timeout, returns solution that maximizes the smallest singular value of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

2.0.2 (2025-07-28)

  • Add Manipulation3, maximizing smallest singular value (#46)
  • Contributors: Matthijs van der Burgh

2.0.1 (2024-04-12)

  • Add missing geometry_msgs dependency in package.xml
  • Contributors: Kenji Brameld

2.0.0 (2024-03-29)

  • change nanoseconds() to seconds()
  • remove boost from trac_ik_lib and trac_ik_kinematics_plugin
  • Added support for C++17
  • added build_export_depends to tracik_lib for nlopt
  • fix issues caused by shared references and thread safety
  • hotfix for init of solvers using non-thread-safe KDL::Chain
  • Contributors: Ana C. Huaman Quispe, Kenji Brameld, Mike Lanighan, Stephen Hart

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
kinetic

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
melodic

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange

Package symbol

trac_ik_lib package from trac_ik repo

trac_ik trac_ik_examples trac_ik_kinematics_plugin trac_ik_lib trac_ik_python

ROS Distro
noetic

Package Summary

Version 1.6.7
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://bitbucket.org/traclabs/trac_ik.git
VCS Type git
VCS Version master
Last Updated 2025-05-20
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

TRAC-IK is a faster, significantly more reliable drop-in replacement for KDL's pseudoinverse Jacobian solver. The TRAC-IK library has a very similar API to KDL's IK solver calls, except that the user passes a maximum time instead of a maximum number of search iterations. Additionally, TRAC-IK allows for error tolerances to be set independently for each Cartesian dimension (x,y,z,roll,pitch.yaw).

Maintainers

  • TRACLabs Robotics

Authors

  • Patrick Beeson
  • Barrett Ames

The TRAC-IK kinematics solver is built in trac_ik_lib as a .so library (this has been tested using ROS Indigo using Catkin). The headers and shared objects in this package can be linked against by user programs.

###As of v1.6.0, this package is part of the ROS Noetic binaries: sudo apt-get install ros-noetic-trac-ik ###As of v1.4.3, this package is part of the ROS Indigo/Jade binaries: sudo apt-get install ros-jade-trac-ik

This requires the Ubuntu packages for NLOpt Libraries to be installed (the ros-indigo-nlopt packages do not use proper headers). This can be done by running sudo apt-get install libnlopt-dev on the trusty (and later) standard Ubuntu distros. Alternatively, you can run ```rosdep update && rosdep install trac_ik_lib


KDL IK:


```c++
KDL::ChainFkSolverPos_recursive fk_solver(chain);
KDL::ChainIkSolverVel_pinv vik_solver(chain);
KDL::ChainJntToJacSolver jac_solver(chain);

KDL::ChainIkSolverPos_NR_JL ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, fk_solver, vik_solver, int num_iterations, double error);

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints);

% NOTE: CartToJnt succeeded if rc >=0

% NOTE: to use a timeout in seconds (e.g., 0.005), the iterations can be set to 1, and this can be called in a loop with your own timer.

% NOTE: error == 1e-5 is acceptable for most purposes

TRAC-IK:

#include <trac_ik/trac_ik.hpp>

TRAC_IK::TRAC_IK ik_solver(KDL::Chain chain, KDL::JntArray lower_joint_limits, KDL::JntArray upper_joint_limits, double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% OR

TRAC_IK::TRAC_IK ik_solver(string base_link, string tip_link, string URDF_param="/robot_description", double timeout_in_secs=0.005, double error=1e-5, TRAC_IK::SolveType type=TRAC_IK::Speed);  

% NOTE: The last arguments to the constructors are optional.
% The type can be one of the following: 
% Speed: returns very quickly the first solution found
% Distance: runs for the full timeout_in_secs, then returns the solution that minimizes SSE from the seed
% Manip1: runs for full timeout, returns solution that maximizes sqrt(det(J*J^T)) (the product of the singular values of the Jacobian)
% Manip2: runs for full timeout, returns solution that minimizes the ratio of min to max singular values of the Jacobian.

int rc = ik_solver.CartToJnt(KDL::JntArray joint_seed, KDL::Frame desired_end_effector_pose, KDL::JntArray& return_joints, KDL::Twist tolerances);

% NOTE: CartToJnt succeeded if rc >=0	

% NOTE: tolerances on the end effector pose are optional, and if not
% provided, then by default are 0.  If given, the ABS() of the
% values will be used to set tolerances at -tol..0..+tol for each of
% the 6 Cartesian dimensions of the end effector pose.

CHANGELOG

Changelog for package trac_ik_lib

1.6.7 (2025-05-20)

  • drop requirement for obsolete c++ standard to support compiling on newer systems with log4cxx requiring c++17 (#39)
  • added build_export_depends to tracik_lib for nlopt (#33)
  • hotfix for init of solvers using non-thread-safe KDL::Chain (#32)
  • adding pr2_description dependency for trac_ik_examples (#32)
  • updating to use xacro instead of xacro.py (#32)
  • Contributors: Mike Lanighan, Stephen Hart, v4hn

1.6.6 (2021-05-05)

1.6.4 (2021-04-29)

  • added nlopt depends to traciklib cmake
  • Contributors: Stephen Hart

1.6.2 (2021-03-17)

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged trac_ik_lib at Robotics Stack Exchange