Hello,
so today we got computeCartesianPath() running stably with eef_step = 0.01, jump_threshold = 10000 for a movement from pre-grasp to grasp pose (about 10 cm distance).
You need to make sure that both your poses are in "/base_link" frame before you add them; that was our initial mistake. Here is some code:
ros::ServiceClient executeKnownTrajectoryServiceClient = nh.serviceClient<moveit_msgs::ExecuteKnownTrajectory>("/execute_kinematic_path"));
moveGroup.setPoseReferenceFrame(targetPose.header.frame_id);
moveGroup.setStartStateToCurrentState();
moveGroup.setPoseTarget(targetPose);
// set waypoints for which to compute path
std::vector<geometry_msgs::Pose> waypoints;
waypoints.push_back(moveGroup.getCurrentPose().pose);
waypoints.push_back(targetPose.pose);
moveit_msgs::ExecuteKnownTrajectory srv;
// compute cartesian path
double ret = moveGroup.computeCartesianPath(waypoints, 0.01, 10000, srv.request.trajectory, false);
if(ret < 0){
// no path could be computed
ROS_ERROR("Unable to compute Cartesian path!");
} else if (ret < 1){
// path started to be computed, but did not finish
ROS_WARN_STREAM("Cartesian path computation finished " << ret * 100 << "% only!");
}
// send trajectory to arm controller
srv.request.wait_for_execution = true;
executeKnownTrajectoryServiceClient.call(srv);
Cheers,
Tobi