Robotics StackExchange | Archived questions

How to verify generated IKfast plugin?

From this IKfast tutorial, we may generate IKfast plugin with OpenRave. I would like to learn how to verify the generated IK.

Asked by Yishin on 2016-02-21 01:42:49 UTC

Comments

Answers

  • Is there an unit test example for IK plugin?

OpenRAVE provides a way to test every IKFast plugin, see OpenRAVE Documentation - inversekinematics Module - Testing.

You might need to adapt the instructions in the tutorial you linked though, as IIRC it doesn't store the generated plugins in OpenRAVEs cache.

  • What is the Python/C++ API for accessing joint and world positions of IKfast?

IKFast is actually part of OpenRAVE, we in ROS are just 'users'. For more info, see OpenRAVEs documentation. For OpenRAVE/IKFast specific questions, I'd recommend contacting the OpenRAVE mailing list.

Information on IKFast and its (plugin) API, see OpenRAVE Documentation - ikfast Module - IKFast: The Robot Kinematics Compiler


Edit: you might also want to look at trac_ik, not as fast, but for some kinematic structures it's a better plugin.

Asked by gvdhoorn on 2016-02-21 02:19:40 UTC

Comments

Thanks for your answer regarding OpenRave Testing. For trac_ik, would it be better for generic 6-joints industrial robot manipulators similar to PUMA-560?

Asked by Yishin on 2016-02-22 02:40:51 UTC

Not necessarily. See the related publiction: TRAC-IK: An Open-Source Library for Improved Solving of Generic Inverse Kinematics.

Asked by gvdhoorn on 2016-02-22 03:40:12 UTC

From Create_a_Fast_IK_Solution, it mentioned ikfastdemo.cpp for testing the generated IKfast code. It needs a little bit fix to workaround compile errors.

Here's its usage:

./compute ik 0.794 0 0.415 1 0 0 0
Found 2 ik solutions:
sol0 (free=0): -0.000000000000003, 0.117857486686850, -0.235590643741151, -0.000000000000026, 0.117733157054301, 0.000000000000026, 
sol1 (free=0): -0.000000000000003, 0.117857486686850, -0.235590643741151, 3.141592653589767, -0.117733157054301, -3.141592653589767,

./compute fk 0 0 0 0 0 0
Found fk solution for end frame: 
Translation:  x: 0.794000  y: 0.000000  z: 0.415000  
     Rotation     1.000000   0.000000   0.000000  
       Matrix:    0.000000   1.000000   -0.000000  
                  0.000000   0.000000   1.000000  
 Euler angles: 
       Yaw:   0.000000    (1st: rotation around vertical blue Z-axis in ROS Rviz) 
       Pitch: 0.000000  
       Roll:  -0.000000  
  Quaternion:  1.000000   0.000000   0.000000   0.000000   
               1.000000 + 0.00000i + 0.00000j + 0.00000k   (alternate convention) 

Asked by Yishin on 2016-02-25 18:38:13 UTC

Comments

The euler angles I am getting using this is different from the ones I am getting from arm_move_group->getCurrentPose(arm_move_group->getEndEffectorLink()).pose. In both the case, reference frame is base_link.

Asked by Anubhav Singh on 2021-08-09 00:08:17 UTC