Conveyor Belt Utility

About

The Conveyor Belt Utility Extension provides an utility to turn Rigid bodies into conveyors in Omniverse Isaac Sim.

Usage

To use the extension, select Window > Extensions. Then search for “conveyor”, select omni.isaac.conveyor, and click on Enable. To auto-load this extension in the future, click on Autoload as well

To create a conveyor, select a rigid body or a mesh in the stage, then go to the menu Create > Isaac Sim > Warehouse Items > Conveyor, This will create a Omniverse OmniGraph node that will manage the conveyor speed and animation, with the following properties:

  • conveyorPrim: The target that will have the conveyor velocity applied. If it’s not a Rigid body it will be automatically configured as one, with default collision models. Only a single prim is allowed per ConveyorNode.

  • Animate Direction: Texture animation direction in the UV map

  • Animate Scale: ratio between conveyor velocity and texture animation

  • Animate Texture: flag to enable texture anumation

  • Curved: Flag to indicate if the conveyor belt is curved. Switches the velocity applied from a linear velocity into an angular velocity. The velocity is then applied in the given direction as a rotation axis. To scale the velocity, the Direction axis can be smaller or greater than one, implying in a curvature radius scaling for the velocity. This scaling should be inversely proportional to the curvature radius.

  • Direction: Conveyor velocity direction in local coordinate frame

  • Enabled: Flag to enable/disable the conveyor system.

  • Velocity: Conveyor velocity.

To emulate a conveyor animation, you can use a tiled texture, and set the Animate properties to have the texture translate in the same direction and velocity of the conveyor movement.

Alternatively, you can define your own Omniverse OmniGraph and manually add the Conveyor nodes to it, letting you have multiple conveyor nodes on the same Omniverse OmniGraph.

To change the velocity on one ore more conveyor nodes, you can select all nodes (even if they are on different Omniverse OmniGraph action Graphs) and change the velocity in the Property Pane. If all the nodes are on the same Action Graph, you can also connect a constant float value to all inputs to ensure they are always synchronized.

../../_images/isaac_conveyor_use.webp

For convenience, multiple conveyor pieces are provided with the Isaac Sim assets pachage are available standalone on the Isaac Sim default assets packate at Isaac/Props/Conveyors (e.g if you set up a localhost nucleus they would be on omniverse://localhost/Isaac/Props/Conveyors).

When authoring the Conveyor functionality for these assets, be sure to have the Belt or Rollers prim selected, as these are the prims that contains the meshes for the conveyor elements.

Digital Twin Library Conveyor System Generator

To facilitate the creation of Digital Twins, a utility to generate conveyor systems is provided at Tools > Conveyor Track Builder. This Utility ships with our Digital Twin assets pack for conveyors, but you can use your own dataset, provided that you change the configuration file. If an item selected on the screen is a component of the conveyor dataset, it will try to connect to one of the conveyor endpoints, as defined by the configuration, otherwise it will use the selection as a parent for the insertion of the new piece.

../../_images/isaac_conveyor_ui_use.webp

The configurator is made with loose integration with the assets, allowing flexibility when creating the conveyor system, with a minimal set of rules to facilitate the creation. This may cause the need for some minimal post-processing after creating the system, being a compromise so it won’t block the user from fully customizing their track once it’s modeled.

User Interface

../../_images/isaac_conveyor_ui.png

Ref #

Option

Result

1

Conveyor Style

Styles of Conveyor Available, Can be Roller, Belt, or Dual

2

Track Type

Track Types, Can be Start, T-style split, straight, Y-style split, end.

3

Curvature

Track Curvature, Can be None, Half (usually for 90 degrees), or Full (usually for 180 degrees turn), to the left or right.

4

Elevation

Track Elevation. Can be one-level or two-levels up from the entry point, either Up or Down.

5

Selected Track

Shows the current selected track on screen, its endpoints, and the Delete button to remove the current track from the system.

6

New Track

Shows the piece marked for addition on the system. Lets you choose the input point, the track variants available on the dataset, and in some cases, gives the option to use a mirror of the piece

7

Track Variants

Shows the additional variants for the filter selection

8

Selected Endpoint

Each option relates to one of the track endpoints. Endpoints already used will not show on the UI, unless all endpoints are already connected.

9

Mirror

Mirrors the selected piece on the primary belt direction

Dataset

The dataset is a collection of USD files used for the system creation. Each USD file must:

  • Have a Default Prim defined. That prim and all its children is what will be loaded when your asset is loaded as a reference.

  • Have the default prim with an empty transform (Translate and rotation components set to zero).

  • Have each conveyor track defined as an Xform Prim, with all visual/collision meshes parented by this Prim.

  • Have the entry point of the tracks at the Origin, with the track aligned with the X-axis, with the origin at the middle of the track on the Y axis.

  • Have the anchor points defined at Height zero (Z = 0), at the end of the track, aligned to the middle of the track in the Y axis. The X axis must be aligned with the base direction of the Track.

  • Have individual materials defined for each track. Meshes that are part of the same conveyor base Prim can share materials.

  • Be contained on the same base folder. They can have references to assets outside this base folder.

Acompanying the assets dataset, there is a Json file that contains the metadata needed to the UI workflow, and to configure the conveyor physics, if the original assets don’t have the conveyor physics already embedded.

 1{
 2"source": "omniverse://localhost/Isaac/Props/Conveyors", # The base folder where assets are contained
 3"assets": {
 4    "ConveyorBelt_A01": { # File name of the asset, without the extension.
 5        "style": "DUAL", # Conveyor style, can be ROLLER, BELT, or DUAL
 6        "start_level": 0, # Conveyor level for the track, can be any positive number
 7        "angle": "HALF", # Conveyor turn type, can be NONE, HALF, FULL"
 8        "curvature": "SMALL", # Conveyor radius of curvature, can be NONE, SMALL, MEDIUM, LARGE. Currently not used by the filter.
 9        "ramp": "FLAT", # Ramp level. How many levels it increases or decreases start level, can be FLAT, ONE, TWO, THREE, FOUR.
10        "type": "STRAIGHT", # Track Type, can be START, STRAIGHT (used for all single track types, including curves and ramps), Y_MERGE, T_MERGE, FORK_MERGE, END.
11        "anchors": [ # All Prim children paths that correspond to  endpoints on the asset.
12            "", # This is the root of the conveyor, which is also an endpoint.
13            "/Anchorpoint" # For all the other anchors, keep the trailing / on the child prim name
14        ],
15        "conveyor_nodes": { # All Child Prims to be configured as conveyors using the omnigraph node. Each track should have its own configuration (in the case of merge and splits), even if it's of the same style
16            "Rollers": {
17                "animate_scale": 0.01,
18                "animate_direction": [
19                    0.0,
20                    1.0
21                ],
22                "direction": [
23                    1.0,
24                    0.0,
25                    -37.0
26                ],
27                "curved": true
28            },
29            "Belt": {
30                "animate_scale": 0.5,
31                "animate_direction": [
32                    1.0,
33                    0.0
34                ],
35                "direction": [
36                    0,
37                    0.0,
38                    -37.0
39                ],
40                "curved": true
41            }
42        }
43    }
44}

Note

Strict json types do not have comments, the snippet above have them included to explain the data. If you copy it, remember to remove the comments otherwise it will fail the extension. For a full version of the json file, check the data folder in the extension.

Available Tracks

Conveyor A01
Conveyor A02
Conveyor A03
Conveyor A04
Conveyor A05
Conveyor A06
Conveyor A07
Conveyor A08
Conveyor A09
Conveyor A10
Conveyor A11
Conveyor A12
Conveyor A13
Conveyor A14
Conveyor A15
Conveyor A16
Conveyor A17
Conveyor A18
Conveyor A19
Conveyor A20
Conveyor A21
Conveyor A22
Conveyor A23
Conveyor A24
Conveyor A25
Conveyor A26
Conveyor A27
Conveyor A28
Conveyor A29
Conveyor A30
Conveyor A31
Conveyor A32
Conveyor A33
Conveyor A34
Conveyor A37
Conveyor A38
Conveyor A39
Conveyor A40
Conveyor A41
Conveyor A42
Conveyor A43
Conveyor A44
Conveyor A45
Conveyor A46
Conveyor A47
Conveyor A48
Conveyor A49