跳转至

isaac_env.py — IsaacEnv 是基于 NVIDIA Isaac Sim 仿真器的环境封装

文件路径: verl/experimental/vla/envs/isaac_env/isaac_env.py 模块路径: verl.experimental.vla.envs.isaac_env.isaac_env

文件概述

IsaacEnv 是基于 NVIDIA Isaac Sim 仿真器的环境封装。与 LiberoEnv 接口类似,但底层使用 Isaac Sim 的物理引擎,支持更高保真度的机器人仿真。

核心设计

与 LiberoEnv 的对比

特性 LiberoEnv IsaacEnv
仿真器 MuJoCo/robosuite NVIDIA Isaac Sim
启动方式 普通 Python 进程 需要 AppLauncher
GPU 加速 仅渲染 物理+渲染全 GPU
并行方式 子进程(SubprocVectorEnv) 内置 GPU 并行

特殊要求

Isaac Sim 需要特殊的启动方式:

class IsaacEnv:
    def __init__(self, config, rank, world_size):
        # Isaac Sim 需要 AppLauncher 启动
        from omni.isaac.lab.app import AppLauncher
        app_launcher = AppLauncher(headless=True)

        # 创建环境
        self.env = ...

接口一致性

IsaacEnv 提供了与 LiberoEnv 相同的接口:

def reset_envs_to_state_ids(self, state_ids, task_ids):
    """重置环境到指定状态"""
    ...

def chunk_step(self, chunk_actions):
    """执行动作 chunk"""
    ...

def flush_video(self, video_sub_dir=""):
    """保存视频"""
    ...

核心类/函数列表

名称 类型 说明
IsaacEnv 类 Isaac Sim 环境封装
reset_envs_to_state_ids 方法 状态重置
chunk_step 方法 动作 chunk 执行

与其他模块的关系

  • 与 LiberoEnv 实现相同的接口
  • 被 EnvManager(workers/env/env_manager.py)根据配置选择性创建
  • 需要 Isaac Sim 和 Isaac Lab 环境

小结

IsaacEnv 是高保真机器人仿真的环境封装。它与 LiberoEnv 接口一致,使得训练代码可以无缝切换仿真器。Isaac Sim 的优势是 GPU 加速的物理仿真和更真实的视觉渲染。