ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Isaac Lab机器人强化学习框架:从仿真环境搭建到四足机器人策略训练

Isaac Lab机器人强化学习框架:从仿真环境搭建到四足机器人策略训练 如果你正在研究机器人强化学习大概率听过 Isaac Lab 的名字。很多初学者第一次看到它时会有一个误解以为它只是一个“看起来更真实的机器人仿真器”。实际上Isaac Lab 的定位要深一层——它是一套在 NVIDIA Isaac Sim 之上构建的机器人强化学习框架目标是把“配置仿真环境、定义机器人、设计奖励、并行采样、对接 RL 算法库”这条完整链路标准化。换句话说它解决的不是“画面好不好看”而是“从零到训练出一条机器人运动策略到底要写多少重复代码”的问题。这篇文章会围绕人形机器人、四足机器人和机械臂三类对象展开讲清楚 Isaac Lab 的核心概念、环境搭建、任务配置、训练验证和常见坑位。文章不是纯概念科普会给出可复制的配置示例和命令适合正在入门机器人强化学习、或者想在仿真环境里验证算法想法的读者。1. 为什么做机器人强化学习不能绕过 Isaac Lab先看一个真实痛点。假设你现在想用强化学习训练一只四足机器人学会行走传统流程大概是导入机器人模型、编写仿真环境接口、设计观测和奖励、写 PPO 训练脚本、处理多环境并行采样、保存策略、回放验证。如果每一步都从零开始哪怕只做最基础的版本也要花费数周时间。更麻烦的是不同机器人平台的代码往往不能复用换一个机器人、换一个任务很多环境代码都要重写。Isaac Lab 的意义就在于把“任务定义”和“算法训练”做了清晰分层。你只需要关注三件事机器人资产怎么加载、观测和行动怎么定义、奖励函数怎么设计。剩下的仿真步进、批量采样、数据采集、与 RL 库通信框架已经帮你串起来了。它默认支持多环境并行可以在 GPU 上同时跑几千个仿真环境让 PPO 这类需要大量样本的算法变得可承受。从项目整体看Isaac Lab 也是 NVIDIA 在机器人方向的重要布局。它不只是一个学术工具而是面向后续 sim-to-real 迁移、机器人基础模型训练和数据生成的工程平台。换句话说学 Isaac Lab不只是学一个工具而是在理解一套“现代机器人强化学习任务是如何工业化落地”的范式。当然它也有学习门槛。Isaac Lab 不是开箱即用的玩具它要求你具备基础的 Python 能力、有一定强化学习概念并且能理解三维空间、刚体动力学、关节控制这些机器人学基础。这篇文章会尽量把这些概念放在具体任务里解释让新手也能跟上。2. Isaac Lab 的核心概念与工作方式2.1 从 Isaac Sim 到 Isaac LabIsaac Sim 是 NVIDIA 基于 Omniverse 平台构建的机器人仿真软件它的底层渲染和物理引擎是 NVIDIA 独立研发的。Isaac Sim 本身已经可以导入 URDF、MJCF、USD 等格式的机器人模型并支持传感器仿真、物理属性调试、路径规划等功能。但它是一个偏底层的仿真平台如果你想在它之上做强化学习训练还需要自己处理很多“流水线”工作。Isaac Lab 正是为了解决这个问题而诞生的。它建立在 Isaac Sim 之上提供了一套强化学习环境的标准接口。比如你想定义“观察空间”不需要关心相机数据如何传输、关节编码器数据如何读取只需要在配置类里声明观察项你想定义“奖励”也不需要关心如何在每个仿真步里遍历机器人只需要写一个接收张量、返回奖励张量的函数。从架构看可以简化成三层最底层是 Isaac Sim 提供物理仿真能力中间层是 Isaac Lab 对任务和环境进行抽象最上层是 rl_games、skrl、RLlib 这样的强化学习算法库。Isaac Lab 本身不实现 PPO 算法它通过标准化接口让训练脚本可以对接多种算法库这也是它和很多“仿真器 自定义训练代码”方案最大的不同。2.2 Manager-based 与 Direct 两种工作方式Isaac Lab 提供了两种任务实现方式理解这个区别非常重要。第一种是 Manager-based也叫基于配置管理的方式。所有环境逻辑被打散成可独立配置的组件观测管理器负责组织观察项行动管理器负责把策略输出的行动映射到机器人关节奖励管理器负责汇总奖励项事件管理器负责添加随机扰动。你不需要写一个巨大的环境类只需要创建各类 Config 对象然后把它们组合起来。这种方式的优点是模块化强、可复用性高适合复杂任务和团队协作。第二种是 Direct 方式。它更接近传统强化学习环境写法直接在环境类里实现_get_observations、_get_rewards、_apply_action这些方法。优点是代码流程直观、调试方便适合快速验证想法和自定义程度高的任务。缺点也很明显任务一旦复杂代码会膨胀而复用性差。对新手来说我建议先从 Direct 方式的一个小任务入手理解仿真环境和强化学习算法的交互方式等需要做复杂奖励和多人协作时再切换到 Manager-based。文章后面给出的示例会覆盖 Manager-based 的核心配置思路因为这是 Isaac Lab 最能体现工程价值的部分。2.3 强化学习三要素在 Isaac Lab 中的落点如果你熟悉强化学习一定知道 observation、action、reward 三大要素。在 Isaac Lab 里它们对应着三个非常具体的实现位置。观察信息通常来自机器人本体状态和外部环境。本体状态包括关节角度、关节速度、机体线速度、角速度、重力向量等外部信息包括目标位置、障碍物距离等。在 Manager-based 方式中观测项通过ObservationsCfg配置每个观测项是一个函数输入环境状态输出一个张量。行动定义决定了策略网络输出如何影响机器人。常见的做法有两种一种是直接输出关节位置目标或关节力矩另一种是输出相对当前状态的增量。Isaac Lab 的行动管理器负责处理这些映射。四足机器人运动任务通常使用关节位置目标加上 PD 控制器这样策略学起来更容易仿真也相对稳定。奖励设计是最影响训练结果的部分。Isaac Lab 的奖励管理器把总奖励拆分成多个 “reward term”每个 term 是一个奖励函数。比如速度追踪任务里奖励可以由“跟踪目标速度”“保持机体稳定”“减少关节冲击”等项组成。每个奖励项还有独立的权重如何配平这些权重直接决定了最终学出来的步态风格。3. 环境准备与安装3.1 硬件要求Isaac Lab 对硬件有明确要求最关键的是 NVIDIA GPU。物理仿真虽然可以在 CPU 上运行但强化学习需要大量样本CPU 仿真速度通常无法训练复杂机器人任务。推荐显存在 8GB 以上的 NVIDIA GPU显存越大可以并行的环境数量越多训练速度越快。操作系统方面Linux 是最常见的开发环境官方文档也是以 Linux 为主。Windows 也可以运行但在安装和编译方面可能多一些问题。内存建议 32GB 起步因为同时加载多个仿真环境、存放训练数据和策略网络参数需要较大内存。需要说明的是具体版本适配信息请以 NVIDIA 官方文档为准这里不写死版本号以免官方更新后误导读者。3.2 安装 Isaac Sim 和 Isaac Lab安装 Isaac Lab 之前需要先找到它依赖的 Isaac Sim。最省事的方式是直接克隆 Isaac Lab 仓库仓库脚本会帮你创建 Python 虚拟环境并安装对应版本的 Isaac Sim。在 Linux 终端下执行git clone https://github.com/isaac-sim/IsaacLab.git cd IsaacLab ./isaaclab.sh --install这段命令会检查本机环境、创建虚拟环境、安装 Isaac Sim 核心依赖和 Isaac Lab 本身。安装过程比较耗时主要时间花在下载 Isaac Sim 的依赖和 Python 包上。如果你使用 Windows仓库也提供了isaaclab.bat脚本执行方式类似。如果你希望把环境建在独立的 conda 环境里可以先用 conda 创建虚拟环境conda create -n isaaclab python3.10 conda activate isaaclab然后再回到 IsaacLab 目录执行安装脚本。脚本会自动识别当前激活的虚拟环境。具体 Python 版本以官方要求为准不要盲目使用过新或过旧的版本。3.3 验证安装安装完成后可以先跑一个视觉验证脚本确认 Isaac Sim 可以正常启动./isaaclab.sh -p source/standalone/tutorials/00_sim/launch_app.py这条命令会打开一个 Isaac Sim 的图形窗口。如果能看到界面加载完成、没有任何报错说明基础环境没问题。接下来可以跑一个最简单的强化学习环境验证算法链路是否打通./isaaclab.sh -p source/standalone/tutorials/03_envs/create_empty_env.py --num_envs 4同样会看到图形界面并且有多个仿真环境并行运行。需要注意的是不同版本仓库的目录结构可能不同如果找不到对应脚本可以查看source/standalone下的目录树选择任意一个能运行的环境脚本即可。4. 机器人强化学习任务的核心流程4.1 选择已有任务Isaac Lab 自带了很多官方示例任务覆盖了四足机器人、人形机器人和机械臂操作。新手不要立刻自定义任务建议先把已有任务跑通理解训练脚本、环境配置和算法配置之间的关系。常见的方向包括四足机器人速度追踪、步态学习代表任务类似于 Anymal 或 Spot 的行走控制。人形机器人双足站立、行走、上下台阶等对动态平衡要求更高训练难度也更大。机械臂操作物体抓取、放置、开门等任务更关注夹爪控制、碰撞避免和操作精度。这些任务通常会以Isaac-Velocity-*-v0、Isaac-Lift-*-v0这样的命名方式注册。你可以通过训练脚本的--task参数指定。4.2 自定义任务的目录结构当你需要自己定义一个机器人任务时最好按照 Isaac Lab 社区的通用结构组织代码。假设我们要做一个四足机器人速度追踪任务目录结构可以这样设计source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/ ├── __init__.py ├── env_cfg.py ├── mdp/ │ ├── __init__.py │ ├── rewards.py │ └── observations.py ├── robot_cfg.py └── agents/ ├── __init__.py └── rl_games_ppo_cfg.yamlenv_cfg.py定义环境配置类包括场景、观测、行动、奖励、事件等子配置。mdp目录存放各个奖励函数和观测函数。robot_cfg.py定义机器人资产配置。agents目录存放训练算法的超参数配置。这套结构和 Isaac Lab 官方任务的风格一致好处是项目扩展以后你只需要添加新的 Config 类不需要改动训练主流程。4.3 观测、行动、奖励如何连成闭环为了让你更直观地理解闭环这里拆解一下训练时的数据流。第一步策略网络接收观测输出行动。观测是当前时刻机器人的状态比如机体线速度、角速度、关节角度、目标速度等。行动是策略给出的关节指令。第二步行动管理器把行动映射到真实关节控制。比如把策略输出的 12 维向量映射为四足机器人 12 个关节的位置目标然后通过底层 PD 控制器计算力矩。第三步仿真环境根据力矩推进物理引擎更新机器人状态。第四步奖励管理器根据新的状态计算奖励值编码器记录当前 transition并返还给 RL 算法库用于策略更新。这个循环在 Isaac Lab 中由ManagerBasedRLEnv统一驱动你不需要在训练脚本里显式写这个循环。但理解它有助于排查训练不收敛、行动异常等问题。5. 完整示例四足机器人速度追踪任务下面我们用一段精简的 Manager-based 配置演示如何搭建一个四足机器人速度追踪任务。说明一下这里的代码是为了讲清核心配置实际运行可能需要根据你本地 Isaac Lab 版本的 API 做少量调整。5.1 定义机器人资产机器人资产配置负责指定机器人的 USD 文件、初始位置、关节初始状态等。以四足机器人 Anymal 为例robot_cfg.py可以这样写# 文件路径source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/robot_cfg.py import isaaclab.sim as sim from isaaclab.assets import ArticulationCfg ANYMAL_C_CFG ArticulationCfg( spawnsim.UsdFileCfg( usd_path/Isaac/Robots/ANYMAL/anymal_c.usd, activate_contactsTrue, ), init_stateArticulationCfg.InitialStateCfg( pos(0.0, 0.0, 0.6), joint_pos{.*: 0.0}, ), )核心是ArticulationCfg。它告诉 Isaac Lab这是一个由多个关节构成的机器人初始状态是什么。activate_contactsTrue表示启动接触检测因为后续的奖励函数可能需要判断脚部和地面是否接触。USD 路径可以是 Isaac Sim 内置资产也可以是本地转换后的路径。5.2 定义观测与行动观测配置用于告诉环境每个 step 要把哪些信息拼接成观测张量。下面是一个示例框架# 文件路径source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/mdp/observations.py from isaaclab.envs import ManagerBasedEnv from isaaclab.managers import ObservationTermCfg def base_lin_vel(env: ManagerBasedEnv, asset_cfg: str robot) - torch.Tensor: 读取机器人机体的线速度舍弃 z 轴分量只保留 x/y 方向。 asset env.scene[asset_cfg] return asset.data.root_lin_vel_b[:, :2] def base_ang_vel(env: ManagerBasedEnv, asset_cfg: str robot) - torch.Tensor: 读取机器人机体的角速度只保留偏航角速度。 asset env.scene[asset_cfg] return asset.data.root_ang_vel_b[:, -1:] def joint_pos(env: ManagerBasedEnv, asset_cfg: str robot) - torch.Tensor: 读取所有关节的角度。 asset env.scene[asset_cfg] return asset.data.joint_pos在环境配置中把这些函数注册为观测项即可。行动配置类似这里先不过度展开。实际操作时行动项一般会把策略输出映射到关节位置目标使用默认的 PD 控制器。需要注意的是观测函数必须接收env作为第一个参数并且返回形状为(num_envs, obs_dim)的张量。这样才能保证 GPU 并行环境下所有环境的数据能统一拼接。5.3 定义奖励函数奖励函数是决定“机器人学会什么行为”的核心。下面实现一个速度追踪奖励它鼓励机器人跟踪 x 方向的目标速度# 文件路径source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/mdp/rewards.py import torch from isaaclab.envs import ManagerBasedEnv def track_lin_vel_xy_exp( env: ManagerBasedEnv, command: torch.Tensor, lin_vel: torch.Tensor, std: float, ) - torch.Tensor: 基于指数函数的速度追踪奖励。 参数说明 - command: 形状为 (num_envs, 3) 的目标速度包含 x/y/z 方向 - lin_vel: 形状为 (num_envs, 3) 的当前机体线速度 - std: 控制奖励对误差的敏感程度std 越小对速度误差越敏感 lin_vel_error torch.sum(torch.square(command[:, :2] - lin_vel[:, :2]), dim1) return torch.exp(-lin_vel_error / std)这个奖励函数的思想是目标速度与当前速度越接近误差越小exp值越大奖励越高。当完全一致时奖励为 1。你可以在环境配置里给这个奖励项一个权重比如weight1.0。实际项目中还需要加上关节力矩惩罚、机体倾角惩罚等辅助项否则策略会倾向于抖动甚至摔倒。5.4 注册任务并启动训练为了让训练脚本能够通过--task参数找到这个环境需要在__init__.py中注册环境。注册方式通常是通过gym.register完成。示例思路如下# 文件路径source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/__init__.py import gymnasium as gym from .env_cfg import AnymalVelocityEnvCfg gym.register( idIsaac-Velocity-Run-Anymal-Custom-v0, entry_pointisaaclab.envs:ManagerBasedRLEnv, kwargs{ env_cfg: AnymalVelocityEnvCfg(), }, )注册完成后就可以用 Isaac Lab 自带的训练脚本启动 PPO 训练。常见的训练命令格式如下./isaaclab.sh -p source/standalone/workflows/rl_games/train.py \ --task Isaac-Velocity-Run-Anymal-Custom-v0 \ --num_envs 4096 \ --headless说明几个关键参数--task指定要训练的任务 ID。--num_envs指定并行环境数量。这个值越大单位时间采集的样本越多但显存占用也越高。--headless表示关闭渲染窗口。训练阶段一般不需要可视化关闭渲染能大幅提升速度。这里的脚本路径在不同版本里可能有变化具体以你克隆的仓库中实际路径为准。重点不是记住路径而是理解Isaac Lab 把“环境注册”和“算法训练”拆开了只要环境注册成功训练逻辑是统一的。6. 人形、四足、机械臂的实战差异虽然 Isaac Lab 的目标是统一机器人强化学习流程但不同类型机器人的任务难度和训练技巧差别很大。四足机器人是最适合入门的对象。它的四个支撑点天然具有静态稳定性即使策略还不完善机器人也不容易立刻摔倒。训练任务通常是速度追踪观测空间相对固定奖励设计也比较成熟。因此很多 sim-to-real 研究都选择四足机器人作为平台。人形机器人的难度高一个量级。双足支撑时系统是欠驱动的策略必须学会主动调节质心位置才能维持平衡。常见任务包括站立、行走、转身、抗推扰等。这类任务的奖励设计需要更加精细通常要加入质心高度约束、姿态角惩罚、落地冲击惩罚、能耗惩罚等。训练时也建议先用较小随机扰动再逐步增加环境难度。机械臂操作任务的难点不在平衡而在接触和精度。抓取任务要求夹爪在正确的位置、以合适的力度接触物体物体受力后可能会有滑动或滚动接触动力学非常复杂。另一个难点是操作任务通常需要多阶段逻辑比如先接近物体、再抓取、再移动单靠一个密集奖励很难让策略学出完整动作序列可能需要用课程学习或者人为设计子目标奖励。用一张表总结差异维度四足机器人人形机器人机械臂核心难点步态生成、抗扰动动态平衡、欠驱动控制接触建模、操作精度代表任务速度追踪、步态学习站立行走、抗推扰抓取、放置、开门典型观测关节角、速度、目标速度全身关节、质心状态关节角、夹爪状态、物体位姿奖励设计重点速度误差、能耗姿态稳定、平衡任务完成度、碰撞惩罚训练难度中等高中高这个对比告诉你不要指望用同一套环境配置通吃所有机器人。开始一个新人形任务前最好先跑通四足任务积累奖励调试和训练参数调优的经验。7. 运行验证与结果判断7.1 训练启动后的预期现象如果训练命令执行成功你会看到类似这样的日志输出环境加载完成、策略网络创建成功、开始进入训练循环。训练过程中会定期输出每个 epoch 的平均奖励、策略损失、价值损失等信息。第一次跑训练时可能会遇到两个极端现象。一种现象是奖励一直在负值附近波动甚至越来越低。这通常不是环境坏了而是策略还在探索阶段。强化学习刚开始时随机策略大概率会让机器人摔倒摔倒会有终止或大惩罚所以平均奖励很低是正常的。关键要看几千步之后是否出现上升趋势。另一种现象是奖励值看起来很高但打开可视化后机器人行为很奇怪比如在原地抽搐、靠着地面摩擦前进。这往往是奖励设计有问题策略发现了一个奖励漏洞而你没有及时发现。所以我的建议是训练一段时间后一定要用可视化模式查看策略表现不能只看曲线。7.2 从 reward 曲线判断学习质量判断训练是否健康可以看几个信号平均奖励是否整体上升。如果上升缓慢可以考虑增大学习率或样本量。reward 曲线是否剧烈震荡。震荡太大可能是学习率太高、奖励权重不均衡或 batch size 太小。是否存在长期平台期。如果曲线长时间不涨可能是观测信息不够或者策略陷入了局部最优。这些判断需要一些经验积累。比较好的习惯是每次改动奖励或环境后只修改一个变量同时保存训练日志方便对比。7.3 评估与 play 模式训练脚本通常会提供--play参数用于加载训练好的 checkpoint 并播放策略表现。命令类似./isaaclab.sh -p source/standalone/workflows/rl_games/train.py \ --task Isaac-Velocity-Run-Anymal-Custom-v0 \ --num_envs 32 \ --play和训练命令相比这里不设置--headless这样可以看到仿真窗口。--num_envs可以调小一些避免画面卡顿。如果机器人能稳定行走、没有明显抖动说明训练基本成功。你可以尝试手动设置一个较大的目标速度观察机器人是否能够跟上。如果 play 时发现机器人动作异常优先检查 checkpoint 路径是否对应最近一次训练、环境配置是否和训练时完全一致。环境配置改变后旧 checkpoint 大概率无法直接使用。8. 常见问题与排查思路问题现象可能原因排查方式解决方案安装脚本执行失败驱动版本或 CUDA 版本不匹配查看安装日志中的报错信息按官方文档升级驱动或调整 CUDA 环境启动仿真窗口黑屏或崩溃显卡驱动不支持、渲染模式异常检查 GPU 信息尝试删除缓存目录更新驱动或以 headless 模式测试--num_envs设置过大导致显存不足并行环境数超过 GPU 显存上限查看显存占用和报错信息降低 num_envs或减少观测维度机器人初始生成后立刻穿透地面机器人初始位置设置不当或碰撞体未生效检查初始 pos 高度、碰撞体属性调高初始高度检查资产碰撞体配置奖励值出现 NaN观测存在 inf 或奖励计算出现除零打印观测张量检查 reward 函数限制观测范围增加数值稳定处理训练不收敛一直在原地摔倒奖励设计不合理或观测缺失关键信息先用单环境采样并打印观测从最简单任务逐步增加复杂度play 时机器人行为异常checkpoint 与环境配置不匹配对比训练和推理时的配置重新评估同一 checkpoint这里最容易被忽略的是“仿真缓存问题”。Isaac Sim 会缓存资产和材质如果机器人模型更新后没有清缓存运行结果可能还是旧模型。遇到奇怪且无解释的现象先清空缓存目录再重试通常能解决一部分问题。9. 最佳实践与工程建议9.1 奖励设计先粗后细做机器人强化学习最容易陷入的误区是第一次就写一个非常复杂的奖励函数包含十几项然后花大量时间调权重。正确做法是先写一个最简单的奖励让机器人“大概能做对动作”再逐步添加约束项。比如先只给速度追踪奖励让机器人跑起来跑通之后再加入能耗惩罚减少无效抖动再加入姿态稳定奖励让行走更自然。每次添加新奖励项时不要一次加太多否则某个奖励项异常时你很难以定位。同时每项奖励应该单独记录日志方便炸看哪一项在主导学习过程。9.2 从简单场景开始避免一步到位如果你最终目标是让双足机器人走楼梯不要直接设置一个复杂的楼梯场景。先训练平地行走再增加轻微地面起伏再尝试低台阶逐步增加难度。这种“课程学习”的思路在机器人强化学习中非常有效。Isaac Lab 的事件管理器可以帮你实现这个需求。你可以配置不同的地形难度、随机摩擦系数、随机负载质量等事件让策略在多样化的环境中学习提高泛化能力。9.3 重视 sim-to-real gap仿真环境训练的策略最终要迁移到真实机器人上而仿真和现实之间总有差距。最常见的问题是仿真中的摩擦力、质量分布、电机延迟与真实机器人不一致。Isaac Lab 提供了 domain randomization 机制可以在训练时随机化物理参数让策略见过更多“变体”提高真实世界中的适应能力。实际项目里至少要做三件事一是随机化地面摩擦系数二是随机化关节 PD 增益三是随机化控制延迟或噪声。这些都和真实机器人部署直接相关不要等到真机测试才发现策略极其脆弱。9.4 工程化与复现问题机器人强化学习项目周期长、实验多如果不注意工程化很容易陷入“改了一版配置不知道之前是怎么跑出来”的混乱状态。建议做到以下几点每种环境配置都写在独立的 Config 类中不随意修改全局配置。训练日志和 checkpoints 保存在按时间戳命名的目录中。每次实验记录环境配置文件的变更内容。使用固定随机种子时明确记录 seed。这些习惯不会直接提升算法效果但能极大降低项目维护成本帮助你快速定位“哪个改动让训练结果变好了”。10. 总结与后续学习方向回到开头的问题Isaac Lab 真正改变的是什么我认为是“机器人强化学习任务的工程化门槛”。它让研究者可以把更多精力放在任务定义和奖励设计上而不是反复写仿真接口。对个人开发者来说这意味着你可能在几天内跑通一个四足机器人行走任务而这个周期在过去是以周甚至月为单位的。如果你刚入门建议按照这样的顺序推进先跑通官方四足任务理解环境配置和训练命令然后尝试修改奖励函数观察机器人行为变化再尝试导入自己的机器人 URDF 模型定义全新的运动任务最后再做 sim-to-real 迁移接触 domain randomization 和真机部署。学习过程中遇到困难时优先看官方文档和示例代码其次是关注社区讨论。不要把注意力全放在搜索“最佳超参数”上——机器人强化学习的核心能力更多体现在你对任务建模、奖励设计和实验对比的理解上。建议收藏这篇文章等你把环境搭好之后再对照着跑一遍很多概念会在运行过程中自然清晰起来。
返回列表