In RX75/urdf/RX75-6FB/RXL-6F-C3/urdf/RXL-6F-C3.urdf, Link1 (inertia at
line 61) declares
<inertia
ixx="2661.9E-6" ixy="-31.029E-6" ixz="9.34E-6"
iyy="2302.5E-6" iyz="151.466E-6" izz="1676359E-6" />
izz is written without a decimal point, so it reads as 1.676 kg m^2 while
its two siblings are ~0.0023-0.0027. Eigenvalues:
[0.00229983, 0.00266456, 1.67635901]
The tensor is positive definite, so it passes the usual checks, but it violates
the triangle inequality on the principal moments:
J_a + J_b = 0.00496 < J_c = 1.67636 short by 99.70%
Every rigid body must satisfy J_a + J_b >= J_c, because each principal moment
is an integral of a sum of two squared coordinates. No arrangement of mass
produces this tensor.
The physical reading makes it obvious: at the declared mass="1.559", that izz
implies a radius of gyration of 1.037 m for a 1.6 kg arm link.
Link1 is the child of J1, a revolute joint, so this is a moving link.
It is the only invalid tensor of the 9 in the file.
The correction is uniquely determined
I searched every single-attribute power-of-ten rescaling across all six
components (6 attributes x 9 exponents from 10^-6 to 10^+3). Exactly one
produces a physically valid tensor:
izz="1676.359E-6"
eigenvalues [0.00164139, 0.00233479, 0.00266457], positive definite,
triangle inequality satisfied, radius of gyration 0.0413 m -- the right
scale for this link.
That is the same digits with the decimal point restored, and it matches the way
the other five values in the very same element are written: 2661.9E-6,
-31.029E-6, 9.34E-6, 2302.5E-6, 151.466E-6 all carry a decimal point;
izz alone does not.
After the change, all 9 tensors in the file are valid.
--- a/RX75/urdf/RX75-6FB/RXL-6F-C3/urdf/RXL-6F-C3.urdf
+++ b/RX75/urdf/RX75-6FB/RXL-6F-C3/urdf/RXL-6F-C3.urdf
@@ -58,7 +58,7 @@
ixz="9.34E-6"
iyy="2302.5E-6"
iyz="151.466E-6"
- izz="1676359E-6" />
+ izz="1676.359E-6" />
</inertial>
<visual>
<origin
Happy to check the other RX/ECO models in the repo the same way if that would be useful.
In
RX75/urdf/RX75-6FB/RXL-6F-C3/urdf/RXL-6F-C3.urdf,Link1(inertia atline 61) declares
izzis written without a decimal point, so it reads as 1.676 kg m^2 whileits two siblings are ~0.0023-0.0027. Eigenvalues:
The tensor is positive definite, so it passes the usual checks, but it violates
the triangle inequality on the principal moments:
Every rigid body must satisfy
J_a + J_b >= J_c, because each principal momentis an integral of a sum of two squared coordinates. No arrangement of mass
produces this tensor.
The physical reading makes it obvious: at the declared
mass="1.559", thatizzimplies a radius of gyration of 1.037 m for a 1.6 kg arm link.
Link1is the child ofJ1, a revolute joint, so this is a moving link.It is the only invalid tensor of the 9 in the file.
The correction is uniquely determined
I searched every single-attribute power-of-ten rescaling across all six
components (6 attributes x 9 exponents from 10^-6 to 10^+3). Exactly one
produces a physically valid tensor:
That is the same digits with the decimal point restored, and it matches the way
the other five values in the very same element are written:
2661.9E-6,-31.029E-6,9.34E-6,2302.5E-6,151.466E-6all carry a decimal point;izzalone does not.After the change, all 9 tensors in the file are valid.
Happy to check the other RX/ECO models in the repo the same way if that would be useful.