Isaac Sim Headless Extension-Based Workflow Help

Hi All,

I’m trying to create a workflow that fulfills the following requirements:

  • Headless via EC2 VPS
  • Doesn’t require restarting Isaac Sim to load code
  • Allows me to push code changes made locally to the host server using any editor

My understanding is that the Extension Discovery System will automatically load any new code changes. Therefore, I am trying to put together an extension-based workflow. The problem I’m running into is that it isn’t loading my extension anywhere in the menu (including in top level menu items not in the screenshot), even though it is shown as available:


.

I have created omni.robochef which is mounted to the Isaac Sim docker container via

sudo docker run ... -v ~/rl/omni.robochef:/isaac-sim/exts/omni.robochef:rw

My directory structure looks like this:

rl
├── Dockerfile  # isaac-sim:2021.2.1 with fixes applied
├── entrypoint.sh  # start nucleus, try adding robochef to menu, start isaac sim
├── isaac.sh  # build container, run with omni.robochef mounted
├── omni.robochef
│   ├── config
│   │   └── extension.toml
│   └── omni
│       └── robochef
│           └── hello_chef
│               ├── hello_chef_extension.py
│               ├── hello_chef.py
│               └── __init__.py

It is worth mentioning that my entrypoint.sh script attempts to add robochef to the layout. It changes /isaac-sim/exts/omni.isaac.layout_manager/config/extension.toml to include the line "omni.robochef" = {} underneath # Isaac Sim Utilities

(sed -i 's/# Isaac Sim Utilities/# Isaac Sim Utilities\n"omni.robochef" = {}/g' /isaac-sim/exts/omni.isaac.layout_manager/config/extension.toml)

hello_chef_extension.py has the following class, which supposedly defines the menu items:

class HelloChefExtension(BaseSampleExtension):
    def on_startup(self, ext_id: str):
        super().on_startup(ext_id)
        super().start_extension(
            menu_name="Robochef",
            submenu_name="Robochef2",
            name="Hello Chef",
            title="Hello Chef Example",
            file_path=os.path.abspath(__file__),
            sample=HelloChef(),
        )
        return

There are no errors relating to leading omni.robochef, the layout, or menu when starting Isaac Sim

Am I going about this the right way to accomplish my aforementioned workflow goals? Is there a better way? If I’m on the right track, what changes do I need to make to get my extension in the menu?

Solved:

Problem was that BaseSampleExtension.start_extension() called add_menu_items(self._menu_items, "Isaac Examples". I needed to write my own custom base class to resolve this.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.