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.