Skip to content

[Question] Correct way to load visual geometry (no physical properties) and corresponding collision geometry for massively parallel robot training #4054

@jaraujo98

Description

@jaraujo98

Question

I want to train robots on a complex scene asset (many meshes, materials, and textures; several MB in size). I have reviewed the documentation and relevant code, and have tried several alternatives for days, but still don’t see a definite answer to the following:


1. Best way to load a large static visual-only scene for parallel training

What is the correct (or recommended) approach for loading a large, purely visual scene mesh (no physics, static geometry) so that it can be used efficiently across many parallel environments? Specifically:

  • Can the scene be loaded once and shared by all environments (e.g., by setting env_spacing = 0), or would that lead to interference (collisions, showing up on the wrong render) between envs?
  • Is converting the scene into an instanceable asset the only way to achieve this? If it must be instanceable:
    • Can the entire scene be made a single instance, or does each mesh/material need to be its own instanced asset?
    • If an instance is required per environment, do I need to manually apply the environment’s origin transform to each instance?

My scene is in GLB format link. When I use the mesh converter tool and load the resulting URDF half of the geometry disappears. If I convert it to OBJ the mesh converter sort of works, but I need to manually fix a broken path to get the scene to show up in the stage.


2. Best way to load custom collision geometry

I also created custom collision geometry for the scene using only box meshes (so all convex). These boxes are currently stored as meshes in a single file.

What is the recommended way to load these as collision geometry in Isaac Lab?

  • How should I write the configuration for importing the mesh file directly?
  • How do I know what sort of collision mesh processing will be applied (ex: convex decomposition, etc.) and how can I control it?
  • Should I write a script to convert the boxes into a URDF with a single static link containing multiple <collision> elements? I tried something along those lines, but when I imported that URDF nothing showed up in the stage. Does there need to be a fixed joint between the world link and the link with the collision meshes to ensure the parser sees it?

3. Build Information

Due to hardware limitations I am currently using:

  • Isaac Lab 2.1.1
  • Isaac Sim 4.5

But answers for the latest versions are welcome too.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions