Self-Collision avoiding parent links or links higher in the kinematic chain

Is it possible to enable self-collision without considering parent links or specific links of a same asset/actor?.

The create actor appears to have a parameters for doing this but its is unclear and undocumented how to use this:

create_actor(self: Gym, env: Env, asset: Asset, pose: Transform, name: str = None, group: int = - 1, filter: int = - 1, segmentationId: int = 0) → int

    Creates an Actor from an Asset


            param1 (Env) – Environment Handle.

            param2 (Asset) – Asset Handle

            param3 (isaacgym.gymapi.Transform) – transform transform of where the actor will be initially placed

            param4 (str) – name of the actor

            param5 (int) – collision group that actor will be part of. The actor will not collide with anything outside of the same collisionGroup

            param6 (int) – bitwise filter for elements in the same collisionGroup to mask off collision

            param7 (int) – segmentation ID used in segmentation camera sensors

The bitwise filter for elements in the same collisionGroup to mask off collision seems to possible enable this behavior. What is the structure of this bitwise filter? What order of rigid_bodies does it follow. Can you provide an example?

Hi @daniels.ordonez ,

These parameters are meant to be applied on a per-actor basis, it likely won’t be helpful in your case for trying to mask off collision between bodies of the same actor. If your asset is in MJCF format, you could check out the Creating Actors section in the docs under programming/assets. It will allow you to specify in your asset file which bodies could collide with each other. We utilize this function in our Shadow Hand example.

The answer is that it’s impossible, right?

1 Like

It may be possible with the MJCF asset through defining specific <pair> sets under the <contact> tag. You can take a look at the Shadow Hand asset as an example - under assets/mjcf/open_ai_assets/hand/shared.xml

I have tried contact/pair in .mjcf but this does not work.

in order to enable self-collision,collision_filter in gym.create_actor() need to be set as -1 (predefined collision) or 0(enable collisions between all shapes in the actor)

@kellyg I have tested the MJCF file, but it seems that all the meshes became capsules and boxes, it is very strange.

Do you know any update plan for that?

  1. support the specific bodies collision filter of same actor or 2. enable loading MJCF with complex meshes?