Ask Your Question


asked 2019-01-07 13:49:58 -0600

mvish7 gravatar image

updated 2019-01-09 04:52:20 -0600

I'm observing the trajectory planned by Moveit! in Gazebo for PANDA arm. Sometime i get error saying:

Controller panda/panda_arm_controller failed with error code GOAL_TOLERANCE_VIOLATED

Controller handle panda/panda_arm_controller reports status ABORTED

Here is my ros_controllers.yaml file

I'm reading about JointTrajectoryController from here, from this source i also have following question:

What is upper limit of constraints/goal_time and constraints/goal??

I have understood that the error is with ros_control side and moveit being client the error is being reported to it by gazebo + ros_control side.

Any kind of help is appreciated.

edit retag flag offensive close merge delete


Did you find a solution to GOAL_TOLERANCE_VIOLATED ?

Deastan gravatar imageDeastan ( 2019-07-08 07:08:12 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2019-10-16 00:32:03 -0600

tanyouliang gravatar image

updated 2019-10-16 00:40:06 -0600

The problem arises because, when movegroup is sending out the JointTrajectoryAction/goal msg to a foo arm_controller, the 'tolerance' msg fields are empty, resulting a GOAL_TOLREANCE_VIOLATED.

I also tried to spent some time on solving this issue, after digging into joint_trajectory_controller in ros_controller, i found that the param is being retrieved here: tolerances.h.

To solve this, changes need to be made on the controller.yaml for gazebo controller. For my case, I am using a velocity_controllers here, thus changing stopped_velocity_tolerance from a number to 0 solved this.

  type: velocity_controllers/JointTrajectoryController
     - shoulder_pan_joint
     - shoulder_lift_joint
     - elbow_joint
     - wrist_1_joint
     - wrist_2_joint
     - wrist_3_joint
      goal_time: 0.6
      # vel_tolerance is 0 for due to the movegroup/follow_joint_trajectory/goal tolerance is empty
      stopped_velocity_tolerance: 0
      shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
      shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}
      elbow_joint: {trajectory: 0.1, goal: 0.1}
      wrist_1_joint: {trajectory: 0.1, goal: 0.1}
      wrist_2_joint: {trajectory: 0.1, goal: 0.1}
      wrist_3_joint: {trajectory: 0.1, goal: 0.1}
      shoulder_pan_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
      shoulder_lift_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
      elbow_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
      wrist_1_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
      wrist_2_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
      wrist_3_joint: {p: 100, d: 1, i: 1, i_clamp: 1}
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 10

After this change, i managed to receive SUCCESS. Similarly, If you are using a position_controllers, I believe the goal for each joint need to be changed to 0. Hopefully this works for you.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2019-01-07 13:49:58 -0600

Seen: 223 times

Last updated: Oct 16