"No motion plan found" when using ikfast in moveit

asked 2020-06-26 20:33:19 -0500

xibeisiber gravatar image

updated 2020-06-28 09:01:02 -0500

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!

edit retag flag offensive close merge delete

Comments

I am confused because ikfast should behave better than kdlKinematicsplugin.

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.

I set manually a reachable pose of end effector of my 6-dof arm [..] KDL [..] IKFast

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?

gvdhoorn gravatar image gvdhoorn  ( 2020-06-27 07:38:43 -0500 )edit

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.

v4hn gravatar image v4hn  ( 2020-06-27 08:23:35 -0500 )edit

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"

xibeisiber gravatar image xibeisiber  ( 2020-06-27 20:35:39 -0500 )edit

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].

xibeisiber gravatar image xibeisiber  ( 2020-06-27 20:50:20 -0500 )edit

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...

xibeisiber gravatar image xibeisiber  ( 2020-06-28 03:06:45 -0500 )edit