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.
- Is there an unit test example for IK plugin?
- What is the Python/C++ API for accessing joint and world positions of IKfast?
Asked by Yishin on 2016-02-21 01:42:49 UTC
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
Comments