# 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>

edit retag close merge delete

Sort by » oldest newest most voted

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

more

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

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

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?

Looking a bit futher, apparently the real intended way to generate these values is through meshlab... https://classic.gazebosim.org/tutoria...

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.

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

more