GOAL_TOLERANCE_VIOLATED (Gazebo/Moveit)
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 roscontrol side and moveit being client the error is being reported to it by gazebo + roscontrol side.
Any kind of help is appreciated.
Asked by mvish7 on 2019-01-07 14:49:58 UTC
Answers
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.
arm_controller:
type: velocity_controllers/JointTrajectoryController
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
constraints:
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}
gains:
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.
Asked by tanyouliang on 2019-10-16 00:32:03 UTC
Comments
works for me, thanks!
Asked by epsilon11101 on 2020-02-12 13:04:59 UTC
I am using a position_controller, I tried changing the goal
to 0, however I'm still not able to solve it. Any suggestions?
Asked by ThreeForElvenKings on 2020-05-22 01:14:51 UTC
How does reducing the tolerance help? Shouldn't the tolerance be increased?
Asked by thejose on 2020-06-28 20:42:55 UTC
Check my other answer Controller failed with error code PATH_TOLERANCE_VIOLATED.
which is related to a similar problem like GOAL_TOLERANCE_VIOLATED.
Asked by Asan A. on 2023-01-25 10:17:16 UTC
Comments
Did you find a solution to GOAL_TOLERANCE_VIOLATED ?
Asked by Deastan on 2019-07-08 07:08:12 UTC