Link inertia tests for robot manipulator URDF

When exporting a URDF from CAD (using tools like fusion2urdf or robotcad), the true moments of inertia of each motor are not captured.

To try and align the physical properties of the links in the URDF with the links, we performed a naive test by:

  1. Isolating the link (the side of the link closer to the fixed base is rotated, the other side has nothing attached)
  2. Minimizing the effect of gravity by aligning the axis of rotation with the gravity vector (axis of rotation perpendicular to the ground)
  3. Sending torque commands to create a cyclical motion (move to point 1 with torque T, move to point 2 with torque -T)
  4. Dividing torque by the instantaneous angular acceleration ((angular velocity - previous angular velocity) / time) to estimate the inertia of rigid groups for 1 million samples. When the angular acceleration is zero, the estimated inertia is ignored.

We have also considered pendulum/period of oscillation tests, but researching approaches left me with a few questions:

  1. How important is the accuracy of inertia along axes that don’t have a motor?
  2. Is it ok to represent it with an arbitrarily large number (to represent rigidness)?
  3. If necessary how else can we test/estimate this inertia?

I’m not sure what your problem is.

Is it so that you have a “link” that has some light part and then some heavy part with a motor, and both should be considered parts of the same URDF link? Doesn’t the CAD know about the heavy motor?

If that’s the case, I suggest modelling the two parts separately and then adding up their inertia. Gazebo has nice code that does the correct computations when merging links connected by fixed joints. But that would only result in having one link in SDF, but the URDF would still contain two links with a fixed joint. Not sure if it’s a problem for you. It’s typically no problem for us.

However, I agree it would be nice if each <link> could contain multiple <inertial> tags, like it can contain multiple visuals and collisions. But, that’s not something currently supported by the standard.

1 Like

Yes, the light part and heavy motor should ideally be considered parts of the same link, and the CAD represents the motor mass reasonably well.

I’ll opt to add up their inertia as you suggest, thanks for your input!

In this case, I’d report a bug to the CAD export plugin. Beacuse if CAD knows about the mass distribution, it should also export a proper <inertial> that takes this into account.