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

How should I handle Joint trajectory action rejected?

asked 2015-04-01 10:02:14 -0600

VictorLamoine gravatar image

updated 2015-04-01 10:10:15 -0600

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.

edit retag flag offensive close merge delete

Comments

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.

gvdhoorn gravatar image gvdhoorn  ( 2015-04-01 15:25:08 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2015-07-07 02:43:13 -0600

VictorLamoine gravatar image

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

The issue is described here.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2015-04-01 10:02:14 -0600

Seen: 1,580 times

Last updated: Jul 07 '15