How can I set stiffness and damping with urdf-importer?

Is there a way to set individual stiffness and damping for each joint when importing with the URDF importer?

I tried

<joint><joint_properties>

and

<link><collision><surface><contact><ode><kp>or<kd>

but not work.

Hi @hijimasa - This document should help you with the information that you are looking for: URDF Importer — Omniverse IsaacSim latest documentation

Thank you for reply, @rthaker .
I know how to set in python script. But I would like to set stiffness and damping by URDF description.
URDF Importer config has “default”_drive_strength and “default”_position_drive_damping.
https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_import_urdf.html#importing-urdf-using-python
So is it enable to set individual stiffness and damping for each joint?

I find a way to set damping from URDF description.

    <joint name="sample_joint" type="prismatic">
      <dynamics damping="1000.0" friction="0.0"/>
    </joint>

But I cannot find a way to set stiffness.
How can I set it?

Hi! Just a minor comment - the Joint dynamics Damping and friction are intrinsic parameters of the joint, they are not drive parameters for the joint, as that is not an information that is natively supported by URDF.

We do have the Drive strength add-on information that is applied in the joint drive API, and that changes depending if the joint is position-driven (applies to stiffness), or velocity-drive(sets stiffness to zero, and applies to damping).

Right now in the public importer this logic is partially broken, but it was already fixed for upcoming release - where the joint dynamics damping is used if the joint is position-driven, and the drive strength sets the stiffness, or in the case of a velocity-driven joint it uses the dynamics damping if one is provided, otherwise uses the default drive strength.

With that explained - We also have already implemented the per-joint setting of joint drive type. The values would still need to be post-processed if they don’t match the provided default values during import.

1 Like

Thank you for reply, @rgasoto .

Sorry, I do not understand well.
In the documentation I can confirm, dynamics damping appears to be supported by URDF.
http://wiki.ros.org/urdf/XML/joint
And it is odd that the damping parameters are now being changed by dynamics damping.
Are you saying that this behaviour is unintended?
Can I set the Drive strength add-on information by URDF description?

the joint dynamics is different from Drive parameters.

The URDF importer does handle Joint friction and damping and adds it to the appropriate portion of the USD Schema.

What the URDF description does not support is the drive strength. That is an add-on done in the import config - Right now, the UI only allows one Drive strength applied to all joints.

The parameters can be changed post-importing by selecting the given joints and updating the values per joint.

1 Like

I understand.
To achieve what I want to do, I will need to implement it on my own.

I could add isaac_drive_api tag in URDF to my work.

This is part of diffbot_description.urdf.xacro.

    <joint name="${prefix}_joint" type="continuous">
      <origin xyz="${xyz}" rpy="${radians(-90)} 0 0"/>
      <parent link="${parent}"/>
      <child  link="${prefix}_link"/>
      <axis xyz="0 0 1" />
      <isaac_drive_api stiffness="0" damping="30000"/>
    </joint>

At the moment this seems to be working well.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.