探索如何使用强化学习来解决复杂动态系统的控制任务,比如冗余机器人机械手。任务的目标是设计一个控制器,可以平衡乒乓球放在一个平面上连接到终端执行器的操纵者。基于模型的控制理论模型预测控制(MPC)或其他方法可以解决这样的任务通过创建数学模型的植物。然而,它可能会变得难以模型设计控制器时,植物变得复杂。模范自由强化学习是另一个在这种情况下。看到一个教程使用强化学习工具箱™创建和火车的代理可以执行球平衡任务环境中而被强劲的可变性。的教程中,您将学到如何创建环境,代表代理通过神经网络,训练网络,令人满意的性能。
在这个手在会话中,您将学习如何控制机器人机械手,平衡板上的一个小球用强化学习。你将介绍过程一步一步从构建机器人模型在仿真软件创建和训练强化学习代理。金宝app末我们将探索一些方法我们可以定制RL代理通过选择不同的算法和训练选项。
首先,让我们看一看我们的机器人机械手系统的不同组件。机器人在这个例子中是Kinova机器人手臂是7自由度机械手爪。这个图表显示了整个系统的建模。在仿真软件中创建的设计是使用Simscape多体块,金宝app是专门用来模型和模拟高保真机械系统。系统的主要结构部件是Kinova机器人,一个平面或板连接到机器人的终端执行器,和一个乒乓球弹跳或卷板。球的运动建模使用六阻止关节但运动也受到板只要有接触。球和板之间的接触力模型使用一种特殊的接触力,基本上像一个弹簧和大规模的脾气系统。
现在我们可以看看每个子系统更好地理解他们。在项目文件夹中,您可以在这里找到一个仿真软件模型在模型文件夹。金宝app你可以打开模型和一旦模型是开放的,你可以在这些导航子系统和看更多细节。
在机器人子系统,我们看到机器人手臂的不同部分,但提供的链接和关节一些跳过多体块。这些组件是由导入CAD几何图形或步骤文件使用SM导入命令。我们不会通过导入工作流细节,但是你会发现更多的信息在这个本教程的结束。
陶醉的转动关节,关节模块负责运动之间的联系,计算和运动后将转矩信号注入到狂欢关节。对于这个示例,我们使它简单只执行最后两个关节,即R6和R7关节。其他关节在某个预定义的关节角保持不变。这些角中指定一个初始化脚本,你可以找到这里。可以打开这个脚本查看系统的不同参数,和随意改变任何你喜欢的在这里。
越来越熟悉这个模型之后,我们来看看控制问题。在这个例子中,任务是平衡板上一个乒乓球。一开始我们的模拟,球可以从任何位置开始在板内,和必要的控制算法应计算最高信号驱动球中心和平衡。
这个任务可以使用流行的控制算法来解决货币政策委员会或其他最优控制的方法。但是因为我们需要植物等算法的数学模型,设计控制器可能会变得困难当系统复杂的举个例子,如果你要设计一个MPC控制器驱动整个系统的所有关节,你需要计算雅克比时或者写动态的转换函数可以是一个繁琐的过程。这就是强化学习可以提供另一种方法来设计控制器。
这是一个快速概述在一些关键概念和强化学习。我们将关注的强化学习的部分被称为自由强化学习模型。顾名思义,该算法不需要工厂的模型,而不是期望的行为被重复与植物的交互学习。这张图显示了在强化学习中标准数据流设置。控制器设置的RL代理。和系统的其余部分包括机器人板,球,和他们的驱动和传感组件,被称为环境。
受托人与环境的交互通过提供一组动作信号是由a环境使用这些信号来进入下一个状态年代呈现到代理。代理也收到另一个信号R从环境中称为奖励,这是一个反馈的选择如何行动是适合控制测试。
学习算法的目标是最大化这奖励随着时间的推移,通过重复代理和环境的相互作用。在本教程中,我们将代表代理使用深层神经网络。你可以找到更多的信息在MATLAB神经网络设计文档。但是现在,让我们看看如何使用强化学习工具盒来解决这个问题。
当你在MATLAB窗口,打开生活的脚本项目文件夹。脚本包含一个标准的命令行工作流进行强化学习。我们开始通过运行启动脚本,将必要的文件添加到MATLAB文件并创建所需的基本工作空间中的变量。运行这个脚本,您可以点击运行按钮,这也开启了仿真软件模型。金宝app
在顶层的模型,您将看到我们前面讨论的强化学习设置代理与环境交换数据。让导航到环境中并打开查看信号观测子系统。22个信号的观测是一组表示系统的状态在任何给定的时间。包括信息驱动关节的位置和速度,位置和速度的球,板四元数和衍生品和顶部输入从之前的时间步骤,然后等物理参数球的质量和半径。代理将使用这些观测计算在每一个时间步的操作。因为这些信号有不同的单位,其中有一些是乘以这些规模因素使他们留在别人或多或少相同的范围。它是很重要的,因为这些信号将被送入神经网络和高级信号可能导致网络主导的一个部分,损害其他信号的影响。网络将火车更好如果你以某种方式或者规模观察正常化。
我们也把正弦和余弦的方向,而不是直接使用它们,以避免不连续的角度正负5。这是因为在观察空间不连续可能导致学习算法收敛效果不佳。
环境是一个奖励的其他信号的信号。让我们花一些时间来更好地理解奖励的信号。奖励在任何时间步是由所示的关系。因为我们想让代理把球的中心板,我们应该提供一个积极的奖励当球移动到中心。这个奖励可能是最远的值在任何特定状态,但我们可以提高奖励的形式提供一个形状一个非线性函数。
在本例中,我们使用一个高斯函数来奖励代理随着球的x和y的距离为0。代理几次训练后,你会发现一个形状规整的奖励有助于改善训练收敛。
除了移动球中心,我们也想避免太多的板取向,将违反直觉的平衡球。出于这个原因,我们提供一个点球高板方向的角度。我们还提供另一个点球时代理使用太多的控制工作。
最后我们获得奖励和处罚和标量奖励在每一个时间步。同样重要的是要注意,每个奖项终止函数乘以一个比例因子来指定的相对重要性整体奖励。
最后一组的信号环境下信号并确定当模拟应该终止。终止可能意味着系统已经达到了一个糟糕的状态,是没有意义的进一步模拟。在这种情况下,我们终止模拟和球脱落板通过比较xy坐标与板块边界。
让我们回到生活的脚本创建一个强化学习环境从仿真软件模型。金宝app首先你需要创建规范的输入和输出。从观察和行动空间是连续的在我们的例子中,您可以使用RL数值规范函数创建规格如下所示。
一旦你创建的规格,您可以创建一个环境对象使用RL仿真软件env函数如下所示。金宝app您需要指定仿真软件模型名称,通过RL代理块块路径,观察和操金宝app作规范,我们之前创建。
培训的一个重要方面一个RL代理域随机化。你可以随机仿真软件环境每个训练集的开头通过提金宝app供一个函数处理重置环境在这里完成。这种随机化可以帮助代理学习政策环境内的变化具有很好的鲁棒性。
向下滚动到脚本的最后查看复位功能。在这里,有一些参数可能是重要的随机化,如球物理参数和初始关节角和初始力矩。你可以在这些参数引入随机性。但是现在,让我们关注随机的初始版本的球,然后保持其他参数不变。
创建环境之后,下一步就是创建一个强化学习在MATLAB的代理。有许多可供选择的强化学习算法工具箱。这些算法在离散的或连续的行动空间。在本教程中,您将使用软Actor-Critic代理支持持续的行动空间。金宝app
这是一个高水平的解释软Actor-Critic算法。指导用蓝色代表代理的主要组件。一位经验丰富的缓冲区用于存储经验从代理环境交互和代理学习通过使用示例数据从这个缓冲区。这个代理的学习算法遵循积极批评的方法与一个演员和两个批评,都是由神经网络表示。
演员看着环境状态和选择的行动基于均值和方差来自网络的输出如图所示。这意味着不变性定义了随机策略的演员和用于计算代理的行为。在培训期间,演员网络的权重更新之间的权衡预期的回报和熵的政策。
批评者的坐后面的演员和批评行为无论是好还是坏。他们的利率也定期更新。该算法使用多个评论家减少Q函数的高估。你可以找到更多的信息在软Actor-Critic算法在本教程。但是现在,你需要做的就是创建这个在MATLAB神经网络。一切将由工具箱。
现在我们回到一行脚本。您可以创建本节中的神经网络通过运行代码。如下所示,评论家网络由几fullyConnectedLayers reluLayers之间。输入这个网络代理的观察和操作。和输出Q函数值。您可以使用相同的评论家网络创建两个评论家。
演员也以类似的方式建模。需要观察作为输入和输出政策分布的均值和方差。在创建了演员和批评,您可以创建代理使用rlSACAgent函数如下所示。代理的大多数类型的参数保持默认值如下所示。所以你不需要过于担心改变本教程。类型的参数的完整列表,你可以点击这个链接将带你到MATLAB文档。
一旦创建代理,最后一步是使用火车命令训练算法。您可以指定一些训练选项,例如代理要多长时间火车和什么是股票价值进行训练。例如,您可以设置训练集的最大数量如下所示,然后最大的训练集的步骤。
另一个重要参数是停止训练标准。在这种情况下,我们停止了训练当奖励过去100集平均达到675或更多的价值。这个值在分析代理的性能获得了几个训练迭代。
开始训练,你可以设置这个蓝色训练国旗为true和执行的代码部分。软件需要几秒钟建立培训和我们将发布一个事件管理器图跟踪培训的进展。
图启动之后,您可以查看培训进展从情节看动画在力学Explorer窗口中。你可以在这里看到代理试图平衡球但失败的大部分时间。这是预期的,因为它是对培训和代理未学到的开始。
我们还将看到从情节,代理不接受太多奖励每集。和图蓝线代表了集奖励和红色的线条代表的100集的平均回报的一个窗口。黄线代表预期的长期回报。
作为代理从经验学习,你会发现奖励会增加和收敛值。在这一点上,你可以停止训练并查看代理的性能。停止训练,只需点击停止按钮在这里训练。由于时间关系,我们停止培训和继续生活的脚本。
完成训练的快照显示在图。这将给你一个想法我们期望的培训过程。对于这个特定的培训、代理后达到的平均回报675年约3300集。过了大约20个小时才能完成。
取决于您的系统规范,培训可能需要更少的时间或者更多。同时,由于随机性在这个过程中,你的实际结果可能有点不同于这里。现在让我们加载pre-trained代理查看这种性能。你可以设置doTraining国旗回假负载代理保存在一个垫子文件。你可以再次运行部分加载该文件。
加载代理后,向下滚动到仿真部分。在这里,您可以设置球的初始位置及模拟模型这一次与一个训练有素的代理。这里最初的x和y位置设置为非零值。让我们运行的部分。你现在可以看到动画代理能够中心球成功。你可以试着模拟几个不同的时间有不同的初始条件。
回到仿真软件模型,您可以查看轨迹球和金宝app控制输入通过这些代码块。看到这里,x和y轨迹聚合为零或接近于零的值。我们可以考虑这个作为本教程的满意。的行动,另一方面,似乎很吵。为了实用的目的,我们可能需要考虑是否开动可以处理这些信号。我们可以考虑它作为分析未来的增强剂的性能。它是符合我们奖励函数。
这里有一些微调的选择代理的性能。你可以随机环境中的其他参数如球质量和初始速度做培训。您还可以更改参数和奖赏函数,或改变代理hyperparameters。另一个选择是使用一个不同的代理这个测试算法。我们不会覆盖这些在这个视频,但是你可以试着自己和发现更多的强化学习。
总结这个视频。我们覆盖了很多概念和希望这给你一个对RL的洞察力以及如何使用的强化学习工具箱解决控制问题。最后,这里有一些资源,您可以使用为进一步阅读。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。