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 加速的物理仿真和更真实的视觉渲染。