Creating custom ROS topic behaviour in omniverse?

I am a junior research engineer attempting to achieve a POC using Omniverse Sim and ROS. I intend to run turtlesim with teleop control and publish the pose topic of the turtle to Omniverse. Using this pose topic I wish to control the pose of a simple object such as the cube used in the samples. This goal of this POC is to eventually visualise the pose and movement of a physical ROS-based robot in real time using Omniverse.

The ROS-omniverse samples have been helpful, and it appears that my task is a blend of the ROS service example (for teleporting a cube) and ROS topic example (for commanding the pose of the panda arm). However I am struggling to understand how I would write my own program to translate ROS topic messages into pose commands for a simple Sim object such as the cube. The ‘omni.isaac.RosBridgeSchema’ module that is used by the samples to define the classes for Omniverse side subscriber/publishers appears to be not publicly available (the files are .pyc not .py). I would like to see how these classes and methods are written and how I could create my own.

I am unsure how to advance with this task. I have a reasonable background understanding of robotic systems however I am relatively new to ROS and Isaac. Any help/advice on how I can further understand translating ROS topic messages into Omniverse commands/behaviours would be greatly appreciated. Thanks in advance!

If the object you are moving is similar to turtlesim, then the ROS service example should be enough to change the pose (position and orientation) of the object. The ROS service example uses IsaacPose service type. It includes the native ROS geometry_msgs type Pose, which should allow you to change both the position and orientation. If the robot you are moving also has articulated joints that also need to be commanded in addition to the robot’s pose, then you’ll need the ‘/joint_command’ rostopic as well.

Currently, the rostopics and services that are shown in the examples are the only ones available. We’ll add more in future releases, but there isn’t a way for users to make custom message type for now.

From the sound of it though, the current set of rostopics and services should be enough for what you need. You may need to repackage the messages on your ROS control side to match the message type that are needed on the Sim side. (i.e. package your pose commands into IsaacPose.srv if you are teleporting the robot, or use ROS native ‘JointState’ message type if you are using /joint_command topic). You can use “rostopic type /topic_name” or “rosservie type /service_name” to check exactly what message type it requires. and the scripts under the folder src in the isaac_bridge folder can serve as examples of how to package your ROS messages.