In short,
1. getPrincipalMomentsOfInertia() didn't work as I expected. So what exactly it returns?
2. I have a model with "moments of inertia atcenter of mass" with ixy, izy, ixz != 0 (or saying far away). Is it a normal case? I thought it should be a diagonalized matrix.
----
I was working on grabbing diagonalize moments of inertia from the models, saying I want the diagonalized form of the MOI, getting ixx, iyy, izz with all other elements (ixy, iyz, ixz) equals to 0
The Properties UI will display MOI_world and MOI_CoM (Center of Mass), and I can export these two information by using getXYZMomentsOfInertia(), and calculating MOI_CoM from getXYZMomentsOfInertia and physicalProperties.centerOfMass().
However, sometimes the CoM is magically not have ixy, iyz, ixz equals to 0 when my model is complex. And the value not looks like caused by numerical error and it is relatively not small enough to close to 0.
And then I try to explore getPrincipalMomentsOfInertia(). At first from the description I think it will give the ixx, iyy, izz I want but it does not. And I am also not sure what exactly these values are.
# Get the moments of inertia about the principal axes. Unit for returned values is kg/cm^2. (retVal,i1,i2,i3) = physicalProperties.getPrincipalMomentsOfInertia()
Here is an example with a Ball, Ring and Cylinder. Theoratically the Ball should have the diagonalize MOI with same value as shown in List of moments of Inertia Wiki
MOI_CoM displayed in UI looks reasonable, but the value of getPrincipalMomentsOfInertia() (In my document, it is the "MOI_principal", where I add another three 0.0 b.c. I thought it was the ixx,iyy,izz) is strange and I cannot tell what they are.
----
MoI about CoM with ixy, ixz, iyz != 0. (Sorry I cannot show you my model but only the Properties screenshot)
Is it a normal case?
It looks like a physical problem. Will I always get a diagonalized MoI about center of mass? I know MOI is diagnolized when it align with principal axes, but are they the same for the concept of "MoI at CoM"?
----
Notes:
dict_of_links["center_of_mass"]: Direct output from physicalProperties.centerOfMass
dict_of_links["inertia"] : The moment of inertia about center of mass. It is diplayed in UI but have no direct method to get this from API. I calculated it from the MOI about world frame and CoM.
dict_of_links["MOI_principal"]: Direct output from physicalProperties.getPrincipalMomentsOfInertia() and just add another three 0.0.
dict_of_links["radius_of_gyration"]: Direct output from physicalProperties.getRadiusOfGyration().
In short,
1. getPrincipalMomentsOfInertia() didn't work as I expected. So what exactly it returns?
2. I have a model with "moments of inertia atcenter of mass" with ixy, izy, ixz != 0 (or saying far away). Is it a normal case? I thought it should be a diagonalized matrix.
----
I was working on grabbing diagonalize moments of inertia from the models, saying I want the diagonalized form of the MOI, getting ixx, iyy, izz with all other elements (ixy, iyz, ixz) equals to 0
The Properties UI will display MOI_world and MOI_CoM (Center of Mass), and I can export these two information by using getXYZMomentsOfInertia(), and calculating MOI_CoM from getXYZMomentsOfInertia and physicalProperties.centerOfMass().
However, sometimes the CoM is magically not have ixy, iyz, ixz equals to 0 when my model is complex. And the value not looks like caused by numerical error and it is relatively not small enough to close to 0.
And then I try to explore getPrincipalMomentsOfInertia(). At first from the description I think it will give the ixx, iyy, izz I want but it does not. And I am also not sure what exactly these values are.
# Get the moments of inertia about the principal axes. Unit for returned values is kg/cm^2. (retVal,i1,i2,i3) = physicalProperties.getPrincipalMomentsOfInertia()
Here is an example with a Ball, Ring and Cylinder. Theoratically the Ball should have the diagonalize MOI with same value as shown in List of moments of Inertia Wiki
MOI_CoM displayed in UI looks reasonable, but the value of getPrincipalMomentsOfInertia() (In my document, it is the "MOI_principal", where I add another three 0.0 b.c. I thought it was the ixx,iyy,izz) is strange and I cannot tell what they are.
----
MoI about CoM with ixy, ixz, iyz != 0. (Sorry I cannot show you my model but only the Properties screenshot)
Is it a normal case?
It looks like a physical problem. Will I always get a diagonalized MoI about center of mass? I know MOI is diagnolized when it align with principal axes, but are they the same for the concept of "MoI at CoM"?
----
Notes:
dict_of_links["center_of_mass"]: Direct output from physicalProperties.centerOfMass
dict_of_links["inertia"] : The moment of inertia about center of mass. It is diplayed in UI but have no direct method to get this from API. I calculated it from the MOI about world frame and CoM.
dict_of_links["MOI_principal"]: Direct output from physicalProperties.getPrincipalMomentsOfInertia() and just add another three 0.0.
dict_of_links["radius_of_gyration"]: Direct output from physicalProperties.getRadiusOfGyration().
Hi yl1242.
I do not understand the contents, but here physicalProperties_var.getXYZMomentsOfInertia ()
Some people point out that the documentation for is incorrect.
(However, it is Japanese)
http://syuntoku14.hatenablog.com/entry/2018/09/24/085723
(returnValue, xx, yy, zz, xy, yz, xz) = physicalProperties_var.getXYZMomentsOfInertia()
not
(returnValue, xx, yy, zz, xy, xz, yz) = physicalProperties_var.getXYZMomentsOfInertia()
Seems to be correct.
There may be these effects.
Hi yl1242.
I do not understand the contents, but here physicalProperties_var.getXYZMomentsOfInertia ()
Some people point out that the documentation for is incorrect.
(However, it is Japanese)
http://syuntoku14.hatenablog.com/entry/2018/09/24/085723
(returnValue, xx, yy, zz, xy, yz, xz) = physicalProperties_var.getXYZMomentsOfInertia()
not
(returnValue, xx, yy, zz, xy, xz, yz) = physicalProperties_var.getXYZMomentsOfInertia()
Seems to be correct.
There may be these effects.
Thank you for pointing that out 🙂
I am exactly working with syuntoku14's code. (https://github.com/syuntoku14/fusion2urdf)
I sent a pull request to his repo and thought it was a bug but looks like it's not after reading the post.
After testing, I think the issue you pointed out has already been fixed by Fusion.
So there should be some other staff happening here
Thank you for pointing that out 🙂
I am exactly working with syuntoku14's code. (https://github.com/syuntoku14/fusion2urdf)
I sent a pull request to his repo and thought it was a bug but looks like it's not after reading the post.
After testing, I think the issue you pointed out has already been fixed by Fusion.
So there should be some other staff happening here
On the contrary, I'm sorry to confuse the story.
On the contrary, I'm sorry to confuse the story.
Can't find what you're looking for? Ask the community or share your knowledge.