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

OpenRave IKFast For >6 DOF Redundant Manipulator

asked 2012-12-03 11:50:55 -0500

Dave Coleman gravatar image

updated 2012-12-03 12:05:12 -0500

I'm working with a robot arm with 7 degrees of freedom, but as I understand it IKFast only solves up to 6 dof. I can set a free joint using the "--freeindex" argument and am able to make the IKFast plugin for the arm_navigation package, but am now unable to finish any planning requests - I always get "No IK Solution". I do not understand how having an IK solver that cannot plan for the full number of degrees is useful. Am I essentially permanently disabling a joint? Or is arm_navigation/moveit/ompl still able to plan for all dofs somehow? Also, how should the free parameters be chosen, at random?

According to OpenRave:

For chains containing more degrees of freedom (DOF) than the IK type requires, the user can set arbitrary values of a subset of the joints until the number of unknown joints matches the degrees of freedom of the IK type.

I am attempting to use IKFast because I am having issues with KDL being unable to solve for many desired positions as well. I am using these very thorough instructions for setting up IKFast.


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2012-12-03 16:22:02 -0500

dbworth gravatar image

Hi Dave,

Yep those instructions were just recently updated! :-)

You should test the IKFast solution using the command line tool ikfastdemo.cpp or by compiling the inbuilt main() function as mentioned in the OpenRAVE documentation. This was written to check that your IK works before using it in ROS; if you don't get a solution using this test code, then it won't work in ROS either. However it hasn't been tested with 5 or 7 DOF arms, so if you think there's a bug then let me know.

The PR2 and WAM are 7 DOF, so there should be a little bit of documentation around. It seems that you create the IK solution by saying that the shoulder or wrist will be a "free parameter", then you call IK by specifying the known angle/pose of this joint (eg. horizontal) and therefore the solver only has 6 unknowns.

I would suggest that you first test generating an IKFast solution and using the demo program for a known redundant manipulator model eg. the WAM, then this might indicate where the problem is?

Regards, David.

edit flag offensive delete link more

Question Tools



Asked: 2012-12-03 11:50:55 -0500

Seen: 2,255 times

Last updated: Dec 03 '12