"No motion plan found" when using ikfast in moveit
Hi all, I set manually 4 reachable poses of end effector of my 6-dof arm and try to manipulate the arm to reach that pose in 3 ways: (1) kdlKinematicsplugin + ompl ; (2) IKFastKinematicsPlugin + ompl; (3) trac_ik_kinematics_plugin + ompl The only difference of the 3 ways is the "kinematics_solver" in the "kinematics.yaml".
(1) kdl can reach 1 pose; (2) ikfast can reach 1 pose; (3) trac can reach 4 poses.
I am confused because ikfast should behave better than kdlKinematicsplugin.
The error info when kdl or ikfast fails is
error:RRTConnect: Unable to sample any valid states for goal tree
and
Warn: Fail: ABORTED: No motion plan found.
It seems that the ompl stage failed. I can't figure out the reason...
Thanks for any help!
This confuses me, as you cannot make such a broad statement without qualifying it.
IKFast can be faster in certain cases than KDL (and when it is, it's significantly faster).
Unless you qualify what "better" means, your statement is at best vague.
IKFast is generated code, so the IK solver must have been generated for the exact same kinematic tree as you have now configured MoveIt for.
Is that the case? Does your IKFast solver include your EEF link?
This all boils down to
RobotState::setFromIK
failing for your goal with your ikfast plugin.The obvious mistake is that you might have used the wrong ikfast solver, as Gijs already stated.
Assuming this is fine, I've seen similar cases before where everything was configured and generated correctly but IKFast failed to generate solutions for some reachable states. The examples I saw always involved goal orientations where some axis of the goal perfectly aligns with some axis of the base frame of the robot. So the IKFast plugin might generate an incomplete solver, though it should not. If other target orientations do not work as well, your issue is somewhere else though.
Thanks very much for your reply@gvdhoorn and @v4hn. I generated the ikfast plugin for my model following the tutorial. One step I'm not so sure is the setting of links. My links are:
name index parents
base_footprint 0
car-bady 1 base_footprint
L_arm_j1 2 car-bady
L_arm_j2 3 L_arm_j1
L_arm_j3 4 L_arm_j2
L_arm_j4 5 L_arm_j3
L_arm_j5 6 L_arm_j4
L_arm_palm 7 L_arm_j5
L_arm_LAB_L 8 L_arm_palm
L_arm_finger_L 9 L_arm_LAB_L
L_arm_LAB_R 10 L_arm_palm
L_arm_finger_R 11 L_arm_LAB_R
joint12(connect link 1 and link 2), joint 23, joint 34, joint 45, joint56, joint 67 are 6 revolute joints. I set BASE_LINK="1", EEF_LINK="7"
The link 7 is the palm of robot hand, link 8,9 are left finger, link 10,11 are right finger. I alse tried BASE_LINK="0", EEF_LINK="7". didn't work either.. The move group is
<group name="left_arm"> <chain base_link="car-bady" tip_link="L_arm_palm"/> </group> The goal pose doesn't align with the axis of base frame, with the quaternion [0.441074, -0.511706, 0.558466, -0.48138].
I set three more goal poses of the end effector, kdlkinematicplugin can reach 1, ikfast can reach 1, trac_ik_kinematics_plugin can reach all 4 poses...