Principle:Isaac sim IsaacGymEnvs Factory Scene Initialization
| Knowledge Sources | |
|---|---|
| Domains | Simulation, Manipulation |
| Last Updated | 2026-02-15 00:00 GMT |
Overview
Process of initializing Isaac Gym simulation scenes with a Franka robot, table, and assembly objects with contact-enabled rigid bodies.
Description
Scene initialization in Factory/IndustReal involves a five-stage pipeline:
- Simulation creation: An Isaac Gym simulation is created with configured physics parameters (timestep, solver iterations, gravity, contact handling).
- Franka robot import: The Franka Panda URDF is loaded with appropriate DOF properties (stiffness, damping, drive mode) and rigid body shape properties for contact filtering.
- Task-specific object loading: Assembly objects (nuts, bolts, plugs, sockets, gears) are loaded from URDF files with dimensions specified in YAML asset info files.
- Parallel environment population: Environments are arranged in a grid layout, each containing one Franka robot, one table, and one or more assembly objects. Actors are instantiated per-environment with appropriate poses.
- GPU tensor acquisition: Tensor handles for DOF states, rigid body states, root states, contact forces, and Jacobians are acquired from Isaac Gym for efficient parallel state access.
This pipeline establishes the complete simulation state that the RL training loop operates on.
Usage
Use this principle when creating any Factory or IndustReal assembly environment. Scene initialization is the first phase executed during environment construction and must complete before any simulation stepping or observation collection occurs.
Specific use cases:
- FactoryEnvNutBolt: Loads Franka, table, nut assets (M8-M16), and bolt assets with threading geometry.
- IndustRealEnvPegs: Loads Franka, table, plug assets (round/rectangular), and socket assets with clearance holes.
- Custom Factory tasks: Follow the same pattern to create new assembly scenarios.
Theoretical Basis
The scene initialization follows an entity-component setup pattern common to GPU-accelerated physics simulations:
# Entity-component setup pattern
1. Create simulation (physics engine instance)
|
2. Load assets (templates for actors)
|-- Franka URDF -> franka_asset
|-- Object URDFs -> object_assets[]
|-- Table URDF -> table_asset
|
3. Instantiate actors in environments
|-- For each env_id in range(num_envs):
| create_actor(franka_asset, pose)
| create_actor(object_assets[i], pose)
| create_actor(table_asset, pose)
|
4. Acquire GPU tensor handles
|-- dof_state_tensor -> [num_envs * num_dofs, 2]
|-- rigid_body_state_tensor -> [num_envs * num_bodies, 13]
|-- contact_force_tensor -> [num_envs * num_bodies, 3]
|-- jacobian_tensor -> [num_envs, num_bodies, 6, num_dofs]
The tensor handles provide direct GPU memory access to simulation state, avoiding per-step CPU-GPU transfers. This is critical for performance when running thousands of parallel environments.