MoveIt Python Library - Add Gripper Interface#2157
MoveIt Python Library - Add Gripper Interface#2157peterdavidfagan wants to merge 1 commit intomoveit:mainfrom
Conversation
|
@AndrejOrsula your feedback and thoughts on features you would like as part of the Gripper interface are much appreciated. Right now it is a basic action client, this works well for many basic applications IMO. |
Codecov ReportPatch and project coverage have no change.
Additional details and impacted files@@ Coverage Diff @@
## main #2157 +/- ##
==========================================
- Coverage 50.50% 50.50% -0.00%
==========================================
Files 387 387
Lines 31816 31816
==========================================
- Hits 16065 16064 -1
- Misses 15751 15752 +1 ☔ View full report in Codecov by Sentry. |
henningkayser
left a comment
There was a problem hiding this comment.
I see that this can be useful for very simple test setups. However, the same action should be supported by MoveIt's gripper controller handle which is supposed to also handle the runtime state of the action call. Would it be too much to ask to bind to the controller interface? And if yes, how can it be improved to streamline usage through the Python bindings?
I bet @MarqRazz also has a few words to say about supporting custom grippers.
|
Hello @peterdavidfagan, Thank you very much for looking into it! Yes, I think having a simple-to-use interface for grippers would be quite beneficial. Besides sending commands, it would be great if the same interface also enabled users to query the current state of the gripper. Here are some primary categories that could be discussed (some of these might be beyond the scope of a gripper interface):
Looking at the current action client in this PR, I am not so sure about the use of a new subprocess for each gripper action. It is probably good enough for most use cases, but I feel like the overhead might be too much for some applications (it could become a bottleneck in some robot learning scenarios). Handling of feedback/results could also become cumbersome. Just my personal opinion, as I have not tested it. What do you think? I tried two separate interfaces in my previous attempt, but both have some limitations: MoveIt2Gripper ( |
|
Thanks @henningkayser for the quick feedback on this.
I can look to scope this development item this weekend. It makes sense to align the Python library with the existing C++ codebase where possible so I'll look into what is required to bind these.
I'll need to take a look at the existing code to answer this properly. Happy to start looking into it this weekend. |
|
Thanks @AndrejOrsula for the detailed response and valuable points.
Makes sense.
For this point, my current thought process was that the
Thanks for this I agree, this should be supported.
I planned to make the open/close gripper methods, members of the GripperClient class for convenience. It would be nice to have the other methods you listed as well.
Thanks for sharing these.
In this case of the new Python library, I believe there are performance benefits to leveraging the C++ library directly. |
That makes sense @peterdavidfagan, and it is certainly usable that way. Both |
|
I'm skeptical about the decision to use |
Hi @sea-bass, This was an quick but unclean solution for interfacing with available action for the This approach is far from perfect, I wanted to open the discussion around this and then consider adding it to my task list to develop the gripper interface for the Python library. |
|
I agree with @sea-bass using the CLI here does not make sense. Why would the user not just make an action client? Its only a few lines of code and then they have lots more flexibility to support the features like @AndrejOrsula requested. If you want to make a |
Thanks @MarqRazz, and this makes sense. If I do write such a class in ros2_controllers/gripper_controllers, for the Python bindings do you think it makes sense to start writing a separate Python binding library for ROS 2 control? I think it may be useful for replicating some of the functionalities of libraries like https://facebookresearch.github.io/fairo/polymetis/overview.html as it is closer to the control stack. |
|
Yes I think Python bindings to the If you are considering adding these features I would highly recommend attending one of the ros2_control maintainer meetings and running it past them before you get started. |
|
Thanks @MarqRazz, I'll look to follow up with this approach once I have finished the work I am doing on grasp pose estimation. |
|
We already have a gripper action with this controller plugin coming from here. If it's really about the same action interface, we should not duplicate functionality, but rather think about making it easier to access it. (I know that MoveIt's controller interfaces are not ideal, but this would be a good opportunity to think about how to improve them) |
|
This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete. |
|
This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete. |
|
This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2157 +/- ##
==========================================
- Coverage 50.50% 50.50% -0.00%
==========================================
Files 387 387
Lines 31816 31816
==========================================
- Hits 16065 16064 -1
- Misses 15751 15752 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete. |
|
This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete. |
Description
This pull request looks to begin addressing a request for a Gripper Interface made by @AndrejOrsula in the following thread. Ideally the API should look as follows with the gripper client added to the library:
Features
GripperCommandChecklist