Implementing a ros_control HW interface


I am currently trying to port a new robot into Omniverse Isaac-Sim and enable ROS interaction with it.
The goal is to replace Gazebo with omniverse for simulation.
The problem I am facing right now is that the robots ROS-stack needs some controllers that are not yet implemented in the ROS_Bridge extension.

To avoid having to re-implement existing controllers of the ros_control stack the simplest solution would be to create a new Hardware-Interface that reads and writes joint states of the robot.
Since the ros_control::HW_interface is a C++ class I would need to access the USD or PhysX Interface from a C++ library file.
Is there documentation somewhere on how to do that or has anyone done something similar?


I have been able to use ROS2 control with Isaac Sim and implemented a hardware interface to move the robot.
You don’t need to access isaac directly, instead you can use the bridge to pub sub joint states.

hw command → hw interface → topic → isaac subscribe joint states → articulation controller
state data ← hw interface ← topic ← isaac publish joint states

Check out some of the ROS example robots to see the action graphs