type
status
date
slug
summary
tags
category
icon
password
文本

isaaclab

./isaaclab.sh -p scripts/reinforcement_learning/skrl/train.py --task Isaac-Navigation-Flat-Anymal-C-v0 --headless
使用命令
./isaaclab.sh -p scripts/reinforcement_learning/skrl/play.py --task Isaac-Navigation-Flat-Anymal-C-v0 --num_envs 64
 
截图
推理
notion image
 

仓库架构详解

  • 根层:根目录含环境与工具入口(isaaclab.sh/isaaclab.bat、environment.yml、pyproject.toml)、通用配置(pytest.ini、VERSION、CITATION.cff)、顶层文档 README.md,以及开发/依赖说明。
  • 源码分层:
    • 核心框架 isaaclab:包级元数据在 __init__.py。子模块按功能拆分:
      • 场景与模拟:场景管理 scene、仿真上下文与配置 sim。
      • 设备与传感:传感器基类及类型 sensors、硬件接口 devices。
      • 控制与动作:控制器实现与配置 controllers,涵盖差分 IK、操作空间控制、RMP flow、Pink IK 等。
      • 环境层:通用环境基类与 UI 配置在 envs,同时有直连 RL 环境和 manager-based 环境的 cfg/实现。
      • 管理器体系 managers:将动作、观测、奖励、事件、课程、终止条件等解耦为独立 manager;提供场景实体与 recorder 支持。
      • 资源与标记:资产加载 assets、可视化标记 markers。
      • 地形与仿真支持:地形生成 terrains、物理接口 app。
      • 工具库 utils:数组/数学/插值、噪声、IO、mesh、seed、计时器、Warp 等实用组件。
    • 任务库 isaaclab_tasks:按范式拆分 direct 与 manager_based;场景/任务分类子包 classic、locomotion、manipulation、navigation、locomanipulation 等。
    • 资产库 isaaclab_assets:机器人定义在 robots(anymal、franka、spot、unitree、humanoid 等 Python 资产配置),传感器资产在 sensors。
    • RL 适配层 isaaclab_rl:对 rsl_rl、skrl、rl_games、Stable Baselines 的适配封装,统一训练/推理接口。
    • Mimic 扩展 isaaclab_mimic:含数据生成、模仿/运动规划环境、Locomanipulation SDG、UI 等子模块。
  • 运行与脚本:
    • 训练/演示脚本集合 scripts:含 benchmarks、demos、environments、imitation_learning、reinforcement_learning、sim2sim_transfer、tutorials,以及公共工具 tools。
    • 开发/CI 辅助 tools:安装依赖、批量训练、测试驱动与模板。
    • 应用配置 apps:Isaac Sim / XR 启动配置与渲染模式预设,供无头/渲染/VR 等模式启动。
  • 数据与输出:
    • 运行日志 logs 与训练产物 outputs(权重、事件、Hydra 配置、录像)。
    • 文档源 docs:Sphinx 配置、指南、教程、API 说明及许可证归档。
  • 交互与元数据:
    • 包版本与扩展元数据在 source/isaaclab/isaaclab/config/extension.toml(由 __init__.py 解析)。
    • pip 安装包装:各子包均有独立 pyproject/setup,用于分别发布核心、资产、任务、mimic、RL 适配层。
 

调参

1. 训练脚本 (train.py) 的命令行参数

这些参数用于控制训练流程的各个方面:
  • -video-video_length-video_interval:
    • 作用: 控制训练过程的视频录制。
    • -video: 启用录制功能。
    • -video_length: 指定每段录制视频的长度(以环境步数计)。
    • -video_interval: 指定录制的频率,例如每隔 N 次训练迭代录制一次。
    • 用途: 当你想要可视化智能体的学习进展时非常有用,可以直观地看到它在训练初期、中期和末期的行为变化。
  • -task:
    • 作用: 指定要训练的 Gym 环境的唯一ID,例如 Isaac-Cartpole-v0。这是启动训练时最重要的参数之一,它决定了机器人、场景和任务。
  • -agent 与 -algorithm:
    • 作用: 选择 skrl 库中预定义的 Agent 配置和具体的强化学习算法。
    • -agent: 通常指向一个配置文件,定义了 Agent 的网络结构、超参数等。
    • -algorithm: 指定使用的算法,如 PPO (近端策略优化), AMP (对抗性运动先验), IPPO (独立近端策略优化), MAPPO (多智能体近端策略优化) 等。
    • 用途: 方便你快速切换不同的 RL 算法来解决同一个任务,进行算法性能比较。
  • -ml_framework:
    • 作用: 选择机器学习后端框架。
    • 选项torch (PyTorch), jaxjax-numpy
    • 用途: Isaac Lab 支持多种主流框架,你可以根据自己的熟悉程度或特定算法的需求来选择。
  • -seed:
    • 作用: 设置随机种子,用于初始化环境和算法的随机数生成器。
    • 用途: 为了保证实验的可复现性。使用相同的种子可以在相同的代码和设置下得到完全相同的训练结果。设置为 1 表示使用一个随机的种子。
  • -distributed:
    • 作用: 启用分布式训练模式。
    • 用途: 当你有多个 GPU 或多台机器时,可以使用此选项来加速训练过程。
  • -checkpoint:
    • 作用: 从一个指定的检查点文件(.pt 或 .safetensors)恢复训练。
    • 用途: 如果训练意外中断,或者你想在之前训练的基础上继续微调模型,可以使用此参数加载模型权重、优化器状态等,然后继续训练。
  • -max_iterations:
    • 作用: 覆盖在配置文件中设定的总训练迭代次数。
    • 用途: 方便进行快速测试或短期训练,而无需修改配置文件。例如,你可以设置一个较小的迭代次数来验证代码能否正常运行。
  • -export_io_descriptors:
    • 作用: (仅适用于 Manager-based 环境)导出一个描述环境输入(观测)和输出(动作)格式的 YAML 文件。
    • 用途: 这对于将训练好的模型部署到真实机器人上(Sim2Real)非常关键。导出的文件清晰地定义了模型与环境交互的数据接口。

2. 推理脚本 (play.py) 的命令行参数

这些参数用于加载已训练好的模型并进行评估或可视化。
  • -video-video_length:
    • 作用: 与训练时类似,用于在推理(播放)过程中录制视频。
    • 用途: 生成最终的模型效果演示视频。
  • -disable_fabric:
    • 作用: 禁用 Isaac Sim 的 Fabric 数据管理系统,转而使用标准的 USD I/O。
    • 用途: 在某些特定场景或调试时可能需要切换底层数据处理方式。
  • -checkpoint:
    • 作用: 指定要加载并用于推理的模型检查点文件路径。这是推理时最核心的参数。
  • -use_pretrained_checkpoint:
    • 作用: 一个便捷开关,如果启用,脚本会自动从网上下载并使用为该任务发布好的官方预训练模型。
    • 用途: 当你不想自己训练,只想快速查看某个任务的最终效果时,这个参数非常方便。
  • -real-time:
    • 作用: 尝试让仿真环境按照其实际的物理时间步长 (sim.dt) 来运行,而不是以最快速度执行。
    • 用途: 获得更符合真实世界节奏的观感,而不是一瞬间就完成所有动作。

3. AppLauncher 提供的公共参数

这些参数由 isaaclab.app.app_launcher 模块统一提供,因此在 train.py 和 play.py 中都能使用。
  • -device:
    • 作用: 选择用于物理仿真的计算设备。
    • 选项cuda:0cuda:1cpu 等。
    • 用途: 指定在哪块 GPU 上运行仿真。注意,这与机器学习框架使用的设备(通常在算法配置中定义)是两个概念,但它们通常被设置为同一个设备。
  • -headless:
    • 作用: 开启无头模式,即不创建图形用户界面(GUI)。仿真在后台计算。
    • 用途: 在服务器上进行大规模训练时必须开启,因为服务器通常没有显示器,而且关闭渲染可以极大地节省计算资源,加快训练速度。
 

motrixlab

uv run scripts/train.py --env go1-flat-terrain-walk uv run scripts/play.py --env go1-flat-terrain-walk
notion image

文件结构

顶层
  • README.md / README.zh-CN.md: 项目介绍、安装和使用说明。
  • pyproject.toml, ruff.toml, uv.toml: Python 包管理与代码规范配置。
  • LICENSE, NOTICE: 版权与法律声明。
docs/
  • Sphinx/Markdown 文档源,含中英文用户指南、教程与案例。
  • 核心入口 index.md 与 index.md。
  • 关键教程示例:
    • 基础框架与训练流程:basic_frame.md
    • 训练环境配置与奖励设计:training_environment_config.md
    • 示例任务(如 cartpole、Unitree Go1):locomotion_unitree_go1.md
scripts/
  • 训练与演示入口脚本:
    • 训练:train.py(选择 env,设置后端 jax/torch,启动 PPO 训练)
    • 推理演示:play.py(加载最新/指定 checkpoint 回放)
    • 环境预览:view.py(随机动作+渲染,用于检查物理/渲染)
  • 辅助:GPU 利用率统计 gpu_utils.py;IsaacLab/Go1 运行脚本。
motrix_envs/
  • 机器人仿真环境定义(物理、观测、动作、奖励)。
  • 核心基类:
    • 环境配置/接口:base.py
    • 注册表(env 名到实现与后端映射):registry.py
    • NumPy 后端通用环境框架(加载 MJCF,步进,重置,向量化):env.py
    • 渲染器: renderer.py
    • 奖励/容忍度工具: reward.py
  • 典型任务:
    • Unitree Go1 平地行走:配置 cfg.py,环境逻辑(观测/奖励/终止)walk_np.py;模型与资产在 xmls。
    • 其他基础/演示任务位于 basic 等目录(如 cartpole、dm walker)。
  • 公共资源:几何/材质/天空盒等在 common。
motrix_rl/
  • 强化学习算法与配置封装,主要面向 SKRL 的 PPO。
  • 基础配置: base.py
  • 配置注册: registry.py(env + 框架 + 后端 -> RL 配置)。
  • 设备探测工具: utils.py(检测 torch/jax GPU 可用性)。
  • SKRL PPO 配置:
    • 通用 PPO 参数: cfg.py
    • 具体任务覆盖(cartpole、dm-walker、go1 等): cfgs.py
  • 训练入口(由 scripts 调用):motrix_rl.skrl.jax / motrix_rl.skrl.torch 下的 train/ppo 目录(未在上文展开,但脚本会导入)。
runs/
  • 训练输出与日志,含 TensorBoard 事件和 checkpoints(如 runs/go1-flat-terrain-walk/…)。play.py 会在此自动查找最新或 best_agent。
motrix_lab.egg-info
  • 打包元数据(由构建产生)。
 
uv run scripts/train.py --env go1-flat-terrain-walk
uv run scripts/play.py --env go1-flat-terrain-walk

调参

训练阶段 CLI 参数(train.py:29-54)

  1. -env(train.py:29)
      • 类型:字符串,默认 "cartpole"
      • 含义:指定要训练的环境注册名,必须在 motrix_envs.registry 中已注册
      • 用法:-env=go1-flat-terrain-walk 或 -env=dm-walker-walk
  1. -sim-backend(train.py:31-35)
      • 类型:字符串,默认 None
      • 含义:指定物理仿真后端(如 "np"),为空时自动选择环境支持的首个后端
      • 用法:-sim-backend=np
  1. -num-envs(train.py:46)
      • 类型:整数,默认 2048
      • 含义:并行环境数量,控制向量化采样的规模,影响显存/内存占用和采样效率
      • 用法:-num-envs=4096 提高吞吐,-num-envs=512 降低资源消耗
  1. -render(train.py:48)
      • 类型:布尔,默认 False
      • 含义:训练时是否开启可视化渲染窗口,便于调试但消耗 GPU 资源
      • 用法:-render 或 -render=true
  1. -train-backend(train.py:50)
      • 类型:字符串,默认 "jax"
      • 含义:强化学习框架后端(jax 或 torch),若不指定则根据硬件自动选择(train.py:96-99优先 GPU)
      • 用法:-train-backend=torch 强制使用 PyTorch
  1. -seed(train.py:52)
      • 类型:整数,默认 None
      • 含义:固定随机种子以确保训练可复现,与 --rand-seed 互斥
      • 用法:-seed=42
  1. -rand-seed(train.py:54)
      • 类型:布尔,默认 False
      • 含义:启用后强制使用随机种子,每次训练产生不同结果
      • 用法:-rand-seed

推理阶段 CLI 参数(play.py:35-54)

  1. -env(play.py:35)
      • 类型:字符串,默认 "cartpole"
      • 含义:加载的环境名称,需与训练时一致以保证策略兼容性
      • 用法:-env=go1-flat-terrain-walk
  1. -sim-backend(play.py:38-42)
      • 类型:字符串,默认 None
      • 含义:指定仿真后端,留空则自动选择
      • 用法:-sim-backend=np
  1. -policy(play.py:45)
      • 类型:字符串,默认 None
      • 含义:手动指定策略权重文件的完整路径;不传则在 runs/<env>/最新run/checkpoints/ 下自动搜索 best_agent.* 或时间步最大的 agent_*.pt/pickle
      • 用法:-policy=runs/go1-flat-terrain-walk/26-01-13_05-17-36-349746_PPO/checkpoints/best_agent.pickle
  1. -num-envs(play.py:48)
      • 类型:整数,默认 2048
      • 含义:推理时的并行环境数量,控制一次性演示的轨迹批量大小
      • 用法:-num-envs=1 单轨迹演示,-num-envs=512 批量评估
  1. -seed(play.py:51)
      • 类型:整数,默认 None
      • 含义:固定推理随机种子以保证轨迹可复现
      • 用法:-seed=123
  1. -rand-seed(play.py:54)
      • 类型:布尔,默认 False
      • 含义:强制随机种子,每次推理产生不同轨迹,便于测试策略鲁棒性
      • 用法:-rand-seed
  1. enable_render(play.py:164,非 CLI)
      • 代码硬编码为 True
      • 含义:推理默认开启渲染,若需无头运行需修改源码或新增 -headless flag