Implementation of a discrete PD controller

Hi,
we need to implement our own controller for our quadruped.

We are currently using the “apply_action” method of our ArticulationView. This results in a less stable controller for the same stiffness and damping values and using angular drives. We think this is because the angular drive is implemented as a continuous controller and is therefore solved implicitly in the solver.

Are there any more stable ways to implement a discrete controller?

Hi @finn.gross.maurer - Have you referred this controller documentation in Isaac Sim?
https://docs.omniverse.nvidia.com/isaacsim/latest/tutorial_core_adding_controller.html

Hi @rthaker, thank you for your reply!

Yes, this is how we implemented it, but this still results in a much less stable controller. Found this in the physx docs:


Hence I think it is reasonable to expect a more stable controller when using the drives than using a custom controller. We also have a very stiff system, so we should go with an implicit approach. Are there any ways to create a custom implicit controller?