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

Rework hand collision #189

Closed
wants to merge 2 commits into from

Conversation

rhaschke
Copy link
Contributor

@rhaschke rhaschke commented Nov 2, 2021

This is part of implementing moveit/moveit#2936, i.e. providing two separate links for detailed and coarse hand collision:

  • panda_hand uses the detailed .stl mesh to enable collision checking with the environment
  • panda_hand_coarse uses coarse geometries to mimic self-collision checking of the internal controller

This goes in line with moveit/panda_moveit_config#95.

@rhaschke
Copy link
Contributor Author

rhaschke commented Nov 9, 2021

For environmental collisions, the same problem arises as for the hand: While planning might fail with the coarse self-collision models, the robot might perfectly fit into a narrow passage with the detailed meshes.
Thus, this PR should be extended to apply the same idea to the whole arm, i.e. define detailed meshes for environmental collisions and use separate coarse models for self-collision checking only.
Instead of the name coarse, we should use another suffix, e.g. sc to indicate their use for self-collision checking.

When reworking the URDF, I also suggest merging panda_gazebo.xacro into panda_arm.xacro and hand.xacro. The Gazebo-specific file duplicates much of the structure of the basic URDF and then just adds inertial properties.

My suggestion is to factor out the inertial properties into a yaml dictionary:

link0:
  origin:
    xyz: 0 0 0
    rpy: 0 0 0
  mass:
  inertia:
    xx: 0
    yy: 0
    zz: 0
    xy: 0
    xz: 0
    yz: 0
link 1:
  ...

and use them in xacro essentially like this:

        <inertial>
          <origin rpy="${inertial.origin.rpy}" xyz="${inertial.origin.xyz}" />
          <mass value="${inertial.mass}" />
          <xacro:property name="I" value="${inertial.inertia}" />
          <inertia ixx="${I.xx}" ixy="${I.xy}" ixz="${I.xz}"
                                 iyy="${I.yy}" iyz="${I.yz}"
                                               izz="${I.zz}" />
        </inertial>

So, there is more work todo! As I need to focus on other stuff again, I cannot contribute very much to this PR in the near future. So help is highly welcome. I drafted a basic proof-of-concept of this proposal in #199.

rhaschke added a commit to rhaschke/franka_ros that referenced this pull request Nov 11, 2021
…frankaemika#191 (drop-joint-states-desired) and frankaemika#189 (rework-hand-collision) into develop
@rhaschke
Copy link
Contributor Author

Closing in favour of #199.

@rhaschke rhaschke closed this Nov 12, 2021
@rhaschke rhaschke deleted the rework-hand-collision branch March 14, 2022 15:40
gollth added a commit that referenced this pull request Apr 27, 2022
…evelop

* commit '9e3f5897c1bff5b5cdeebf09f0f14bc04c2a7c8a':
  FIX: Only add <inertial> tags in hand.xacro for gazebo:=true
  ADD: CHANGELOG entry
  FIX: Also pass `gazebo` arg correctly down into `hand.xacro`
  CHANGE: Refactor to common UrdfTestCase
  ADD: URDF tests for franka_description/robots/panda_dual_arm_example.urdf.xacro
  ADD: URDF tests for franka_description/robots/hand.urdf.xacro
  CHANGE: Rename franka_description/test/{urdf -> panda_arm_urdf}.py
  CHANGE: Refactor `<xacro:inertial_props>` to be free of global properties
  FIX: Also include `utils.xacro` in `panda.xacro`
  CHANGE: Move inertial property to `util.xacro`
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.

2 participants