Articulation root joint position leads to robot shaking or false simulation

Hi,

I am working with ROS2 and ISAAC side by side.
I keep updating my URDF so I am using the URDF importer whenever I launch ISAAC (from a ROS node).

When I import my URDF, the articulation root joint is automatically fixed to the “world” link (before the base link “link_1”).
Here is the architecture of my URDF:
/robot
| /world
| /Lidar (fixed to world)
| /link_1 (fixed to world)
| /link_2 (revolute to link_1)
| /link_3 (revolute to link_2)
| /link_4 (revolute to link_3)
| /link_5 (revolute to link_4)
| /link_6 (revolute to link_5)
| /link_7 (revolute to link_6)
| /link_EE (fixed to link_7)
| | /finger_R (prismatic to link_EE)
| | /finger_L (prismatic to link_EE)
| | /camera (fixed to link_EE)

When I command the robot from JointTrajectoryController through the ISAAC joint_state_subscriber in this configuration, everything seems smooth.
But whenever I go over a certain angle (around 45° for the joint1 for example) the robot starts shaking. The position and velocities of the links in ISAAC are changing a lot, although nothing is published on the topic after the reach of the targeted goal.
Setting solverPositionIterationCount to 255 in the Articulation root joint of /world reduces the amplitude of the shaking but it is still present.
world_link

I solved the shaking issue by moving the articulation root joint to the ancestor of /world (prim /robot), using this script:

# Remove the articulation root from the base link
omni.kit.commands.execute('RemovePhysicsComponent',
usd_prim=current_stage.GetPrimAtPath('/spacelab_robot/world'),
component='PhysicsArticulationRootAPI',
multiple_api_token=None)
omni.kit.commands.execute('UnapplyAPISchema',
api=UsdPhysics.ArticulationRootAPI,
prim=current_stage.GetPrimAtPath('/spacelab_robot/world'),
api_prefix=None,
multiple_api_token=None)
omni.kit.commands.execute('UnapplyAPISchema',
api=PhysxSchema.PhysxArticulationAPI,
prim=current_stage.GetPrimAtPath('/spacelab_robot/world'),
api_prefix=None,
multiple_api_token=None)
# Add the articulation root to the ancestor of the base link
omni.kit.commands.execute("AddPhysicsComponent",
usd_prim=current_stage.GetPrimAtPath('/spacelab_robot'),
component="PhysicsArticulationRootAPI")
omni.kit.commands.execute('ApplyAPISchema',
api=UsdPhysics.ArticulationRootAPI,
prim=current_stage.GetPrimAtPath('/spacelab_robot'))
omni.kit.commands.execute('ApplyAPISchema',
api=PhysxSchema.PhysxArticulationAPI,
prim=current_stage.GetPrimAtPath('/spacelab_robot'))

But in this case the movement execution is really slow (it doesn’t respect JointTrajController execution_time parameter) and the trajectories look different from the previous configuration (though the interpolation should be the same).

Do you have an idea of the origin of these two problems (the shaking or the wrong movement)? What is the correct position of the articulation root joint?
Thank you.

And here is the equivalent video for the last scenario when I set the root joint to the ancestor.
ancestor