ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Trac-IK and KDL are both numerical solvers. They will not have the ability to produce source code for IK or FK. IKFast does exactly that. If you properly run IKFast on a given robot, it can auto-generate code for FK/IK. Check out the MoveIt! tutorial on how to do this for a good resource. Note, if you just want the standalone source code you can even skip the Create Plugin step.

Note, the code that is generated through this process is not very human-readable.

Trac-IK and KDL are both numerical solvers. They will not have the ability to produce source code for IK or FK. IKFast does exactly that. If you properly run IKFast on a given robot, it can auto-generate code for FK/IK. Check out the MoveIt! tutorial on how to do this for a good resource. Note, if you just want the standalone source code you can even skip the Create Plugin step.

Note, the code that is generated through this process is not very human-readable.

EDIT Here's an example IKFast-generated source file for Baxter's right arm: https://github.com/ros-planning/moveit_robots/blob/kinetic-devel/baxter/baxter_ikfast_right_arm_plugin/src/baxter_right_arm_ikfast_solver.cpp You'll see what I mean about it not being very human-readable. However, note that there are functions defined such as void ComputeFk(const IkReal* j, IkReal* eetrans, IkReal* eerot) and bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, IkSolutionListBase<IkReal>& solutions)

Trac-IK and KDL are both numerical solvers. They will not have the ability to produce source code for IK or FK. IKFast does exactly that. If you properly run IKFast on a given robot, it can auto-generate code for FK/IK. Check out the MoveIt! tutorial on how to do this for a good resource. Note, if you just want the standalone source code you can even skip the Create Plugin step.

Note, the code that is generated through this process is not very human-readable.

EDIT Here's an example IKFast-generated source file for Baxter's right arm: https://github.com/ros-planning/moveit_robots/blob/kinetic-devel/baxter/baxter_ikfast_right_arm_plugin/src/baxter_right_arm_ikfast_solver.cpp You'll see what I mean about it not being very human-readable. However, note that there are functions defined such as void ComputeFk(const IkReal* j, IkReal* eetrans, IkReal* eerot) and bool ComputeIk(const IkReal* eetrans, const IkReal* eerot, const IkReal* pfree, IkSolutionListBase<IkReal>& solutions)