Error: No module named 'omni.synthetic data'

Hello, I’m working on the leonardo_preview for creating a custom scenario. When i try to import omni.syntheticdata it doesn’t find the module. I have enabled the extension from Window->Extension Manager, in fact for other modules (like omni.physx) everything works fine.

What should I do?

Hi, the titled error seems to show that there is a space in omni.synthetic data. It should be omni.syntheticdata. A console log or the output error from the Script Editor would be helpful too.

Have you tried the SyntheticData Sample Application in Isaac Sim?

1 Like

Hello, thanks for the quick reply. The space was a typo here writing the question. From the console I got the following error:

2020-08-05 16:19:16 [2,259ms] [Error] [carb.python] Failed to import python module omni.isaac.samples.scripts.leonardo_preview. Error: No module named ‘omni.syntheticdata’
2020-08-05 16:19:16 [2,259ms] [Error] [carb.python] Extension python module: ‘omni.isaac.samples.scripts.leonardo_preview’ in ‘/home/luca/isaac-sim/_build/linux-x86_64/release/exts/omni.isaac.samples’ failed to load.
2020-08-05 16:19:16 [2,302ms] [Warning] [omni.ext.plugin] Reached maximum folder subscribers count in extension folder: /home/luca/isaac-sim/_build/linux-x86_64/release/exts/omni.isaac.samples

I have still not tried the SyntheticData Sample Application since for now I just need to work with RGB cameras.

Could you give more information on what changes was made and steps to reproduce?

Are you following the example at Capture frames from camera via Python scripting or edited the Leonardo Sample? Please provide the edited code.

1 Like

I started creating a custom scene via Python script (with the python file in a local folder) to understand how to work with cameras and data. From there I had no problems importing omni.syntheticdata to get the RGB data from the camera.

Then since I need to work with a robotic arm, I think to directly modify the Leonardo Sample adding a custom scenario (where I need to add a camera and process its data).
I am using as starting point for the custom scenario the simple_stack.py file where I simply added the import omni.syntheticdata and I got the error. Even adding that import to the leonardo_preview.py gives the same error.

So the step is just adding an import to the simple_stack.py file after enabling the omni.syntheticdata extension via Window->Extension Manager from Omniverse

I’m afraid I could not reproduce that error. I’ve tried adding import omni.syntheticdata in leonardo_preview.py and simple_stack.py and ran the samples as usual by clicking the Play button and Perform Task button. All works fine.

Could you try re-enable the extensions, omni.isaac.samples and omni.syntheticdata, by going to the Extension Manager then uncheck them and recheck them. Then create a new stage and try running again.

1 Like

Nothing, even after resetting everything I have the same error. The strange thing is that if I try to do the import from the Script Editor, it works.

I’ve seek guidance from our engineers and that error is not reproducible either. Another thing you could try is adding this lines (below) in the on_startup(self) section of leonardo_preview.py.

self.app = omni.kit.app.get_app_interface()
ext_manager = self.app.get_extension_manager()
ext_manager.set_extension_enabled("omni.syntheticdata", True)
import omni.syntheticdata._syntheticdata as sd  # Must be imported after getting app interface
1 Like

Importing the absolute path with sys.path.append did the trick, still don’t understand why from the Script Editor everything works fine. Thanks anyway for your help ;)

Great!
Yes, that is odd. You could try if it works when running Isaac Sim in a container instead. If it works then maybe it has something to do with your Ubuntu environment.

Thanks.