ROS Tutorials (Linux Only)
ROS bridge comes with a few popular ros topics that are packaged for ease of use
(More details are in the ROS & ROS2 Bridge)
Focus on the procedures in using them
-Steps to connect Omniverse Isaac Sim to ROS can be done in?
Entirely in the UI
Scripting inside the extension workflow
Scripting inside the standalone Python workflow
(Refer to Isaac Sim Workflows for details of different workflows)
Demonstrate the UI method using existing Omnigraph nodes
Learning Objectives
(1)Enable a Turtlebot3 to drive around and subscribe to a twist message through the ROS network
(2)Learn to Add controllers to Turtlebot3
(3)Introduce the ROS bridge and ROS OmniGraph (OG) nodes
(4)Setup the robot to be driven by a ROS Twist message
Getting Started
Prerequisites
Have a rigged Turtlebot, or completed URDF Import: Turtlebot
ROS bridge enabled
roscore is running
Main Concepts
Driving the Robot
Preview
At the end of URDF Import:
Turtlebot(the robot)
Has drivable joints
When given a target position or velocity, can move the joints to match the targets
-Most cases want to be controlling the vehicle speed and not the individual wheel speed
First want to add the appropriate controllers
Ex. Turtlebot3, a wheeled-robot with two wheels
Nodes needed are Differential Controller and Articulation Controller
Differential Controller node: Convert vehicle speed to wheel speed
Artciulation Controller node: Send the commands to the joint drives
Detailed instructions on how to connect these nodes can be found in OmniGraph for a similar robot (NVIDIA Jetbot)
Connecting to ROS
As part of our ROS bridge, certain nodes are provided
Nodes that are subscribers and publisher of specific messages
Utility nodes such as keeping track of simulation time
Helper Nodes, which are gateways to more complex Omnigraphs that we abstract away from users
Process to establish a ROS bridge for a specific topic
(1)Open an action graph
(2)Add the OG nodes relevant to the desired ros topics
(3)Modify any properties as needed
(4)Connect the data pipeline
ROS publisher nodes:
Where Omniverse Isaac Sim data gets packaged into ROS message and sent out to the ROS network
ROS subscriber nodes:
Where ROS messages are received and allocated to the corresponding Omniverse Isaac Sim parameters
To use them, we simply have to pipe in and out the necessary data, as directed by the properties of each node
Custom Message, Omnigraph:
If needed to publish or subscribe to messages beyond the ones we provided
Custom Python Nodes, or Omnigraph: Custom C++ Nodes for ways to integrate custom messages
Putting it Together
Building the Graph
(1)Open Visual Scripting:
Window > Visual Scripting > Action Graph