Isaac Lab 环境 API 全解析:isaaclab.envs 模块的四大环境范式与配置体系
【免费下载链接】IsaacLabUnified framework for robot learning with multi-physics/renderer support项目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab
导读:isaaclab.envs是 Isaac Lab 统一机器人学习框架中定义"智能体与仿真之间交互接口"的核心子包。本文以 docs/source/api/lab/isaaclab.envs.rst 的 API 清单为骨架,逐类剖析 Manager-Based(管理器驱动)、Direct(直接式)、Multi-Agent(多智能体)与 Mimic(模仿学习数据生成)四套环境范式的类继承关系、核心方法契约与配置字段,并结合 source/isaaclab/isaaclab/envs 下的源码实现给出可直接落地的实操指引。读完本文,你将能根据任务类型选择正确的环境基类、理解 step/reset 的底层调用链,并正确配置ViewerCfg、SimulationCfg、decimation 等关键参数。
一、模块全景:环境在 Isaac Lab 中的定位
在 Isaac Lab 中,仿真场景(Scene)由机器人、物体、传感器等元件构成,而环境(Environment)是更高一层的抽象,它向智能体提供统一的交互接口。正如 envs/init.py 的模块文档所述:
Environments define the interface between the agent and the simulation.
最简情况下,环境向智能体提供当前观测(observations)并执行智能体给出的动作(actions);在此基础上,环境还可以提供奖励(reward)、终止标志(done)与回合信息(episode information)。
isaaclab.envs模块对外暴露两类环境设计工作流(对应两类顶层抽象):
- Manager-based(管理器驱动):环境被拆解为若干独立组件(manager),分别负责计算观测、应用动作、执行随机化等。用户的主要工作是对各 manager 进行配置,环境负责协调并调用它们。
- Direct(直接式):用户把场景搭建、终止判断、重置、奖励与观测计算等全部逻辑直接写进单个类,无需额外 manager。
基于这两种工作流,模块提供了单智能体与多智能体两套 RL 环境类,完整清单见下表(与 API 索引一一对应):
| 环境范式 | 类 | 配置类 | 适用场景 |
|---|---|---|---|
| Manager-based(基础) | ManagerBasedEnv | ManagerBasedEnvCfg | 只需观测与动作交互,不含 MDP 量的任务 |
| Manager-based(RL) | ManagerBasedRLEnv | ManagerBasedRLEnvCfg | 管理器驱动的单智能体 RL 任务 |
| Direct(RL) | DirectRLEnv | DirectRLEnvCfg | 直接式单智能体 RL 任务 |
| Direct(MARL) | DirectMARLEnv | DirectMARLEnvCfg | 直接式多智能体 RL 任务(PettingZoo Parallel API 风格) |
| Mimic | ManagerBasedRLMimicEnv | MimicEnvCfg(含SubTaskConfig、SubTaskConstraintConfig) | 基于少量人类演示自动合成大规模模仿学习数据集 |
| Common | ViewerCfg | — | 视口相机配置,被所有环境共享 |
此外模块还包含mdp与ui两个子模块(对应 API 索引中的 Submodules):mdp提供了观测、动作、奖励、终止、事件等可复用的 MDP 术语函数(位于 envs/mdp);ui提供视口相机控制器与基于 Manager 的 UI 窗口(位于 envs/ui)。
二、公共基石:ViewerCfg 与类型约定
2.1 ViewerCfg:视口相机配置
ViewerCfg定义于 envs/common.py,是所有环境共享的视口相机配置类,字段含义如下:
| 字段 | 默认值 | 说明 |
|---|---|---|
eye | (7.5, 7.5, 7.5) | 相机初始位置(单位:m) |
lookat | (0.0, 0.0, 0.0) | 相机初始注视点(单位:m) |
cam_prim_path | "/OmniverseKit_Persp" | 录制图像的相机 prim 路径,默认即视口中的默认相机 |
resolution | (1280, 720) | 相机分辨率(宽, 高) |
origin_type | "world" | 相机位置/注视点所在的参考系,可选"world"、"env"、"asset_root"、"asset_body" |
env_index | 0 | 当origin_type为"env"或"asset_root"时生效的环境索引 |
asset_name | None | 当origin_type为"asset_root"时生效的场景资源名 |
body_name | None | 当origin_type为"asset_body"时生效的 body 名 |
注意:源码中的__post_init__表明ViewerCfg已被标记为 deprecated——只要任一字段被显式修改为非默认值,就会触发DeprecationWarning,提示未来版本将并入KitVisualizerCfg。因此在新建任务配置时,建议仅在必须调整视口时使用它,并留意升级提示。
2.2 类型别名:环境返回数据的契约
envs/common.py 还定义了一组贯穿全模块的类型别名,理解它们对阅读环境源码至关重要:
VecEnvObs:观测字典。键为观测分组名(如"policy"、"critic"),值可以是字典(每个观测项一个键)或拼接后的单个张量。非对称 actor-critic 场景下 actor 与 critic 观测分别用"policy"与"critic"键访问。VecEnvStepReturn:step()的五元组返回(obs, rewards, terminated, time_outs, extras),对应各子环境的批量化信息。EnvStepReturn:多智能体版本的 step 返回,以AgentID为键组织观测、奖励、终止、超时与额外信息。AgentID:多智能体环境中智能体的唯一标识,通常是字符串(如"agent_0")。SpaceType/ObsType/ActionType/StateType:用于标注观测、动作、状态空间的合法类型哨兵。
三、Manager-Based 范式:从 ManagerBasedEnv 到 ManagerBasedRLEnv
3.1 ManagerBasedEnv:基础环境与五大 Manager
ManagerBasedEnv(见 envs/manager_based_env.py)是管理器驱动工作流的基础环境,由以下组件构成:
- Scene(场景管理器):创建并管理机器人、静态/动态物体、传感器等组成的虚拟世界。
- Observation Manager(观测管理器):从当前仿真状态与传感器数据生成观测,可包含真实世界不可得的特权信息,也支持用户自定义处理项(如用网络把高维观测嵌入低维空间)。
- Action Manager(动作管理器):把发送给环境的原始动作转换为发送给仿真的底层指令,支持不同抽象层级(关节力矩、关节位置、末端执行器位姿、移动底盘速度等)。
- Event Manager(事件管理器):基于仿真事件编排操作,如将场景重置为默认状态、按时间间隔施加随机推力、随机化质量与摩擦系数等,用于训练/评估的多样化。
- Recorder Manager(录制管理器):处理仿真各步骤产生的数据录制,按回合、按环境区分,并可经数据集文件句柄导出到文件。
关键设计点:基础环境对 MDP 定义不敏感——奖励函数、终止条件等与 MDP 强相关的量不属于ManagerBasedEnv,它们由 RL 子类提供。
在__init__中环境会依次执行cfg.validate()、resolve_cfg_presets(cfg)、种子设置、SimulationContext创建、InteractiveScene构建(见_init_sim中[INFO]: Time taken for scene creation计时块)、事件管理器实例化、sim.reset()播放仿真,最后通过load_managers()加载各 manager。
双时间步长机制:环境以固定时间步前进,而物理仿真在更小的时间步上"抽稀(decimation)"推进,以保证仿真稳定。两者可独立配置:
ManagerBasedEnvCfg.decimation:每个环境步对应的仿真步数;ManagerBasedEnvCfg.sim.dt:物理时间步。
环境时间步 = 两者乘积,可通过属性查询:physics_dt返回cfg.sim.dt,step_dt返回cfg.sim.dt * cfg.decimation。
核心操作 API:
reset(seed, env_ids, options):重置指定环境并返回(obs, extras)。内部调用_reset_idx→ 场景重置 →scene.write_data_to_sim()+sim.forward()→ 观测重算(observation_manager.compute(update_history=True))。若场景含 RTX 传感器且num_rerenders_on_reset > 0,会执行额外渲染以保证传感器数据不陈旧。reset_to(state, env_ids, ...):把环境重置到InteractiveScene.get_state()指定的具体状态(区别于随机化重置),支持is_relative相对环境原点。step(action):执行一个环境时间步。动作经action_manager.process_action处理后,进入物理步进循环——当物理后端支持 decimation 折叠时单次sim.step()完成全部子步,否则循环decimation次执行apply_action → write_data_to_sim → sim.step → scene.update。步进后应用 interval 事件、重算观测、执行录制钩子,返回(obs, extras)。seed(seed):同时设置 omni.replicator 全局种子与 torch 等库的种子(configure_seed)。close():按顺序停止仿真、清空观测缓冲、析构各 manager 与 scene,最后sim.clear_instance()。
step中的render_enabled属性值得注意:当为False时,Kit 应用循环(app.update())被跳过(相机/RTX 传感器渲染与 GUI 视口更新随之禁用),但 Newton、Rerun、Viser 等独立可视化器仍正常更新。
3.2 ManagerBasedRLEnv:补齐 MDP 量的 RL 环境
ManagerBasedRLEnv(ManagerBasedEnv, gym.Env)(见 envs/manager_based_rl_env.py)在基础环境之上追加四个 manager:
- Command Manager:生成高层指令(如目标位姿、速度指令),观测与奖励常依赖它;
- Termination Manager:判定终止(
terminated)与超时(time_outs); - Reward Manager:按
dt=step_dt计算奖励; - Curriculum Manager:依据
common_step_counter推进课程学习。
load_managers中的注释明确说明了加载顺序的重要性:observation manager 需要先知道 command 与 action manager,reward manager 需要先知道 termination manager,因此顺序为 command →(父类 actions/observations)→ termination → reward → curriculum。
该类以gym.Env为基类但刻意不继承gym.vector.VectorEnv,因为各 RL 库通常有自己的向量环境定义,由库侧 wrapper 负责适配。is_vector_env = True标记其为向量化环境,metadata["render_modes"] = [None, "human", "rgb_array"]。
step() 的七步流程(源码 docstring 明示):
- 处理动作(
action_manager.process_action); - 物理步进(同父类,含 decimation 折叠分支);
- 若启用 GUI 则渲染;
- 更新环境计数器(
episode_length_buf、common_step_counter)并计算奖励与终止; - 重置已终止/超时的环境(
_reset_idx(reset_env_ids),必要时补渲染); - 更新指令(
command_manager.compute(dt=step_dt))并应用 interval 事件; - 重算观测并返回
(obs, reward_buf, reset_terminated, reset_time_outs, extras)。
回合长度:max_episode_length由episode_length_s / step_dt向上取整得到,max_episode_length_s直接返回cfg.episode_length_s。render()支持"human"与"rgb_array"两种模式(后者在无 RTX 传感器且不强制重算时主动调用sim.render())。
实操提示:对于向量化环境,官方建议只在环境创建后、首次
step()之前调用一次reset(),此后由step()内部自动重置终止的子环境——因为仿真器不支持在向量化环境中单独重置某个子环境(两条环境类 docstring 均有此说明)。
3.3 ManagerBasedEnvCfg:字段全解
ManagerBasedEnvCfg(见 envs/manager_based_env_cfg.py)是管理器工作流的基类配置,常用字段如下:
| 字段 | 默认值 | 说明 |
|---|---|---|
viewer | ViewerCfg() | 视口相机配置 |
sim | SimulationCfg() | 物理仿真配置(dt、render_interval、设备等) |
ui_window_class_type | "isaaclab.envs.ui.base_env_window:BaseEnvWindow" | UI 窗口类;设为None则不创建,可继承BaseEnvWindow自定义 |
seed | None | 随机数种子,在环境初始化开始处设置以保证可复现;None时打印不确定警告 |
decimation | 必须显式设置(MISSING) | 每个策略步对应的仿真步数。例:仿真 dt=0.01s、策略 dt=0.1s 时取 10 |
scene | 必须显式设置(MISSING) | 场景配置InteractiveSceneCfg(num_envs等) |
observations | 必须显式设置(MISSING) | 观测空间配置(ObservationManager 的 term 列表) |
actions | 必须显式设置(MISSING) | 动作空间配置(ActionManager 的 term 列表) |
events | DefaultEventManagerCfg | 默认事件配置仅含reset_scene_to_default(mode="reset"),即把场景重置到默认状态 |
recorders | 空RecorderManagerBaseCfg | 录制配置,默认不录制任何内容 |
num_rerenders_on_reset | 0 | 重置后执行的额外渲染步数;0表示不渲染(传感器数据在重置后会陈旧),大于0会付出性能代价 |
rerender_on_reset | False | 已废弃(2.3.1 起),等价于num_rerenders_on_reset取 1/0,触发FutureWarning |
wait_for_textures | True | 是否等待资源完全加载 |
xr | None | XR 设备查看/交互配置 |
teleop_devices | DevicesCfg() | 遥操作设备配置 |
isaac_teleop | None | IsaacTeleop 栈的 XR 遥操作配置(来自 isaaclab_teleop 包) |
export_io_descriptors | False | 是否导出环境的 IO descriptors(观测/动作/关节/场景的输入输出描述) |
log_dir | None | 实验产物日志目录 |
video_recorder | VideoRecorderCfg() | render_mode="rgb_array"(--video)时的视频录制配置 |
ManagerBasedRLEnvCfg在父类基础上追加episode_length_s(回合时长,秒)、rewards、terminations、commands、curriculum等 MDP 相关配置,并从gym.Env侧派生观测/动作空间的 Gym 化(_configure_gym_env_spaces)。
四、Direct 范式:DirectRLEnv 与 DirectMARLEnv
4.1 DirectRLEnv:一切逻辑写进一个类
DirectRLEnv(gym.Env)(见 envs/direct_rl_env.py)是直接式工作流的 RL 环境基类。与 Manager-based 不同,它要求用户实现以下抽象方法(源码中以@abstractmethod标注,文章不逐一列举行号,方法名以源码为准):
_setup_scene():向InteractiveScene注册资产与传感器(源码 direct_rl_env.py 附近可见该方法声明);get_observations()/get_rewards()/get_dones()/get_reset():分别计算观测、奖励、终止标志与重置逻辑;_set_sim_state()/_get_states():写入/读取环境状态(_get_states返回VecEnvObs | None,供有状态观测的任务使用)。
初始化流程与 Manager-based 类似但更直接:cfg.validate()→ 种子设置 →SimulationContext创建(此处若已存在 SimulationContext 会直接RuntimeError,而非像 Manager 版那样兼容扩展模式)→ 场景搭建 →sim.reset()→ 从observation_space/action_space/state_space规格构造 Gym 空间。
4.2 DirectRLEnvCfg:字段要点
DirectRLEnvCfg(见 envs/direct_rl_env_cfg.py)与ManagerBasedEnvCfg共享viewer、sim、seed、decimation、scene、events、num_rerenders_on_reset、wait_for_textures等基础字段,差异集中在空间定义上:
| 字段 | 默认值 | 说明 |
|---|---|---|
observation_space | 必须设置(MISSING) | 观测空间定义(Gym Space 或张量维度规格) |
num_observations | None | 每环境实例的观测维度(若未由 space 推导) |
state_space/num_states | None | 状态空间定义/维度(如无状态则为None) |
action_space | 必须设置(MISSING) | 动作空间定义 |
num_actions | None | 动作维度 |
observation_noise_model/action_noise_model | None | 观测/动作噪声模型(NoiseModelCfg),用于 sim2real 域随机化 |
episode_length_s | 必须设置(MISSING) | 回合时长(秒) |
is_finite_horizon | False | 学习任务是否为有限时域问题 |
4.3 DirectMARLEnv:多智能体扩展
DirectMARLEnv(gym.Env)(见 envs/direct_marl_env.py)将 Direct 范式推广到多智能体,设计基于PettingZoo Parallel API,同样刻意不继承pettingzoo.ParallelEnv或gym.vector.VectorEnv。所有数据均以AgentID为键组织。
DirectMARLEnvCfg(见 envs/direct_marl_env_cfg.py)与单智能体版本的差异:
observation_spaces/action_spaces:dict[AgentID, SpaceType],为每个智能体单独定义空间;num_observations/num_actions:dict[AgentID, int];observation_noise_model/action_noise_model:dict[AgentID, NoiseModelCfg | None];possible_agents:list[AgentID],声明环境中所有可能的智能体。
step()返回EnvStepReturn(观测/奖励/终止/超时/额外信息均为按AgentID键控的字典)。多智能体相关的观测组织与辅助逻辑位于 envs/utils/marl.py。
五、Mimic 范式:ManagerBasedRLMimicEnv 与数据生成配置
5.1 设计思想:从少量人类演示合成大规模数据集
ManagerBasedRLMimicEnv(ManagerBasedRLEnv)(见 envs/manager_based_rl_mimic_env.py)继承自ManagerBasedRLEnv,为Isaac Lab Mimic 数据生成流水线提供模板。该流水线受 MimicGen 启发:把人类演示解析为以物体为中心的分段(segments),再依据新场景上下文对每段做变换、拼接成可供机器人末端执行器执行的连贯轨迹,从而用极少量人工采集的演示自动合成大规模、高丰富度的数据集,显著降低收集海量人类演示的时间与人力成本。
其关键特征(源码 docstring 明确列出):
- 高效数据集生成:少量人类演示即可产出大规模示范数据;
- 广泛适用性:支持 pick-and-place、与铰接物体交互等各类操作技能;
- 数据集多样性:合成数据质量可与额外采集的人类演示相媲美。
5.2 必须实现的钩子方法
该基类定义了若干由子任务实现的模板方法(源码中均raise NotImplementedError,即契约而非实现):
| 方法 | 职责 |
|---|---|
get_robot_eef_pose(eef_name, env_ids) | 获取指定末端执行器的当前位姿((len(env_ids), 4, 4)变换矩阵),应与机器人 EEF 控制器使用同一坐标系 |
target_eef_pose_to_action(target_eef_pose_dict, gripper_action_dict, action_noise_dict, env_id) | 把目标 EEF 位姿与夹爪动作转换为可直接送入env.step()的动作(通常是归一化增量位姿动作),可附加噪声 |
action_to_target_eef_pose(action) | 逆映射:从动作恢复目标 EEF 位姿,用于数据处理与回放 |
5.3 MimicEnvCfg 与子任务配置
MimicEnvCfg(见 envs/mimic_env_cfg.py)整合了 Mimic 数据生成的各类配置:
datagen_config: DataGenConfig:数据生成过程的总体配置;subtask_configs: dict[str, list[SubTaskConfig]]:每个末端执行器(键)对应的子任务配置列表;task_constraint_configs: list[SubTaskConstraintConfig]:多 EEF 场景下的子任务间约束配置;mimic_recorder_config:可选的录制器配置。
DataGenConfig 关键字段(源码 mimic_env_cfg.py):
| 字段 | 默认值 | 说明 |
|---|---|---|
name | "demo" | 数据生成进程名称 |
generation_guarantee | True | 是否重试生成直到产出generation_num_trials条成功演示 |
generation_keep_failed | False | 是否保留失败的生成尝试(便于可视化与调试低成功率) |
max_num_failures | 50 | 停止生成前允许的最大失败次数 |
seed | 1 | 随机种子,保证可复现 |
source_dataset_path | None | 源人类演示数据集路径 |
generation_path | None | 生成数据输出路径 |
generation_num_trials | 10 | 生成的演示数量 |
task_name | None | 任务名称 |
generation_select_src_per_subtask/per_arm | False | 是否按子任务/按机械臂分别选择源数据 |
generation_transform_first_robot_pose | False | 是否变换首段机器人位姿 |
generation_interpolate_from_last_target_pose | True | 是否从上一目标位姿插值 |
use_skillgen | False | 是否启用 skillgen |
use_navigation_controller | False | 是否使用导航控制器 |
SubTaskConfig(源码 mimic_env_cfg.py)描述单个子任务:
- 必填项:
object_ref(本子任务涉及的物体引用,无则None)、subtask_term_signal(子任务终止信号名)。 - 高级项:
selection_strategy(子任务分段选择策略,可选'random'、'nearest_neighbor_object'、'nearest_neighbor_robot_distance';后两者需设置object_ref,通常成功率更高)、selection_strategy_kwargs(传给select_source_demo的额外参数)、first_subtask_start_offset_range/subtask_start_offset_range/subtask_term_offset_range(起始/终止偏移范围)、action_noise(默认0.03,动作噪声幅度)、num_interpolation_steps(默认5,路点间插值步数)、num_fixed_steps(固定步数)、apply_noise_during_interpolation、description/next_subtask_description(子任务描述与下一子任务指令)。
SubTaskConstraintConfig(源码 mimic_env_cfg.py)描述多 EEF 场景下子任务间的约束:
eef_subtask_constraint_tuple:关联的子任务二元组列表,每项为(eef 名, eef 的子任务索引);constraint_type:约束类型枚举SubTaskConstraintType(SEQUENTIAL顺序 /COORDINATION协同);sequential_min_time_diff:顺序约束下两个子任务完成的最小时间差,-1表示第二子任务须等第一子任务完全结束才开始;coordination_scheme:协同方案枚举SubTaskConstraintCoordinationScheme(REPLAY/TRANSFORM/TRANSLATE);coordination_scheme_pos_noise_scale/coordination_scheme_rot_noise_scale:协同期间的位置/旋转噪声尺度;coordination_synchronize_start:是否同步开始。
六、子模块速览:mdp 与 ui
API 索引将mdp与ui列为isaaclab.envs的子模块:
isaaclab.envs.mdp(envs/mdp):提供 MDP 术语的实现与配置类,是 Manager-based 环境的"零件库":actions/:JointActionCfg、TaskSpaceActionCfg、NonHolonomicActionCfg、SurfaceGripperActionCfg等动作 term;commands/:Pose2DCommandCfg、PoseCommandCfg、VelocityCommandCfg、NullCommandCfg等指令 term;observations.py/rewards.py/terminations.py/events.py/curriculums.py:对应的观测、奖励、终止、事件、课程 term 函数库;recorders/:录制器 term。
isaaclab.envs.ui(envs/ui):ViewportCameraController管理视口相机,BaseEnvWindow及ManagerBasedRLEnvWindow提供 Manager 实时可视化 UI,配合ManagerLiveVisualizer可在界面中实时查看观测/动作/奖励等项。
七、从 API 到实战:如何选择与使用
7.1 选型决策
- 需要 manager 复用、高配置性、偏好声明式定义(观测/奖励/终止全部用 term 配置声明)→
ManagerBasedRLEnv+ManagerBasedRLEnvCfg,这是 Isaac Lab 任务仓库中最主流的工作流(isaaclab_tasks中大量任务即采用该范式)。 - 需要完全掌控环境逻辑、实现灵活(例如自定义复杂状态机、特殊重置逻辑)→
DirectRLEnv+DirectRLEnvCfg。 - 多智能体协作/对抗任务→
DirectMARLEnv+DirectMARLEnvCfg(按possible_agents声明智能体集合)。 - 模仿学习数据生成(基于少量人类演示合成新任务数据集)→ 继承
ManagerBasedRLMimicEnv,实现 EEF 位姿钩子方法,并用MimicEnvCfg组织子任务。
7.2 最小使用模式
无论选择哪种范式,使用方式高度一致:
- 定义环境配置类(继承对应
*EnvCfg),显式设置scene、decimation、观测/动作(以及 RL 版本的episode_length_s、奖励、终止等)。 - 实例化环境(如
env = ManagerBasedRLEnv(cfg, render_mode="human"))。 - 首次调用
env.reset()获取初始观测;之后进入obs, rew, terminated, timeout, extras = env.step(action)循环,由环境自动处理子环境重置。 - 训练时,通过各 RL 框架的封装(如 RSL-RL、RL-Games、skrl、SB3 的 wrapper)将环境适配给具体智能体——这正是
VecEnvObs中"policy"/"critic"分组约定的用武之地。
7.3 关键注意事项
- decimation 是必填项(
MISSING),配置错误会直接校验失败;physics_dt与step_dt分别对应仿真步长与环境步长。 ViewerCfg已弃用:非默认配置会触发DeprecationWarning,新代码应关注KitVisualizerCfg的演进。rerender_on_reset已弃用:请改用num_rerenders_on_reset(2.3.1 起)。- 向量化环境只 reset 一次:此后依赖
step()内部自动重置,切勿在训练循环中反复调用reset()。 - Direct 范式下不可重复创建 SimulationContext:
DirectRLEnv.__init__在检测到已存在的SimulationContext时直接抛出RuntimeError。 - IO descriptors:设置
export_io_descriptors=True与log_dir后,环境会把观测/动作/关节/场景的输入输出描述导出为IO_descriptors.yaml(见export_IO_descriptors实现),便于模型部署阶段的接口对齐。
八、总结
isaaclab.envs以"环境 = 智能体与仿真的接口"为设计核心,通过 Manager-Based 与 Direct 两条工作流、单/多智能体两套 RL 基类,以及 Mimic 数据生成扩展,覆盖了从标准单智能体 RL、多智能体 MARL 到模仿学习数据集合成的全部主流场景。理解ManagerBasedEnv的五大 manager 与双时间步长机制、DirectRLEnv的抽象方法契约、DirectMARLEnv的按智能体数据组织方式,以及MimicEnvCfg的子任务/约束配置体系,是在 Isaac Lab 上高效搭建、调试与训练机器人学习任务的基础。本文所述全部接口、字段与行为均以当前仓库 source/isaaclab/isaaclab/envs 的源码实现为准,可直接在仓库中继续深入研读每一类的完整实现与测试用例。
【免费下载链接】IsaacLabUnified framework for robot learning with multi-physics/renderer support项目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考