-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[fem] Allow additional quadrature points for external force integration #22419
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
base: master
Are you sure you want to change the base?
Conversation
1acdf43
to
e4ceb37
Compare
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.
Reviewable status: 1 unresolved discussion, needs platform reviewer assigned, needs at least two assigned reviewers, commits need curation (https://drake.mit.edu/reviewable.html#curated-commits), missing label for release notes (waiting on @xuchenhan-tri)
examples/multibody/deformable/deformable_torus.cc
line 212 at r1 (raw file):
if (use_suction) { auto suction_force = std::make_unique<PointSourceForceField>( plant, plant.GetBodyByName("cup_body"), Vector3d(0, 0, -0.065), 0.01);
Can we make this falloff_distance even smaller in this example, e.g. 3mm is a realistic value, without changing the mesh resolution?
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.
Reviewable status: 2 unresolved discussions, needs platform reviewer assigned, needs at least two assigned reviewers, commits need curation (https://drake.mit.edu/reviewable.html#curated-commits), missing label for release notes (waiting on @xuchenhan-tri)
examples/multibody/deformable/deformable_torus.cc
line 193 at r1 (raw file):
/* Subdivide the element for suction force integration; otherwise, the mesh is too coarse for the support of the suction force field (1cm radius). */ deformable_config.set_element_subdivision(2);
Can we achieve the same thing by adding more quadrature points, without changing the mesh resolution? Just as a demo to show the capability of the new feature.
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.
Reviewable status: 1 unresolved discussion, needs platform reviewer assigned, needs at least two assigned reviewers, commits need curation (https://drake.mit.edu/reviewable.html#curated-commits), missing label for release notes (waiting on @xuchenhan-tri)
examples/multibody/deformable/deformable_torus.cc
line 193 at r1 (raw file):
Previously, chen-tianjian (Tianjian Chen) wrote…
Can we achieve the same thing by adding more quadrature points, without changing the mesh resolution? Just as a demo to show the capability of the new feature.
Sorry maybe I misunderstood. I thought the subdivision is equivalent to having a finer mesh which slows down everything, but that is not true, right?
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.
Reviewable status: 1 unresolved discussion, needs platform reviewer assigned, needs at least two assigned reviewers, commits need curation (https://drake.mit.edu/reviewable.html#curated-commits), missing label for release notes (waiting on @xuchenhan-tri)
examples/multibody/deformable/deformable_torus.cc
line 193 at r1 (raw file):
Previously, chen-tianjian (Tianjian Chen) wrote…
Sorry maybe I misunderstood. I thought the subdivision is equivalent to having a finer mesh which slows down everything, but that is not true, right?
Yes, we are only sampling more quadrature points to integrate the external forces. It definitely adds computation overhead, but it should slow the sim down nearly as much as actually subdividing the mesh. Perhaps this needs a better name?
examples/multibody/deformable/deformable_torus.cc
line 212 at r1 (raw file):
Previously, chen-tianjian (Tianjian Chen) wrote…
Can we make this falloff_distance even smaller in this example, e.g. 3mm is a realistic value, without changing the mesh resolution?
You could definitely play with the parameters in this demo. However, keep a few things in mind.
- The PointSourceForceField is likely not a good model for suction force; it's only a toy model for testing the external force field. In particular, when the manipuland goes "into" the suction cup (due to the suction force and compliant contact), the point source force will push the manipuland out, which is probably not what you want.
- The external forces are integrate explicitly, as the force field becomes closer to a singularity, it may becomes a source of instability.
- Keep in mind that we are taking rather large timesteps here. If the gripper moves 10mm in a timestep, would it still make sense to have such a small fall-off distance? I don't know the answer but something worth thinking about.
@xuchenhan-tri and I have identified a few items which are needed to wrap up the development of this PR, which I will be able to tackle:
It would also be good to hear from @chen-tianjian and @jbinagia that the proposed design meets our needs. My understanding of the current state of things is:
We may want to investigate these questions (I'm looking for feedback here):
|
Thanks for the nice summary. In addition to these, the first thing you probably want to do is to rebase this very old PR on master. Some of the files touched have changed significantly since, so expect to spend some time on resolving the conflicts. |
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.
Reviewable status: 1 unresolved discussion, needs platform reviewer assigned, needs at least two assigned reviewers, commits need curation (https://drake.mit.edu/reviewable.html#curated-commits), missing label for release notes (waiting on @xuchenhan-tri)
multibody/fem/deformable_body_config.h
line 98 at r1 (raw file):
} /** @pre 0 <= element_subdivision <= 4. */
FWIW I initially thought based on the name that element_subdivision
is the factor by which you divide (e.g. a value of 1 means there is no change). I think the documentation below clarifies that it's actually "number of times each element is subdivided" (meaning 0 is no change, rather than 1). But maybe this points to another potential confusion with the name. Perhaps something like set_element_subdivision_count
?
Agreed this would be a good experiment to do |
Closes #21496
This change is