Is use rep.orchestrator.run_until_complete(), omniverse will crash after finish

rep.orchestrator.run_until_complete() will crash after finish

Hi @whs11998 Can you provide a log from the crash?

It seems that there are no special logs with a warning level or above, which can be reproduced with just a piece of code(script editor)


import omni.replicator.core as rep

with rep.new_layer():

    camera = rep.create.camera(position=(0, 0, 1000))

    render_product = rep.create.render_product(camera, (1024, 1024))

    torus = rep.create.torus(semantics=[('class', 'torus')] , position=(0, -200 , 100))

    sphere = rep.create.sphere(semantics=[('class', 'sphere')], position=(0, 100, 100))

    cube = rep.create.cube(semantics=[('class', 'cube')],  position=(100, -200 , 100) )

    with rep.trigger.on_frame(num_frames=10):
        with rep.create.group([torus, sphere, cube]):
            rep.modify.pose(
                position=rep.distribution.uniform((-100, -100, -100), (200, 200, 200)),
                scale=rep.distribution.uniform(0.1, 2))

    # Initialize and attach writer
    writer = rep.WriterRegistry.get("BasicWriter")

    writer.initialize( output_dir="D:/_output2", rgb=True,   bounding_box_2d_tight=True)

    writer.attach([render_product])

    rep.orchestrator.run_until_complete()

Apologies for the late reply. rep.orchestrator.run_until_complete() is intended for use with step async (standalone) workflows, such as IsaacSim uses. Basically this means that replicator in a step async workflow is used mostly for the AOV and annotation rendering, and the scene is stepped manually per frame for explicit control over what happens. The API mentions this briefly (though its easy to miss):

PYTHON API — omni_replicator 1.10.10 documentation (nvidia.com)

If you’re interested in this, I recommend checking out the isaacsim tutorial here. Its a really great example of a full control workflow.

10.12. Randomization in Simulation – UR10 Palletizing — Omniverse IsaacSim latest documentation (nvidia.com)

You may want to use omni.replicator.core.orchestrator.run instead.