首页> 中国专利> 用于机器人应用程序开发的方法和系统

用于机器人应用程序开发的方法和系统

摘要

一种机器人装置管理服务从客户获得机器人装置的第一组参数和用于测试可安装在所述机器人装置上的机器人装置应用程序的模拟环境的第二组参数。所述一组参数用于指示所述应用程序的存储位置和对用于测试所述应用程序的模拟环境的选择。响应于请求,所述机器人装置管理服务选择一组资源,以在所述模拟环境中在所述一组资源上执行模拟。所述机器人装置管理服务从所述存储位置获得所述机器人装置应用程序并且将所述应用程序加载到所述一组资源上以执行所述模拟。

著录项

说明书

相关申请的交叉引用

本申请要求2018年11月21日提交的标题为“ROBOTICS APPLICATION DEVELOPMENTARCHITECTURE”的美国专利申请号16/198,605和2018年11月21日提交的标题为“ROBOTICSAPPLICATION SIMULATION MANAGEMENT”的美国专利申请号16/198,698的优先权,所述申请的公开内容全文以引用的方式并入。

背景技术

近来,自主装置和其他机器人装置在许多用户的日常生活中已经变得无所不在。例如,自主车辆在消费者中变得越来越受欢迎,并且各种公司都试图在未来创建不同的自主车辆平台。机器人装置还被用于制造以降低成本并加快制造过程。然而,开发这些自主装置和其他机器人装置所需的应用程序可能是困难且耗时的。例如,测试和模拟机器人装置应用程序可能会要求大量的资源和大量的反复试验,以确保机器人装置应用程序在被安装到自主装置和其他机器人装置上时将正确地执行。

附图说明

将参考附图来描述各种技术,在附图中:

图1示出了其中可实现各种实施方案的系统的说明性示例;

图2示出了根据至少一个实施方案的其中机器人装置管理服务的部署控制子系统向一群机器人装置传输机器人装置应用程序并且从该一群机器人装置获得数据的系统的说明性示例;

图3示出了根据至少一个实施方案的其中使用一组模拟服务器生成用于机器人装置的模拟环境以获得可用于更新机器人装置应用程序的数据的系统的说明性示例;

图4示出了根据至少一个实施方案的其中模拟服务器执行机器人装置应用程序的模拟并且处理通过执行该模拟而生成的数据的系统的说明性示例;

图5示出了根据至少一个实施方案的用于使用机器人装置应用程序生成用于机器人装置的模拟的强化学习模型的界面的说明性示例;

图6示出了根据至少一个实施方案的用于使用机器人装置应用程序和用于优化该应用程序的强化学习模型来创建针对机器人装置的模拟的界面的说明性示例;

图7示出了根据至少一个实施方案的用于创建定制设计的强化函数以用于训练强化学习模型的界面的说明性示例;

图8示出了根据至少一个实施方案的用于创建定制设计的强化函数以用于训练强化学习模型的界面的说明性示例;

图9示出了根据至少一个实施方案的用于指定机器学习框架以用于训练强化学习模型的界面的说明性示例;

图10示出了根据至少一个实施方案的用于定义终止条件以用于完成强化学习模型的训练的界面的说明性示例;

图11示出了根据至少一个实施方案的用于执行机器人装置应用程序的模拟并且提供通过执行该模拟而产生的模拟数据的过程的说明性示例;

图12示出了根据至少一个实施方案的用于向一群机器人装置传输机器人装置应用程序以致使该一群机器人装置安装应用程序并且向客户端传输由于执行该应用程序而生成的数据的过程的说明性示例;

图13示出了根据至少一个实施方案的用于基于机器人装置应用程序的模拟要求来提供虚拟计算实例以发起模拟的执行的过程的说明性示例;

图14示出了根据至少一个实施方案的用于响应于检测到一组现有虚拟计算实例的故障而将机器人装置部件迁移到其他虚拟计算实例的过程的说明性示例;

图15示出了根据至少一个实施方案的用于响应于检测到针对特定模拟的模拟工作负载的激增而提供附加虚拟计算实例的过程的说明性示例;并且

图16示出了其中可实现各种实施方案的系统的说明性示例。

具体实施方式

本文描述和提出的技术涉及一种用于生成和模拟要结合到各种机器人装置中的机器人装置应用程序的开发架构。在一个示例中,机器人装置管理服务的客户提交请求以模拟可被安装在指定的一群机器人装置上的特定机器人装置应用程序的执行。客户可通过机器人装置管理服务利用由该机器人装置管理服务经由界面(诸如,展现给客户的图形用户界面(GUI))提供的机器人操作系统(ROS)工具和库来生成机器人装置应用程序。机器人装置管理服务可将由客户使用ROS工具和库生成的机器人装置应用程序存储在由基于对象的数据存储服务提供的数据对象中。在一个示例中,可响应于来自客户的请求而将机器人装置应用程序部署到指定的一群机器人装置以使该应用程序可用于该群。

在一个示例中,客户可向机器人装置管理服务提交请求以模拟存储在由基于对象的数据存储服务提供的数据对象中的机器人装置应用程序的执行。客户可通过该请求提供一组机器人装置参数和一组模拟环境参数以定义模拟环境以及在该模拟环境内的机器人装置的特性和能力。例如,该一组机器人装置参数可包括安装在机器人装置上的传感器、机器人装置的移动能力和限制等。模拟环境参数可包括模拟房间的尺寸、机器人装置可能会遇到的障碍物的标识符和参数、机器人装置可能会遇到的任何障碍物的位置、机器人装置可与之交互的任何对象的位置、机器人装置的初始位置、在模拟结束时机器人装置的期望位置等。基于获得的机器人装置参数和模拟环境参数,机器人装置管理服务可生成模拟环境来使用模拟的机器人装置测试应用程序。

在一个示例中,机器人装置管理服务评估提供的参数以确定执行应用程序的模拟的系统要求。例如,机器人装置管理服务可确定由模拟的每个部件执行的过程,并且基于这些过程来估计部件的计算要求。使用该信息,机器人装置管理服务可识别需要哪些资源来支持模拟。在一个示例中,机器人装置管理服务提供一组虚拟计算实例,该一组虚拟计算实例共同地满足模拟的系统要求。另外,基于每个虚拟计算实例的规范,机器人装置管理服务可确定如何在虚拟计算实例间分配模拟的各种部件。机器人装置管理服务可提供虚拟计算实例以用于各种部件和用于模拟的执行。另外地,在一个示例中,机器人装置管理服务在虚拟计算实例间配置一组网络接口以使得能够在模拟的执行期间在机器人装置的各种部件之间进行通信。

在一个示例中,机器人装置管理服务监控应用程序在模拟环境中的执行以获得可提供给客户或用于其他目的的模拟数据。例如,模拟数据可用于更新用于机器人装置的强化学习模型,该强化学习模型可用于更新应用程序。如果机器人装置管理服务在模拟的执行期间检测到虚拟计算实例故障,则机器人装置管理服务可识别机器人装置的受该故障影响的部件。基于这些部件的性能要求,机器人装置管理服务可确定是否需要提供新的虚拟计算实例以支持这些部件或者是否可将部件迁移到用于模拟的其他虚拟计算实例。如果机器人装置管理服务确定需要提供新的虚拟计算实例,则机器人装置管理服务可提供这些新的虚拟计算实例并且将受影响的部件迁移到这些新的虚拟计算实例。

在一个示例中,如果机器人装置管理服务检测到一组部件间的模拟工作负载激增,则机器人装置管理服务可确定是否需要附加资源以支持应用程序的模拟。如果机器人装置管理服务确定需要附加资源,则机器人装置管理服务可提供附加虚拟计算实例以支持受模拟工作负载激增影响的该一组部件。机器人装置管理服务可使用这组部件的系统要求来选择附加虚拟计算实例。机器人装置管理服务可将受模拟工作负载激增影响的该一组部件迁移到这些附加虚拟计算实例以确保模拟的继续执行。

在一个示例中,机器人装置管理服务的客户可定义和管理可安装并执行应用程序的一群机器人装置。基于对特定群的机器人装置的识别,机器人装置管理服务可安装认证应用程序,该认证应用程序可由机器人装置用来访问机器人装置管理服务并且提供通过执行客户定义的应用程序而生成的数据。另外,通过认证应用程序,客户可通过机器人装置管理服务与机器人装置进行通信,反之亦然。认证应用程序还可用于监控客户定义的应用程序的执行以确定在客户定义的应用程序的执行中是否存在任何问题。在一个示例中,通过由机器人装置管理服务提供的GUI,客户可定义作为一群机器人装置的部分的机器人装置。另外,客户可请求将客户生成的应用程序安装到该群的机器人装置上。响应于这样的请求,机器人装置管理服务可基于客户将机器人装置分组为群来识别要接收应用程序来进行安装的机器人装置。机器人装置管理服务可向这些机器人装置传输应用程序以致使机器人装置安装并执行该应用程序。另外,机器人装置管理服务可与每个机器人装置建立通信信道以使得客户能够通过由机器人装置管理服务提供的GUI与这些机器人装置进行交互。

在一个示例中,机器人装置管理服务基于由机器人装置执行的动作和从机器人装置获得的任何数据来监控该一群机器人装置的性能。如果机器人装置管理服务检测到应用程序的执行的问题,则机器人装置管理服务可确定是否将应用程序回滚到应用程序的更早版本。如果应用程序的更早版本是可用的,则机器人装置管理服务可提供应用程序的该更早版本以致使该群的机器人装置回滚到应用程序的该版本。另外,机器人装置管理服务可向客户提供与问题相对应的数据以允许客户确定一连串过程(例如,修改模拟参数并执行应用程序的新的模拟、修改该应用程序的计算机可执行代码等)。如果创建了应用程序的更新,则机器人装置管理服务可向机器人装置传输该更新,所述机器人装置可将更新结合到应用程序中并重新开始应用程序的执行。

在先前和以下描述中,描述了各种技术。出于解释目的,阐述了具体配置和细节,以便提供对实现技术的可能方式的透彻理解。然而,还将显而易见的是,以下描述的技术可在没有具体细节的情况下以不同的配置来实践。此外,可省略或简化众所周知的特征,以避免使所描述的技术模糊。

如本领域技术人员根据本公开将理解,某些实施方案可能能够实现某些优点。例如,由于机器人装置管理服务向该服务的客户提供ROS工具和库,因此这些客户可利用这些资源来生成可用于机器人装置的定制机器人装置应用程序。另外地,机器人装置管理服务向客户提供资源以在模拟环境内模拟定制应用程序的执行。这消除了将应用程序安装到机器人装置上并在物理环境中测试该应用程序的需要。另外,由于可执行应用程序的模拟,因此可在虚拟模拟环境内执行任何反复试验,同时降低在将应用程序安装到机器人装置上时损坏机器人装置的风险。另外,由于机器人装置管理服务允许客户定义多群机器人装置,因此客户可同时地管理多个机器人装置,同时对不同群的机器人装置实现不同的应用程序策略。

图1示出了其中可实现各种实施方案的系统100的说明性示例。在系统100中,机器人装置管理服务104的客户通过客户端装置102向机器人装置管理服务104提交请求以创建并模拟可被安装在由客户指定的一组机器人装置112上的机器人装置应用程序106。机器人装置管理服务104可包括计算资源集合,该计算资源集合共同地操作来提供ROS工具和库以允许机器人装置管理服务104的客户创建可被实现到一群机器人装置112上的定制应用程序。另外,机器人装置管理服务104可将ROS工具和库扩展到其他计算资源服务。例如,通过机器人装置管理服务104,客户可定义利用将文本转换为语音的服务的机器人装置应用程序106,该应用程序可用于使得在机器人装置112与客户之间能够使用自然语言理解(NLU)进行通信。另外地,经由机器人装置管理服务104,客户可定义利用计算资源服务提供商的视频流式传输服务的应用程序106,以使得能够将由机器人装置捕获的视频实时流式传输到客户。因此,机器人装置管理服务104可用于协调在客户、机器人装置112和由计算资源服务提供商提供的无数服务间的交互。

在一个实施方案中,机器人装置管理服务104通过客户端装置102向客户提供界面,该界面可用于创建机器人装置应用程序106、指定用于机器人装置应用程序106的模拟的参数、定义和组织多群机器人装置112、通过加密的通信信道与机器人装置112进行通信,以及从执行机器人装置应用程序106的机器人装置112获得数据。通过该界面,机器人装置管理服务104可展现客户可选择的各种ROS工具和库,以创建机器人装置应用程序106。例如,机器人装置管理服务104可通过界面提供代码编辑器,该代码编辑器可由客户用来定义包括机器人装置应用程序106的计算机可执行代码。另外,除了代码编辑器之外,机器人装置管理服务104还可提供与通过其他计算资源服务(诸如上述那些)提供的功能相对应的模块的图形表示。通过界面,客户可选择这些模块中的任一个以将这些模块以计算机可执行代码的形式添加到代码编辑器。

机器人装置管理服务104可评估通过界面创建的机器人装置应用程序106以识别可能会阻止应用程序在模拟环境中和在机器人装置112上正确地执行的任何错误。例如,机器人装置管理服务104可针对任何编译错误、冲突命令、未定义参数或变量等来评估计算机可执行代码。另外地,机器人装置管理服务104可提供用于增强计算机可执行代码的建议。例如,如果客户已经通过计算机可执行代码指定要通过执行应用程序106的机器人装置112的视频流来获得数据,则机器人装置管理服务可建议实现利用将文本转换为语音的服务的模块,由此可经由视频流来检测到文本。

在一个实施方案中,客户可通过界面向机器人装置管理服务104注册一组机器人装置112,以使得能够将这些机器人装置112组织为可由机器人装置管理服务104维护的逻辑分组。机器人装置112可包括自主装置(例如,“无人驾驶”车辆、器具、无人飞行器、太空探索载具、卫星等),所述自主装置可基于经由对自主装置的周围环境的分析而收集到的传感器数据来执行操作。应指出,如贯穿本公开所描述,机器人装置可指物理机器人装置和/或模拟机器人装置,所述模拟机器人装置可为物理机器人装置的表示但处于模拟环境中。通过界面,客户可利用各种应用程序编程接口(API)调用来注册新的机器人装置112。例如,客户可通过使用RegisterDevice()API调用来提交机器人装置112的唯一名称,该唯一名称可用于将机器人装置112与客户的账户相关联。在一个实施方案中,机器人装置的注册要求RegisterDevice()API调用,并且以字符串的形式提供机器人装置的名称、机器人装置的唯一物联网(IoT)名称和机器人载具所属的逻辑分组的名称。例如,客户可通过使用RegisterDevice()API调用来提交机器人装置112的唯一IoT名称,该唯一IoT名称可用于建立机器人装置管理服务104与机器人装置112之间的加密通信信道。另外地,通过RegisterDevice()API,客户可定义机器人装置112将成为其一部分的逻辑分组。该逻辑分组可为由客户先前创建的机器人装置112的现有分组或客户已经定义的新逻辑分组。任选地,通过RegisterDevice()API调用,客户可定义客户端令牌,该客户端令牌可用于使机器人装置112与机器人装置管理服务104之间的请求和响应相关联,如在下文更详细地描述。

通过使用DeregisterDevice()API调用,客户可提交请求以从其账户中注销现有机器人装置112。响应于该API调用,机器人装置管理服务104可更新数据库以更新机器人装置112的注册状态并且发起工作流以注销机器人装置112。在一个实施方案中,DeregisterDevice()API调用以字符串的形式包括要被注销的机器人装置112的唯一名称。

在该注册过程中,机器人装置管理服务104可要求客户创建机器人装置112的数字证书,以便允许在与机器人装置管理服务104以及计算资源服务提供商的任何其他服务的通信中对机器人装置112进行认证。客户可使用CreateDeviceCertificates()API调用来指定机器人装置112的IoT名称以请求创建机器人装置112的数字证书。响应于请求,机器人装置管理服务可与连接网络的装置服务通信,以生成机器人装置112的IoT事物信息以及数字证书。另外,机器人装置管理服务104可将数字证书传送到机器人装置112以使得机器人装置112能够呈现数字证书以用于认证。在一个实施方案中,机器人装置管理服务104向机器人装置112传输通信信道应用程序,该通信信道应用程序如果被安装在机器人装置112上并执行,则使得机器人装置112能够与机器人装置管理服务104和其他计算资源服务交互并且呈现数字证书以用于认证。

在一个实施方案中,客户向机器人装置管理服务104提交请求以发起机器人装置应用程序106在模拟环境内的模拟来执行对机器人装置应用程序106的一组测试。例如,客户可使用机器人装置应用程序106的模拟来估计机器人装置112在模拟环境中的模拟的性能。这可允许客户调整机器人装置应用程序106,使得机器人装置112可通过机器人装置应用程序106的执行来达成更好的结果。在请求中,客户可指定一组机器人装置参数和一组模拟参数,这两组参数可用于生成模拟环境和执行机器人装置应用程序106的模拟。

机器人装置参数可包括要经由模拟环境进行测试的机器人装置112的名称。这些参数还可包括机器人装置112要利用的传感器、机器人装置112的移动能力和限制等。模拟环境参数可包括模拟房间的尺寸、机器人装置将遇到的任何障碍物的位置、机器人装置可与之交互的任何对象的位置、机器人装置的初始位置、在模拟结束时机器人装置的期望位置等。在一个实施方案中,通过界面,客户可定义计算机可执行代码,该计算机可执行代码定义用于训练机器人装置112的强化学习模型的定制设计的强化函数。例如,经由对服务104的用以发起特定应用程序106的模拟的API调用(例如,StartEvaluation()等),客户可指定要用于训练应用程序106的强化学习模型的强化函数的资源名称、要用于评估的模拟环境的资源名称、模拟的终止条件(例如,超时时段、模型收敛要求等),以及用于存储经由模拟生成的数据的数据对象的位置和名称。在一个实施方案中,StartEvaluation()API调用可以字符串的形式包括要在模拟中训练的强化学习模型的资源名称、为模拟选择的模拟环境的资源名称、指定模拟的终止条件的文档或文件,以及要用于存储模拟的工件的数据对象。任选地,通过StartEvaluation()API调用,客户可指定要使用哪个令牌来将请求和响应相关联。

在一个实施方案中,客户致使使用对机器人装置管理服务104的API调用(例如,ImportModel())来导入强化学习模型以及定义定制设计的强化函数的计算机可执行代码。API调用可包括强化学习模型的唯一名称、模型类型、模型的框架、模型的描述以及任何模型工件的位置作为参数。在一个实施方案中,前述参数以字符串的形式被包括在ImportModel()API调用中。客户可任选地指定要使用哪个令牌来将请求和响应相关联。

如上文所指出,机器人装置管理服务104可利用强化学习技术以基于模拟环境刺激和响应于该刺激的奖励最大化来确定机器人装置112要执行的动作。通过界面,客户可指定要由机器人装置112在模拟环境中通过应用程序106的执行而达成的特定目标,并且通过定义定制设计的强化函数的计算机可执行代码,可指定与响应于模拟环境内的状态而执行动作相对应的奖励。因此,模拟代理可在模拟内确定机器人装置112和模拟环境的初始状态。响应于机器人装置112的和模拟环境的初始状态,代理可选择要执行的动作并且致使机器人装置112的模拟执行该动作。记录机器人装置112和模拟环境的所得状态并且将其用来基于初始状态和结束状态来确定动作的奖励值。一旦已经达成目标,代理就可确定总奖励值,并且使用定制设计的强化函数来确定奖励值是否为最大可能值。代理可继续执行模拟并且基于这些奖励值和由机器人装置112的模拟执行的动作来调整强化学习模型。

应指出,出于说明目的,贯穿本公开使用了强化学习,但也可利用其他机器学习技术(诸如监督学习技术)来优化机器人装置应用程序106。例如,机器学习系统可使用有关应用程序106的训练数据来构建机器学习模型,该机器学习模型可用于选择机器人装置112在导航通过环境以达成特定目标时的策略。在该示例实施方案中,训练数据可被馈送到机器学习系统和分类算法中,以构建将动作和状态聚类为动作策略类别的模型。在使用监督学习的实施方案中,输入数据可包括对于机器人装置应用程序106的给定执行来说策略是否正确的指示。例如,机器人装置的至少部分地基于机器人装置关于导航通过模拟环境以达成特定目标的动作而作出的选择等的分析行为可用来推断对于机器人装置112来说某些动作是否正确,或者客户可在动作的执行之后基于操作度量来识别数据中的正确动作。机器学习系统在任何时间都可利用一个或多个样本矢量来执行一个或多个模拟,以确定被应用程序106用来确定机器人装置112的动作的函数是否正在产生正确且准确的结果,和/或改进被应用程序106利用的一个或多个函数以便产生正确且准确的结果。例如,在机器学习系统的初始化期间,应用程序106可向机器学习系统提供一个或多个样本矢量以及应至少部分地基于这一个或多个样本矢量来获得的分析结果(例如,期望的结果)。至少部分地基于这种练习,机器学习系统可调整被应用程序106利用的函数,以分析对应于与由机器人装置112在模拟环境中执行的动作相关联的活动的矢量。

机器学习系统可从被机器人装置管理服务104雇用的一位或多位分析师接收输入,以通过使用上述一个或多个函数来分析来自应用程序106的一个或多个模拟的结果。例如,分析师可查看响应于来自模拟环境的刺激而由机器人装置112执行的动作和由机器人装置管理服务104生成的一个或多个矢量,以确定是否应实现响应于刺激而执行的动作。分析师可提供他/她的输入,以用于改进用来将矢量输入分类为与前述策略中的任一个或完全地与另一个策略相对应的模型。与由分析师执行的查看相对应的测量的矢量和与分析师的输入相对应的期望结果可被机器学习系统用来更新用于对矢量输入进行分类的模型。这可由多个分析师执行和/或使用多个矢量输入来执行,以向机器学习系统提供足够数量的样本矢量输入和期望输出。机器学习系统可调整由机器人装置管理服务104使用的一个或多个模型,以增加在未来分析中获得期望结果的可能性。

在一个实施方案中,机器人装置管理服务104基于获得的参数108(例如,机器人装置参数和模拟环境参数)而生成模拟环境,该模拟环境将用于测试应用程序106和用于训练应用程序106的强化学习模型。例如,机器人装置管理服务104可评估获得的参数108,以确定执行和支持机器人装置112的模拟的计算要求(例如,存储器、中央处理单元(CPU)要求、图形处理单元(GPU)要求等)。例如,机器人装置管理服务104可识别执行模拟和在模拟环境内处理机器人装置112的动作所需的模拟的一组部件(例如,物理引擎、渲染引擎等)。基于这些计算要求,机器人装置管理服务104可在一组模拟服务器110内提供一组虚拟计算实例,以执行应用程序106的模拟。

可经由虚拟计算机系统管理服务来使模拟服务器110可用。在一个实施方案中,虚拟计算机系统管理服务包括一个或多个计算机系统,该一个或多个计算机系统各自包括一个或多个处理器以及包含指令的存储器,所述指令在被一个或多个处理器执行的情况下处理来自实体(例如,机器人装置管理服务104等)的传入请求并且向虚拟计算系统实例传输命令来执行一组命令,包括执行应用程序106的模拟和执行用于训练在该模拟中利用的强化学习模型的应用程序,以识别对应用程序106的潜在修改来提高执行应用程序106的机器人装置112的效率和性能。在一个实施方案中,虚拟计算机系统管理服务被实现为过程、代理或在被执行的情况下处理来自实体的传入请求并向虚拟计算系统实例传输命令来执行模拟的其他可执行代码。在一个实施方案中,使用计算资源服务提供商的其他资源(例如,虚拟计算机系统实例、其他计算实例等)来实现虚拟计算机系统管理服务。在一个实施方案中,机器人装置管理服务104使用虚拟计算机系统管理服务来提交应用程序106以及控制如何由模拟服务器110上的一组虚拟计算机系统实例生成和执行模拟的一组参数108组。

基于模拟的每个部件的计算要求,机器人装置管理服务104可确定如何在模拟服务器110上的提供的虚拟计算实例间分配各种部件。例如,机器人装置管理服务104可在被配置有高性能能力的虚拟计算实例内应用计算更密集的部件,以处理复杂或资源密集的应用程序。机器人装置管理服务104可将模拟的部件放置在模拟服务器110内的虚拟计算实例内,直到已经达到一定水平的容量使用为止。如果虚拟计算实例处于满容量或已经达到由机器人装置管理服务104施加的极限,则机器人装置管理服务104可基于这些部件的计算要求来将剩余部件分配在其他虚拟计算实例中。

由于可跨各种模拟服务器110在任何数量的虚拟计算实例间分配模拟的部件,因此机器人装置管理服务104可在虚拟计算实例之间配置虚拟网络接口,以使得在模拟的执行期间能够在模拟的各种部件之间进行通信。虚拟网络接口可使用硬件和软件在模拟服务器110上实现并且可使用可执行指令来执行,该可执行指令由模拟服务器110执行而致使虚拟网络接口执行本文描述的操作。这些虚拟网络接口可用于在各种虚拟计算实例和在其内操作的部件间传输数据。在一个实施方案中,被提供用于模拟的执行的虚拟计算实例被组织到客户的虚拟专用网络中。这允许客户在执行期间访问模拟,以监控机器人装置在模拟环境中的性能并且获得由于模拟的执行而生成的数据。在一个实施方案中,如果部件中的一个或多个位于客户的内部部署网络内,则机器人装置管理服务104可将模拟映射到客户的内部部署网络内的虚拟计算实例。因此,在一些情况下,虚拟专用网络可包括在模拟服务器110上和在客户的内部部署网络内的虚拟计算实例。

在一个实施方案中,机器人装置管理服务104监控模拟的执行以确保模拟成功地完成。例如,如果机器人装置管理服务104检测到特定虚拟计算实例已经出故障或以其他方式变得无法操作,则机器人装置管理服务104可确定模拟的部件中的任一个是否由于故障而受影响。如果机器人装置管理服务104确定模拟的一个或多个部件因故障而受影响,则机器人装置管理服务104可确定受影响的部件的性能要求,并且基于这些性能要求来确定用于模拟的活动虚拟计算实例中的任一个是否可容纳这些部件。如果是的话,则机器人装置管理服务104可将受影响的部件迁移到活动虚拟计算实例并且重新开始模拟的执行。可选地,如果活动虚拟计算实例不具有容纳这些受影响的部件的容量,则机器人装置管理服务104可向虚拟计算机系统管理服务提交请求以将新的虚拟计算实例提供到模拟服务器110上。机器人装置管理服务104可将受影响的部件迁移到这些新的虚拟计算实例上,并且重新开始机器人装置112在模拟环境内的模拟。

类似地,机器人装置管理服务104可监控模拟和虚拟计算实例以确定模拟的模拟工作负载是否出现激增。如果机器人装置管理服务104检测到模拟工作负载的激增,则机器人装置管理服务104可确定该模拟工作负载的激增是否指示需要附加虚拟计算实例以支持机器人装置112的模拟。如果需要附加虚拟计算实例,则机器人装置管理服务104可向虚拟计算机系统管理服务提交请求以将新的虚拟计算实例提供到模拟服务器110上。对这些虚拟计算实例的性能要求可基于负责模拟工作负载的激增和/或响应于模拟工作负载的激增而被选择用于迁移的部件的性能要求来确定。机器人装置管理服务104可将识别的部件迁移到这些新提供的虚拟计算实例并且继续机器人装置112的模拟。

在一个实施方案中,机器人装置管理服务104将经由机器人装置112的模拟的执行而生成的数据存储在由基于对象的数据存储服务维护的数据对象中。基于对象的数据存储服务可为由计算资源服务提供商提供的服务。基于对象的数据存储服务可在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。存储在基于对象的数据存储服务中的数据可被组织到数据对象中。数据对象可具有任意大小,并且在一些情况下,可对大小有约束。因此,基于对象的数据存储服务可存储很多不同大小的数据对象。基于对象的数据存储服务可作为将数据对象与数据对象的标识符相关联的键值存储进行操作,所述标识符可由客户或其他实体(例如,机器人装置管理服务104等)使用以结合由基于对象的数据存储服务存储的数据对象来检索或执行其他操作。对基于对象的数据存储服务的访问可通过对服务的API调用或经由界面(诸如GUI)进行。

由机器人装置管理服务104通过机器人装置112的模拟获得的模拟数据可包括通过使用应用程序106进行的机器人装置112的模拟而生成的更新的强化学习模型以及由客户提供的定制设计的强化函数。另外,模拟数据可基于由机器人装置112通过应用程序106的执行而处理的各种模拟环境刺激来指定由机器人装置112在模拟中执行的动作。机器人装置管理服务104可向客户提供该模拟数据来满足该客户的请求,以使用识别的应用程序106和由客户经由客户端102提供的一组参数108来执行机器人装置112的模拟。在一些情况下,机器人装置管理服务104可提供用于存储模拟数据的数据对象的统一资源标识符(URI)或其他网络地址。客户可使用URI或其他网络地址来访问数据对象并检索模拟数据。在一个实施方案中,应用程序106以及任何依赖项(例如,模拟的执行所需的其他资产,诸如环境障碍物定义、机器人装置限制等)类似地存储在基于对象的数据存储服务的数据对象中。

在一个实施方案中,通过由机器人装置管理服务104提供的界面,客户可提交请求以将应用程序106安装到一组机器人装置112上。如上文所指出,客户可通过由机器人装置管理服务104提供的界面来创建机器人装置112的逻辑分组。因此,客户可通过该界面来选择逻辑分组中的一个或多个,以指示哪些机器人装置112要获得并执行应用程序106。响应于请求,机器人装置管理服务104可从用于存储应用程序106的数据对象获得应用程序106并且向选择的机器人装置112传输应用程序106。机器人装置管理服务104可将应用程序106从该数据对象传输到客户选择的逻辑分组的所识别的机器人装置112中的每一个。在一个实施方案中,机器人装置管理服务104向每个机器人装置112传输数据对象或用于存储应用程序106的其他数据存储的网络地址,而不是向由客户指定的机器人装置112传输应用程序106。这可致使每个机器人装置112利用提供的网络地址来访问数据对象或用于存储应用程序106的其他数据存储,并且从数据对象或其他数据存储获得应用程序106以在机器人装置112上安装并执行。

为了请求将应用程序106安装到一组机器人装置112上,客户可将DeployProjectToDevice()API调用提交到机器人装置管理服务104。在一个实施方案中,要求DeployProjectToDevice()API以开始将指定的应用程序106部署到客户账户中的机器人装置112,并且该API可以字符串的形式包括机器人装置112的名称和应用程序106的唯一名称。可异步地执行应用程序106向一组机器人装置112的实际部署。响应于对部署应用程序的请求,服务104可向客户提供唯一部署标识符。客户可通过对机器人装置管理服务104的GetDeploymentStatus()API调用来监控应用程序106向机器人装置112的部署。客户可以字符串的形式包括先前由机器人装置管理服务104提供的部署标识符。响应于该请求,机器人装置管理服务104可提供关于应用程序106向机器人装置112的部署的状态的详细信息。

如果客户想要从机器人装置112移除应用程序106,则客户可提交DeleteProject()API调用,通过该API调用,客户可以字符串的形式指定要被移除的应用程序106的名称。响应于DeleteProject()API调用,机器人装置管理服务104可从客户的账户移除应用程序106并且致使群中的机器人装置112移除应用程序106(如果该应用程序被安装到机器人装置112上的话)。为了从特定的机器人装置112移除应用程序106,客户可向服务104提交RemoveProjectFromDevice()API调用。在一个实施方案中,要求RemoveProjectFromDevice()API调用以从指定的机器人装置112移除应用程序106,并且该API调用可以字符串的形式包括机器人装置112的名称。机器人装置管理服务104可向指定的机器人载具112传输请求以从其系统移除应用程序106。

对于每个机器人装置112,机器人装置管理服务104可在机器人装置112与机器人装置管理服务104之间建立通信信道,以使得能够在机器人装置112与机器人装置管理服务104之间进行通信。例如,机器人装置112可通过该通信信道向机器人装置管理服务104传输请求,以访问由服务104或由其他计算资源服务提供的一组资源。通过通信信道,机器人装置112还可提供客户可用来将机器人装置112正与之交互的环境可视化的数据。例如,如果机器人装置112包括视频记录装置,则机器人装置112可使用视频记录装置以通过通信信道向机器人装置管理服务104流式传输视频。通过由机器人装置管理服务104提供的界面,客户可访问视频流以观看在其环境中的机器人装置112。通过通信信道,客户可与机器人装置112交互并且在需要时通过界面向机器人装置112发出命令。因此,客户可基于被客户用来将机器人装置112的环境可视化的数据而致使机器人装置112在应用程序106的执行期间偏离被编码到应用程序106中的动作。

在一个实施方案中,机器人装置管理服务104可基于在应用程序106的执行期间由每个机器人装置112执行的动作来监控所选择的逻辑分组的每个机器人装置112的性能。例如,机器人装置管理服务104可基于从机器人装置112获得的数据而确定正由机器人装置112执行的应用程序106存在问题。例如,如果机器人装置112由于应用程序106的执行而执行非预期动作,则机器人装置管理服务104可确定应用程序106存在问题。类似地,在应用程序106过早地终止或以其他方式崩溃的情况下,机器人装置管理服务104可检测到应用程序106的问题。在一个实施方案中,如果机器人装置管理服务104确定正在机器人装置112上执行的应用程序106存在问题,则机器人装置管理服务104可向机器人装置112提供应用程序106的更早版本以用于安装和执行。在发现基于使用应用程序106执行的模拟而更新的应用程序106的最新版本存在影响机器人装置112的性能的问题的情况下,机器人装置管理服务104可在数据对象中维护应用程序106的更早版本。因此,机器人装置管理服务104可允许机器人装置112执行应用程序106的更早版本,而同时使用应用程序106同时地执行附加模拟以解决任何识别出的问题。

在一个实施方案中,如果应用程序106的更新可用,则机器人装置管理服务104可通过建立的通信信道向利用应用程序106的机器人装置112传输应用程序106的更新。可选地,机器人装置管理服务104可向每个机器人装置112传输存储应用程序106的更新的数据对象或其他数据存储的网络地址。这可致使每个机器人装置112利用所提供的网络地址来访问数据对象或其他数据存储以获得更新。响应于获得更新,机器人装置112可实现更新并且重新开始应用程序106的执行。在一个实施方案中,使用空中(OTA)编程通过加密通信信道(诸如在机器人装置112与机器人装置管理服务104之间建立的前述通信信道)来提供更新。

图2示出了根据至少一个实施方案的其中机器人装置管理服务的部署控制子系统210向一群机器人装置216传输机器人装置应用程序218并且从该一群机器人装置216获得数据的系统200的说明性示例。在系统200中,机器人装置管理服务204的客户经由客户端装置202向机器人装置管理服务204的服务前端206提交请求,以将应用程序218部署到一群机器人装置216以便在这些机器人装置216上执行应用程序218。服务前端206在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。在一个实施方案中,服务前端206向客户端装置102提供界面,通过该界面,客户可定义对机器人装置管理服务104的请求。例如,通过该界面,客户可选择要安装到一群机器人装置216上的应用程序218、与包括一群机器人装置216的逻辑分组相对应的标识符,以及其他参数(例如,由于应用程序218的执行而由机器人装置216生成的数据的存储位置、要在机器人装置218上激活的传感器和其他装置、机器人装置216的通信能力、用于机器人装置216的超驰动作的参数等)。

响应于该请求,服务前端206可确定客户是否被授权在识别的机器人装置216上实现所选择的机器人装置应用程序218。例如,服务前端206可访问与客户相关联的客户账户208以识别一组访问控制策略组,该一组访问控制策略定义对机器人装置管理服务204的访问级别以及定义客户可执行或可不执行的动作的任何权限。基于这些策略,服务前端206可确定是否向机器人装置管理服务204的部署控制子系统210传输请求。部署控制子系统210在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。

响应于请求,部署控制子系统210可从基于对象的数据存储服务214内的数据对象获得机器人装置应用程序218。例如,请求可指定应用程序218的标识符,部署控制子系统210可使用该标识符来查询数据库,该数据库包括与用于存储机器人装置应用程序的数据对象的网络地址相对应的条目。从该数据库,部署控制子系统210可识别存储与所提供的标识符相对应的机器人装置应用程序218的数据对象的网络地址。部署控制子系统210可向请求中指示的机器人装置216传输机器人装置应用程序218。例如,如果客户选择机器人装置216的特定逻辑分组来安装应用程序218,则部署控制子系统210可评估该逻辑分组以识别包括由客户指定的逻辑分组的机器人装置216。部署控制子系统210可通过在机器人装置管理服务204与机器人装置216之间建立的通信信道向每个机器人装置216传输应用程序218。在一个实施方案中,部署控制子系统210可传输可由机器人装置216用来安装和执行应用程序218的应用程序数据,而不是向每个机器人装置216提供应用程序218。应用程序数据可包括用于存储应用程序218的数据对象或其他数据存储的网络地址、用于执行应用程序218的参数(例如,在应用程序218的执行期间要利用的传感器、要由机器人装置216访问以用于应用程序218的执行的计算资源、可致使机器人装置216记录要存储在应用程序数据存储库212中的数据的计算机可执行代码等)、包括应用程序218的在被执行的情况下致使机器人装置216安装应用程序218的计算机可执行代码等。

在一个实施方案中,如果机器人装置216先前尚未向机器人装置管理服务204注册,则部署控制子系统210可发起机器人装置216的注册过程。在该注册过程期间,机器人装置管理服务204可要求客户创建机器人装置216的数字证书,以便允许在与部署控制子系统210以及计算资源服务提供商的任何其他服务的通信中对机器人装置216进行认证。部署控制子系统210可与连接网络的装置服务通信,以生成机器人装置216的IoT事物信息以及数字证书。另外,部署控制子系统210可将数字证书传送到机器人装置216以使得机器人装置216能够呈现数字证书以用于认证。在一个实施方案中,部署控制子系统210向机器人装置216传输通信信道应用程序,该通信信道应用程序如果被安装在机器人装置216上并执行,则使得机器人装置216能够与部署控制子系统210和其他计算资源服务交互并且呈现数字证书以用于认证。

响应于从部署控制子系统210获得机器人装置应用程序218,机器人装置216可各自安装并执行机器人装置应用程序218。在一个实施方案中,部署控制子系统210基于在应用程序218的执行期间由每个机器人装置216执行的动作来监控所选择的逻辑分组的每个机器人装置216的性能。例如,部署控制子系统210可基于从机器人装置216获得的数据来确定正由机器人装置216执行的应用程序218存在问题。在一个实施方案中,如果部署控制子系统210确定正在机器人装置216上执行的应用程序218存在问题,则部署控制子系统210将应用程序218的更早版本从数据对象提供到机器人装置216以用于安装和执行。在发现基于使用应用程序218执行的模拟而更新的应用程序218的最新版本存在影响机器人装置216的性能的问题的情况下,部署控制子系统210可在由基于对象的数据存储服务214维护的数据对象中维护应用程序218的更早版本。因此,部署控制子系统210可允许机器人装置216执行应用程序218的更早版本。

对于每个机器人装置216,部署控制子系统210可将从机器人装置216获得的数据记录在应用程序数据存储库212中。该数据可包括在机器人装置216导航通过环境时经由应用程序218的执行而由该机器人装置获得的遥测数据。另外,数据可包括传感器数据,包括经由机器人装置216上的各种传感器记录的关于环境的信息。通过部署控制子系统210与机器人装置216之间的通信信道,可维持机器人装置216与部署控制子系统210之间的通信。例如,机器人装置216可通过该通信信道向部署控制子系统210传输请求,以访问由机器人装置管理服务204或由其他计算资源服务提供的一组资源。通过通信信道,机器人装置216还可提供客户可用来将机器人装置216正与之交互的环境可视化的数据。例如,如果机器人装置216包括视频记录装置,则机器人装置216可使用视频记录装置以通过通信信道向部署控制子系统210流式传输视频。通过服务前端206,客户可访问视频流以观看在其环境中的机器人装置216。通过使用服务前端206和通信信道,客户可与机器人装置216交互并且在需要时通过经由服务前端206提供的界面向机器人装置216发出命令。另外,客户可针对其逻辑分组的任何机器人装置216而使用服务前端206来从应用程序数据存储库212获得数据。

在一个实施方案中,机器人装置管理服务204利用从机器人装置216获得的传感器数据来更新安装在机器人装置上的应用程序218,从而产生更新的应用程序。例如,机器人装置管理服务204可基于获得的传感器数据而检测到应用程序218存在问题(例如,应用程序已经崩溃而造成传感器数据不足,传感器数据指示在环境内执行非预期动作,传感器数据指示一个或多个传感器由于应用程序的执行而出故障等)。响应于问题,机器人装置管理服务204可致使机器人装置216回滚到应用程序218的更早版本,该更早版本不会触发由机器人装置管理服务204识别出的问题。机器人装置管理服务204可向机器人装置216传输应用程序的更早版本以致使机器人装置216安装并执行应用程序218的该更早版本。可选地,机器人装置管理服务204可提供用于存储应用程序218的更早版本的数据对象的网络地址。这可致使机器人装置216使用网络地址来访问数据对象并且获得应用程序218的更早版本。

在一个实施方案中,机器人装置管理服务204使用传感器数据来创建应用程序218的新版本。例如,基于传感器数据,机器人装置管理服务204可识别应用程序218中的功能的一个或多个改善,该一个或多个改善如果被实现,则可带来应用程序218的优化。机器人装置管理服务204可向机器人装置216传输应用程序218的该新版本以致使机器人装置216安装并执行应用程序218的新版本。可选地,机器人装置管理服务204可提供用于存储应用程序218的新版本的数据对象的网络地址。这可致使机器人装置216使用网络地址来访问数据对象并且获得应用程序218的新版本。在一个实施方案中,机器人装置管理服务204向客户提供对应用程序218的改善的建议,以允许客户确定是否实现改善并且创建应用程序218的新版本。客户可从机器人装置管理服务204所建议的一组改善选择一个或多个改善来实现。基于来自客户的响应,机器人装置管理服务204可修改应用程序218的计算机可执行代码,以并入所选择的一个或多个改善并且创建应用程序218的新版本以便部署到机器人装置216。

图3示出了根据至少一个实施方案的其中使用一组模拟服务器316生成用于机器人装置的模拟环境以获得可用于更新机器人装置应用程序320的数据的系统300的说明性示例。在系统300中,机器人装置管理服务302的客户通过服务前端304提交请求,以发起执行机器人装置应用程序320的机器人装置的模拟并且训练可用于更新并优化机器人装置应用程序320的强化学习模型。通过服务前端304,客户可定义一组机器人装置参数和一组模拟参数,这两组参数可用于生成模拟环境和执行机器人装置应用程序320的模拟。

机器人装置参数可包括要经由模拟环境进行测试的机器人装置的名称。这些参数还可包括机器人装置要利用的传感器、机器人装置的移动能力和限制等。模拟环境参数可包括模拟房间的尺寸、机器人装置将遇到的任何障碍物的位置、机器人装置可与之交互的任何对象的位置、机器人装置的初始位置、在模拟结束时机器人装置的期望位置、要并行地执行的模拟的数量(例如,要执行来测试机器人装置应用程序的同时模拟)等。在一个实施方案中,通过服务前端304,客户可定义计算机可执行代码,该计算机可执行代码定义用于训练机器人装置的强化学习模型的定制设计的强化函数。例如,经由对服务前端304的用以发起特定应用程序320的模拟的API调用(例如,StartEvaluation()等),客户可指定要用于训练应用程序320的强化学习模型的强化函数的资源名称、要用于评估的模拟环境的资源名称、模拟的终止条件(例如,超时时段、模型收敛要求等),以及用于存储经由模拟生成的数据的数据对象的位置和名称。

在一个实施方案中,使用StartEvaluation()API调用以针对强化学习模型来创建新的评估工作(例如,模拟和训练)。StartEvaluation()API调用可以字符串的形式包括要训练的强化学习模型的资源名称、由客户通过界面定义的模拟环境的资源名称、包括模拟的终止条件的文档或文件的位置,以及用于存储模拟工件的数据对象。响应于该API调用,服务前端304可向客户提供与模拟相对应的唯一资源名称。该唯一资源名称可由客户用来请求关于评估的信息或执行其他操作。例如,通过GetEvaluation()API调用,客户可得到关于模拟的信息,以用于训练强化学习模型。GetEvaluation()API调用可以字符串的形式包括评估的资源名称。响应于该API调用,服务前端304可提供包括模拟的详情的数据对象的网络地址。可选地,服务前端304可访问数据对象以获得模拟的详情并且直接地向客户提供该详情。

在一个实施方案中,客户可通过服务前端304提交ListEvaluations()API调用,以获得正被执行来训练强化学习模型的模拟的排序。ListEvaluations()API调用可以字符串的形式包括强化学习模型的资源名称。任选地,除了资源名称之外,客户还可定义每界面页面要返回的结果的最大数量、可用于对结果进行排序的字段(例如,按照创建时间等)、结果的排序次序(例如,升序、降序等),以及可用于仅检索具有特定状态(例如,进行中、已完成、已失败、中断、停止等)的模拟的过滤器。在一个实施方案中,客户还可通过服务前端304提交StopEvaluation()API调用,以停止用于训练强化学习模型的特定模拟。StopEvaluation()API调用可以字符串的形式包括要停止的模拟的资源名称。

在一个实施方案中,客户可使用对服务前端304的API调用(例如,ImportModel())来导入强化学习模型以及定义定制设计的强化函数的计算机可执行代码。API调用可包括强化学习模型的唯一名称、模型类型、模型的框架、模型的描述以及任何模型工件的位置作为用字符串表示的参数。另外地,客户可提交DeleteModel()API调用以请求从客户的账户且从由机器人装置管理服务302维护的数据库(详述每个可用的强化学习模型)删除强化学习模型。DeleteModel()API调用可以字符串的形式包括强化学习模型的标识。这可为强化学习模型的名称和类型,或者要删除的强化学习模型的资源名称。客户还可提交GetModel()API调用以请求特定强化学习模型的信息。GetModel()API调用可以字符串的形式包括强化学习模型的标识,如上所述。在一个实施方案中,客户可使用对服务前端304的ListModels()API调用以检索客户可用的所有强化学习模型的信息。GetModel()API可以字符串的形式包括要检索的模型的类型(例如,强化学习模型、对象检测模型等)、分页令牌、要在界面页面上返回的结果的最大数量、可用于对结果进行排序的字段(例如,按照创建时间等),以及结果的排序次序(例如,升序、降序等)。

在一个实施方案中,通过服务前端304,客户可向机器人装置管理服务302提交CreateReinforcementLearningModel()API调用,以请求创建可针对机器人装置应用程序320训练的强化学习模型。CreateReinforcementLearningModel()API调用可以字符串的形式包括强化学习模型的唯一名称、用于模型的机器学习框架(例如,TensorFlow、MXNet、PyTorch等)、模型的描述、使用模型来执行模拟的机器人装置代理的算法、代理的网络,以及要执行的训练的配置(例如,定义如何训练模型的数据对象等)。

在一个实施方案中,通过服务前端304,客户可向机器人装置管理服务302提交GetTrainingJob()API调用,以获得关于正被执行来训练强化学习模型的训练工作(例如,模拟)的信息。GetTrainingJob()API调用可以字符串的形式包括与正被执行的模拟相对应的资源名称。例如,当客户提交请求以执行机器人装置应用程序320的模拟来训练强化学习模型时,服务前端304可向客户提供模拟的唯一资源名称。因此,通过API调用,客户可指定该唯一资源名称以获得模拟的详情和状态。通过服务前端304,客户还可提交ListTrainingJobs()API,以获得正被执行来训练强化学习模型的模拟的排序。ListTrainingJobs()API调用可以字符串的形式包括强化学习模型的资源名称、要在界面页面上返回的结果的最大数量,以及分页令牌。响应于该API调用,服务前端304可返回包括模拟详情的数据对象的排序。

在一个实施方案中,通过服务前端304,客户可提交StopTrainingReinforcementLearningModel()API调用,以停止特定强化学习模型的训练。该API调用可以字符串的形式包括要中止训练的强化学习模型的资源名称。通过服务前端304,客户还可提交CloneReinforcementLearningModel()API调用,以请求克隆现有的强化学习模型。CloneReinforcementLearningModel()API调用可以字符串的形式包括要克隆的强化学习模型的资源名称、新的强化学习模型的唯一名称、要存储新的强化学习模型工件的数据对象,以及定义如何训练新的强化学习模型的数据对象或其他文件。

通过服务前端304,客户可定义一组超参数以用于模拟应用程序320并训练可用来优化应用程序320的强化学习模型。例如,客户可定义模拟的批大小,该批大小可用于确定模拟的GPU要求。例如,模拟所需的GPU的数量可与由客户经由服务前端304所提供的界面指定的批大小成比例地增加。客户还可通过界面来指定时期的数量,该时期的数量可与处理通过应用程序320的模拟而生成的数据以训练强化学习模型的次数相对应。类似地,通过界面,客户可定义模拟的堆栈大小、学习率、探索参数、熵率、折扣因子、损失类型,以及在强化学习模型的每次训练迭代之间的情节数量。在一个实施方案中,通过界面,客户还可定义模拟的终止条件。例如,客户可指定模拟终止的标准,包括从模拟的开始到其结束或故障的最大时间或最大运行次数。

在一个实施方案中,通过界面,客户可定义模拟环境。例如,服务前端304可通过界面来向客户呈现不同的模拟环境模板,所述模拟环境模板可用来创建用于模拟应用程序320的模拟环境。通过界面,客户可选择和修改模拟环境模板中的任一个,以定义要用于模拟和测试应用程序320并训练强化学习模型的模拟环境。另外地,客户可定义强化学习模型的名称以及要用于训练强化学习模型的定制设计的强化函数。通过界面,客户可请求提供基于对象的数据存储服务318内的用于存储应用程序320的数据对象、定制设计的强化函数以及强化学习模型。通过界面,客户还可识别可用于向机器人装置授予权限以代表客户在其他服务(包括数据对象)中执行动作的任何访问控制策略。在一个实施方案中,通过界面,客户还可创建被配置为用于应用程序320的开发的开发环境。通过界面,客户可选择虚拟计算实例类型(例如,构成虚拟计算实例的资源,包括但不限于:可用的CPU、可用的GPU、存储容量等),该虚拟计算实例类型具有可用于构建和捆绑机器人装置参数和客户希望开发的模拟应用程序的资源。通过界面,客户还可通过应用程序320的执行来监控客户的模拟环境内的任何活动。

服务前端304可向机器人装置管理服务302的模拟控制子系统306传输请求,以发起创建用于训练强化学习模型和优化应用程序320的模拟环境。模拟控制子系统306在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。当向虚拟计算机系统管理服务312的模拟工作流管理314提交请求时,模拟控制子系统306可从凭据管理子系统308获得可用于认证的一组凭据。该一组凭据可由机器人装置管理服务302生成并且由凭据管理子系统308维护,以使得机器人装置管理服务302的其他部件能够访问由计算资源服务提供商提供的其他服务。应指出,尽管出于说明目的,贯穿本公开利用虚拟计算机系统管理服务312,但也可利用其他服务以使用由这些服务提供的附加资源来执行应用程序320的并行模拟。这些其他服务可包括可用于提供软件容器实例来启动并行模拟的容器服务,可利用可选的文件系统来维护模拟数据并执行模拟的部件等。

凭据管理子系统308在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。在一些示例中,由凭据管理子系统维护的凭据是由客户提供的,由此凭据可由模拟控制子系统306使用以使得能够访问虚拟计算机系统管理服务312和其他服务内的客户资源以便使得能够进行应用程序320的模拟。可选地,由凭据管理子系统308维护的凭据可由机器人装置管理服务302本身生成,由此模拟服务器316和在这些模拟服务器316上提供的虚拟计算实例是机器人装置管理服务302的可用于模拟由机器人装置管理服务302的客户指定的应用程序的资源池的部分。

模拟控制子系统306可向虚拟计算机系统管理服务312的模拟工作流管理器314传输请求以配置应用程序320的模拟。请求可包括由客户通过服务前端304针对模拟定义的一组参数。另外,请求可包括来自凭据管理子系统308的一组凭据和与基于对象的数据存储服务318中的数据对象相对应的网络地址,在该数据对象中,存储了应用程序320并且一旦模拟完成,强化学习模型就要存储在其中。响应于请求,模拟工作流管理器314可与凭据管理子系统308交互,以验证从模拟控制子系统306获得的一组凭据。如果该一组凭据是有效的,则模拟工作流管理器314可发起配置应用程序320的模拟。模拟工作流管理器314在计算机系统或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)上实现、使用硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。

响应于请求,模拟工作流管理器314可访问基于对象的数据存储服务318以获得应用程序320,该应用程序将基于使用由客户经由服务前端304定义的定制设计的强化函数对由客户指定的强化学习模型的训练来进行模拟和优化。另外,模拟工作流管理器314可评估由客户经由服务前端304提供的各种参数和对模拟的各种部件的系统要求,以确定要提供哪些虚拟计算实例以便支持应用程序320在模拟环境中的执行并且生成模拟环境。例如,模拟工作流管理器314可评估获得的参数以确定执行和支持模拟的计算要求(例如,存储器、CPU要求、GPU要求等)并且确定要执行的并行模拟的数量,以基于要执行的并行模拟中的每一个的不同参数(例如,用于每个并行模拟的不同模拟环境参数、要用于每个并行模拟的部件、要针对每个并行模拟训练的强化学习模型等)来训练强化学习模型。例如,模拟工作流管理器314可识别在模拟环境内执行模拟和处理机器人装置的动作所需的模拟的一组部件(例如,物理引擎、渲染引擎等)。基于这些计算要求,模拟工作流管理器314可在一组模拟服务器316内提供一组虚拟计算实例,以执行应用程序320的并行模拟。

在一个实施方案中,模拟工作流管理器314基于部件的系统要求和虚拟计算实例的能力来在模拟服务器316上的不同虚拟计算实例间分配模拟的各种部件。例如,模拟工作流管理器314可从一组部件创建模拟的可在虚拟计算实例间分配的离散子组。模拟工作流管理器314可将与模拟的子组相对应的第一组部件放置在虚拟计算实例内。如果虚拟计算实例中存在用于附加部件的剩余容量,则模拟工作流管理器314可在同一虚拟计算实例内分配下一组部件。否则,模拟工作流管理器314可将模拟的下一子组分配到另一个虚拟计算实例上。模拟工作流管理器314可继续该过程,直到已经在模拟服务器316内的各种虚拟计算实例间分配了模拟的所有部件为止。

在一个实施方案中,模拟工作流管理器314在用于模拟的每个虚拟计算实例之间建立网络接口,以使得能够在模拟的各种部件间进行安全通信。模拟工作流管理器314可将模拟映射到客户自己的虚拟专用网络(如经由请求识别)和/或映射到在内部部署网络内操作的客户自己的虚拟计算实例。这确保模拟的执行所需的资源可用于在模拟环境内执行应用程序320的部件。在一个实施方案中,模拟工作流管理器314在模拟服务器316内维护机器人应用程序容器,该机器人应用程序容器基于由模拟的机器人装置在模拟环境内执行的动作且基于在动作的执行之前和之后机器人装置和模拟环境的状态来执行强化学习模型的训练。强化学习模型的训练还可考虑到与执行的动作、初始状态和经由动作的执行而获得的状态相对应的奖励值,如经由定制设计的强化函数所确定。机器人应用程序容器可向模拟应用程序容器提供更新的强化学习模型,以用于应用程序320的模拟并且获得可用于继续更新强化学习模型的新的状态-动作-奖励数据。

模拟工作流管理器314可监控执行模拟的虚拟计算实例以及模拟服务器316,以确保模拟成功地完成。例如,模拟工作流管理器314可测量每个虚拟计算实例的CPU利用率、GPU利用率、存储器利用率等,以确定是否存在潜在问题。模拟工作流管理器314还可从每个虚拟计算实例请求具有可用于检测虚拟计算实例的性能的问题的测量和/或统计的证明消息。在一个实施方案中,如果模拟工作流管理器314确定虚拟计算实例已经出故障或以其他方式无法操作,则模拟工作流管理器314可确定模拟的任何部件是否受故障影响。如果是的话,则模拟工作流管理器314可确定受影响的部件中的每一个的系统要求,并且基于这些系统要求来确定现有的一组虚拟计算实例是否可容纳这些受影响的部件。如果是的话,则模拟工作流管理314可在现有的操作中虚拟计算实例间迁移受影响的部件。然而,如果现有的一组虚拟计算实例不能容纳模拟的受影响的部件,则模拟工作流管理器314可在模拟服务器316间提供新的虚拟计算实例,以容纳模拟的这些受影响的部件。模拟工作流管理器314可将受影响的部件迁移到新的虚拟计算实例并且重新开始应用程序320的模拟。

类似地,如果模拟工作流管理器314检测到模拟的部件的工作负载激增,则模拟工作流管理器314可确定模拟的部件的工作负载的这种激增是否要求附加资源以确保模拟成功地完成,而不会不利地影响模拟的部件之间的时延。如果模拟的部件的工作负载激增造成确定需要附加资源,则模拟工作流管理器314可确定哪些部件需要被迁移到新的虚拟计算实例以确保模拟的成功完成。模拟工作流管理器314可确定这些部件的系统要求,并且基于这些系统要求,提供能够容纳这些部件的新的虚拟计算实例。模拟工作流管理器可将识别的部件迁移到新的虚拟计算实例并且重新开始应用程序320的模拟。

在一个实施方案中,由虚拟计算实例经由模拟的执行而生成的模拟数据被传输到计算资源监控服务,该模拟数据存储在该计算资源监控服务中并由机器人装置管理服务302的模拟控制子系统306访问。模拟控制子系统306可从计算资源监控服务获得模拟数据并且将该数据存储在模拟数据存储库310中,在那里,该数据可供机器人装置管理服务302的客户使用。因此,通过服务前端304,客户可从模拟数据存储库获得模拟数据并且基于该数据来确定模拟的状态和/或修改模拟和应用程序320。在一个实施方案中,模拟服务器316经由一个或多个可视化应用程序实时地提供对模拟的访问。这可允许客户经由服务前端304来评估在模拟的执行期间模拟的性能。

模拟工作流管理器314可监控模拟的执行以确定是否已经满足终止条件。例如,如果已经经过用于模拟的执行的最大允许时间,则模拟工作流管理器314可终止模拟并且向基于对象的数据存储服务318中的数据对象传输强化学习模型和应用程序320的最新版本。可选地,如果已经达到模拟的最大迭代次数,则可满足终止条件。在一些情况下,终止条件可由在最小迭代次数的模拟内通过在模拟环境中执行动作而获得模拟的平均奖励值来定义。如果满足这些终止条件中的任一个,则模拟工作流管理器314可基于最新强化学习模型来更新应用程序320并且将应用程序320和最新强化学习模型存储在基于对象的数据存储服务318中。另外地,模拟工作流管理器314可向模拟控制子系统306传输通知以指示应用程序320的模拟已经完成。

模拟控制子系统306可经由服务前端304通知客户模拟已经完成。通过服务前端304,客户可评估最新强化学习模型和应用程序320,以确定是维护对应用程序320的优化还是修改应用程序320。另外,客户可定义新的参数和新的定制设计强化函数,以获得可选的强化学习模型以及基于这些可选的强化学习模型对应用程序320的新的更新。如果客户对新的强化学习模型和应用程序320满意,则客户可经由服务前端304提交请求以将应用程序320安装在一组机器人装置上。

图4示出了根据至少一个实施方案的其中模拟服务器402执行机器人装置应用程序的模拟并且处理通过执行该模拟而生成的数据的系统400的说明性示例。在系统400中,模拟服务器402包括模拟代理404,该模拟代理管理模拟的各种部件并且使用由机器人装置管理服务的客户提供的定制设计的强化函数来协调强化学习模型的训练。模拟代理404使用模拟服务器402或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)的硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。在一个实施方案中,模拟代理404是被配置有软件容器的容器实例,该软件容器包括可执行(例如,由与容器实例相关联的资源执行)的代码,以执行根据本文描述的技术的功能。在一个实施方案中,“容器实例”是指被配置为启动和运行软件容器的计算机系统实例(虚拟或非虚拟的,诸如运行操作系统的物理计算机系统)。

模拟代理404可提供机器人应用程序容器406以用于执行可用于训练机器人装置应用程序的强化学习模型的训练应用程序。机器人应用程序容器406可包括计算机可执行代码,该计算机可执行代码可利用指定以下项的元组或其他数据:模拟环境的初始状态、响应于初始状态而执行的动作、模拟环境的结果状态,以及基于模拟环境的结果状态来分配给动作的奖励值。在一个实施方案中,机器人应用程序容器406的训练应用程序可从由于在模拟环境内执行动作而填充的存储器缓冲区(诸如环形缓冲区)获得该数据。训练应用程序可按规则的间隔或响应于触发事件(例如,存储器缓冲区接近或处于满容量等)而从存储器缓冲区获得数据。机器人应用程序容器406可利用数据作为训练应用程序的输入,以更新正被模拟的机器人装置应用程序的强化学习模型。机器人应用程序容器406可向模拟应用程序容器408传输更新的强化学习模型,该模拟应用程序容器可使用更新的强化学习模型来执行机器人装置应用程序的另一个模拟并且生成更多数据。

模拟代理404还可提供模拟应用程序容器408以用于模拟应用程序的执行,该模拟应用程序生成可由机器人应用程序容器406用来更新强化学习模型的数据。模拟代理404可向模拟应用程序容器408提供机器人装置应用程序和由客户定义的用于在模拟环境中执行的强化函数。另外,模拟代理404可提供由客户针对机器人装置和针对模拟定义的一组参数,以使得模拟应用程序容器能够通过模拟应用程序来生成模拟环境并且使用机器人装置应用程序和强化函数执行模拟。

在一个实施方案中,模拟应用程序容器408使用随机强化学习模型来发起模拟,由此模拟应用程序容器使用该模型以基于模拟环境的初始状态来选择要执行的随机动作。模拟应用程序容器408可执行动作并且确定模拟环境的结果状态。使用强化函数,模拟应用程序容器408可确定元组的对应奖励值,该元组包括模拟环境的初始状态、执行的动作以及结果状态。模拟应用程序容器408可将该数据点存储在存储器缓冲区中并且基于模拟环境的当前状态来执行另一个动作。通过该过程,模拟应用程序容器408可继续将数据点添加到存储器缓冲区。在一个实施方案中,模拟应用程序容器408利用策略函数来识别用于模拟的初始状态,该初始状态可用于选择适当的动作。另外地或可选地,模拟应用程序容器408可利用值函数从一组成对的状态和动作选择包括初始状态和可响应于该状态而执行的对应动作的对。这可用作模拟应用程序的输入以致使模拟应用程序执行该动作。

模拟应用程序容器408可从机器人应用程序容器406获得更新的强化学习模型。响应于获得更新的强化学习模型,模拟应用程序容器408可执行模拟的另一次迭代,以生成可用于继续更新强化学习模型的新的数据点。机器人应用程序容器406可评估强化学习模型以确定是否已经满足终止条件。例如,如果基于从存储器缓冲区获得的数据点,机器人应用程序容器406确定强化学习模型已经收敛于最优解,则机器人应用程序容器406可向模拟代理404传输通知以指示模拟的完成。类似地,机器人应用程序容器406可基于从存储器缓冲区处理的数据点的数量或响应于确定已经经过模拟的执行的时限而确定已经满足终止条件。机器人应用程序容器406和模拟应用程序容器408可向客户端账户416提供模拟更新,客户可访问该账户以确定模拟的状态。

在一个实施方案中,基于模拟参数和机器人装置参数,模拟代理404执行一个或多个可视化应用程序410,以允许客户在执行模拟时与该模拟交互并使其可视化。一个或多个可视化应用程序410可生成模拟的图形表示,该图形表示可包括模拟环境的图形表示和机器人载具的图形表示,该机器人载具的动作可表示在模拟环境的图形表示上。一个或多个可视化应用程序410可向模拟服务器402的可视化客户端414提供模拟环境和机器人装置的生成的图形表示。可视化客户端414使用模拟服务器402或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)的硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。可通过机器人装置管理服务的服务前端来访问可视化客户端414,该服务前端可允许客户访问可视化客户端414并且通过界面来查看模拟的图形表示。

模拟代理404还在模拟服务器402内执行度量写入器412。度量写入器412使用模拟服务器402或其抽象物(诸如经由管理程序操作的一个或多个虚拟机)的硬件和软件来实现,并且可包括一个或多个处理器以及存储可执行指令的存储器,该可执行指令由一个或多个处理器执行而致使计算机系统执行本文描述的操作。度量写入器412可从机器人应用程序容器406和模拟应用程序容器408获得模拟数据并且利用该模拟数据来生成一组数据日志,该一组数据日志包括与模拟的机器人装置在模拟环境中的性能相对应的度量。度量写入器412可向计算资源监控服务418传输这些数据日志,该计算资源监控服务可经由机器人装置管理服务而使数据日志可供客户使用。

图5示出了根据至少一个实施方案的用于使用机器人装置应用程序生成用于机器人装置的模拟的强化学习模型的界面500的说明性示例。界面500可包括选择面板502,由此机器人装置管理服务的客户可从不同选项的菜单选择用于创建新的强化学习模型的选项或用于生成排行榜的选项,该排行榜包括针对在特定模拟环境中利用的不同强化学习模型的奖励值。在一个实施方案中,机器人装置管理服务展现用于定义和管理排行榜的一个或多个API,该一个或多个API可响应于在选择面板502中选择排行榜选项而经由界面500呈现。例如,客户可提交CreateLeaderboard()API调用以请求创建新的公共或专有排行榜。CreateLeaderboard()API调用可以字符串的形式包括排行榜的唯一名称、排行榜的描述、在排行榜将被关闭之前所经过的时期、符合排行榜资格的执行的最小数量、排行榜是公共的还是专有的、在排行榜是专有的情况下的访问代码,以及与模拟环境相对应的资源名称。客户还可提交DeleteLeaderboard()API调用,该API调用可以字符串的形式包括要删除的排行榜的唯一名称。客户可通过界面500提交CloseLeaderboard()API调用以关闭现有排行榜。CloseLeaderboard()API调用可以字符串的形式包括要关闭的排行榜的名称。

在一些情况下,客户可通过界面500提交JoinLeaderboard()API调用以加入现有的公共或专有排行榜。JoinLeaderboard()API调用可以字符串的形式包括客户希望加入的排行榜的名称。另外,客户可提供访问代码作为字符串的部分以加入专有排行榜。客户还可提交ListEligibleLeaderboardsForModel()API调用以获得可接受由客户维护并通过机器人装置应用程序的模拟来训练的强化学习模型的排行榜的排序。该API调用可以字符串的形式包括强化学习模型的资源名称、分页令牌,以及每界面页面要呈现的结果的最大数量。响应于该API调用,机器人装置管理服务可确定哪些机器人装置应用程序和模拟环境可用于强化学习模型并且识别与这些应用程序和模拟环境相关联的任何排行榜。

通过界面500,客户还可提交GetLeaderboard()API调用以请求排行榜数据,包括高分(例如,奖励值)、在与排行榜相关联的模拟中利用的强化学习模型等。GetLeaderboard()API调用可以字符串的形式包括客户希望获得其数据的排行榜的名称。客户还可提交ListLeaderboardSubmissions()API调用以请求指定的排行榜提交的排序。可按排名排序返回对该API调用的响应。API调用可以字符串的形式包括排行榜的名称、分页令牌,以及每界面页面要返回的结果的最大数量。通过界面500,客户还可提交GetUserSubmission()API调用以获得当前在排行榜上的用户提交。GetUserSubmission()API可以字符串的形式包括客户希望获得其用户提交的排行榜的名称。在一些情况下,客户可指定与用户提交相对应的特定标识符。客户还可提交ListLeaderboards()API调用以获得客户有权访问的排行榜的排序。该API调用可以字符串的形式包括用于搜索由机器人装置管理服务维护的排行榜的过滤器、分页令牌,以及每界面页面要返回的结果的最大数量。另外,客户可以布尔值的形式提供是否要返回包括由客户进行的提交的排行榜的指示。

如果客户从选择面板502选择强化学习选项,则可向客户呈现强化学习窗口504。通过强化学习窗口504,机器人装置管理服务可向客户呈现强化学习模型窗口506。强化学习模型窗口506可向客户提供用于特定机器人装置应用程序的强化学习模型的排序。例如,针对每个可用模型,强化学习模型窗口506可呈现模型的名称、模型的描述、模型的状态(例如,已收敛、正经由模拟更新等),以及创建强化学习模型的时间。除了提供每个可用模型的详情之外,强化学习模型窗口506还可向客户呈现生成新的强化学习模型的选项。例如,如图5所示,强化学习模型窗口506可包括创建模型按钮508,该创建模型按钮如果被选择则可致使机器人装置管理服务更新强化学习窗口504,以向客户呈现用于创建强化学习模型的各种选项。

图6示出了根据至少一个实施方案的用于使用机器人装置应用程序和用于优化该应用程序的强化学习模型来创建针对机器人装置的模拟的界面600的说明性示例。界面600可共享与上文结合图5描述的那些元素类似的元素。例如,界面600可包括与上文描述的选择面板502类似的选择面板602。界面600可包括创建模型窗口604,该创建模型窗口可响应于选择上文结合图5描述的创建模型按钮508而被呈现给客户。

创建模型窗口604可用于向客户呈现模型详情窗口606,通过该模型详情窗口,客户可通过模型名称输入框608来定义模拟的期望名称。另外,客户可通过模型描述输入框610提供模拟的描述。在一些情况下,不要求在模型描述输入框610中的输入。通过模型详情窗口606,客户还可定义可用于向机器人装置授予权限以代表客户在其他计算资源服务中执行动作的访问控制策略。另外,通过模型详情窗口606,客户可选择或以其他方式提供数据对象来存储机器人装置应用程序、强化学习模型,以及通过模拟机器人装置应用程序而生成的其他数据。模型详情窗口606可向客户呈现创建策略和数据对象按钮612,客户可选择该创建策略和数据对象按钮以定义访问控制策略并选择或以其他方式提供要与模拟相关联的数据对象。

创建模型窗口604还可用于向客户呈现环境模拟窗口614,通过该环境模拟窗口,客户可定义用于模拟的模拟环境。在一个实施方案中,机器人装置管理服务可提供若干默认模拟环境,客户可将这些默认模拟环境用作模板以创建定制模拟环境。例如,机器人装置管理服务可用一个或多个模拟环境模板616填充环境模拟窗口614,客户可从该环境模拟窗口进行选择。如果客户从环境模拟窗口614选择模拟环境模板616,则机器人装置管理服务可允许客户对模板进行修改。这可包括向模拟环境添加动态或静态障碍物、改变模拟环境的布局等。在一个实施方案中,通过界面600,客户可提交ListEnvironments()API调用以获得可供选择的模拟环境的排序。另外,通过界面600,客户可提交GetEnvironment()API调用以获得所选择的模拟环境的元数据。GetEnvironment()API调用可以字符串的形式包括所选择的模拟环境的资源名称。元数据可包括模拟环境的参数,如上所述。

图7示出了根据至少一个实施方案的用于创建定制设计的强化函数以用于训练强化学习模型的界面700的说明性示例。与上述界面非常相似,界面700可包括选择面板702,由此机器人装置管理服务的客户可从不同选项的菜单选择用于创建新的强化学习模型的选项或用于生成排行榜的选项,该排行榜包括针对在特定模拟环境中利用的不同强化学习模型的奖励值。界面700还可包括奖励函数窗口704,通过该奖励函数窗口,客户可定义用于定义模拟环境的动作和状态的奖励值的强化函数(又称为奖励函数)。

通过奖励函数窗口704,机器人装置管理服务可向客户呈现代码编辑器710,通过该代码编辑器,客户可使用计算机可执行代码来定义用于训练强化学习模型的强化学习函数。通过代码编辑器710,客户可使用任何编程语言(例如,Python、C++等)来生成计算机可执行代码。一旦客户已经通过代码编辑器710定义了定义强化函数的计算机可执行代码,客户就可使用代码编辑器横幅708来请求验证强化函数或重置代码编辑器。如果使用代码编辑器横幅708来请求验证强化函数,则机器人装置管理服务可评估计算机可执行代码以识别可能会阻止计算机可执行代码的编译的任何错误。另外,机器人装置管理服务可识别计算机可执行代码的定义一组状态动作元组的奖励值的一个或多个片段。机器人装置管理服务可在与代码片段横幅706相关联的窗口中提供的这些片段代码,如下文进一步详细地描述。在一个实施方案中,客户可通过界面700提交TestReinforcementFunction()API调用,该API调用可用于测试通过代码编辑器710定义的强化函数。TestReinforcementFunction()API调用可以字符串的形式包括通过代码编辑器710提供的计算机可执行代码。响应于该API调用,机器人装置管理服务可提供由于计算机可执行代码的评估而造成的任何识别的错误。

图8示出了根据至少一个实施方案的用于创建定制设计的强化函数以用于训练强化学习模型的界面800的说明性示例。界面800可与上文结合图7描述的界面700类似。例如,界面800可包括选择面板802,由此机器人装置管理服务的客户可从不同选项的菜单选择用于创建新的强化学习模型的选项或用于生成排行榜的选项,该排行榜包括针对在特定模拟环境中利用的不同强化学习模型的奖励值。另外,界面800可包括奖励函数窗口804,该奖励函数窗口包括代码编辑器810、代码编辑器横幅808和代码片段横幅806。

如上文所指出,机器人装置管理服务可评估通过代码编辑器810提供的计算机可执行代码,以识别该代码内的用于定义强化函数的函数。机器人装置管理服务可更新基本函数窗口812以呈现识别的函数。在一个实施方案中,机器人装置管理服务评估计算机可执行代码,包括通过基本函数窗口812识别和呈现的函数,以识别可用来增强强化函数的一组建议。这些建议可基于代码编辑器810生成应用于使用类似机器人装置的所选择的模拟环境的强化函数的计算机可执行代码的历史使用。这些建议可经由高级函数窗口814呈现给客户,该高级函数窗口可包括在基本函数窗口812中指定的函数的修改版本。

机器人装置管理服务可通过奖励函数窗口804提供插入代码按钮816。客户可选择插入代码按钮816以请求将在高级函数窗口中指定的函数插入到代码编辑器810中。这可致使机器人装置管理服务用来自高级函数窗口814的代码片段替换用于更新基本函数窗口812的代码片段。客户可使用代码编辑器横幅来请求验证强化函数,包括从高级函数窗口814插入的代码片段。如果强化函数被机器人装置管理服务成功地验证和编译,则机器人装置管理服务可将强化函数添加到通过界面指定的数据对象。

图9示出了根据至少一个实施方案的用于指定机器学习框架以用于训练强化学习模型的界面900的说明性示例。界面900可包括与上文结合图5至图8描述的其他界面类似的元素。例如,界面900可包括选择面板902,由此机器人装置管理服务的客户可从不同选项的菜单选择用于创建新的强化学习模型的选项或用于生成排行榜的选项,该排行榜包括针对在特定模拟环境中利用的不同强化学习模型的奖励值。

在一个实施方案中,界面900包括机器学习框架窗口904,通过该机器学习框架窗口,客户可定义机器学习框架、优化算法,以及用于训练强化学习模型的超参数。例如,机器学习框架窗口904可包括用于选择模拟的批大小的批大小单选按钮906、用于选择模拟的时期数量的时期选择面板908、用于选择模拟的堆栈大小的堆栈大小面板910,以及用于确定强化学习模型的学习率的学习率面板912。另外地,机器学习框架窗口904可包括探索单选按钮914,通过该探索单选按钮,客户可定义要用于训练强化学习模型的探索算法(例如,使用分类参数、ε贪婪算法等)。机器学习框架窗口904还可包括熵选择面板916,通过该熵选择面板,客户可定义预测的动作的熵以确定在每个时期结束时的训练损失。通过折扣因子面板918,客户还可定义折扣因子,该折扣因子用于通过在模拟中执行动作来确定未来奖励的重要性。

如图10所示,可通过界面1000呈现附加选项以定义机器学习框架。例如,界面1000可提供损失类型单选按钮1006,通过该损失类型单选按钮,客户可定义损失函数以用于训练强化学习模型。如图10所示,客户可从均方误差损失函数或Huber损失函数进行选择,但其他损失函数可供客户使用并经由损失类型单选按钮1006来呈现。另外地,通过界面1000,客户可通过情节选择面板1008选择每次训练迭代之间的情节数量。应指出,损失类型单选按钮1006和情节选择面板1008可为上文结合图9描述的机器学习框架窗口904的部分。例如,客户可在机器学习框架窗口904上向下滚动以访问损失类型单选按钮1006和情节选择面板1008。

图10进一步示出了根据至少一个实施方案的用于定义终止条件以用于完成强化学习模型的训练的界面1000的说明性示例。界面1000可包括选择面板1002,该选择面板类似地用于上文结合图5至图9描述的其他界面中。另外,界面1000可包括终止条件窗口1004,通过该终止条件窗口,客户可定义和选择用于终止强化学习模型的模拟和训练的终止条件。例如,终止条件窗口1004可包括最大时间面板1010,通过该最大时间面板,客户可定义用于执行模拟和用于训练强化学习模型的最大时间量。另外,终止条件窗口1004可包括最大情节面板1012,通过该最大情节面板,客户可定义要在终止模拟之前执行的最大迭代次数。终止条件窗口1004还可包括平均评估奖励选择面板1014,通过该平均评估奖励选择面板,客户可定义平均奖励值,如果通过模拟中的迭代并更新强化学习模型达到该平均奖励值,则可指示已经达成模型的收敛。客户可通过终止条件窗口1004从这些终止条件选择要针对模拟实现哪个终止条件。

图11示出了根据至少一个实施方案的用于执行机器人装置应用程序的模拟并且提供通过执行该模拟而产生的模拟数据的过程1100的说明性示例。过程1100可由机器人装置管理服务与上文结合图3描述的模拟工作流管理器314协调地执行。例如,模拟工作流管理器可执行模拟,而机器人装置管理服务可执行如下所述的其他操作,以定义模拟环境并获得通过执行该模拟而生成的模拟数据。

在一个实施方案中,机器人装置管理服务从客户接收1102请求以模拟机器人装置应用程序的执行。如上文所指出,机器人装置管理服务可经由客户的客户端装置向客户提供界面,通过该界面,客户可提交请求并且定义一组机器人装置参数和模拟环境参数。例如,如上文结合图5至图10所述,客户可使用界面来选择现有的强化学习模型和包括要测试的机器人装置应用程序并用来存储经由模拟机器人装置应用程序而生成的模拟数据的数据对象的位置。另外,通过界面,客户可定义用于模拟的机器学习框架以及模拟的终止条件。

响应于请求,机器人装置管理服务可确定1104客户是否可被认证,并且如果是的话,则确定该客户是否被授权提交这样的请求。如果客户无法被认证或以其他方式未被授权提交该请求,则机器人装置管理服务可拒绝1106请求。然而,如果客户被成功地认证并且被授权提交请求,则机器人装置管理服务可获得1108机器人装置参数和模拟环境参数以生成模拟环境并执行模拟。这些参数可被包括在来自客户的请求中,诸如通过使用上文结合图5至图10描述的界面。可选地,客户可通过界面来定义这些参数的数据对象或其他存储位置。机器人装置管理服务可访问数据对象或其他存储位置以获得1108参数。

如上文所指出,机器人装置管理服务可向虚拟计算系统管理服务的模拟工作流管理器提供请求和参数来执行模拟。在一个实施方案中,模拟工作流管理器使用由客户识别的一组参数来生成1110模拟环境,并且在模拟环境中执行1112机器人装置应用程序以训练强化学习模型和生成模拟数据。例如,响应于请求,模拟工作流管理器可访问基于对象的数据存储服务以获得应用程序,该应用程序将基于使用由客户定义的定制设计的强化函数对由客户指定的强化学习模型的训练来进行模拟和优化。另外,模拟工作流管理器可评估由客户提供的各种参数和各种部件(例如,物理引擎、渲染引擎、机器人装置代理、训练应用程序、模拟应用程序等)的系统要求,以确定要提供哪些虚拟计算实例以便支持应用程序在模拟环境中的执行并且生成模拟环境。例如,模拟工作流管理器可评估获得的参数以确定用于执行和支持模拟的计算要求。基于这些计算要求,模拟工作流管理器可在一组模拟服务器内提供一组虚拟计算实例以执行应用程序的模拟。

在一个实施方案中,由虚拟计算实例经由模拟的执行而生成的模拟数据被传输到计算资源监控服务,该模拟数据存储在该计算资源监控服务中并由机器人装置管理服务访问。机器人装置管理服务可从计算资源监控服务获得1114模拟数据并且将该数据存储在模拟数据存储库中,在那里,该数据可供机器人装置管理服务的客户使用。因此,机器人装置管理服务可提供1116来自模拟数据存储库的模拟数据并且允许客户基于该数据来确定模拟的状态和/或修改模拟和应用程序。应指出,提供模拟数据可与来自客户的对执行模拟的请求异步地执行。例如,模拟数据可被存储在存储库(诸如上文结合图3描述的模拟数据存储库310)中。

图12示出了根据至少一个实施方案的用于向一群机器人装置传输机器人装置应用程序以致使该一群机器人装置安装应用程序并且向客户端传输由于执行该应用程序而生成的数据的过程1200的说明性示例。过程1200可由机器人装置管理服务执行,该机器人装置管理服务可与由客户指定的每个机器人装置建立通信信道,以使得机器人装置能够访问机器人装置管理服务以及通过支持应用程序的执行的其他计算资源服务提供的附加资源。另外,通过通信信道,机器人装置管理服务可与机器人装置交互以提供应用程序并监控机器人装置的性能。

在一个实施方案中,机器人装置管理服务从客户接收1202请求以将机器人装置应用程序安装到一组机器人装置上。如上文所指出,机器人装置管理服务可经由客户的客户端装置向客户提供界面,通过该界面,客户可提交请求并且定义机器人装置的一个或多个逻辑分组,该一个或多个逻辑分组可用于识别哪些机器人装置要获得并安装机器人装置应用程序。在一个实施方案中,客户可通过界面向机器人装置管理服务注册一组机器人装置,以使得能够将这些机器人装置组织为可由机器人装置管理服务维护的逻辑分组。通过界面,客户可利用各种API调用来注册新的机器人装置112。例如,客户可提交机器人装置的唯一名称,该唯一名称可用于将机器人装置与客户的账户相关联。另外,客户可提交机器人装置的唯一IoT名称,该唯一IoT名称可用于建立机器人装置管理服务与机器人装置之间的加密通信信道。在该注册过程期间,机器人装置管理服务可要求客户创建机器人装置的数字证书,以便允许在与机器人装置管理服务以及计算资源服务提供商的任何其他服务的通信中对机器人装置进行认证,如上所述。

响应于请求,机器人装置管理服务可确定1204客户是否可被认证,并且如果是的话,则确定该客户是否被授权提交这样的请求。如果客户无法被认证或以其他方式未被授权提交该请求,则机器人装置管理服务可拒绝1206请求。然而,如果客户被成功地认证并且被授权提交请求,则机器人装置管理服务可识别1208要接收机器人装置应用程序的一群机器人装置。如上文所指出,客户可通过界面定义机器人装置的哪些逻辑分组要接收并安装机器人装置应用程序。基于对逻辑分组的该选择,机器人装置管理服务可识别要接收并安装应用程序的机器人装置。例如,机器人装置管理服务可维护包括针对每个唯一逻辑分组标识符的条目的数据库。每个条目可指定哪些机器人装置是逻辑分组的部分,包括每个机器人装置的网络地址信息。因此,机器人装置管理服务可使用该数据库来识别要接收并安装机器人装置应用程序的一组机器人装置。

机器人装置管理服务可从基于对象的数据存储服务内的数据对象获得机器人装置应用程序。例如,请求可指定应用程序的标识符,机器人装置管理服务可使用该标识符来查询数据库,该数据库包括与用于存储机器人装置应用程序的数据对象的网络地址相对应的条目。从该数据库,机器人装置管理服务可识别存储与所提供的标识符相对应的机器人装置应用程序的数据对象的网络地址。

对于每个机器人装置,机器人装置管理服务可通过机器人装置与机器人装置管理服务之间的通信信道向机器人装置传输1210机器人装置应用程序。可选地,机器人装置管理服务可向部署服务提供机器人装置应用程序,该部署服务管理机器人装置应用程序和其他数据向一群机器人装置的部署。在一个实施方案中,该部署服务可监控一群机器人装置以确定该群中的机器人装置何时可用(例如,在线、通过通信信道传输信息等)。另外,通过数据库,部署服务可记录哪些机器人装置已经获得应用程序和哪些机器人装置已经报告应用程序的成功安装。

通过通信信道,机器人装置可通过该通信信道向机器人装置管理服务传输请求,以访问由该服务或由其他计算资源服务提供的一组资源。机器人装置还可提供客户可用来将机器人装置正与之交互的环境可视化的数据。例如,如果机器人装置包括视频记录装置,则机器人装置可使用视频记录装置以通过通信信道向机器人装置管理服务流式传输视频。通过由机器人装置管理服务提供的界面,客户可访问视频流以观看在其环境中的机器人装置。通过通信信道,客户可与机器人装置交互并且在需要时通过界面向机器人装置发出命令。

响应于从机器人装置管理服务获得机器人装置应用程序,机器人装置可各自安装并执行机器人装置应用程序。在一个实施方案中,机器人装置管理服务基于在应用程序的执行期间由每个机器人装置执行的动作来监控1212所选择的逻辑分组的每个机器人装置的性能。例如,机器人装置管理服务可基于从机器人装置获得的数据而确定正由该机器人装置执行的应用程序存在问题。在一个实施方案中,如果机器人装置管理服务确定正在机器人装置上执行的应用程序存在问题,则机器人装置管理服务将应用程序的更早版本从数据对象提供到机器人装置以用于安装和执行。如果发现基于使用该应用程序执行的模拟而更新的应用程序的最新版本存在影响机器人装置的性能的问题,则机器人装置管理服务可在由基于对象的数据存储服务维护的数据对象中维护该应用程序的更早版本。因此,机器人装置管理服务可允许机器人装置执行应用程序的更早版本。

在一个实施方案中,客户可基于通过监控已经获得并执行应用程序的机器人装置的性能而生成的数据来请求暂停或终止将机器人装置应用程序部署到该群的机器人装置。例如,在机器人装置应用程序的部署期间,如果机器人装置管理服务识别出由于已经获得应用程序的机器人装置执行该应用程序而造成的应用程序的问题,则机器人装置管理服务可向客户传输详述检测到的问题的信息。使用该信息,客户可确定是否暂停或终止将应用程序部署到该群的剩余指定的机器人装置。可选地,机器人装置管理服务可自动地暂停或终止将应用程序部署到该群的剩余机器人装置并且等待来自客户的关于是否继续部署应用程序的响应。

图13示出了根据至少一个实施方案的用于基于机器人装置应用程序的模拟要求来提供虚拟计算实例以发起模拟的执行的过程1300的说明性示例。过程1300可由模拟工作流管理器执行,该模拟工作流管理器由在虚拟计算实例管理服务内的机器人装置管理服务或使得能够提供和使用虚拟计算实例来模拟机器人装置应用程序的其他服务提供。

机器人装置管理服务可向虚拟计算机系统管理服务的模拟工作流管理器传输请求以配置应用程序的模拟。请求可包括客户通过服务前端针对模拟定义的一组参数。另外,请求可包括来自凭据管理子系统的一组凭据和与基于对象的数据存储服务中的数据对象相对应的网络地址,在该数据对象中,存储了应用程序并且一旦模拟完成,强化学习模型就要存储在其中。因此,通过请求,模拟工作流管理器可获得1302模拟环境参数和机器人装置参数。

响应于请求,模拟工作流管理器可与凭据管理子系统交互以验证从模拟控制子系统获得的一组凭据。如果该一组凭据是有效的,则模拟工作流管理器可发起配置应用程序的模拟。模拟工作流管理器可访问基于对象的数据存储服务以获得应用程序,该应用程序将基于使用由客户经由机器人装置管理服务定义的定制设计的强化函数对由客户指定的强化学习模型的训练来进行模拟和优化。另外,模拟工作流管理器可评估1304由客户经由机器人装置管理服务提供的各种参数和各种部件(例如,物理引擎、渲染引擎、机器人装置代理、训练应用程序、模拟应用程序等)的系统要求,以确定要提供哪些虚拟计算实例以便支持应用程序在模拟环境中的执行并且生成模拟环境。例如,模拟工作流管理器可评估获得的参数以确定用于执行和支持模拟的计算要求。例如,模拟工作流管理器可识别在模拟环境内执行模拟和处理机器人装置的动作所需的模拟的一组部件。基于这些计算要求,模拟工作流管理器1306可在一组模拟服务器内提供一组虚拟计算实例以执行应用程序的模拟。在一个实施方案中,如果客户向应用程序提供更新,由此参数和部件可类似于针对该应用程序的先前版本定义的那些,则模拟工作流管理器可利用用于执行该应用程序的先前版本的模拟的相同虚拟计算实例来执行更新的应用程序的模拟。由于先前使用的虚拟计算实例可用于更新的应用程序,因此这可消除对基于模拟要求来提供虚拟计算实例的需要。

在一个实施方案中,模拟工作流管理器基于部件的系统要求和虚拟计算实例的能力来在模拟服务器上的不同虚拟计算实例间分配模拟的各种部件。例如,模拟工作流管理器可从一组部件创建模拟的可在虚拟计算实例间分配的离散子组。模拟工作流管理器可将与模拟的子组相对应的第一组部件放置在虚拟计算实例内。如果虚拟计算实例中存在用于附加部件的剩余容量,则模拟工作流管理器可在同一虚拟计算实例内分配下一组部件。否则,模拟工作流管理器可将模拟的下一子组分配到另一个虚拟计算实例上。模拟工作流管理器可继续该过程,直到已经在模拟服务器内的各种虚拟计算实例间分配模拟的所有部件为止。在一个实施方案中,如果模拟工作流管理器确定要求特定部件在同一模拟服务器上并置,则模拟工作流管理器识别特定模拟服务器上可用的虚拟计算实例并且在特定模拟服务器上的虚拟计算实例间分配部件。

在一个实施方案中,模拟工作流管理器在用于模拟的每个虚拟计算实例之间配置1308网络接口,以使得能够在模拟的各种部件间进行安全通信。模拟工作流管理器可将模拟映射到客户自己的虚拟专用网络和/或映射到在内部部署网络内操作的客户自己的虚拟计算实例。这确保模拟的执行所需的资源可用于在模拟环境内执行应用程序的部件。一旦已经建立网络接口,模拟工作流管理器就可在各种虚拟计算实例间启动1310部件以发起模拟。另外,模拟工作流管理器可监控1312执行模拟的虚拟计算实例以及模拟服务器,以确保模拟成功地完成。

如果模拟工作流管理器检测到虚拟计算实例已经出故障或以其他方式无法操作,则模拟工作流管理器可识别受故障影响的部件并且提供新的虚拟计算实例以容纳受影响的部件。这可确保机器人装置应用程序的模拟受故障影响最小。因此,图14示出了根据至少一个实施方案的用于响应于检测到一组现有虚拟计算实例的故障而将机器人装置部件迁移到其他虚拟计算实例的过程1400的说明性示例。过程1400可由虚拟计算实例管理服务的前述模拟工作流管理器执行。

如上文所指出,模拟工作流管理器可监控用于模拟的执行的虚拟计算实例,以识别可能会影响模拟的性能的任何问题。例如,模拟工作流管理器可从每个虚拟计算实例获得可用于测量虚拟计算实例的性能的度量数据。使用该数据,模拟工作流管理器可检测1402用于执行机器人装置应用程序的模拟的一个或多个虚拟计算实例的故障。在一个实施方案中,如果模拟工作流管理器确定虚拟计算实例已经出故障或以其他方式无法操作,则模拟工作流管理器可确定1404模拟的任何部件是否受故障影响。如果模拟工作流管理器确定模拟的部件都没有由于检测到的故障而受影响,则模拟工作流管理器可继续1406机器人装置应用程序的模拟。

如果模拟工作流管理器确定一个或多个部件由于检测到的故障而受影响,则模拟工作流管理器可确定1408每个受影响的部件的系统要求,并且基于这些系统要求来确定1410是否需要提供新的虚拟计算实例,以便容纳这些受影响的部件。如果不要求新的虚拟计算实例,则模拟工作流管理可在现有的操作中虚拟计算实例间迁移1412受影响的部件并且继续1406机器人装置应用程序的模拟。然而,如果现有的一组虚拟计算实例无法容纳模拟的受影响的部件,则模拟工作流管理器可在模拟服务器间提供1414新的虚拟计算实例,以容纳模拟的这些受影响的部件。模拟工作流管理器可将受影响的部件迁移1416到新的虚拟计算实例并且继续1406应用程序的模拟。

类似地,在模拟工作流管理器可监控虚拟计算实例以检测模拟的部件的工作负载激增的情况下也是如此。如果存在模拟的部件的工作负载激增,则模拟工作流管理器可识别受工作负载的这种激增影响的部件并且提供新的虚拟计算实例以容纳受影响的部件。这可确保机器人装置应用程序的模拟受工作负载的激增影响最小。因此,图15示出了根据至少一个实施方案的用于响应于检测到针对特定模拟的模拟工作负载的激增而提供的附加虚拟计算实例的过程1500的说明性示例。过程1500可由前述模拟工作流管理器执行。

模拟工作流管理器可监控用于模拟的执行的虚拟计算实例,以识别可能会影响模拟的性能的任何问题。例如,模拟工作流管理器可从每个虚拟计算实例获得可用于测量虚拟计算实例的性能的度量数据。使用该数据,模拟工作流管理器可检测1502用于执行机器人装置应用程序的模拟的一个或多个虚拟计算实例的模拟工作负载的激增。模拟工作流管理器可确定1504模拟的部件的工作负载的这种激增是否要求附加资源以确保模拟成功地完成而不会不利地影响模拟的部件之间的时延。

如果模拟的部件的工作负载激增造成确定不要求附加资源来确保模拟的成功完成,则模拟工作负载管理器可继续1506机器人装置应用程序的模拟。然而,如果需要附加资源,则模拟工作流管理器可识别1508哪些部件需要迁移到新的虚拟计算实例以确保模拟的成功完成。模拟工作流管理器可确定1510这些部件的系统要求,并且基于这些系统要求,提供1512能够容纳这些部件的新的虚拟计算实例。例如,模拟工作流管理器可监控每个部件的资源使用,以在工作负载激增的情况下识别哪些部件是工作负载激增的源头。如果检测到工作负载激增,则模拟工作流管理器可确定哪些部件有资格迁移(例如,评估部件的并置要求、评估部件的系统和位置要求等),并且从有资格迁移的那些部件中,确定这些部件中的每一个的资源利用。基于每个有资格的部件的资源利用,模拟工作流管理器可选择一个或多个部件来进行迁移。作为说明性示例,如果用于模拟的CPU使用超过最大阈值,则模拟工作流管理器可识别具有最大CPU利用率的部件并且确定将部件迁移到新的虚拟计算实例是否会降低其CPU利用率。如果否的话,则模拟工作流管理器可选择具有最高CPU利用率的下一部件,并且重复该过程,直到识别出要迁移的一个或多个部件为止。

模拟工作流管理器可将识别的部件迁移1514到新的虚拟计算实例并且继续1506应用程序的模拟。例如,模拟工作流管理器可向新的虚拟计算实例传输识别的部件中的每一个的计算机可执行代码,以使得能够在虚拟计算实例内执行这些部件。另外,如上所述,模拟工作流管理器可在新的虚拟计算实例间建立网络接口,以使得迁移的部件能够在虚拟专用网络内与模拟的其他部件通信。

在一个实施方案中,模拟工作流管理器还可基于各种部件的模拟工作负载来确定是否可使用比为模拟的执行而提供的更少的资源来执行模拟。例如,如果基于部件中的每一个的模拟工作负载,模拟工作流管理器确定可使用更少的资源来执行模拟,则模拟工作负载管理器可将部件压缩到更小的一组虚拟计算实例中。因此,模拟工作负载管理器可识别可容纳部件的一组虚拟计算实例并且将部件迁移到该更小的一组虚拟计算实例上,以缩减用于执行模拟的资源。

图16示出了根据一个实施方案的用于实现各方面的示例系统1600的各方面。如将了解,尽管出于解释目的而使用了基于web的系统,但可酌情使用不同的系统来实现各种实施方案。在一个实施方案中,系统包括电子客户端装置1602,所述电子客户端装置包括可操作来通过适当的网络1604发送和/或接收请求、消息或信息并且将信息传送回装置的用户的任何适当的装置。此类客户端装置的示例包括个人计算机、蜂窝电话或其他移动电话、手持式消息传送装置、膝上型计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器等。在一个实施方案中,网络包括任何适当网络,包括内联网、互联网、蜂窝网络、局域网、卫星网络或任何其他这种网络和/或其组合,并且用于这种系统的部件至少部分地取决于所选择的网络和/或系统的类型。用于通过这种网络进行通信的许多协议和部件是众所周知的,并且本文将不再详细地讨论。在一个实施方案中,通过有线和/或无线连接及其组合来实现通过网络进行的通信。在一个实施方案中,网络包括互联网和/或其他公共可寻址通信网络,因为系统包括用于接收请求并且响应于所述请求而服务内容的web服务器1606,但对于其他网络来说,可使用服务类似目的的替代装置,如本领域普通技术人员将显而易见。

在一个实施方案中,说明性系统包括至少一个应用程序服务器1608和数据存储区1610,并且应理解,可存在可链接起来或以其他方式配置的若干应用程序服务器、层或其他元件、过程或部件,它们可交互以执行诸如从适当数据存储区获得数据的任务。在一个实施方案中,服务器被实现为硬件装置、虚拟计算机系统、在计算机系统上执行的编程模块和/或配置有硬件和/或软件以接收并响应通过网络进行的通信(例如,web服务应用程序编程接口(API)请求)的其他装置。如本文所使用,除非另外说明或从上下文中清楚,否则术语“数据存储区”是指能够存储、访问并检索数据的任何装置或装置的组合,所述装置或装置的组合可包括在任何标准、分布式、虚拟或集群式系统中的任何组合和任何数量的数据服务器、数据库、数据存储装置和数据存储介质。在一个实施方案中,数据存储区与块级和/或对象级接口通信。应用程序服务器可包括任何适当的硬件、软件和固件,所述硬件、软件和固件用于根据需要与数据存储区集成以执行客户端装置的一个或多个应用程序的各方面,从而处置应用程序的数据访问和业务逻辑中的一些或全部。

在一个实施方案中,应用程序服务器与数据存储区协作来提供访问控制服务,并且生成包括但不限于文本、图形、音频、视频和/或其他内容的内容,所述内容由web服务器以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、层叠样式表(“CSS”)、JavaScript对象表示法(JSON)和/或另一种适当的客户端侧结构化语言或其他结构化语言的形式提供给与客户端装置相关联的用户。在一个实施方案中,传送到客户端装置的内容由客户端装置处理,以便以一种或多种形式提供内容,所述形式包括但不限于用户可通过听觉、视觉和/或通过其他感觉来感知的形式。在一个实施方案中,对所有请求和响应的处置以及在客户端装置1602与应用程序服务器1608之间的内容递送在此示例中由web服务器使用PHP:超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML、JSON和/或另一种适当的服务器侧结构化语言来处置。在一个实施方案中,在本文中被描述为由单个装置执行的操作由形成分布式和/或虚拟系统的多个装置共同地执行。

在一个实施方案中,数据存储区1610包括用于存储与本公开的特定方面相关的数据的若干单独的数据表、数据库、数据文档、动态数据存储方案和/或其他数据存储机构和介质。在一个实施方案中,示出的数据存储区包括用于存储生产数据1612和用户信息1616的机构,所述生产数据和用户信息用来为生产侧服务内容。数据存储区还被示出为包括用于存储日志数据1614的机构,在一个实施方案中,所述日志数据用于报告、计算资源管理、分析或其他此类目的。在一个实施方案中,诸如页面图像信息和访问权信息(例如,访问控制策略或其他权限编码)的其他方面被存储在数据存储区中、视情况位于上文列出的机构中的任一者中或位于数据存储区1610中的另外机构中。

在一个实施方案中,数据存储区1610可通过与其相关联的逻辑来操作,以便从应用程序服务器1608接收指令并且响应于所述指令而获得数据、更新数据或以其他方式处理数据,并且应用程序服务器1608响应于接收到的指令而提供静态数据、动态数据或静态数据与动态数据的组合。在一个实施方案中,诸如在web日志(博客)、购物应用程序、新闻服务以及其他此类应用程序中使用的数据的动态数据由如本文所描述的服务器侧结构化语言生成或者由在应用程序服务器上操作或在其控制下的内容管理系统(“CMS”)提供。在一个实施方案中,用户通过由用户操作的装置来提交对某种类型的项的搜索请求。在此示例中,数据存储区访问用户信息以验证用户的身份,访问目录详细信息以获得有关所述类型的项的信息,并且将信息返回给用户,诸如以用户通过用户装置1602上的浏览器查看的网页上的结果列表的形式。继续示例,在浏览器的专用页面或窗口中查看感兴趣的特定项的信息。然而,应指出,本公开的实施方案不一定限于网页的上下文,而是更一般地适用于处理一般的请求,其中请求不一定是对内容的请求。示例请求包括对管理由系统1600和/或另一系统托管的计算资源和/或与其交互的请求,诸如,以用于启动、终止、删除、修改、读取和/或以其他方式访问此类计算资源。

在一个实施方案中,每个服务器典型地包括提供用于所述服务器的一般管理和操作的可执行程序指令的操作系统,并且包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器器等),所述指令在被服务器的处理器执行的情况下致使或以其他方式允许服务器执行其预期功能(例如,由于服务器的一个或多个处理器执行存储在计算机可读存储介质上的指令而执行功能)。

在一个实施方案中,系统1600是利用若干计算机系统和部件的分布式和/或虚拟计算系统,所述计算机系统和部件使用一个或多个计算机网络或直接连接通过通信链路(例如,传输控制协议(TCP)连接和/或传输层安全(TLS)或其他密码保护的通信会话)进行互连。然而,本领域普通技术人员应理解,这种系统可在具有比图16所示的部件更少或更多数量的部件的系统中操作。因此,图16中的系统1600的描绘本质上应视为说明性的,并且不限于本公开的范围。

另外,可鉴于以下条款对本公开的实施方案进行描述:

1.一种计算机实现的方法,所述计算机实现的方法包括:

获得机器人装置的第一组参数和用于测试所述机器人装置的模拟环境的第二组参数;

响应于对模拟所述机器人装置的应用程序的执行的第一请求而生成所述模拟环境;

在所述模拟环境中执行所述机器人装置的所述应用程序,以获得指示所述应用程序在所述模拟环境内的性能的数据;

提供所述数据以满足所述第一请求;

获得对将所述应用程序安装到所述机器人装置上的第二请求;

向包括所述机器人装置的一群机器人装置传输所述应用程序;以及

基于因所述应用程序的所述执行引起的由所述一群机器人装置中的每个机器人装置执行的动作来监控所述群的性能。

2.如条款1的计算机实现的方法,其中所述方法还包括:

获得与所述机器人装置对环境的响应相对应的传感器数据;

基于所述传感器数据来更新所述应用程序,从而产生更新的应用程序;以及

向所述一群机器人装置传输所述更新的应用程序。

3.如条款1或2的计算机实现的方法,其中所述方法还包括:

通过所述应用程序与所述机器人装置建立通信信道;

通过所述通信信道来传输可执行指令以致使所述机器人装置执行一组动作;以及

通过所述通信信道来从所述机器人装置获得附加数据,所述附加数据指定对所述可执行指令的执行的响应。

4.如条款1至3中任一项的计算机实现的方法,其中所述方法还包括:

基于所述第二组参数来确定用于模拟所述应用程序的所述执行的计算资源;

提供所述计算资源;以及

在所述模拟环境中使用所述计算资源来执行所述应用程序的并行模拟。

5.一种系统,所述系统包括:

一个或多个处理器;以及

存储器,所述存储器存储计算机可执行指令,所述计算机可执行指令在被执行的情况下致使所述一个或多个处理器:

获得机器人装置的第一组参数和用于测试所述机器人装置的应用程序的模拟环境的第二组参数,所述第一组参数指示所述应用程序的数据存储位置并且所述第二组参数指示从一组模拟环境对所述模拟环境的选择;

从资源池选择一组资源,以在所述模拟环境中在所述一组资源上执行一组模拟;

从所述数据存储位置获得所述应用程序;以及

将所述应用程序加载到所述一组资源上。

6.如条款5的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

监控所述模拟在所述模拟环境中的执行,以获得指示所述应用程序的性能的数据;以及

提供所述数据以使得能够基于所述应用程序的所述性能来修改所述应用程序。

7.如条款5或6的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

基于所述第一组参数和所述第二组参数来识别要执行以用于在所述模拟环境中测试所述应用程序的多个模拟;以及

基于要执行的所述多个模拟来选择要在其上执行所述一组模拟的所述一组资源。

8.如条款5至7中任一项的系统,其中所述计算机可执行指令还致使所述一个或多个处理器向包括所述机器人装置的一群机器人装置传输所述应用程序,以致使所述一群机器人装置安装并执行所述应用程序。

9.如条款8的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

检测所述应用程序的阻止所述应用程序在所述一群机器人装置上进一步执行的问题;

识别所述应用程序的不同版本;以及

向所述一群机器人装置传输所述应用程序的所述不同版本,以致使所述一群机器人装置安装并执行所述应用程序的所述不同版本。

10.如条款8或9的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

与所述机器人装置建立通信信道;

获得一组可执行指令,所述一组可执行指令在被所述机器人装置执行的情况下致使所述机器人装置执行一组操作;以及

通过所述通信信道来传输所述一组可执行指令。

11.如条款10的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

通过所述通信信道从所述机器人装置获得对访问第二组资源的请求,所述请求包括所述机器人装置的数字证书;

基于所述数字证书来对所述机器人装置进行认证;以及

根据与所述数字证书相关联的访问控制策略来提供对所述第二组资源的访问。

12.如条款5至11中任一项的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

监控所述模拟在所述模拟环境中的执行;

确定需要附加资源来支持所述模拟在所述模拟环境中的继续执行;以及

提供所述附加资源以实现所述模拟的所述继续执行。

13.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有可执行指令,所述可执行指令由于被计算机系统的一个或多个处理器执行而致使所述计算机系统至少:

获得机器人装置的第一组参数和用于测试所述机器人装置的应用程序的模拟环境的第二组参数;

从计算机系统实例池选择一组计算机系统实例,以在所述模拟环境中在所述一组计算机系统实例上执行一组模拟;

在所述模拟环境中执行所述一组模拟;以及

向包括所述机器人装置的一群机器人装置传输应用程序数据,以致使所述一群机器人装置安装并执行所述应用程序。

14.如条款13的非暂时性计算机可读存储介质,其中致使所述计算机系统在所述模拟环境中执行所述一组模拟的所述指令还致使所述计算机系统:

基于所述第一组参数和所述第二组参数来确定要执行的多个模拟;

针对所述多个模拟中的每个模拟来识别用于所述模拟的执行的多个计算机系统实例;以及

基于用于所述多个模拟中的每个模拟的执行的所述多个计算机系统实例来识别所述一组计算机系统实例。

15.如条款13或14的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

从所述一群机器人装置的子组获得影响所述应用程序的执行的错误已经被所述一群机器人装置的所述子组检测到的指示;以及

响应于所述指示而向所述一群机器人装置的所述子组传输与所述应用程序的不同版本相对应的可用的第二应用程序数据,以致使所述一群机器人装置的所述子组安装并执行所述应用程序的所述不同版本。

16.如条款13至15中任一项的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

从所述机器人装置获得对访问一组资源的请求,所述请求包括所述机器人装置的数字证书;

评估所述机器人装置的所述数字证书以识别指定对所述一组资源的访问级别的一组访问控制策略;以及

允许所述机器人装置按照所述一组访问控制策略来访问所述一组资源。

17.如条款13至16中任一项的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:从所述机器人装置获得响应于由所述机器人装置获得的传感器输入而生成的数据;以及使用所述数据来更新图形用户界面,以使得能够在所述应用程序的执行期间监控所述机器人装置。

18.如条款17的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

经由所述图形用户界面来获得计算机可执行指令,所述计算机可执行指令在被所述机器人装置执行的情况下致使所述机器人装置执行一组操作;

向所述机器人装置传输所述计算机可执行指令;以及

使用响应于因所述计算机可执行指令的执行而由所述机器人装置获得的第二传感器输入而生成的附加数据来监控所述计算机可执行指令的所述执行。

19.如条款13至18中任一项的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

监控所述一组模拟在所述模拟环境中的执行;

确定需要附加计算机系统实例以实现所述一组模拟的继续执行;以及

从所述计算机系统实例池提供所述附加计算机系统实例,以允许所述一组模拟的所述继续执行。

20.如条款13至19中任一项的非暂时性计算机可读存储介质,其中致使所述计算机系统在所述模拟环境中执行所述一组模拟的所述指令还致使所述计算机系统利用强化学习模型以基于模拟机器人装置在所述模拟环境内的性能来修改所述应用程序。

21.一种计算机实现的方法,所述计算机实现的方法包括:

获得模拟环境的一组参数和可用于机器人装置的应用程序的执行的一组部件;

基于所述一组参数和所述一组部件来确定用于模拟所述应用程序的所述执行的多个虚拟计算实例;

针对所述多个虚拟计算实例来配置一组网络接口,以使得能够在所述一组部件间进行通信;

在所述多个虚拟计算实例间启动所述一组部件;以及

监控所述应用程序在所述模拟环境中的执行,以确定所述一组部件在一组虚拟计算实例组中的性能。

22.如条款21的计算机实现的方法,其中所述方法还包括由于所述一组部件的子组要求附加资源以使得能够完成所述应用程序在所述模拟环境中的所述执行,将所述子组迁移到其他虚拟计算实例。

23.如条款22的计算机实现的方法,其中所述方法还包括由于所述子组要求所述附加资源,提供所述其他虚拟计算实例。

24.如条款21或23的计算机实现的方法,其中所述方法还包括:

检测所述一组虚拟计算实例中的虚拟计算实例的故障;

识别所述一组部件的受所述故障影响的子组;

确定所述一组部件的所述子组的性能要求;以及

将所述一组部件的所述子组迁移到另一组虚拟计算实例,基于所述性能要求来选择所述另一组虚拟计算实例。

25.一种系统,所述系统包括:

一个或多个处理器;以及

存储器,所述存储器存储计算机可执行指令,所述计算机可执行指令在被执行的情况下致使所述一个或多个处理器:

获得模拟环境的一组参数和可用于机器人装置的应用程序的执行的一组部件;

选择一组资源来模拟所述应用程序的所述执行;

在所述一组资源间启动所述一组部件;以及

监控所述应用程序在所述模拟环境中的执行,以确定所述一组部件的性能。

26.如条款25的系统,其中所述一组参数包括所述机器人装置的一组传感器的数量、要结合到所述模拟环境中的数字对象的数量,以及所述模拟环境的每秒帧数的要求。

27.如条款25或26的系统,其中所述计算机可执行指令还致使所述一个或多个处理器针对所述一组资源来配置一组网络接口以使得能够在所述一组部件间进行通信。

28.如条款25至27中任一项的系统,其中从被配置为用于模拟一群机器人装置的多个应用程序的执行的资源池选择所述一组资源。

29.如条款25至28中任一项的系统,其中致使所述一个或多个处理器选择所述一组资源来模拟所述应用程序的所述执行的所述计算机可执行指令还致使所述一个或多个处理器在与可用于所述应用程序的所述执行的部件相关联的虚拟专用网络内提供所述一组资源。

30.如条款25至29中任一项的系统,其中基于对所述一组部件之间的通信的时延要求来选择所述一组资源。

31.如条款25至30中任一项的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

检测所述一组资源中的资源的故障;

识别所述一组部件的受所述故障影响的子组;

基于对所述一组部件的识别来确定是否将所述一组部件的所述子组迁移到另一个资源,从而产生确定;以及

基于所述确定来将所述一组部件的所述子组迁移到所述另一个资源。

32.如条款25至31中任一项的系统,其中所述计算机可执行指令还致使所述一个或多个处理器:

基于所述一组部件的所述性能来确定所述应用程序在所述模拟环境中的所述执行需要附加资源;

识别所述一组部件的要迁移到所述附加资源的子组;

提供所述附加资源;以及

将所述一组部件的所述子组迁移到所述附加资源。

33.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有可执行指令,所述可执行指令由于被计算机系统的一个或多个处理器执行而致使所述计算机系统至少:

获得模拟环境的一组参数;

响应于对模拟机器人装置的应用程序的请求而识别用于所述应用程序的执行的一组部件;

在一组计算资源间启动所述一组部件,基于所述一组参数和所述一组部件来选择所述一组计算资源;以及

监控所述应用程序在所述模拟环境中的执行。

34.如条款33的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

检测所述一组计算资源的子组的故障;

基于用于缓解所述故障的一组策略来确定是否将部件从所述子组迁移到另一组计算资源,从而产生确定;以及

基于所述确定来将所述部件从所述子组迁移到所述另一组计算资源。

35.如条款33或34的非暂时性计算机可读存储介质,其中致使所述计算机系统在所述一组计算资源间启动所述一组部件的所述指令还致使所述计算机系统在所述一组计算资源间建立一组网络接口以允许在所述一组部件间进行通信。

36.如条款33至35中任一项的非暂时性计算机可读存储介质,其中所述指令还致使所述计算机系统:

从所述一组资源获得指示在所述应用程序的所述执行期间所述一组资源的性能的数据;

基于所述数据来确定要求附加资源以实现所述应用程序的继续执行;

提供所述附加资源;以及

将所述一组部件的子组迁移到所述附加资源。

37.如条款33至36中任一项的非暂时性计算机可读存储介质,其中所述模拟环境的所述一组参数包括所述模拟的所述执行的中央处理单元要求、图形处理单元要求和随机存取存储器要求。

38.如条款33至37中任一项的非暂时性计算机可读存储介质,其中致使所述计算机系统在所述一组计算资源间启动所述一组部件的所述指令还致使所述计算机系统基于所述一组部件间的通信的时延要求来在所述一组计算资源间划分所述一组部件。

39.如条款33至38中任一项的非暂时性计算机可读存储介质,其中:

对模拟所述机器人装置的所述应用程序的所述请求指定虚拟专用网络的标识符以用于所述应用程序在所述模拟环境中的所述执行;以及

所述指令还致使所述计算机系统在所述标识符中指定的所述虚拟专用网络内配置所述一组计算资源。

40.如条款33至39中任一项的非暂时性计算机可读存储介质,其中致使所述计算机系统在所述一组计算资源间启动所述一组部件的所述指令还致使所述计算机系统:

识别被配置为用于模拟一群机器人装置的多个应用程序的执行的计算资源池;

从所述计算资源池并基于所述一组参数和所述一组部件来选择所述一组计算资源;以及

将所述一组计算资源隔离,使得所述一组计算资源专属于所述一组部件。

各种实施方案还可在广泛多种操作环境中实现,在一些情况下,所述操作环境可包括可用来操作多个应用程序中的任一者的一个或多个用户计算机、计算装置或处理装置。在一个实施方案中,用户或客户端装置包括以下项中的任一者:多个计算机,诸如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并能够支持多种联网和消息传送协议的蜂窝(移动)、无线和手持式装置,并且这种系统还包括运行多种可商购获得的操作系统和用于诸如开发和数据库管理的目的的其他已知应用程序中的任一者的多个工作站。在一个实施方案中,这些装置还包括其他电子装置,诸如虚拟终端、瘦客户端、游戏系统和能够经由网络进行通信的其他装置,以及虚拟装置,诸如虚拟机、管理程序、利用操作系统级虚拟化的软件容器和能够经由网络进行通信的支持虚拟化的其他虚拟装置或非虚拟装置。

在一个实施方案中,系统利用本领域技术人员将熟悉的至少一种网络来支持使用多种可商购获得的协议中的任一种进行通信,所述协议诸如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各层中操作的协议、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及其他协议。在一个实施方案中,网络是局域网、广域网、虚拟专用网络、互联网、内联网、外联网、公共交换电话网、红外网络、无线网络、卫星网络以及其任何组合。在一个实施方案中,面向连接的协议用来在网络端点之间通信,使得面向连接的协议(有时称为基于连接的协议)能够以有序流传输数据。在一个实施方案中,面向连接的协议可为可靠的或不可靠的。例如,TCP协议是可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与在不保证排序的情况下传输数据包的面向数据包的协议(诸如UDP)形成对比。

在一个实施方案中,系统利用web服务器,所述web服务器运行多种服务器或中间层应用程序中的一者或多者,包括超文本传输协议(“HTTP”)服务器、FTP服务器、通用网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器以及业务应用程序服务器。在一个实施方案中,一个或多个服务器还能够响应于来自用户装置的请求而执行程序或脚本,诸如通过执行一个或多个web应用程序,所述一个或多个web应用程序被实现为以任何编程语言(诸如

在一个实施方案中,系统包括如上文所讨论的多种数据存储区以及其他存储器和存储介质,它们可驻留在多种位置,诸如在一个或多个计算机的本地(和/或驻留在一个或多个计算机中)或跨网络远离任一个或所有计算机的存储介质上。在一个实施方案中,信息驻留在本领域技术人员熟悉的存储区域网(“SAN”)中,并且类似地,用于执行归属于计算机、服务器或其他网络装置的功能的任何必要文件视情况进行本地或远程存储。在一个实施方案中,在系统包括计算机化装置的情况下,每个这种装置可包括经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)、至少一个输出装置(例如,显示装置、打印机或扬声器)、至少一个存储装置(诸如硬盘驱动器、光学存储装置和固态存储装置,诸如随机存取存储器(“RAM”)或只读存储器(“ROM”))、以及可移动媒体装置、存储卡、闪存卡等、以及其各种组合。

在一个实施方案中,这种装置还包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等)以及如上文所描述的工作存储器,其中计算机可读存储介质读取器与计算机可读存储介质连接或被配置为接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于临时和/或更永久地包含、存储、传输并检索计算机可读信息的存储介质。在一个实施方案中,系统和各种装置通常还包括位于至少一个工作存储器装置内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用程序或web浏览器。在一个实施方案中,使用定制硬件,并且/或者在硬件、软件(包括便携式软件,诸如小应用程序)或这两者中实现特定元件。在一个实施方案中,采用与诸如网络输入/输出装置的其他计算装置的连接。

在一个实施方案中,用于包含代码或代码的部分的存储介质和计算机可读介质包括本领域已知或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于在用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实现的易失性和非易失性、可移动和不可移动的介质,包括RAM、ROM、电可擦可编程只读存储器(“EEPROM”)、快闪存储器或其他存储器技术、光盘只读存储器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或可用来存储期望的信息且可由系统装置访问的任何其他介质。基于本文提供的公开内容和教示内容,本领域普通技术人员将了解实现各种实施方案的其他方式和/或方法。

因此,说明书和附图应被认为是说明性的而不是限制性的。然而,将清楚,在不脱离如权利要求书所阐述的本发明的更宽泛的精神和范围的情况下,可对本发明做出各种修改和改变。

其他变型也在本公开的精神内。因此,尽管所公开的技术容许各种修改和替代构造,但在附图中已示出并且在上文中已经详细描述所示的其某些实施方案。然而,应理解,并不意图将本发明局限于所公开的一种或多种具体形式,而是相反地,本发明意图涵盖落在如所附权利要求书中所限定的本发明的精神和范围内的所有修改、替代构造和等效物。

除非本文另外指出或明显地与上下文矛盾,否则在描述所公开的实施方案的上下文中(尤其是在以下权利要求书的上下文中)对术语“一个”和“一种”和“所述”以及类似指称对象的使用应解释为涵盖单数和复数两者。类似地,除非明确地矛盾或与上下文矛盾,否则对术语“或”的使用应解释为意指“和/或”。除非另外指出,否则术语“包含”、“具有”、“包括”和“含有”应解释为开放式术语(即,意指“包括但不限于”)。当无修饰并且指代物理连接时,术语“连接的”应解释为部分地或全部地容纳在内、附接到、或连结在一起,即使存在介入物。除非本文另外指出,否则本文中值范围的列举仅意图用作个别地提及落在所述范围内的每个单独值的速记方法,并且每个单独值并入到本说明书中,如同在本文中个别地阐述一样。除非另外指出或与上下文矛盾,否则术语“组”(例如,“一组项”)或“子组”的使用应解释为包括一个或多个成员的非空集合。另外,除非另外指出或与上下文矛盾,否则术语对应组的“子组”不一定是指对应组的真子组,而是子组和对应组可相等。除非另外明确地陈述或从上下文清楚,否则短语“基于”的使用意指“至少部分地基于”并且不限于“仅基于”

除非另外具体地陈述或以其他方式明显地与上下文矛盾,否则连接性语言,诸如形式为“A、B、和C中的至少一者”或“A、B和C中的至少一者”的短语(即,有或没有牛津逗号的同一短语)在一般使用的上下文内被理解为表示某一物品、项等可为A或B或C、A和B和C的组的任何非空子组,或者包含至少一个A、至少一个B或至少一个C的不与上下文矛盾或不以其他方式排除的任何组。例如,在具有三个成员的组的说明性示例中,连接性短语“A、B、和C中的至少一者”和“A、B和C中的至少一者”是指以下组中的任一者:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C},以及在不明确地矛盾或不与上下文矛盾的情况下,具有{A}、{B}和/或{C}作为子组的任何组(例如,具有多个“A”的组)。因此,这种连接性语言一般不意图暗示某些实施方案要求分别存在A中的至少一个、B中的至少一个和C中的至少一个。类似地,除非明确地陈述或从上下文清楚不同的含义,否则诸如“A、B、或C中的至少一者”和“A、B或C中的至少一者”的短语与“A、B、和C中的至少一者”和“A、B和C中的至少一者”所指相同,是指以下组中的任一者:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。另外,除非另外指出或与上下文矛盾,否则术语“多个”指示呈复数的状态(例如,“多个项(a plurality of items)”指示多个项(multiple items))。多个项的数量为至少两个,但如果明确地指示如此或通过上下文指示如此,则可为更多。

除非本文另外指出或以其他方式明显地与上下文矛盾,否则可按任何合适的次序执行本文描述的过程的操作。在一个实施方案中,诸如本文描述的过程(或其变型和/或组合)的过程在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且被硬件或其组合实现为在一个或多个处理器上共同地执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。在一个实施方案中,代码例如以计算机程序的形式存储在计算机可读储存介质上,所述计算机程序包括可由一个或多个处理器执行的多个指令。在一个实施方案中,计算机可读存储介质是不包括暂时性信号(例如,传播瞬变的电或电磁传输)但在暂时性信号的收发器内包括非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)的非暂时性计算机可读存储介质。在一个实施方案中,代码(例如,可执行代码或源代码)存储在一组一个或多个非暂时性计算机可读存储介质上,所述一个或多个非暂时性计算机可读存储介质上存储有可执行指令,所述可执行指令在被计算机系统的一个或多个处理器执行时(即,由于被执行)致使计算机系统执行本文描述的操作。在一个实施方案中,该一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的单独的非暂时性存储介质中的一者或多者不含所有代码,而多个非暂时性计算机可读存储介质共同地存储所有代码。在一个实施方案中,可执行指令被执行,使得不同的指令被不同的处理器执行,例如,在一个实施方案中,非暂时性计算机可读存储介质存储指令,并且主CPU执行指令中的一些,而图形处理器单元执行其他指令。在另一个实施方案中,计算机系统的不同部件具有单独的处理器,并且不同的处理器执行指令的不同子组。

因此,在一个实施方案中,计算机系统被配置为实现一个或多个服务,所述一个或多个服务单独地或共同地执行本文描述的过程的操作,并且此类计算机系统被配置有使得能够执行所述操作的适用硬件和/或软件。另外,在本公开的一个实施方案中,计算机系统是单个装置,并且在另一个实施方案中是包括多个装置的分布式计算机系统,所述多个装置不同地操作,使得分布式计算机系统执行本文描述的操作并且使得单个装置不执行所有操作。

本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅意图更好地说明本发明的实施方案,并且除非另有要求,否则不对本发明的范围施加限制。本说明书中的语言不应被解释为将任何非要求保护的要素指示为实践本发明所必需的。

本文描述了本公开的实施方案,包括发明人已知用于执行本发明的最佳模式。在阅读前述描述之后,这些实施方案的变型对于本领域普通技术人员可变得显而易见。发明人期望技术人员在适当时采用此类变型,并且发明人意图以不同于如本文具体地描述的方式实践本公开的实施方案。因此,经适用法律准许,本公开的范围包括在所附权利要求书中叙述的主题的所有修改和等效物。此外,除非本文另外指出或以其他方式明显地与上下文矛盾,否则本公开的范围涵盖其所有可能的变型中的上述要素的任何组合。

本文引用的所有参考文献(包括出版物、专利申请和专利)特此以引用方式并入,其程度如同每个参考文献都被单独地且具体地指示为以引用方式并入并且其全文在本文中进行阐述一样。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号