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

Meaning of stopped_velocity_tolerance of joint_trajectory_controller

asked 2022-01-05 21:45:14 -0500

mug gravatar image

I saw the description (Velocity to be considered approximately equal to zero.) of the stopped_velocity_tolerance parameter on ROS wiki, but I don't quite understand the specific role of this parameter from this description. Is there any further explanation?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2022-01-05 22:17:10 -0500

updated 2022-01-06 11:16:51 -0500

It's just a tolerance on the velocity value to be considered as "stopped".

For ex: ideally the robot (or a joint) would be considered "stopped" when the velocity reaches 0. But in practice there might be some small roll/slip or delays in the motor circuit. For this purpose, any velocity within this tolerance would be considered as 0 and the robot would be considered to be stopped. The default value is 0.01 which means that the robot would be considered to be "stopped" when its velocity is equal to or less than 0.01 rad/s.

You could set this to be 0, but depending upon your application, may want to put some small actual value in there.

EDIT: changed m/s to rad/s for robot arm joints.

edit flag offensive delete link more

Comments

When I set it to 0.01, ros controllers will have this warning message: Controller'/th6/arm_controller' failed with error GOAL_TOLERANCE_VIOLATED. But if it is set to 0, ros controllers will prompt SUCCESS. This result seems to be inconsistent with its definition.

mug gravatar image mug  ( 2022-01-06 00:20:02 -0500 )edit

I don't have much experience with this. Maybe answer #272328 will help.

Akhil Kurup gravatar image Akhil Kurup  ( 2022-01-06 00:27:04 -0500 )edit

@Akhil Kurup Thanks.

mug gravatar image mug  ( 2022-01-06 01:10:14 -0500 )edit
1

@mug on a real robot arm, the joint rotation velocity is being measured by a sensor. The joint motor has to fight gravity, so the value is noisy and usually non-zero, even if your eyes tell you the joint is "not moving". This parameter sets the max. velocity for moveit to consider the joint to be "not moving". If you set the value too high, moveit will give up too early as the arm movement slows down as it approaches the specified goal.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-01-06 07:39:44 -0500 )edit
2

@Akhil Kurup We are discussing joint velocity, so the units in your answer should be radians/sec.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-01-06 08:04:07 -0500 )edit

@Mike Scheutzow that makes sense! Thanks

Akhil Kurup gravatar image Akhil Kurup  ( 2022-01-06 11:14:30 -0500 )edit

@Mike Scheutzow Thanks for your reply, sir. I have now understood the meaning of this parameter. But I now encounter a situation where I am using position_controllers/JointTrajectoryController to control the robot model in Gazebo. When the robot model reaches the goal position, the controller will issue such a warning: Controller'/th6/arm_controller' failed with error GOAL_TOLERANCE_VIOLATED. At this time, I set the parameter to 0.01. But when I set the parameter to 0, I will get a success prompt from the controller. The above situation does not seem to be consistent with the definition of this parameter.

mug gravatar image mug  ( 2022-01-07 02:39:05 -0500 )edit

@mug look at the messages on your /joint_states topic when the arm is not moving. Do you see the velocity values jumping around, or are they exactly 0? If the values are 0, I've already explained to you what is happening.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-01-07 06:26:08 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2022-01-05 21:45:14 -0500

Seen: 301 times

Last updated: Jan 06 '22