I have assembled a model that is a set of bodies connected by joints. First body is connected to the Fixed Joint. Fixed Joint is Articulation Root. I have launched the model for execution and in the Articulation inspector I am viewing the state of joins. If these bodies are connected using Revolute Joints, then everything is fine. But if these bodies are connected with a Spherical joints, then Articulation inspector will not display anything, and an error will be displayed in the console:
022-08-04 06:40:21 [50,194ms] [Error] [omni.ui.python] TypeError: ‘NoneType’ object is not subscriptable
When a joint with the Exclude From Articulation property is changed in the articulation, the Articulation inspector stops displaying the states of the joints, and the rostopic echo /joint_states command displays the names of the joints that were included in the previous version of the articulation. To display correctly, I have to reload the Isaac Sim. Is there another way?
Spherical Joints are a recent addition to the physx api, so they are not yet supported in Isaac Sim articulations. However we will be propagating the change shortly in a future release.
The Exclude From Articulation property appears to be working as expected. A few things to note about that property: you can only exclude leaves from the Articulation tree. If you would like to exclude a joint from the middle, then you will need to add in another articulation root. It’s best practice to make the changes before pressing play in the simulation.
Can you tell us more about your use case for the Exclude From Articulation property so we can better support it in the future … is it to help filter what information is getting streamed out?
If I exclude the joint from articulation, then I will not be able to get its properties (position, speed, force). I simulate robot with Ackerman steering, and I have a lot of “uninteresting” joints. I exclude one of them from the articulation. However, it is possible that for some users it is necessary to know the states of all joints.
In addition, I found that the joint positions that I get in topic /joint_states messages are calculated incorrectly. The angle reaches 2*pi, and then changes the sign. Because of this, velocity throws occur.