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?