Skip to content
This repository was archived by the owner on Apr 25, 2026. It is now read-only.

Inquiry regarding collision filtering between non-adjacent parent-child links in RaiSim #646

Description

@heesungsung

Hello,

I have a question regarding collision detection between links in an articulated object while using RaiSim.

I am working with an xhand URDF and would like to disable collisions between right_hand_link and right_hand_index_rota_link1.

...
<link name="right_hand_link">
    <inertial>
      <origin xyz="-0.00713969600456059 0.00342243593256283 -0.0584806731230685" rpy="0 0 0" />
      <mass value="0.530025137189824" />
      <inertia ixx="0.000480675299127658" ixy="-5.70774350447044E-06" ixz="-3.94757992682007E-05" iyy="0.000677544052393642" iyz="4.84926198036181E-06" izz="0.000346610500441846" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_link.STL" />
      </geometry>
      <material name="">
        <color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1" />
      </material>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_link_cvx_hull.obj" />
      </geometry>
    </collision>
  </link>

  <link name="right_hand_index_bend_link">
    <inertial>
      <origin xyz="8.08448802515592E-05 0.000675884062860609 0.00420851049166139" rpy="0 0 0" />
      <mass value="0.0677836037392839" />
      <inertia ixx="2.16567127431793E-05" ixy="9.29177767371407E-09" ixz="2.1345292815894E-07" iyy="2.09689353738481E-05" iyz="-6.68676922531782E-07" izz="3.39593434952634E-06" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_index_bend_link.STL" />
      </geometry>
      <material name="">
        <color rgba="0.43921568627451 0.43921568627451 0.43921568627451 1" />
      </material>
    </visual>
    <!-- <collision>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_index_bend_link_cvx_hull.obj" />
      </geometry>
    </collision> -->
  </link>

  <joint name="right_hand_index_bend_joint" type="revolute">
    <origin xyz="0.0265 0.0065 -0.0899" rpy="0 0 0" />
    <parent link="right_hand_link" />
    <child link="right_hand_index_bend_link" />
    <axis xyz="0 1 0" />
    <limit lower="-0.175" upper="0.175" effort="0.4" velocity="14.38" />
    <dynamics damping="1" friction="1" />
  </joint>

  <link name="right_hand_index_rota_link1">
    <inertial>
      <origin xyz="-0.000139769529292743 -0.0008005173406112 -0.0356038554391181" rpy="0 0 0" />
      <mass value="0.0630216027459696" />
      <inertia ixx="2.05187473304044E-05" ixy="7.80203520045171E-09" ixz="4.29054958401514E-07" iyy="1.92422623666435E-05" iyz="2.47028335879796E-07" izz="4.15027364465252E-06" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_index_rota_link1.STL" />
      </geometry>
      <material name="">
        <color rgba="1 1 1 1" />
      </material>
    </visual>
    <!-- <collision>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="../xhand/meshes/right_hand_index_rota_link1_cvx_hull.obj" />
      </geometry>
    </collision> -->
  </link>

  <joint name="right_hand_index_joint1" type="revolute">
    <origin xyz="0 0 -0.0178" rpy="0 0 0" />
    <parent link="right_hand_index_bend_link" />
    <child link="right_hand_index_rota_link1" />
    <axis xyz="1 0 0" />
    <limit lower="0" upper="1.92" effort="1.1" velocity="8.63" />
    <dynamics damping="1" friction="1" />
  </joint>
...

Currently, it seems that collision filtering options are primarily available for direct parent-child pairs. However, I need to prevent collisions between links that are two steps apart (i.e., between a "grandparent" link and a "grandchild" link).

Visual summary:

Image

Red connection is possible to neglect collision, but green connection is impossible (BUT I NEED).

As far as I can tell, this doesn't seem to be adjustable within the current scope of my access. Is there a way to handle this, or could you provide guidance on how to implement such a filter?

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions