Ari Biswas,Mathworks
探索如何使用强化学习来解决复杂动态系统中的控制任务,例如冗余机器人操纵器。该任务的目标是设计一个控制器,该控制器可以在连接到操纵器的末端执行器的平坦表面上平衡乒乓球。基于模型的控制理论,如模型预测控制(MPC)或其他方法可以通过创建工厂的数学模型来解决这些任务。然而,当工厂模型变得复杂时,可能变得难以设计这样的控制器。无模型加强学习是这种情况的替代方案。请参阅使用强化学习工具箱™创建和培训可以执行球平衡任务的培训代理的教程,同时在环境中的可变性。在本教程结束时,您将学习如何创建环境,代表通过神经网络的代理,并将网络培训到令人满意的性能。
在这次会议上,您将学习如何控制机器人操纵器,使用加强学习平衡一块板上的球。您将通过在Simulink中建立机器人模型来创建和培训加固学习代理的开始,逐步介绍步骤。万博1manbetx到目前为止,我们将通过选择不同的算法和培训选项来探索我们可以通过选择不同的算法来定制RL代理。
首先,让我们查看我们的机器人机械手系统的不同组件。该示例中的机器人是Kinova机器人臂,其是具有夹具的7度的自由式机械手。该图显示了整个系统的建模。使用Simscape多体块在Simulink中创建了万博1manbetx设计,该模块专门用于模拟和模拟高保真机械系统。系统的主要结构部件是Kinova机器人,平坦表面或板,其附接到机器人的末端执行器,以及可以在板上反弹或滚动的乒乓球。使用六个停止接头进行建模球的运动,但是每当有接触时,运动也受到板的限制。球和板之间的接触力使用特殊的接触力块进行建模,基本上表现得像弹簧和质量调味系统。
现在我们可以查看每个子系统来了解它们更好。在项目文件夹中,您可以在此处找到模型文件夹下的Simulink模型。万博1manbetx您可以打开模型,一旦型号打开,您可以在这些子系统下导航,并更详细地查看它们。
在该机器人中子系统中,我们看到在机器人臂的不同部分但链接和关节通过跳过一些多体块呈现。通过使用SM Import命令导入CAD几何或步骤文件来创建这些组件。我们不会通过详细的导入工作流,但你会发现在这个朝着这个教程结束的更多信息。
旋转关节 - 革新的关节块负责链路之间的运动,并且在将扭矩信号注入旋转接头之后计算运动。对于这个例子,我们通过仅执行最后两个关节,使其简单,这是这里的R6和R7关节。其他关节在一些预定义的关节角度保持静止。这些角度在您可以在此处找到的初始化脚本中指定。可以打开脚本来查看系统的不同参数,并随时更改您在此处的内容。
在熟悉模型后,让我们来看看控制问题。在这个例子中,任务是平衡板上的乒乓球。在我们的模拟开始时,球可以从板内的任何位置开始,控制算法应该计算必要的顶部信号,以将球驱动到中心并将其平衡在那里。
可以使用像MPC或其他最优控制方法等流行的控制算法来解决此任务。然而,由于我们需要该算法的工厂的数学模型,例如,当系统复杂时,设计控制器可能变得困难,例如,如果您通过执行所有接头设计整个系统的MPC控制器,则需要计算Jacobians或者为动态写入可能是繁琐过程的转换功能。这是加强学习可以提供用于设计控制器的替代方法的地方。
以下是一些关键概念和强化学习的快速概述。我们将专注于强化学习的部分,称为自由加固学习。顾名思义,该算法不需要工厂的模型,而是通过与工厂的反复相互作用来学习所需的行为。该图显示了加强学习设置中的标准数据流。设置中的控制器是RL代理。和包括机器人板,球和致动和传感部件在内的系统的其余部分被称为环境。
代理通过提供由A表示的一组动作信号来交互与环境相互作用。环境使用这些信号进入到代理呈现的下一个状态S.该代理还从称为奖励的环境接收另一个信号R,这是一个关于如何选择行动的选择对于控制测试的反馈。
学习算法的目标是通过代理和环境的重复交互来最大化此奖励。在本教程中,我们将代表使用深度神经网络的代理。您可以找到有关在MATLAB文档中设计神经网络的更多信息。但现在,让我们了解我们如何使用加强学习工具箱来解决问题。
返回MATLAB窗口时,请在此处从项目文件夹中打开实时脚本。该脚本包含用于强化学习的标准命令行工作流程。我们首先运行一个启动脚本,该脚本将必要的文件添加到MATLAB文件,并在基础工作区中创建所需的变量。要运行脚本,您可以在此处单击“运行”部分按钮,这也打开了Simulink模型。万博1manbetx
在此型号的顶级,您将看到我们之前讨论的加强学习设置,同时使用与环境交换数据。允许导航到环境中并打开观察子系统以查看信号。观察是一组22个信号,其在任何给定时间表示系统的状态。这包括有关球的位置和速度的信息,并且板季季度和衍生物的球的位置和速度,以及来自前一时间步的顶部输入,然后是球的一些物理参数,如质量和半径。代理将使用这些观察来计算每次步骤的操作。因为这些信号具有不同的单位,所以它们中的一些是乘以这些比例因子,使得它们保持在或多或少与他人相同的范围。重要的是,因为这些信号将被馈送到神经网络中,并且高幅度信号可能导致网络的一个部分来支配和破坏其他信号的效果。如果您以某种方式规范化或缩放观察,则网络将更好地培训。
我们还占据方向的正弦和余弦而不是直接使用它们,以避免角度加或减去的不连续5.因为观察空间中的不连续可能导致学习算法会聚得不好。
来自环境的其他信号是奖励信号。让我们花几个小时来了解奖励信号更好。随时步骤的奖励由这里显示的关系给出。由于我们希望代理将球移动到板的中心,因此当球移动到中心时,我们应该提供积极的奖励。这种奖励可能是任何特定状态的最远值,但我们可以通过提供非线性函数形式的形状来提高奖励。
在这种情况下,我们使用高斯函数来奖励代理作为球的x和y距离转到0.在您培训了几次的代理后,您会发现一个良好的奖励有助于提高培训融合。
除了将球移动到中心外,我们还希望避免太多的板取向,这将是对平衡球的违反直觉。因此,我们为高板方向角度提供了罚款。当它使用太多的控制努力时,我们还向代理人提供了另一个罚款。
最后,我们每次步骤都会获得标量奖励的奖励和处罚。这里的说明也很重要,即每个终止奖励函数已经乘以缩放因子,以指定对整体奖励的相对重要性。
来自环境的最终信号集是向下信号并确定何时应终止模拟。终止可能意味着系统已经达到了不良状态,并进一步模拟它没有意义。在这种情况下,我们通过将XY坐标与板边界进行比较来终止模拟,并且球通过比较XY坐标而离开板。
让我们回到实时脚本以从Simulink模型创建强化学习环境。万博1manbetx首先,您需要创建输入和输出的规范。由于观察和动作空间在我们的情况下是连续的,因此您可以使用该RL数字规范功能来创建如此所示的规格。
创建规范后,您可以使用RL Simulink Env功能创建环境对象,如此处所示。万博1manbetx您需要指定Simulink模型名称,通过RL代理块的块路径万博1manbetx以及我们以前创建的观察和操作规范。
培训RL代理的一个重要方面是域随机化。您可以通过提供处理以重置此处完成的环境的函数万博1manbetx来随机化每个训练集的开始。此随机化可以帮助代理学习策略,该策略是环境中的变化。
向下滚动到脚本的末尾以查看重置函数。在这里,存在一些参数对于随机化可能是重要的,例如球物理参数和初始关节角度和初始扭矩。您可以根据您的喜好引入这些参数中的随机性。但是,现在,让我们专注于随机化的初始版本,然后保持其他参数常数。
创建环境后,下一步是在MATLAB中创建一个强化学习代理。钢筋学习工具箱中有许多算法可供选择。这些算法在离散或连续的动作空间上工作或两者都有。对于本教程,您将使用支持连续动作空间的软演员批评代理。万博1manbetx
这是软演员批评算法的高水平解释。蓝色指导代表了代理人的主要组成部分。经验丰富的缓冲区用于存储来自代理环境交互的经验,并且代理通过使用来自此缓冲区的示例数据来学习。该代理的学习算法遵循具有一个演员和两个批评者的主动批评方法,每个批评者由神经网络表示。
该演员介绍环境状态,并根据这里所示,基于网络的平均值和方差的均值和方差选择动作。这意味着不变性定义了演员的随机政策,用于计算代理人的行为。在培训过程中,演员网络的权重由一个折衷的预期回报和政策的熵之间更新。
批评者坐在演员后面,并批评他们是好还是坏的行为。他们的利率也定期更新。该算法使用多个批评者来减少Q功能的高估。您可以在本教程结束时找到有关软演员批评算法的更多信息。但是,现在,您需要做的就是在Matlab中创建这个神经网络。其他一切都将由工具箱处理。
现在我们再次回到行脚本。您可以通过在本节中运行代码来创建神经网络。如在此所示,批评网络由少数几个完全连接的层组成。该网络的输入是代理人的观察和动作。并且输出是Q函数值。您可以使用相同的批评网络来创建两个批评者。
演员也以类似的方式建模。它将观察结果作为输入并输出策略分布的平均值和方差。创建演员和批评后,您可以使用RLSacagent功能创建代理,如此所示。如此所示,代理的大多数参数都保持为默认值。所以你不必太担心改变本教程。有关参数类型的完整列表,您可以单击此链接,将带您到MATLAB文档。
创建代理后,最终步骤是使用列车命令训练算法。您可以指定一些培训选项,例如代理人培训的时间以及培训的股票价值是多少。例如,您可以设置培训剧集的最大数量,如此稿所示,然后是培训集的最大步骤。
另一个重要参数是停止训练标准。在这种情况下,我们在最后100次剧集的平均奖励达到675或以上时停止培训。在分析代理人的次数培训迭代后,获得该值。
要启动培训,您可以将此蓝色训练标志设置为true并执行该部分中的代码。软件需要几秒钟来设置培训,我们将启动剧集管理器数字以跟踪培训进度。
一旦该数字启动,您可以从绘图中查看培训进度,并在Mechanice Explorer窗口中看到动画。您可以在此处看到代理程序正在尝试平衡球但大部分时间都失败了。这是预期的,因为它是培训开始,而代理人尚未了解。
我们还将从剧情看,代理商不会收到每集太多奖励。蓝线的图形表示剧集奖励,红线表示100个剧集窗口的平均奖励。黄线代表预期的长期奖励。
由于代理从经验中学习,您将看到奖励将增加并收敛到某些价值。此时,您可以停止培训并查看代理商的性能。要停止培训,您只需单击此处的停止训练按钮即可。令人兴趣的是,让我们停止训练并继续直播。
完成培训会话的快照如图所示。这将让您了解我们在培训过程中所期望的想法。对于这种特殊的培训,经代理商在约3,300集后达到675的平均奖励。大约需要20个小时才能完成。
根据您的系统规格,培训可能需要更少或更长时间。此外,由于过程中存在随机性,因此您的实际结果可能与此处所示的不同。让我们现在加载预先训练的代理以查看此性能。您可以将Dotraining Flag返回为FALSE,以加载保存在MAT文件中的代理。您可以再次运行该部分以加载该文件。
加载代理后,向下滚动到仿真部分。在这里,您可以将球的初始位置设置为您的喜好并使用培训的代理模拟模型。在这里,初始x和y位置设置为一些非零值。让我们运行该部分。您现在可以在动画中看到代理商能够成功驻球。您可以尝试使用不同的初始条件模拟几个不同的时间。
返回Simulink模型,您可以通过万博1manbetx这些代码块查看球的轨迹和控制输入。如这里所见,X和Y轨迹融合到零或接近零值。我们可以认为这对本教程令人满意。另一方面,行动看起来很嘈杂。为实际目的,我们可能需要考虑行动是否可以处理这些信号。我们可以将其视为未来的分析代理表现的增强。它与我们的奖励功能一致。
以下是一些可用于微调代理商的性能的选项。您可以在环境中随机化其他参数,如球质量和初始速度进行培训。您还可以更改参数和奖励函数,或更改代理超级参数。另一种选择是使用不同的代理算法进行此测试。我们不会在此视频中覆盖这些,但您可以自己尝试并发现更多关于强化学习。
这节得出了结论。我们涵盖了很多概念,希望这为您提供了一个关于RL的洞察力以及如何使用加强学习工具盒来解决控制问题。最后,这里有一些可以用于进一步阅读的资源。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。