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. 通过奖励进行教学

下面看强化学习的另一个例子:如果通过基本反馈训练机器人,如何教它走路?在仿真中,可以通过将时间向前推进一步,进行分析及计算奖励,再推进一步,不断重复这个过程的方式,提供反馈。

但如何定义奖励观察,来描述朝着目标前进时的样子呢?

奖励也有多种形式。下面简要描述几种主要类别:

比较简单的奖励方式是只要机器人更靠近目标,就给予奖励(密集奖励)。随着距离变小,奖励变大。可以用简单的距离公式进行衡量。看起来足够简单,但可行吗?

这就像我们无意中教会宠物一些本不想教给它的“把戏”一样,也可能刚好把机器人教成向前一跃然后摔倒,而非正常行走。这确实利用奖励函数,但未达成目标。该方法还需要再仔细想一想。

因此,重新审视奖励设计,使其更稳健。可以像下面这样使用奖励和观测更明确地定义任务:

  1. 躯干应基本保持竖直。
  1. 脚部与地面的接触时间应满足一定阈值,避免沿地面滑动。
  1. 整体身体应保持特定朝向,以便朝目标行走。
  1. 监测从躯干到地面的高度传感器。
  1. 如果机器人将躯干压得太低,那么对其进行惩罚。

现在,只要经过足够的训练,就可以得到基础但有效的行走策略!行走也被称为一种“运动控制”(Locomotion)。

这正是强化学习的神奇之处之一:教机器人做新事情时,只需要定义目标,不必明确写出实现该目标的步骤

在回到奖励工程和任务设计这个主题之前,先看看强化学习这个想法从何而来。


4. 强化学习的发展

强化学习不是新想法。事实上,它的核心原理可以追溯到很早的时期。

强化学习的早期基础原理可以追溯到 20 世纪 50 年代。它的很多核心思想都受到人类通过试错进行学习这一方式的启发。

不过,考虑到近年来的快速发展,如果觉得强化学习是新概念,也不奇怪。

由于算力提升、深度学习的发展,以及更容易获取大规模数据集,强化学习受到广泛关注。这些进展使强化学习算法能够解决更加复杂的问题,也让强化学习从理论上的新奇概念,发展为现代人工智能研究和应用中实用且极具影响力的领域。


5. 仿真和物理 AI

为了说明为什么仿真对使用强化学习训练物理 AI 如此重要,先看一个替代方案。

如果尝试在物理世界中进行强化学习,将发生什么?

首先,需要大量完全相同的机器人。然后,在物理世界中布置实验场地,并且每次都要将其完美重置。哪怕只做 100 次试验,也是非常繁重的工作,而且很难做到准确无误。更麻烦的是:

这就是为什么物理 AI 诞生于仿真之中,以及为什么 AI 的下次重大演进将发生在物理 AI 领域:届时,Token 将与我们周围的物理世界发生交互。

在仿真中,可以控制环境,甚至可以控制重力、摩擦力等关键物理参数!这就像我们有一个训练场,可以在其中为机器人设计用于学习的空间。甚至可以让仿真器以快于实时的速度运行。还可以推进一步、进行分析,然后不断重复该过程,直到任务终止或完成。

提示

对于某些机器人应用而言,完成本身是一项关键的安全任务。比如当机器人搬运又热又重的物体时,如果没能将其移动到安全位置,则很危险。

对于自动驾驶车辆而言,在某些情况下突然停车也很危险。这就是为什么在将机器人部署到测试场地前,需要完成一定量的仿真训练。借助仿真,可以有意地练习如何应对危险情况,评估机器人行为,而不必在物理世界中制造出危险场景。未来,仿真将继续成为机器人开发和制造中的标准实践。

但通过在仿真中控制世界,乍一看不是在作弊吗?如果能控制世界,事情不就变得更容易了吗?

其实可以利用这种控制能力,为机器人构建动态训练环境。比如如果机器人能在摩擦力更小或更大的情况下抛接立方体,那么当在真实世界中工作时,该策略可能更好地应对各种不同立方体。

这一过程不仅可以改变为现有机器人编程的方式,还能指导如何测试和部署最新的机器人。

5.1. 强化学习最适合解决哪些问题?

虽然不存在适用于所有情况的完美答案,但强化学习通常适合以下领域:

下面是 Isaac Lab 项目提供的演示,可以自己尝试!

5.2. 具体示例