GUI

Omnigraph

OmniGraph:
Omniverse’s visual programming framework
-Provides a graph framework that can easily connect functions from multiple systems inside Omniverse
-Is also a compute framework that allows for highly customized nodes so that users can integrate their own functionality into Omniverse and automatically harness the efficient computation backend
-Inside Omniverse Isaac Sim, OmniGraph is the main engine behind the Replicators, ROS and ROS2 bridges, access to many sensors, controllers, external input/output devices, UI, and much more
-Fast introduction into the world of visual programming via OmniGraph

Learning Objectives

Details build an action graph to control a robot in Omniverse Isaac Sim, specifically, the Jetbot
Goal: Give you a fast introduction to using Action Graphs in Omniverse Isaac Sim

Getting Started

Prerequisites:
Review Isaac Sim Interface prior to beginning this tutorial
Check out Assemble a Simple Robot for details on how you setup your own robot

Setting up the stage

1)On a new stage, start by right clicking and selecting Create > Physics > Ground Plane
Nvidia_Omnigraph1
2) Next, use the content browser to navigate to Isaac/Robots/JetBot and click and drag jetbot.usd onto the stage
Position the jetbot just above the ground plane. When completed, the jetbot should be under /World/jetbot in the context tree and the stage should look similar to this
Nvidia_Omnigraph2
Nvidia_Omnigraph3
Nvidia_Omnigraph18
Pressed F button
Depending on your default render settings, the camera of the jetbot may have a placeholder mesh (it looks like a gray Television camera)
To hide these meshes, click on the eyecon icon in the viewports, and then select Show By Type –> Cameras to hide the placeholder mesh
3)Building the graph
(3)-1 Select Window -> Visual Scripting -> Action Graph from the dropdown menu at the top of the editor
Nvidia_Omnigraph4
The Graph Editor will appear in the same pane as the Content browser
(3)-2 Click New Action Graph to open an empty graph
Nvidia_Omnigraph5
(3)-3 Type controller in the search bar of the graph editor
Nvidia_Omnigraph6
(3)-4 Drag an Articulation Controller and a Differential Controller onto the graph
Nvidia_Omnigraph7
(3)-5 Articulation Controller:
Applies driver commands(In the form of force, position, or velocity) to the specified joints of any prim with an articulation root
To tell the controller which robot it’s going to control
First select the Articulation Controller node in the graph and open up the property pane.
Nvidia_Omnigraph10
Can either keep usePath checked and type in the path to the robot /World/jetbot in the robotPath
Can uncheck usePath and then click Add Targets near the top of the pane for input:targetPrim, and select jetbot in the pop up window
(3)-6 Differential Controller:
Computes drive commands for a two wheeled robot given some target linear and angular velocity like the Articulation Controller, it also needs to be configured
Nvidia_Omnigraph9
Select the Differential Controller node in the graph, and then in the properties pane, set the wheelDistance to 0.1125, the wheelRadius to 0.03, and maxAngularSpeed to 0.2
(3)-7 Identify joints for articulation
Articulation Controller has the needs to know which joints to articulate
-Expects this information in the form of a list of tokens or index values
Nvidia_Omnigraph19
Each joint in a robot has a name and the jetbot has exactly two
Within /World/jetbot/chassis are two revolute physics joints named left_wheel_joint and right_wheel_joint
(3)-8 Add tokens
Type token into the search bar of the graph editor and add two Constant Token nodes to the graph
Nvidia_Omnigraph11
Nvidia_Omnigraph12
(3)-9 Type in values
Nvidia_Omnigraph13
Nvidia_Omnigraph14
Select one, and set it’s value to left_wheel_joint in the properties pane
Repeat this for the other constant token node, but set the value to right_wheel_joint
(3)-10 Make arrays
Nvidia_Omnigraph15
Type make array into the search bar of the graph editor and add a Make Array node to the graph
Nvidia_Omnigraph20
Drag and drop make array node
Nvidia_Omnigraph21
Select the Make Array node and click on the + icon in the inputs section of the property pane menu to add a second input
Set the arraySize to 2 as well, and then set the input type to token[] from the dropdown menu in the same pane
(3)-11 Connect Constant Token Nodes
Nvidia_Omnigraph22
Finally, connect the constant token nodes to A and B of the Make Array node, and then the output of that node to the Joint Names input of the Articulation Controller node
(3)-12 Add Event Node
The last node is the event node
Nvidia_Omnigraph23
Search for playback in the search bar of the graph editor
Nvidia_Omnigraph24
Add an On Playback Tick node to the graph
This node will emit an execution event for every frame, but only while the simulation is playing
Connect the Tick output of the On Playback Tick node to the Exec In input of both controller nodes
Connect the Velocity Command output of the differential controller to the Velocity Command input of the articulation controller
(3)-13 Completed Omnigraph
Nvidia_Omnigraph24
(3)-14 Play
Nvidia_Omnigraph25
Press the play button and select the Differential Controller Node in the graph
Click and drag on either the angular or linear velocity values in the properties pane to change it’s value (or just click and type in the desired value)

File Path:
https://drive.google.com/file/d/1MFl4FTeDXb3dS7pQkWbeW-c0f_KwJ2J7/view?usp=sharing
Reference:
https://docs.omniverse.nvidia.com/isaacsim/latest/gui_tutorials/tutorial_gui_omnigraph.html