Robotics StackExchange | Archived questions

A link has invalid inertia

What (and where) are the constraints that are checked when loading a model to decide if a link's inertia matrix is valid or not?

In my specific example, I am trying to model a 50 kg cylinder that is 1.5 m long with a 0.2 m radius. According to this online moment of inertia calculator, I come up with Ixx=10, Iyy=10, Izz=1, which loads and runs fine. However, when I slightly change Ixx and Iyy to model a somewhat squashed (elliptical) cylinder, I receive the following error.

[Err] [Server.cc:183] Error Code 18: Msg: A link named hull has invalid inertia.

The snipped from my .sdf file is below.

  <inertial>
    <mass>50.24</mass>
    <inertia>
      <ixx>12.0</ixx>
      <ixy>0</ixy>
      <ixz>0</ixz>
      <iyy>8.0</iyy>
      <iyz>0</iyz>
      <izz>1.0</izz>
    </inertia>
  </inertial>

Asked by nealtanner on 2021-10-19 15:31:25 UTC

Comments

Answers

The principal moments of the inertia must satisfy the triangle inequality. In your case iyy + izz < ixx, which is invalid.

Asked by azeey on 2021-11-12 00:34:36 UTC

Comments

Those calculators don't seem to be correct, or at least they don't give the type of values that Gazebo expects.

What seems to work better is this, as found in some demos (for a bounding box):

ixx = mass *(y*y+z*z)/12
iyy = mass *(x*x+z*z)/12
izz = mass *(x*x+y*y)/12

Asked by MoffKalast on 2022-10-01 15:39:12 UTC

Comments

This calculation is only correct for a cuboid. Other geometries have different formulae. See https://en.wikipedia.org/wiki/List_of_moments_of_inertia

Also izz should be mass * (x*x + y*y)/12

Asked by azeey on 2022-10-03 11:56:16 UTC

Ah yeah my bad, seems like I made an error when copying. Edited.

So according to that list, the inertia values depend heavily upon the pivot point of the object? That seems a bit odd, since the object itself doesn't exactly physically change when the pivot does and I would expect the sim to take account of the pivot movement internally when it changes depending on obstacles. Are we supposed to calculate for the joint origin or the center of mass?

Asked by MoffKalast on 2022-10-06 15:13:30 UTC

Looking a bit futher, apparently the real intended way to generate these values is through meshlab... https://classic.gazebosim.org/tutorials?cat=build_robot&tut=inertia

Asked by MoffKalast on 2022-10-06 17:13:34 UTC

So according to that list, the inertia values depend heavily upon the pivot point of the object?

In our case, we only need the moment of inertia about the center of mass. The physics engine will calculate the MOI about other axes if it needs to.

Asked by azeey on 2022-10-11 18:50:02 UTC