Skip to content
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

Ufactory Lite6 gripper model #89

Merged
merged 7 commits into from
Sep 9, 2024

Conversation

eufrizz
Copy link
Contributor

@eufrizz eufrizz commented Aug 15, 2024

I modelled the gripper for the Ufactory Lite6 for my own use so I thought I'd share it in case it's useful for anyone else! (Although I suspect it doesn't have a large number of users, and the gripper itself is somewhat rubbish 😅)

The stl files were created in Onshape from the .step files released by the manufacturer. I added two new models, one with the grippers internally rotated, and one with them externally rotated. More detail in the readme.

I wasn't entirely sure how best to model the solver characteristics. The ones chosen are taken from the ACT repo for the Aloha gripper, I couldn't get the default values to work nicely with picking up a box (meshes would intersect), so happy for someone who knows more to improve on this.
Similarly, the friction characteristics are an approximation for the rubberised pads on the gripper fingers.

Copy link
Collaborator

@kevinzakka kevinzakka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First, thank you so much for contributing to Menagerie, we really appreciate it!

I have two major questions before embarking on a review of the actual XML files:

  1. I don't fully understand the difference between the external and internal gripper variants. It looks like only the internal one is needed? Additionally, "internal" vs "external" seems like the wrong word to use and can cause confusion.
  2. This one might require @yuvaltassa 's input, but with the introduction of the new MjSpec API, do we need to have different variants of the arm (arm alone, arm + gripper, gripper alone) or should we switch to a cleaner and more maintainable (standalone arm, standalone gripper) and attach together via via MjSpec?

ufactory_lite6/README.md Show resolved Hide resolved
ufactory_lite6/README.md Outdated Show resolved Hide resolved

Because they are actuated via an air compressor, a single force actuator was used in the model, with an equality constraint to mimic the gearing mechanism that keeps them equidistant from the centre.

The inertial parameters were estimated from Onshape, in lieu of having any more detailed data, by assuming the body is composed from uniformly dense material chosen to give the correct the mass.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: can you simplify this sentence? It's a bit convoluted!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated - better now?

@eufrizz
Copy link
Contributor Author

eufrizz commented Aug 16, 2024

@kevinzakka thanks for the review!

  1. Open to suggestions for better terminology, I think "internal" and "external" made sense to me from the terminology used for shoulders (internal vs external rotation, see attached photo). I've changed it to say internal and external facing in the readme, this is probably clearer than "rotation".
    Because the range of motion of the gripper is so short, the maximum distance between the grippers is only 15mm in the internal configuration so you can only pick up narrow objects. In the external configuration, you get 38mm. Thus it is useful to have both. I added some extra photos in the readme to demonstrate.

  2. I was not aware of mjSpec, this is great, keen to clean up the mess of all these different XMLs! I'll have a play around with it in the next couple days.

EDIT: I'm thinking "narrow" and "wide" might be a good name choice

@yuvaltassa
Copy link
Collaborator

You'll want to look at the new attach element

Copy link
Collaborator

@kevinzakka kevinzakka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @eufrizz, I think we're almost there. Just left a comment to improve the readability of the XML by switching from general to the equivalent position actuator.

ufactory_lite6/README.md Show resolved Hide resolved
ufactory_lite6/lite6_gripper_external.xml Outdated Show resolved Hide resolved
ufactory_lite6/lite6_gripper_internal.xml Outdated Show resolved Hide resolved
@eufrizz
Copy link
Contributor Author

eufrizz commented Sep 1, 2024

@kevinzakka thanks. Updated the original (no gripper) model with position actuators too. I also added names to the collision geoms (helps when checking for self intersections etc.) and updated this in the original model for consistency.

@eufrizz
Copy link
Contributor Author

eufrizz commented Sep 1, 2024

@kevinzakka @yuvaltassa I had a play around with the new MjSpec/attach functionality.
I found that the Python API didn't work - mujoco.MjSpec().from_file("...scene.xml") returns None (and crashes if the wrong filename is provided).
But I got it going with the C++ API (just compiled and visually inspected, didn't test too thoroughly). I found it necessary to attach a prefix and/or suffix at the mis_attachBody step to avoid a compilation error which seemed a little quirky.
I think it makes more sense to do as a separate PR later on perhaps when the functionality has matured a bit/when other models will follow this pattern too.
I'll happily submit a draft PR with the changes and a bit of demo code now though so you can take a look, and merge when you think it's appropriate.

@kevinzakka
Copy link
Collaborator

Awesome job @eufrizz, will try to get this merged next week alongside the other PRs :)

@eufrizz
Copy link
Contributor Author

eufrizz commented Sep 1, 2024

Great! Also, still unsure on the chosen solver parameters for the gripper. Would love a double check on that.

@kevinzakka
Copy link
Collaborator

I’ll tweak during the merge and let you know what we change!

@copybara-service copybara-service bot merged commit 15b7a2b into google-deepmind:main Sep 9, 2024
3 checks passed
@eufrizz eufrizz deleted the ufactory_gripper branch September 10, 2024 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants