Nvidia Isaac Lab 7 - 在 Isaac Lab 中,训练第一个机器人 - 2. 机器人强化学习
1. 从交互中学习
从本质上讲,强化学习(RL)就是从交互中学习。
机器人不会被算法显式控制,而是通过与环境交互,学习如何完成任务。
在强化学习语境中,交互发生在智能体和环境之间。

2. 用强化学习清理厨房
假设机器人智能体正尝试刷脏餐具。从强化学习的视角看,厨房、海绵以及上一顿饭留下的碎屑都是环境的一部分。随着机器人智能体清洁餐具,它与环境发生交互,而环境也随着时间发生变化,最终厨房有望变成干净状态!

在任意给定时刻,都可以用当前状态描述环境。在这个例子中,状态可能描述餐具在哪里,以及还需要清洗到什么程度。
机器人无法获取这些完整信息,只能从环境中接收观测,这些观测由各种传感器确定。
观测随后由策略进行处理。策略是智能体中的一部分,它负责将“观测到什么”映射为“接下来应该做什么”。处理的输出是动作,即智能体执行的具体运动或行为。通过这些动作,智能体有望将环境推进到期望的最终状态,也就是干净的厨房。比如让机械臂更靠近餐具,或朝某个脏污的位置移动。
但是,策略总得来自某个地方。它是什么时候学会做这些的呢?强化学习中的“学习”部分还需要另一个关键要素:奖励。智能体每次执行动作时,环境都产生奖励,也就是一些数值,表示特定动作是“好”还是“坏”。本教程将在 Isaac Lab 框架内使用 Python 定义奖励。
强化学习的目标是以巧妙的方式不断改进策略,最大化智能体在与环境交互的过程中获得的奖励。
通过一次又一次地与仿真环境交互,机器人自动发现哪些动作能带来奖励,在训练策略的过程中,借助数学函数学习如何行动,从而最大化奖励。
最终,通过在 Isaac Lab 中训练机器人,我们将得到描述机器人学到的策略的神经网络。这就是深度强化学习中“深度”一词的来源:它将强化学习与深度神经网络结合起来,用于处理复杂的高维输入和任务。本教程的内容都是关于深度强化学习的。
基于这个文件,可以向其中输入给定的观测,得到相应的输出。随后,可以利用这些输出在 Isaac Sim 中运行测试,观察策略的表现如何,为在真实机器人上运行该策略做好准备!
2.1. 为什么使用强化学习?
传统上,机器人依赖预先编写好的指令及有限的传感器输入,执行特定任务。但这种方式适用于简单任务,很难泛化到新场景,而且重新编程的成本很高。比如:
- 对于负责抓取和分拣物品的工业仓库机器人而言:如果目标物体的尺寸、形状、摩擦力或质量发生变化,该怎么办?
- 对于自动驾驶车辆而言:面对不可预测的环境,该如何应对动态变化的条件?
- 对于人形机器人而言:如何为手部这类更复杂的关节结构编程,以及让机器人执行行走、奔跑和跳跃等任务?
借助强化学习和仿真,甚至可以用比实时更快的速度训练机器人。比如对于 Isaac-Velocity-Flat-Spot-v0 这个任务:训练 Boston Dynamics Spot 四足机器人,使其在平坦地形上移动时达到指定的速度和方向(速度目标)。使用 RSL RL 库,搭配 NVIDIA RTX A6000 GPU 时,这个任务的训练速度大约可以达到每秒 90,000 帧。而普通视频通常只有每秒 30 到 60 帧!
当场景中的一部分结果是随机的,另一部分受智能体控制时,就可以使用强化学习,比如机器人。
3. 通过奖励进行教学
下面看强化学习的另一个例子:如果通过基本反馈训练机器人,如何教它走路?在仿真中,可以通过将时间向前推进一步,进行分析及计算奖励,再推进一步,不断重复这个过程的方式,提供反馈。
但如何定义奖励和观察,来描述朝着目标前进时的样子呢?
奖励也有多种形式。下面简要描述几种主要类别:
- 稀疏奖励(Sparse Rewards):反馈很少出现,或者只在关键时刻出现。
- 以国际象棋为例,哪些走法应该得到奖励?最终结束棋局的那一步,还是三步之前那次用马吃子的操作?赢棋这个最终目标直到棋局结束时才真正实现,这就是一种稀疏奖励。
- 密集奖励(Dense Rewards ):反馈频繁出现,并且逐步累积。
- 比如机器人不断靠近目标。
- 塑形奖励(Shaped Rewards):额外引入的奖励,通过注入问题领域的知识,引导智能体朝期望行为发展。
- 再次以国际象棋为例。正如前面讨论,赢棋是一种稀疏奖励。对于这个问题,可以将吃子设计成塑形奖励,在棋局结束之前提供中间反馈。
比较简单的奖励方式是只要机器人更靠近目标,就给予奖励(密集奖励)。随着距离变小,奖励变大。可以用简单的距离公式进行衡量。看起来足够简单,但可行吗?
这就像我们无意中教会宠物一些本不想教给它的“把戏”一样,也可能刚好把机器人教成向前一跃然后摔倒,而非正常行走。这确实利用奖励函数,但未达成目标。该方法还需要再仔细想一想。
因此,重新审视奖励设计,使其更稳健。可以像下面这样使用奖励和观测更明确地定义任务:
- 躯干应基本保持竖直。
- 脚部与地面的接触时间应满足一定阈值,避免沿地面滑动。
- 整体身体应保持特定朝向,以便朝目标行走。
- 监测从躯干到地面的高度传感器。
- 如果机器人将躯干压得太低,那么对其进行惩罚。
现在,只要经过足够的训练,就可以得到基础但有效的行走策略!行走也被称为一种“运动控制”(Locomotion)。

这正是强化学习的神奇之处之一:教机器人做新事情时,只需要定义目标,不必明确写出实现该目标的步骤。
在回到奖励工程和任务设计这个主题之前,先看看强化学习这个想法从何而来。
4. 强化学习的发展
强化学习不是新想法。事实上,它的核心原理可以追溯到很早的时期。
强化学习的早期基础原理可以追溯到 20 世纪 50 年代。它的很多核心思想都受到人类通过试错进行学习这一方式的启发。
不过,考虑到近年来的快速发展,如果觉得强化学习是新概念,也不奇怪。
由于算力提升、深度学习的发展,以及更容易获取大规模数据集,强化学习受到广泛关注。这些进展使强化学习算法能够解决更加复杂的问题,也让强化学习从理论上的新奇概念,发展为现代人工智能研究和应用中实用且极具影响力的领域。
5. 仿真和物理 AI
为了说明为什么仿真对使用强化学习训练物理 AI 如此重要,先看一个替代方案。
如果尝试在物理世界中进行强化学习,将发生什么?
首先,需要大量完全相同的机器人。然后,在物理世界中布置实验场地,并且每次都要将其完美重置。哪怕只做 100 次试验,也是非常繁重的工作,而且很难做到准确无误。更麻烦的是:
- 如何获得足够多的试验次数?前面举的 100 次试验,对于强化学习而言其实是很小的数量。为了训练出鲁棒策略,至少需要数百次试验。
- 如果某些情况发生变化,需要重置训练回合怎么办?这意味着要重置大量机器人,并且还要保持一致。
- 如果机器人发生碰撞怎么办?训练早期可能生成不可预测的结果,这些结果在现实中可能很危险。一次失误可能损坏价值数十万美元的原型机器人硬件。
- 即使这种方式可行,所需的时间和资源也高得惊人。
- 如果想测试现实中尚不存在的机器人怎么办?在仿真中,可以在制造实体原型前,自由地迭代设计,以及测试强化学习策略。
这就是为什么物理 AI 诞生于仿真之中,以及为什么 AI 的下次重大演进将发生在物理 AI 领域:届时,Token 将与我们周围的物理世界发生交互。
在仿真中,可以控制环境,甚至可以控制重力、摩擦力等关键物理参数!这就像我们有一个训练场,可以在其中为机器人设计用于学习的空间。甚至可以让仿真器以快于实时的速度运行。还可以推进一步、进行分析,然后不断重复该过程,直到任务终止或完成。
提示
对于某些机器人应用而言,完成本身是一项关键的安全任务。比如当机器人搬运又热又重的物体时,如果没能将其移动到安全位置,则很危险。
对于自动驾驶车辆而言,在某些情况下突然停车也很危险。这就是为什么在将机器人部署到测试场地前,需要完成一定量的仿真训练。借助仿真,可以有意地练习如何应对危险情况,评估机器人行为,而不必在物理世界中制造出危险场景。未来,仿真将继续成为机器人开发和制造中的标准实践。
但通过在仿真中控制世界,乍一看不是在作弊吗?如果能控制世界,事情不就变得更容易了吗?
其实可以利用这种控制能力,为机器人构建动态训练环境。比如如果机器人能在摩擦力更小或更大的情况下抛接立方体,那么当在真实世界中工作时,该策略可能更好地应对各种不同立方体。
这一过程不仅可以改变为现有机器人编程的方式,还能指导如何测试和部署最新的机器人。
5.1. 强化学习最适合解决哪些问题?
虽然不存在适用于所有情况的完美答案,但强化学习通常适合以下领域:
- 一部分结果具有随机性,一部分由智能体控制,比如机器人。
- 问题需要在不确定环境中进行探索和适应。
- 由于复杂动力学或部分可观测性,传统控制方法难以奏效。
- 存在可用于预训练策略的高保仿真环境。
下面是 Isaac Lab 项目提供的演示,可以自己尝试!
5.2. 具体示例
- 对物体进行灵巧操作,比如在手中调整物体朝向。

- 在崎岖地形上移动,比如四足机器人跟踪速度指令。

- 富接触操作,比如将齿轮插到齿轮组装配体中。
