Open livanov93 opened 1 year ago
I could see this being the intended behavior since if you set the goal_time param to zero, that is effectively saying, wait an indefinite amount of time until the goal tolerance for each joint is met before considering the action complete. If you want to set a timeout, then the goal_time param should be set to be nonzero. (that said, I could hear an argument to maybe default the goal_time param to just be some high number value if it's set to zero or not set at all just so that the action returns eventually.)
If moveit is in the loop, then it usually has trajectory_duration_monitoring turned on in the controller manager so that when sending out the action request to the JTC, it can monitor it and abort if it's taking too long. Configs for such are shown here for example https://github.com/ros-planning/moveit_resources/blob/ros2/panda_moveit_config/config/moveit_controllers.yaml#L2
@mechwiz I agree that setting a goal_time
to zero is a particular setting that should be understood as wait an indefinite amount of time. That said this is not specified in the documentation and is the default behavior as specified here. Maybe we should put it in the documentation of JTC that goal_time
to zero is a particular setting.
I know the behavior is result of the parameter set, still it is quite terrifying thing to hear endless execution of the trajectory, even though there is always some mission oriented higher level decision maker above it. Maybe introducing the global max duration time parameter or similar...
Discussion on the WG Meeting on Sep, 20th – we should add a global parameter for this with a default value 0 which means indefinitely. Set this values to the "goal_timeout” filed if not set.
Configuration
humble
Describe the bug When
constraints.goal_time = 0.0
and there isconstraints.<joint_name>.goal
that is different than zero and can't be satisfied we always end up here and the action result is never returned.I am not sure this is desired behavior. What are your impressions?
To Reproduce Steps to reproduce the behavior:
Use https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver and change this part into:
Use https://github.com/UniversalRobots/Universal_Robots_ROS2_Description and change this part to:
which will make sure you never reach goal.
Send action goal and see the result not returning.