How to grasp precisely when object is a non-convex hull?

Discussion in 'Simulation' started by passerby1023, Jan 25, 2019.

  1. Hi there,

    I am working on grasping project, use a gripper to grasp different shaped objects (which I load from 3D model database),

    but the grasp will become imprecise when the models are non-convex hull(e.g. a bowl) due to the collision detection issue.

    I want to know is there a way to tackle it or should I decompose all objects into convex-hull pieces?

    any advice would be appreciated,

    best regards
    Last edited: Jan 27, 2019
  2. Emo Todorov

    Emo Todorov Administrator Staff Member

    You should represent the non-convex objecs as a union of convex objects. Define multiple convex geoms within the same mujoco body. The HACD library can be used for decomposition.
    Cong Wang likes this.
  3. Thanks for the reply,

    If I understand correctly, there will be multiple <geom> tags in a <body>, and might be hundred for some sophisticated models(depends on HACD library parameters)?

    I was wondering if there's a alternative option to disable/enable the convex hull detection (make a trade-off between speed and precision),

    if no, HACD library way will be fine, thank you!

    best regards
    Last edited: Jan 29, 2019
  4. Emo Todorov

    Emo Todorov Administrator Staff Member

    The collision detector only supports convex geoms. The good thing about HACD is that you can control how many geoms you get. With a smaller number the approximation will be less accurate but faster to simulate.
  5. Hi Professor,
    Is there any tutorials to help getting started with HACD for MuJoCo. I was following the process described by this blog
    I can visualize the decomposition results in Blender but not sure where to proceed from there. Am I supposed to export each convex geom as .stl file seperately and add them in the MuJoCo xml file? If so, how to set the translational offset between each geoms?
    Thanks in advance.