0
$\begingroup$

Rosanswers logo

Sometimes when trying to move my Fanuc robot through ROS-I I get the following error:

[ INFO] [1427900161.223169237]: Ready to take MoveGroup commands for group manipulator.
[ INFO] [1427900161.225343125]: Received request to compute Cartesian path
[ INFO] [1427900161.225658071]: Attempting to follow 1 waypoints for link 'ensenso_tcp' using a step of 0.050000 m and jump threshold 0.000000 (in global reference frame)
[ INFO] [1427900161.227305408]: Computed Cartesian path with 3 points (followed 100.000000% of requested trajectory)
[ INFO] [1427900161.229680116]: Received new trajectory execution service request...
[ERROR] [1427900161.230490467]: Joint trajectory action rejected: waiting for (initial) feedback from controller
[ WARN] [1427900161.230876230]: Controller  failed with error code INVALID_GOAL
[ WARN] [1427900161.230961667]: Controller handle  reports status FAILED
[ INFO] [1427900161.231078520]: Execution completed: FAILED

I understand from this question that the joint_trajectory_action node didn't receive state information from the robot controller (or maybe the information is too old).

How do I handle this error? I want to send the trajectory again until it is executed.

I tried the following with no success:

  move_group_interface::MoveGroup group("manipulator");
  group.setPoseReferenceFrame("/base");
  moveit_msgs::ExecuteKnownTrajectory srv;
  srv.request.wait_for_execution = true;
  ros::ServiceClient executeKnownTrajectoryServiceClient = node.serviceClient<moveit_msgs::ExecuteKnownTrajectory>("/execute_kinematic_path");
  std::vector<geometry_msgs::Pose> way_points_msg (1);

  Eigen::Affine3d initial_pose (Eigen::Affine3d::Identity());
  initial_pose.linear () << 0,  1,  0,
                            1,  0,  0,
                            0,  0, -1;
  initial_pose.translation() << 1.0, 0.3, -0.15;

  tf::poseEigenToMsg (initial_pose, way_points_msg[0]);
  if (group.computeCartesianPath(way_points_msg, 0.05, 0, srv.request.trajectory) < 0.95)
  {
    ROS_ERROR_STREAM("Cannot reach initial pose");
    return -1;
  }

  if (!executeKnownTrajectoryServiceClient.call(srv))
  {
    ROS_ERROR_STREAM("Cannot execute trajectory!");
    return -1;
  }

.call() does not return false when the previous error happens.


Originally posted by VictorLamoine on ROS Answers with karma: 1505 on 2015-04-01

Post score: 1


Original comments

Comment by gvdhoorn on 2015-04-01:
You should only get that error if no state info from the controller has been received (ie: if no joint states have been received). If you are sure TrajectoryFeedback is being published, then please log an issue against industrial_robot_client, as that would appear to be a bug.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

It seems that this pull request has completely solved the issue.

The issue is described here.


Originally posted by VictorLamoine with karma: 1505 on 2015-07-07

This answer was ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.