Switching between ROS control and motion planning interface

Regarding the preview code for Leonardo, I have found some difficulty in trying to switch between sending joint commands via the ROS bridge and using the RMP and omni.isaac.motion_planning interface. Basically once the RMP handle for the robot is registered with the motion planning interface, the robot is always being commanded through that interface, and if I try to send joint commands over the ROS topic exposed by the ROS bridge, they basically get ignored (it seems the motion planning interface is just overriding those commands).

I am able to un-register the RMP handle for the robot with the motion planning interface, and then I can send ROS commands. However, the World object created that manages the robot and the objects in the scene takes as input that robot RMP handle, so it seems if I unregister the handle then the World instance becomes useless.

What is the best way to switch between using RMPs and sending ROS joint commands? I would like to be able to do both, as in my use case I am using the RMPs just for data collection to learn a policy, and then I want to send my policy commands via the ROS topic. I have a workaround which is to create my own topic for sending ROS joint commands, and my extension class listens for those commands and then calls send_config on the Franka class that updates via the motion planning interface. This seems to work but it makes me feel the ROS bridge is not well-integrated to the other control paradigms offered by Isaac.

Your workaround is what we would recommend doing right now (using the combination of listening for your ROS commands and use send_config in the motion_planning interface). There is no easy way of switching between controllers at the moment.