Force units for angular and linear drive

Hello,

I am trying to figure out the units of force applied in an angular and linear drive for a joint.

I have made a 1m lever arm with a 100g weight at the end to simulate a 1Nm force, I am looking for the minimum force capable of lifting the system.
I did this in 2 of my files and I get different values for each of them

All my files have the same following parameters:
-units in cm (0.01 meter per unit in the root layer)
-magnitude = 981

  • the damping and stiffness of my joint are the same.

In my first file which was an empty file, it takes an angular force of 160 to lift the lever arm.
In the second file, which is my project file, I need an angular force of 10000

For the linear drive i got 1N = 16 (force set to 16 to lift 100g) in both files

What could be the cause and what parameters does the force depend on?
Thanks

How are you applying the force? Through an offset in drive target?

Note that you should disable any damping/friction to get accurate forces for such a measurement. In particular, joint friction for articulations, and rigid-body linear and angular damping.

Then the forces should be torque or force in the units system that you setup, e.g. 0.01 meter per unit and should match.

Are you accounting for the weight of the link that holds the 100g weight?

Thank’s for the reply,
I’m applying the force with both an offset in drive target and an effort with the function articulation.set_joints_efforts() in the python api.
I’m using isaacsim 2022.2.1

My setup looks like this :
testsetup
Joint friction and damping are set to 0.

Root layer property :
rootlayerproperty

My world Xform scale is set to 0.1 to get units in mm (cylinder lenth = 1000 for 1m):

physics scene property:
phycissceneproperty

When I control it throught the usd project I have these settings :
To lift the cube with linear drive :
lineardrive

To lift the sphere with angular drive :
angulardrive

When I control it throught python api I delete the joint drive and use this function :
articulation.set_joint_efforts(joint_effort , joint_indice)

I get same value for both :

  • effort of 10000 to lift a 100g sphere at 1meter(revolute joint), cylinder’s mass is set to 1g
  • effort of 100 to lift a 100g cube ( prismatic joint)

Now if I try in a new empty file, with exactly the same parameters listed above, I need an effort of 160 to lift the sphere (angular drive), and 1.6 to lift the cube (linear drive)

In my previous post i said my linear effort ratio was 1N= 16 in both files:

  • In my emply file, i was previously in cm(root layer) with no scale on my world xform (cylinder lenth = 100 for 1m)
  • Now I’m still in cm(root layer) but with a 0,1 scale as shown in the previous picture (cylinder lenth = 1000 for 1m)
    the x10 ratio for the linear drive should come for here. The angular ratio remain the same
    As for my project file, I don’t know why it’s changed, maybe I did my test wrong beforehand.

The main fact remains that the values are not the same between the 2 files, and I don’t know where these ratios come from or whether I can rely on them.

Hi Adrien,

I would recommend comparing parameters between the scene where it works and the new setup. Probably easiest is to save the stage as usda and do a diff?

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