What is the difference between those two methods for controlling the robot/articulation joints?

Hello,

Thanks for providing the impressive Isaac Sim. I am still trying to master it, starting from a robot arm’s USD file.

I found that it is possible to control a robot’s articulation in two ways, but I did not figure out the difference.

#assume we have a 7DOF robot
joint_angles = np.zeros(7)
my_articulated_system.set_joint_positions(joint_angles)

And this way too, but seems more complicated,

#assume we have a 7DOF robot
joint_angles = np.zeros(7)
my_articulated_system.get_articulation_controller().apply_action(ArticulationAction(joint_positions=joint_angles) 

Please tell me the difference between them.

Edit: Maybe the question is better stated if I say what is the difference between controlling an articulation with its set_joint_positions( ) method, or an articulation’s controller apply_action( ) method?

Best regards,