-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add feedback to ExecuteTaskSolution action #652
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to address to issues:
- adding feedback during ExecuteTaskSolution action
Why don't you simply augment the callback function as in Provide feedback during ExecuteTaskSolution action #653? - Check
allowed_start_tolerance
for every sub trajectory.
Why do you think this is necessary? The whole set of subtrajectories is executed in one go. Hence it should be sufficient to validate the starting point only.
I was thinking that
The second approach could be feasible using
Correct me if I'm wrong, but if the controller does not actuate a joint correctly, it could start another subtrajectory that violates the |
These fields were intended for inspection in rviz only. What is their use during execution?
That's a good idea in general and I have implemented this in MoveIt1 for a private project.
If so, the controller should report a failure. |
So a different process/node can subscribe to the feedback and track the progress of the execution. We're particularly interested in accessing the cost of the subtrajectory, which, in most cases, represents the time required to complete it. Another way to achieve this—without passing all those new values into the message—could be to add a service to Is there a more reliable way to determine the time a subtrajectory will take to complete? For example, in cases where the stage uses a distance-based cost. If so, I think it might also be good for users to add something like
Gotcha! No issue here then 😄 |
A process interested in solution details could simply listen to the
The cost is not meant to relate to time! The execution time of each |
As far as I know, this is not possible. The action goal is handled via a request/response which is a one-to-one communication between the client and the server (although some progress is being made to enable introspection). The only topics exposed by the action server are However, even if introspection were possible, the monitoring process would need to be listening from the beginning before the request is made, right? It wouldn't be possible to have the monitoring process jump in while the execution is running. Having a service that provides the current
That's right. I thought that
What do you think about using
I think it would be useful for most users. |
That's a reasonable addition. |
Closed via #653. |
Addresses #475: adding feedback to the ExecuteTaskSolution action.
Instead of executing all subtrajectories at once, we now execute them sequentially and publish feedback after each subtrajectory finished successfully. Actually, this approach revealed a hidden issue: the
allowed_start_tolerance
was only checked once at the beginning of the task, not for each subtrajectory. I discovered this after one of our joints started to fail in one stage (this is one of the main reasons of this port moveit/moveit2#3309).I'm aware that calling
executeAndMonitor
for each subtrajectory may have performance implications. However, as far as I could test it in our setup, I didn't see much difference. What do you think? Maybe in case it matters we should add a parameter to allow/disallow publishing feedback. However, in that case, we should address the issue previously mentioned.Since these changes are highly ROS-dependent and I’ve only tested them in ROS2, this PR targets the
ros2
branch. Once approved, it should be straightforward to submit another PR for backporting the changes tomain
for ROS1.