UDRF Import Velocity and Effort Limits

Does the URDF Importer in Isaac Sim support velocity and force/torque limits for joints? I have a .urdf file in which the joints have a specified velocity and torque limit in addition to the rotation limits such as the one given below:

  <joint name="elbow_flex_joint" type="revolute">
    <origin rpy="0 0 0" xyz="0.133 0 0" />
    <parent link="upperarm_roll_link" />
    <child link="elbow_flex_link" />
    <axis xyz="0 1 0" />
    <dynamics damping="1.0" />
    <limit effort="66.18" lower="-2.251" upper="2.251" velocity="1.521" />
  </joint>

The rotation limits (lower and upper) seem to be imported properly, however the effort and velocity limits seem to be ignored. The closest thing to an implementation that I have found for this URDF import functionality was in parse_urdf() in omni.warp-0.6.1+cp37/warp/sim/import_urdf.py.

        lower = -1.e+3
        upper = 1.e+3
        damping = 0.0

        # limits
        if joint.limit:
            if joint.limit.lower != None:
                lower = joint.limit.lower
            if joint.limit.upper != None:
                upper = joint.limit.upper

        # damping
        if joint.dynamics:
            if joint.dynamics.damping:
                damping = joint.dynamics.damping

This imports the physical limits but ignores the velocity and effort limits, similar to what I described earlier. This seems like it would be a relatively simple change if this is the correct area, but I was unsure if there would be other necessary changes or if this functionality is implemented somewhere else. Does anyone know more about this topic?

1 Like

this a good question , it seems that no teacher’s answer given,if u know the answer later , can u email me ? thanks :
leo.zhang@vanderlande.com

Hi @comeauc - Have you had a chance to review “robot properties” section in this document? : URDF Importer — Omniverse Robotics documentation

Hi @rthaker,

I have seen that section but did not see an automatic interface for importing directly from the URDF. I was able to accomplish the desired limits by using the advice that is given at the end of that section to use the Command Tool to replicate changes made in the UI in code. I now see that this may be accomplished in a cleaner way via GetMaxForceAttr(), however, this still seems to be highly manual in pulling the limits from the URDF and setting the corresponding joint parameters. This seems like it would be greatly expedited if it was imported via the URDF in which it is specified. Would it be possible to update the URDF importer to support this functionality?

Hello, yes - those parameters are imported directly in the URDF Importer. you can see them by selecting the joint in the stage, and then at the properties, effort limit will be at drive / Max Force.
image

and velocity limit will be under “Raw USD Properties / Maximum Joint Velocities” (“physxJoint:MaxJointVelocity” - part of PhysxJointAPI)
image

I missed that these parameters were being considered because I did not realize that there was automatic scaling/unit conversion happening. The URDF importer seems to assume that the URDF velocities are specified in rad/s (which they are in my use case) and converts them to the degrees/s that Isaac Sim expects. I am somewhat confused however by the conversion applied to go from the URDF’s effort specification to the max force as the importer seems to scale the effort by a factor of exactly 60 to get the Max Force parameter in Isaac Sim. What is the reason for this scale factor? I believe that the URDF that I have specifies the efforts in kg*m/s^2 (or N) for linear joints and in kg*m^2/s^2 (or N*m) for revolute joints.

that was the expected behavior in earlier versions of the importer, as the physics model was not accounting for the time stepping and we defaulted to 60 timesteps per second. In newer versions this was removed and the value is imported in SI (with the exception of limits that are converted to degrees instead of radians).

I am currently using Isaac Sim 2022.2.0 with URDF Importer v0.5.4. Is this version sufficient or would it be necessary to update to Isaac Sim 2022.2.1?

no - that should come post version 0.5.8, which was published in 2022.2.1

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