真实机器人的模拟驱动机器人控制的制作方法-j9九游会真人

文档序号:35752445发布日期:2023-10-16 17:03阅读:15来源:国知局

真实机器人的模拟驱动机器人控制


背景技术:

1.已经提出使用机器人模拟器来生成用于训练机器学习模型(或多个)的模拟训练数据。一旦基于模拟训练数据被训练,机器学习模型(或多个)就可以在真实机器人(或多个)(即,非模拟的物理真实世界机器人(或多个))的机器人控制的感知、规划和/或动作阶段(或多个)期间被利用。然而,在机器人控制中利用真实机器人(或多个)的机器学习模型(或多个)并不主动涉及机器人模拟器(或多个)。相反,机器学习模型(或多个)仅基于使用机器人模拟器(或多个)生成的模拟训练数据来训练。此外,已经提出使用机器人模拟器(或多个)来在真实机器人上实施控制栈之前测试/验证机器人控制栈。然而,一旦在真实机器人上实施机器人控制堆栈,机器人模拟器就不再被主动利用。


技术实现要素:

2.本文公开的实现方式涉及在一个或多个真实世界机器人的控制中主动利用机器人模拟器。在控制真实世界机器人(在本文中也被称为“真实机器人”)中被利用的机器人模拟器可以利用真实机器人本地的硬件(例如,处理器(或多个)、ram和rom)来实现和/或可以利用远离真实世界机器人但与真实世界机器人网络通信的硬件来实现。
3.在各种实现方式中,机器人模拟器的模拟环境可以被配置为反映真实机器人当前被布置或将被布置在其中的真实世界环境(在本文中也被称为“真实环境”)。可以基于真实环境状态数据来配置模拟环境,真实环境状态数据基于环境的基于传感器的观察(或多个)。真实环境状态数据可以指定真实环境中的对象的标识符及其在真实环境中的姿势,和/或可以包括来自观察(或多个)的原始数据,该原始数据可以被处理以识别对象及其姿势。可以基于对象的标识符及其姿势来配置模拟环境。例如,对象的标识符可以被用于识别对象的匹配三维模型,以及根据其对应的姿势定位在模拟环境中的对象。
4.基于传感器的观察(或多个)可以包括基于机器人传感器的观察(或多个),其来自视觉组件(或多个)和/或与待控制的真实机器人(或多个)集成的其他传感器(或多个)。在那些实现方式中的一些中,真实环境状态数据包括由真实机器人(或多个)使用感知系统生成并由真实机器人(或多个)提供给机器人模拟器的真实环境状态数据。可以基于基于机器人传感器的观察(或多个)和/或基于环境传感器的观察(或多个)(下面描述)来生成真实环境状态数据。这样的感知数据可以包括例如真实环境中的多个对象中的每一个的对应姿势和对应对象标识符。对应对象标识符可以是更高级别的类别,诸如咖啡杯、杯子或碗,或者可以是更细粒度的标识符,诸如特定咖啡杯或特定杯子的标识符。可选地,可以基于打印在对象上或贴附到对象的qr码或其他编码标识符来确定对象的更细粒度的标识符。基于传感器的观察(或多个)可以附加地或替代地包括基于环境传感器的观察(或多个),其来自视觉组件(或多个)和/或真实环境中的其他传感器(或多个),但不与待控制的真实机器人(或多个)集成。例如,基于环境传感器的观察(或多个)可以包括来自独立立体相机或其他视觉组件的观察(或多个)。
5.一旦模拟环境被配置为反映真实环境,机器人模拟器就可以被用于确定由真实世
界机器人在执行机器人任务的至少一部分中使用的机器人动作序列。机器人任务可以是由机器人模拟器的更高级规划组件或由真实世界机器人(或多个)指定的机器人任务,或者可以是基于用户界面输入指定的机器人任务。作为一个非限制性示例,机器人任务可以包括抓取对象并将对象放置在容器中,并且任务的一部分可以包括抓取对象。作为另一非限制性示例,机器人任务可以包括装载洗碗机,并且机器人任务的一部分可以包括重新定位对象、抓取待放置在洗碗机中的对象、或将已经抓取的对象放置在洗碗机中。
6.在确定机器人动作的序列中,机器人模拟器可以鉴于机器人模拟器的模拟环境并利用机器人模拟器可访问的一个或多个机器学习模型和/或规则来确定机器人动作的序列。例如,来自模拟环境的模拟状态数据可以被应用于机器学习模型(或多个)和/或规则(或多个),以确定机器人动作序列是机器人动作的候选序列。例如,应用的模拟状态数据可以包括模拟环境的模拟图像(或多个),诸如从机器人模拟器的模拟机器人(其模拟真实世界机器人)的模拟视觉组件的视点渲染的模拟图像(或多个)。
7.在一些实现方式中,应用的模拟状态数据可以包括模拟真实状态数据的模拟状态数据,该真实状态数据完全不能由真实世界中的任何机器人传感器(或多个)和/或环境传感器(或多个)捕获。例如,模拟状态数据可以包括从特定视点(例如,“头顶”)捕获的模拟/合成视觉数据,并且在没有手动人为干预的情况下,可能不存在能够从真实世界中的对应视点捕获真实视觉数据的任何环境视觉组件或机器人视觉组件。应注意,即使不存在能够从对应视点捕获真实视觉数据的真实世界视觉组件,鉴于基于真实世界并利用三维对象模型配置的模拟环境,模拟视觉数据仍将反映真实世界。作为又一示例,模拟状态数据可以包括模拟lidar数据,并且在真实世界中可以不存在任何lidar视觉组件。以这些和其他方式,机器人模拟器可以被用于生成缺少任何真实世界对应物的模拟状态数据,并且在确定机器人动作序列中利用这种模拟状态数据。利用这样的模拟状态数据可以导致在各种场景中更鲁棒和/或更准确地确定机器人动作序列。作为一个示例,它可以使得能够利用附加的和/或替代的机器学习模型(或多个),诸如针对这种模拟状态数据定制的那些机器学习模型。作为另一示例,它可以使得能够将多个不同的模拟状态数据实例应用于机器学习模型(或多个)和/或规则(或多个),以使得能够共同地基于多个不同的模拟状态数据实例来确定动作序列。
8.在一些附加或替代性实现方式中,应用的模拟状态数据可以包括能够由真实世界中的一个或多个机器人传感器(或多个)和/或环境传感器(或多个)中的一个或多个捕获的模拟状态数据,但是只有在穿越那些真实世界传感器(或多个)的姿势(或多个)和/或重新定位环境对象(或多个)时消耗功率时才能够被捕获。例如,应用的模拟状态数据可以包括对象的模拟3d点云。真实机器人的视觉组件(或多个)可能能够捕获数据以生成对应的真实3d点云,但仅当真实机器人在完全围绕对象穿越和/或提升和旋转对象时消耗大量功率时。另一方面,机器人模拟器可以以更少的功耗生成对象的模拟3d点云。作为另一示例,应用的模拟状态数据实例可以包括多个模拟图像,每个模拟图像来自不同的视点。真实机器人的视觉组件(或多个)可以能够从对应的不同视点捕获对应的真实图像,但是只有当真实机器人在将视觉组件(或多个)遍历到不同视点时消耗大量的功率时才是如此。另一方面,机器人模拟器能够以更少的功耗从不同的视点渲染模拟图像。
9.在一些实现方式中,机器人动作的候选序列可以被应用于机器人模拟器的模拟机
器人和模拟环境中,并且可以利用来自应用期间和/或之后的进一步模拟状态数据来确定机器人动作的候选序列是否应该被确定为要提供以由真实世界机器人(或多个)使用的机器人动作序列。可选地,可以考虑机器人动作的多个候选序列,每个候选序列被应用于机器人模拟器,并且每个候选序列的相应的进一步模拟数据用于确定哪个应该是要提供以由真实世界机器人(或多个)使用的机器人动作的确定序列。
10.作为一个示例,进一步模拟的状态数据的一个或多个特征可以被分析,以确定机器人动作的候选序列是否应该被确定为要提供以由真实世界机器人(或多个)使用的机器人动作序列。例如,特征(或多个)可以包括指示任务的一部分是否成功的任务成功特征(例如,如果任务的一部分是抓取对象,则模拟状态数据是否指示对象的模拟表示通过应用机器人动作序列被抓取)。在这种情况下,机器人动作的候选序列可以被确定为仅在任务成功特征指示任务的一部分成功时才提供使用的机器人动作序列。此外,例如,特征(或多个)可以包括效率特征(或多个),诸如指示序列中的机器人动作的数量和/或机器人的组件(或多个)在执行机器人动作序列时穿过的距离(例如,机器人的关节穿过的关节空间中的累积距离和/或机器人的末端执行器穿过的任务空间中的距离)的效率特征。在这种情况下,仅在效率特征(或多个)满足绝对和/或相对阈值(或多个)——诸如基于正在考虑的替代候选动作序列的效率特征的相对阈值——时,机器人动作的候选序列可以才被确定为要被提供使用的机器人动作序列。注意,对于一些机器人动作序列,在模拟中不应用效率特征的情况下,不能知道效率特征。例如,可以使用机器学习模型来确定机器人动作序列,并且确定序列中的下游动作(或多个)可以取决于处理受序列中的上游动作(或多个)的执行影响的模拟状态数据。
11.通过分析在模拟中来自应用机器人动作序列期间和/或之后进一步模拟的状态数据,并且如果分析满足某些条件(或多个)则仅提供用于由真实机器人(或多个)实施的机器人动作序列(或多个),可以实现各种技术益处。作为一个示例,当考虑任务成功特征(或多个)时,真实机器人将成功执行该部分任务的可能性增加。这可以防止在控制真实世界机器人(或多个)执行不会导致成功执行任务的该部分的动作时浪费能量和/或可以防止真实世界机器人(或多个)上的不必要的磨损和撕裂,否则这些磨损和撕裂将由执行不会导致成功执行任务的该部分的动作引起。作为另一示例,当考虑效率特征(或多个)时,真实机器人可以在更短的持续时间内和/或以更少的组件移动来执行任务的一部分。作为又一示例,机器人模拟器可以在模拟中以比真实机器人更少的壁上时钟时间应用机器人动作序列。这使得能够在比真实机器人被控制以实现机器人动作的次优序列更短的持续时间内更快地确定不成功的或以其他方式次优的机器人动作序列,并且分析所得的真实世界状态数据以确定机器人动作的序列是次优的。
12.应注意,在不使用如本文所述的机器人模拟器的情况下,在各种实现方式中无法实现这些和其他技术益处。作为一个示例,假设所利用的机器学习模型指示机器人动作的第一序列为最可能成功实现任务的一部分,并且指示机器人动作的第二序列为第二可能成功实现任务的一部分。进一步假设通过在模拟中应用第一序列和第二序列,并分析对应的进一步的模拟状态数据,确定第二序列导致成功执行模拟中的任务的一部分,而第一序列没有。结果,机器人动作的第二序列可以被提供以由真实机器人实施。在不使用机器人模拟器的情况下,由于机器学习模型将机器人动作的第一序列指示为更可能成功,因此不成功
的第一机器人动作序列将被选择和实现。
13.在使用机器人模拟器确定机器人动作序列之后,可以控制真实机器人以实施机器人动作序列。例如,每个机器人动作可以直接或间接地指示要在对应的时间步实施的对应的控制命令(或多个),以及按顺序和在对应的时间步实施的对应的控制命令。实施控制命令可以包括向真实机器人的对应致动器(或多个)发送控制命令。
14.如上所述,在一些实现方式中,在由真实机器人实施序列之前,在机器人模拟器中应用机器人动作序列。在那些实现方式中的一些中,在应用机器人动作序列期间,基于来自机器人模拟器的模拟数据生成模拟状态数据实例的序列。对于机器人动作序列中的对应点,每个模拟状态数据实例定义对应点的对应预期环境状态数据和/或对应点的对应预期机器人状态数据。在那些实现方式中,在机器人动作序列的实施期间,模拟状态数据实例的序列中的每一个可以与对应的真实状态数据实例进行比较。每个真实状态数据实例对于机器人动作序列中的对应点定义:真实环境状态,基于真实环境的一个或多个更新的基于传感器的观察(例如,基于机器人传感器和/或基于环境传感器);和/或真实机器人状态数据,基于真实机器人的一个或多个基于传感器的观察。注意,模拟状态数据实例可以每个从对应于真实世界传感器(或多个)(机器人和/或环境)的模拟传感器(或多个)(例如,模拟视觉组件)的角度捕获,以实现本文所述的比较。
15.每个模拟状态数据实例可以与对应的真实状态数据实例进行比较,以确定它们之间是否存在阈值相似度。如果存在阈值相似度,则这可以指示机器人动作在真实机器人上的实施以与其在模拟中实施时对模拟环境的影响一致的方式影响真实环境。这可以附加地或替代地指示真实环境处于对应于模拟环境状态的状态。例如,这可以指示尚未有未预期的对象被引入环境和/或没有从环境中移除预期的对象。此外,这可以附加地或替代地指示机器人动作在真实机器人上的实施以与其在模拟中实施时对模拟机器人的影响一致的方式影响真实机器人。
16.点的模拟状态数据实例可以与该点的对应真实状态数据实例进行比较,并且在该点之后的序列的机器人动作(或多个)真实机器人上实施之前进行比较。在该点之后的机器人动作的实施可以取决于指示阈值相似度的比较。如果比较指示不存在阈值相似度,则可以停止基于机器人动作序列对真实机器人的控制。这可以防止真实机器人在环境条件已经改变的情况下继续实施序列的机器人动作。因此,不浪费能量来继续控制真实机器人和/或避免对真实机器人和/或环境对象的损坏。可选地,当停止基于机器人动作序列对真实机器人的控制时,利用更新的真实环境状态数据来重新配置机器人模拟器的模拟环境,并且利用机器人模拟器来基于重新配置的模拟环境确定要实施的更新的机器人动作序列。然后可以利用更新的机器人动作序列来控制真实机器人。此外,模拟状态数据实例的更新序列可以与机器人动作的更新序列一起提供,以再次使能与对应的真实状态数据实例的比较,以在完全实现更新序列之前确保两者之间的阈值相似度。
17.作为一个特定示例,每个模拟状态数据实例可以包括基于从模拟机器人的模拟视觉组件(对应于真实机器人的真实视觉组件)的视点渲染的相应显然图像的相应预期环境状态数据。例如,模拟状态数据实例的环境状态数据可以包括对应的渲染图像的分割掩码和/或对应的渲染图像的嵌入(例如,基于使用编码器处理渲染图像而生成的嵌入)。因此,环境状态数据可以提供机器人动作序列中的对应点处的预期环境状态的指示。此外,每个
真实状态数据实例可以包括基于来自机器人的真实视觉组件的对应真实图像的对应真实环境状态数据。例如,真实状态数据实例的真实环境状态数据可以包括对应真实图像的分割掩码和/或对应真实图像的嵌入(例如,基于使用编码器处理真实图像而生成的嵌入)。继续该示例,在实施在对应于那些实例的点之后的序列的机器人动作(或多个)之前,预期环境状态数据的实例可以与真实环境状态数据的对应实例进行比较。例如,可以将预期的分割掩码与真实分割掩码进行比较(例如,通过确定分割掩码的大小和/或位置(或多个)之间的差异(或多个))以确定两者之间是否存在阈值相似度。此外,例如,可以将预期的嵌入与真实嵌入进行比较(例如,通过确定两者之间的嵌入空间中的距离)以确定两者之间是否存在阈值相似度。利用分割掩模、嵌入和/或视觉数据的其他非像素级抽象对于来自模拟的渲染视觉数据与真实视觉数据之间可能存在的现实差距可以是更鲁棒的。例如,与直接比较视觉数据的像素相比,利用这种抽象对于现实差距可以更鲁棒。
18.模拟状态数据实例和真实状态数据实例之间的比较可以由机器人模拟器(例如,基于由真实机器人提供的真实状态数据实例)和/或由真实机器人(例如,基于由机器人模拟器提供的模拟状态数据实例)执行。
19.在各种实现方式中,由机器人模拟器确定和/或由真实机器人在给定时间实施的机器人动作序列仅用于由真实机器人实施的任务的一部分。在那些实现方式中,机器人模拟器可以用于确定要实施以执行任务的另一部分的下一机器人动作序列,以及在实施机器人动作序列之后由真实机器人实施的下一机器人动作序列。该过程可以继续,直到完成任务所需的机器人动作的所有序列都已经被确定和实现为止。因此,机器人模拟器可以有效地处于真实机器人的控制循环中,连续地提供更新的机器人动作序列以由真实机器人使用。
20.在那些实现方式中的一些中,机器人模拟器可以在真实机器人完全实施机器人动作序列之前确定下一机器人动作序列。在各种情况下,可以基于在机器人模拟器中进行的模拟环境来确定下一机器人动作序列。例如,对于迄今为止实现的机器人动作,当模拟状态数据实例和真实状态数据实例之间的比较满足阈值相似度时,可以利用其已经进行的模拟环境。在各种其他情况下,可以基于重新配置的模拟环境来确定下一机器人动作序列,该重新配置的模拟环境已经基于更新的真实环境状态数据被重新配置。例如,如上所述,响应于确定不满足阈值相似度,可以重新配置模拟环境。
21.上面已经提到了可以根据本文描述的技术实现的各种技术益处。除了这样的益处之外或代替这样的益处,本文描述的技术可以实现机器人动作的更鲁棒的规划和/或真实机器人的更节能的利用。例如,在机器人模拟器由远离真实机器人的硬件实施的实现方式中,可以由机器人模拟器执行规划,以在真实机器人上实施机器人动作。这可以使得能够具有有限硬件能力的真实机器人上的更鲁棒的规划。例如,机器人模拟器可以在规划中利用机器学习模型(或多个),该机器学习模型(或多个)需要可用于机器人模拟器但不存在于真实机器人上的gpu(或多个)和/或cpu(或多个)。在远程机器人模拟器上执行规划可以附加地或替代地在电池供电的真实机器人上保留有限的电池寿命,因为真实机器人不需要利用处理器周期和/或其他功率资源密集型资源来进行规划。
22.提供以上描述仅作为本文公开的一些实现方式的概述。这些和其他实现方式在本文中更详细地描述,包括在具体实现方式、权利要求书和所附论文中。
23.应当理解,前述概念和本文更详细描述的附加概念的所有组合都被认为是本文公开的主题的一部分。例如,出现在本公开结尾处的所要求保护的主题的所有组合被认为是本文公开的主题的一部分。
附图说明
24.图1示出可以实现本文公开的实现方式的示例环境。
25.图2是示出根据本文公开的各种实现方式的真实机器人的模拟驱动机器人控制的示例方法的流程图。
26.图3示出图1的各种组件的示例,以及可以在真实机器人的模拟驱动机器人控制中在各种组件之间发生的交互。
27.图4a示出在基于利用机器人模拟器确定的机器人动作序列来确定是否继续控制真实机器人时,以第一频率比较真实状态数据实例与模拟状态数据实例的示例。
28.图4b示出在基于利用机器人模拟器确定的机器人动作序列来确定是否继续控制真实机器人时,以第二频率比较真实状态数据实例与模拟状态数据实例的示例。
29.图5示意性地描绘机器人的示例架构。
30.图6示意性地描绘计算机系统的示例架构。
31.具体实现方式
32.图1示出可以实现本文公开的实现方式的示例环境。示例环境包括机器人110和洗碗机195。示例环境也包括搁置在桌子191上的碗192、杯子193和咖啡杯194。图1的示例环境可以是真实世界环境,其中机器人110可以利用本文描述的技术来执行各种任务,诸如涉及操纵对象191-195中的一个或多个的那些任务。例如,任务可以包括推动、抓取或以其他方式操纵对象191-195中的一个或多个。作为另一示例,任务可以包括更复杂的任务,诸如将对象191-194中的每一个装载到洗碗机195中。
33.图1所示的机器人110是特定的移动机器人。然而,附加的和/或替代的机器人可以与本文公开的技术一起使用,例如在一个或多个方面与图1所示的机器人110不同的附加机器人。例如,在本文描述的技术中,代替机器人110或除了机器人110之外,可以利用移动叉车机器人、机器人臂、无人飞行器(“uav”)和/或人形机器人。
34.机器人110包括基座113,基座113具有提供在其相对侧上的轮子,用于机器人110的移动。基座113可以包括例如一个或多个马达,用于驱动机器人110的轮子以实现机器人110的移动的期望方向、速度和/或加速度。
35.机器人110还包括视觉组件111,其可以生成与处于视觉组件111a的视线中的对象的形状、颜色、深度和/或其他特征相关的图像。视觉组件111可以是例如专题相机(例如,生成2d rgb图像)、立体相机(例如,生成2.5drgb-d图像)和/或激光扫描仪(例如,生成2.5d深度(d)图像或点云的lidar)。机器人110也包括具有末端执行器115的机器人臂114,其采用具有两个相对的“手指”或“趾”的夹持器的形式。
36.机器人110也包括一个或多个处理器,例如:实现机器人动作(例如,通过向致动器和/或其其他操作组件提供相应的控制命令);基于视觉组件数据确定对象的姿势和/或标识符;以及可选地实现机器人模拟器。例如,机器人110的一个或多个处理器可以实现图2的方法200的全部或方面。本文提供各种机器人的结构和功能的一些示例的附加描述。
37.图1的示例环境也包括未耦合到机器人110或以其他方式与机器人110集成的一个或多个环境视觉组件170。此外,示例环境包括真实机器人系统120、机器人模拟器140、对象模型(或多个)数据库152和一个或多个机器学习(ml)模型154。
38.真实机器人系统120由机器人110的一个或多个处理器实现。在图1中,真实机器人系统120被示出为具有真实状态数据引擎122、控制引擎124和可选的比较引擎126。在各种实现方式中,附加引擎可以被包括在真实机器人系统120中。
39.真实状态数据引擎122处理基于传感器的观察以生成本文描述的真实环境状态数据和/或生成本文描述的真实状态数据实例。在生成真实环境状态数据和/或真实状态数据实例时,真实状态数据引擎122可以利用一个或多个本地存储的机器学习模型(未示出)来处理基于传感器的观察。
40.作为一个示例,真实状态数据引擎122可以使用机器学习模型(或多个)来处理视觉数据(来自视觉组件111和/或来自视觉组件(或多个)170),以生成真实环境状态数据,该真实环境状态数据包括机器人110的环境中的对象(或多个)的姿势(或多个)和/或分类(或多个)。作为另一示例,真实状态数据引擎122可以使用机器学习模型(或多个)来处理视觉数据,以生成环境中的对象(或多个)的姿势(或多个),并且可以单独处理视觉数据以确定对象(或多个)的粒度标识符(或多个),诸如在贴附到对象(或多个)的标签中反映的并且在视觉数据中捕获的标识符(或多个)。真实环境状态数据可以由真实机器人系统120提供给机器人模拟器140,并由机器人模拟器的配置引擎142用于配置(即,初始配置或重新配置)机器人模拟器140的模拟环境。
41.作为另一示例,真实状态数据引擎122可以使用机器学习模型(或多个)来处理视觉数据(来自视觉组件111和/或来自视觉组件(或多个)170),以生成真实状态数据实例,每个真实状态数据实例包括对应的分割掩模和/或视觉数据嵌入。真实机器人系统120的比较引擎126或机器人模拟器140的比较引擎150可以使用真实状态数据实例来比较真实状态数据实例与对应的模拟状态数据实例,以确定真实状态数据实例和模拟状态数据实例之间是否存在阈值相似度。在各种实现方式中,真实状态数据引擎122可以包括图2的方法200的感知系统和/或实施块252a。
42.控制引擎124实现由机器人模拟器140的模拟动作引擎144确定的机器人动作。实现机器人动作可以包括向机器人110的对应的致动器(或多个)发送对应的控制命令(或多个),其中控制命令(或多个)由机器人动作直接或间接指示。
43.在控制引擎124实施机器人动作序列期间,比较引擎126可以将实施期间对应点的真实状态数据实例(来自真实状态数据引擎122)与模拟状态数据实例(来自机器人模拟器140的模拟状态数据引擎148)进行比较,以确定比较的真实状态数据实例和模拟状态数据实例之间是否存在阈值相似度。比较引擎126可以与控制引擎124通信,并且可以使控制引擎124继续实施由机器人模拟器提供的机器人动作,只要比较指示阈值相似度即可。当一个或多个比较不指示阈值相似度时,比较引擎126可以附加地或替代地使控制引擎124停止实施由机器人模拟器提供的机器人动作。例如,当单个比较不指示阈值相似度时,或者当两个或更多个比较不指示阈值相似度时,诸如n个顺序比较或最后n m个比较中的n个,其中n是大于1的整数并且m是整数,比较引擎126可以使控制引擎124停止实施。在各种实现方式中,比较引擎126可以实现图2的方法200的框262和/或框264。
44.机器人模拟器140由机器人110的一个或多个硬件组件(例如,处理器(或多个))实现,或者由与机器人110分离但与机器人110网络通信的一个或多个计算设备实现。例如,计算设备(或多个)可以经由局域网和/或广域网与机器人110进行网络通信。机器人模拟器140用于模拟包括相应环境对象(或多个)的环境,模拟在模拟环境中操作的机器人(例如,模拟机器人110和/或其他机器人),模拟模拟机器人响应于各种模拟机器人动作的虚拟实施的响应,并且模拟模拟机器人与模拟环境对象之间响应于模拟机器人动作的交互。可以利用各种模拟器,诸如模拟碰撞检测、软体和刚体动力学等的物理引擎。这种模拟器的一个非限制性示例是bullet物理引擎。
45.机器人模拟器140包括配置引擎142、具有可选评估模块145的模拟动作引擎144、模拟应用引擎146、模拟状态数据引擎148和比较引擎150。
46.配置引擎121配置用于机器人模拟器140的模拟环境的各种参数和/或配置关于机器人模拟器140的模拟机器人的各种参数。在配置模拟环境时,配置引擎121利用真实环境状态数据。在一些实现方式中,真实环境状态数据可以包括由真实机器人系统120的真实状态数据引擎122和/或由环境中的其他机器人(或多个)(未示出)的真实状态数据引擎提供(或多个)的姿势(或多个)和/或对象标识符(或多个)。在一些实现方式中,真实环境状态数据附加地或替代地包括原始的基于传感器的观察(或多个),诸如来自机器人110的视觉组件111的视觉数据和/或来自环境视觉组件(或多个)170的视觉数据。在那些实现方式中,配置引擎121可以包括感知系统,并且可以基于基于传感器的观察来生成例如对象的姿势(或多个)和/或对象标识符(或多个)。
47.在配置模拟环境时,配置引擎142可以访问对象模型(或多个)数据库152以识别用于在模拟环境中利用的三维(3d)模型(或多个)。例如,对象模型(或多个)数据库152可以包括用于环境中的一些或所有对象的准确3d模型,并且配置引擎142可以使用例如对象标识符(或多个)将3d模型与对应的对象匹配。例如,碗192可以在其上包括标识符(例如,qr码或其他标识符),并且真实环境状态数据可以反映该标识符以及该标识符的姿势。配置引擎142可以利用标识符来从对象模型(或多个)数据库152(例如,可以基于标识符对其编索引)检索碗192的3d模型,并且可以基于姿势将3d模型放置在模拟环境中。
48.在一些实现方式中,配置模拟环境也可以包括配置模拟机器人以反映机器人110和/或反映其在真实环境中的当前状态。在这样的实现方式中,真实状态数据引擎122可以提供真实环境状态数据,该真实环境状态数据包括机器人110的标识符和/或机器人110在真实环境中的当前状态,诸如机器人的每个关节的当前姿势。在配置模拟机器人时,配置引擎142可以利用机器人模型。机器人模型可以定义模拟机器人的物理构造,以及模拟机器人的约束、模拟机器人的动态模型和/或模拟机器人的其他参数(或多个)。在各种实现方式中,配置引擎121可以实施图2的方法200的框252和/或框272的全部或方面。
49.模拟动作引擎144可以基于由配置引擎142配置的模拟环境来确定机器人110(和/或其他未示出的机器人(或多个))在执行机器人任务的至少一部分中使用的机器人动作序列。在确定机器人动作的序列中,模拟动作引擎144可以鉴于模拟环境并利用机器人模拟器可访问的一个或多个机器学习模型154和/或规则来确定机器人动作序列。作为一个示例,机器学习模型(或多个)154可以包括利用强化或模仿学习训练的策略模型,并且模拟动作引擎144可以通过将模拟数据应用于策略模型以生成机器人动作的概率分布并基于概率分
布选择机器人动作序列来确定机器人动作序列。注意,在选择每个下一个机器人动作时,模拟数据可以反映模拟环境和/或模拟机器人的新状态,其中新状态反映先前机器人动作在模拟中的滚出(roll out)(例如,由模拟应用引擎146滚出)。作为另一示例,机器学习模型(或多个)154可以包括机器学习模型,该机器学习模型可以在每个时间步骤用于处理当前模拟视觉数据和对应的候选机器人动作,以生成反映实施候选机器人动作将导致成功执行任务的至少一部分的可能性的值。多个候选机器人动作可以在每个时间步被模拟动作引擎144考虑,并且基于生成的值一个候选机器人动作被选择以包括在机器人动作序列中。注意,在选择每个下一个机器人动作时,模拟数据可以反映模拟环境和/或模拟机器人的新状态,其中新状态反映先前机器人动作在模拟中的滚出。
50.在一些实现方式中,模拟动作引擎144生成机器人动作的多个候选序列,并确定哪个应该是要提供以由机器人110使用的所确定的机器人动作序列。在这些实现方式的一些版本中,模拟动作引擎144的评估模块145用于评估机器人动作的候选序列,并且基于评估来确定这些候选序列中的仅一个提供由机器人110使用。在那些实现方式的一些版本中,模拟应用引擎146可以在模拟环境中将每个候选机器人动作应用于机器人模拟器的模拟机器人。此外,模拟状态数据引擎148可以在应用期间和/或应用之后生成模拟状态数据,并且评估模块145可以在评估一个或多个候选序列时利用模拟状态数据。
51.作为一个示例,评估模块145可以利用序列的模拟状态数据来生成任务成功特征,该任务成功特征指示意欲由序列实现的任务的一部分是否成功。例如,如果任务的一部分是抓取对象,则评估模块145可以基于模拟状态数据是否指示通过应用机器人动作序列对象的模拟表示被抓取来生成任务成功特征。在这样的示例中,仅当任务成功特征指示任务的一部分成功时,评估模块145才可以确定序列是要被提供以由机器人110使用的序列。
52.作为一个示例,评估模块145可以利用序列的模拟状态数据来附加地或替代地生成指示序列中的机器人动作的数量和/或机器人的组件(或多个)在执行序列时穿过的距离的效率特征(或多个)。距离可以是例如由模拟机器人的关节(或多个)穿过的关节空间中的累积距离和/或由模拟机器人的末端执行器穿过的任务空间中的距离。在这样的示例中,仅当效率特征(或多个)满足绝对和/或相对阈值(或多个)时,评估模块145可以确定序列是要被提供以由机器人110使用的序列。在各种实现方式中,模拟动作引擎144可以实现图2的方法200的框256的全部或各方面。
53.模拟应用引擎146可以在模拟环境中将一系列机器人动作应用于模拟机器人。这使得模拟机器人根据机器人动作移动,并且模拟环境受到至少一些机器人动作的影响。如上所述,模拟应用引擎146可以可选地应用机器人动作的多个不同的候选序列,以例如生成模拟状态数据,以供评估模块145在评估多个不同的候选序列中使用。在那些情况下,模拟应用引擎146可以应用具有相同的起始环境和机器人状态的不同候选序列中的每一个,但是针对每一个对应的应用的机器人动作并且根据其单独地滚出模拟。在各种实现方式中,模拟应用引擎146可以实现图2的方法200的框256的全部或各方面。
54.模拟状态数据引擎148可以生成用于由模拟应用引擎146应用机器人动作的模拟状态数据。所生成的模拟状态数据可以包括评估模块145的数据利用和/或可以包括用于由比较引擎126和/或由比较引擎150利用的模拟状态数据实例。例如,对于由模拟应用引擎146应用的机器人动作序列,模拟状态数据引擎148可以在应用机器人动作序列期间基于来
自机器人模拟器的模拟数据生成模拟状态数据实例的序列。例如,模拟状态数据引擎148可以在应用序列的任何机器人动作之前生成初始模拟状态数据实例,并且可以在应用每个机器人动作之后、在应用每隔一个机器人动作之后、在应用每隔三个机器人动作之后或以其他频率生成模拟状态数据实例。对于机器人动作序列中的对应点,每个模拟状态数据实例定义对应点的对应预期环境状态数据和/或对应点的对应预期机器人状态数据。在各种实现方式中,模拟状态数据引擎148可以实现图2的方法200的框256a和/或框258的全部或方面。
55.比较引擎150可以与上述真实机器人系统120的比较引擎126共享一个或多个方面。在各种实现方式中,仅提供比较引擎126和比较引擎150中的一个,并且省略另一个。在包括比较引擎150的实现方式中,可以从真实状态数据引擎122获得真实状态数据实例,并将这些真实状态数据实例与由模拟状态数据引擎148生成的模拟状态数据实例进行比较。在包括比较引擎126的实现方式中,可以从模拟状态数据引擎148获得模拟状态数据实例,并将这些模拟状态数据实例与由真实状态数据引擎122生成的真实状态数据实例进行比较。在各种实现方式中,比较引擎150可以实现图2的方法200的框262和/或框264的全部或方面。
56.下面关于图3和图4描述图1的各种组件的附加描述以及可以在这些组件之间发生的交互。然而,首先,描述了图2的方法200,其示出根据本文公开的各种实现方式的真实机器人的模拟驱动机器人控制的示例方法。为了方便起见,参考执行操作的系统来描述流程图的操作。该系统可以包括机器人和/或与机器人网络通信的计算设备(或多个)的一个或多个组件(例如,处理器(或多个))。此外,虽然方法200的操作以特定顺序示出,但这并不意味着限制。可以重新排序、省略或添加一个或多个操作。
57.在框252处,系统识别真实环境状态数据。真实环境状态数据基于真实环境的基于传感器的观察(或多个)。基于传感器的观察(或多个)来自真实环境中的真实传感器(或多个),例如真实环境中的真实机器人(或多个)的传感器(或多个)和/或在真实环境中但不是真实机器人(或多个)的一部分的传感器(或多个)。真实环境状态数据可以包括例如真实环境中的真实对象(或多个)的姿势(或多个)、真实对象(或多个)的对象标识符(或多个)和/或基于传感器的观察(或多个)本身。
58.框252可以可选地包括子框252a,其中系统基于真实环境的基于传感器的观察(或多个)来生成真实环境状态数据。例如,系统可以通过处理基于传感器的观察(或多个)来生成真实环境中的真实对象(或多个)的姿势(或多个)和/或真实对象(或多个)的对象标识符(或多个)。例如,在生成对象标识符和/或姿势时,系统可以利用感知系统利用一个或多个机器学习模型来处理基于传感器的观察。
59.在框254处,系统基于在框252处识别的真实环境状态数据来配置机器人模拟器的模拟环境。系统配置模拟环境,以便基于真实环境状态数据尽可能接近地反映真实环境。
60.在框256处,系统使用机器人模拟器确定用于机器人任务的机器人动作序列。机器人任务可以是由当前在真实环境中的真实机器人(或多个)即将执行的任务,或者可以是当真实机器人(或多个)在真实环境中时在未来时间(例如,在5分钟内)执行的任务。在模拟环境中反映的真实环境可以是例如房间的一部分、整个房间、多个房间、整个建筑物和/或世界内的其他限定空间。
61.框256可以可选地包括子框256a,其中系统生成多个不同的机器人动作序列,将多个序列中的每一个单独地应用于具有其当前配置(子框256a的初始迭代中的初始配置)的机器人模拟器,并且基于来自应用的一个或多个特征来确定序列。序列的特征(或多个)可以基于来自应用序列的模拟数据来确定,并且可以包括例如任务成功特征和/或效率特征(或多个)。
62.在框258处,系统生成在框256处确定的机器人动作序列的模拟状态数据实例。每个模拟状态数据实例为序列中的对应点定义对应的预期环境状态数据和/或机器人状态数据。系统基于来自序列中的点的模拟状态数据来生成该点的模拟状态数据实例。例如,在实施序列的第二机器人动作之后的给定模拟状态数据实例可以基于模拟环境的状态和/或在实施第二机器人动作之后的模拟机器人的状态。在一些实现方式中,当块256包括子块256a时,块258可以包括基于块256a的针对所确定的序列的应用来生成模拟状态数据实例。
63.在框260处,系统控制真实机器人实施在框256处确定的机器人动作序列中的一个或多个接下来的机器人动作。在序列的初始迭代中,这可以包括实施初始机器人动作以及可选地一个或多个后续机器人动作。尽管未在图2中示出,但是应注意,在一些实现方式中,在序列的初始迭代之前,系统可以将当前真实状态数据实例与模拟状态数据实例进行比较,该模拟状态数据实例反映在实施序列之前的预期环境和/或机器人状态。这可以确保真实机器人状态和/或真实环境状态相对于确定序列所基于的初始模拟机器人状态和/或初始模拟环境状态没有显著改变。
64.在框262处,系统将真实状态数据实例(或多个)与在框258处生成的对应的模拟状态数据实例(或多个)进行比较。真实状态数据实例(或多个)中的每个在框260的最近迭代中的机器人动作(或多个)中的一个的实施之后或期间的对应点处生成。
65.在框264处,系统确定框262的比较是否指示在框262处比较的真实状态数据实例(或多个)与模拟状态数据实例(或多个)之间的阈值相似度。
66.在框264处,如果系统确定指示阈值相似度,则系统进行到框266。在框266处,系统确定序列中是否存在一个或多个剩余的机器人动作。如果是,则系统返回到框260以控制真实机器人实施序列中的下一个机器人动作。如果在框266处,系统确定序列中没有剩余的机器人动作,则系统进行到框268。
67.在框268处,系统确定是否存在用于完成由真实机器人执行的任务(或多个)的另外机器人动作。如果没有,则系统进行到框270,并且方法200针对任务结束(但是可以针对另一任务再次启动)。如果右,则系统返回到框256,并使用机器人模拟器确定机器人任务的下一个机器人动作序列。注意,在一些实现方式中,可以全部或部分地执行框256的下一次迭代,同时仍然基于在框256的紧接在前的迭代中确定的序列的机器人动作来执行框260的迭代。还应注意,在一些实现方式中,当在执行之前再次执行框256而不遇到框272时,机器人模拟器可以处于与其在机器人模拟器中应用最近的机器人动作序列之后的状态一致的状态。在一些其他实现方式中,当在执行之前再次执行框256而不遇到框272时,机器人模拟器可以处于基于来自真实机器人应用最近的机器人动作序列期间或之后的更新的真实环境状态数据更新的状态(例如,可以基于来自更新的真实环境状态数据的姿势(或多个)稍微更新模拟对象的姿势(或多个))。
68.在框264处,如果系统确定不指示阈值相似度,则系统进行到框272。在框272处,系
统基于更新的真实环境状态数据重新配置模拟环境。更新的真实环境状态数据可以基于在框260的最近迭代之后的真实环境的基于传感器的观察。框272可以与框254共享一个或多个方面,但是基于更新的真实环境状态数据。在执行框272之后,系统可以返回到框256并使用机器人模拟器和重新配置的模拟环境来确定新的机器人动作序列。
69.现在转到图3,示出图1的各种组件,以及可以在真实机器人的模拟驱动的机器人控制中的各种组件之间发生的示例交互。在图3中,机器人视觉组件(或多个)111生成视觉数据112a,并将视觉数据112a提供给真实状态数据引擎122和/或配置引擎142。此外,环境视觉组件(或多个)170生成视觉数据171a并将视觉数据171a提供给配置引擎142。真实状态数据引擎122可以处理视觉数据112a以生成反映真实机器人110(图1)的真实环境中的对象的姿势和/或对象标识符的姿势数据和/或对象标识符数据112。姿势数据和/或对象标识符数据112被提供给配置引擎142。
70.配置引擎142在生成的配置的模拟环境143中利用视觉数据112a、视觉数据171a和/或姿势数据和/或对象标识符数据112。配置引擎142也可以在生成配置的模拟环境143中利用对象模型(或多个)数据库152。例如,来自姿势数据和/或对象标识符数据112和/或基于视觉数据112a或117a确定的对象标识符可以用于从对象模型数据库152检索对象的对应3d模型。这些3d模型可以被包括在配置的模拟环境中,并且可以被包括在来自姿势数据和/或对象标识符数据112的、和/或基于视觉数据112a或117a确定的对应姿势处。
71.模拟动作引擎144利用配置的模拟环境143来确定机器人动作144a-n的一个或多个候选序列。模拟动作引擎144可以基于利用机器学习模型(或多个)154处理模拟数据来确定机器人动作144a-n的候选序列(或多个)。此外,模拟动作引擎144可以鉴于要由真实机器人执行的任务101来确定机器人动作144a-n的候选序列(或多个)。任务101可以例如基于来自用户的用户界面输入和/或基于更高级别的计划系统。
72.对于机器人动作的候选序列144a-n中的每一个,模拟应用引擎146可以在机器人模拟器中应用机器人动作147的序列。注意,在一些实现方式中,在模拟应用引擎146已经应用序列的上游机器人动作(或多个)之后,可以由模拟动作引擎144利用来自机器人模拟器的更新的模拟数据来生成一个或多个序列144a-n中的下游机器人动作中的一个或多个。
73.模拟状态数据引擎148针对机器人动作的候选序列144a-n中的每一个并且基于由模拟应用引擎应用机器人动作的序列147来生成模拟状态数据。模拟状态数据可以用于为机器人动作144a-n的候选序列中的每一个生成对应的特征(或多个)112a-n。评估模块145可以在选择(例如,从机器人动作的多个候选序列144a-n中)确定的机器人动作序列144a以提供给控制引擎124用于实施中利用特征(或多个)112a-n。评估模块145也可以向模拟动作引擎144提供关于已经评估的序列(或多个)的评估的反馈。模拟动作引擎144可以基于反馈生成机器人动作144a-n的候选序列(或多个)中的一个或多个。例如,模拟动作引擎144可以最初仅生成单个候选序列,然后仅在反馈指示最初生成的序列不能满足条件时生成附加序列。
74.模拟状态数据引擎148也生成用于所确定的机器人动作序列144a的模拟状态数据实例149a,并且将模拟状态数据实例149a提供给比较引擎126或150。
75.控制引擎124在真实机器人110处实现所确定的机器人动作序列144a。在实现期间,比较引擎126或150将模拟状态数据实例与真实状态数据实例进行比较。真实状态数据
实例可以基于来自机器人视觉组件(或多个)111的更新的视觉数据、来自环境视觉组件(或多个)170的更新的视觉数据,和/或基于来自真实状态数据引擎122的更新的真实状态数据。如果比较指示阈值相似度,则机器人动作序列144a的实现方式可以继续。另一方面,如果一个或多个比较不指示阈值相似度,则比较引擎126或150可以使控制引擎124停止实施所确定的机器人动作序列144a。比较引擎126还可以向重新配置引擎142发送重新配置信号127,以使模拟环境被重新配置,如本文所述。为了简洁起见,关于单个机器人动作序列描述了图3。然而,应注意,在各种实现方式中,在执行任务时,可以利用机器人模拟器确定附加序列,并提供附加序列以供真实机器人实施。那些附加序列可以以与图3中所述类似的方式确定和实施,并且如本文其他地方所述。
76.现在转到图4a和图4b,示出比较真实状态数据实例和模拟状态数据实例的两个不同示例。在图4a中,示出三个机器人动作144a1、144a2和144a3,其可以是序列的机器人动作的全部或部分。此外,模拟状态数据实例149a0被提供并且对应于在实施序列的任何机器人动作之前的预期状态。模拟状态数据实例149a1被提供并且对应于在实施机器人动作144a1之后的预期状态,模拟状态数据实例149a2被提供并且对应于在实施机器人动作144a2之后的预期状态,并且模拟状态数据实例149a3被提供并且对应于在实施机器人动作144a3之后的预期状态。
77.在图4a中,比较引擎126或150可以在实施序列的任何机器人动作之前,将此时的真实状态数据实例170a0与模拟状态数据实例149a0进行比较,并且仅当比较指示阈值相似度时实施机器人动作144a1。在实施机器人动作144a1之后,比较引擎126或150可以将来自实施机器人动作144a1之后的点的真实状态数据实例170a1与模拟状态数据实例149a1进行比较。机器人动作144a2的实施可以取决于指示阈值相似度的比较,或者可替代地,机器人动作144a2可以在比较期间部分地(或完全地)实施,但是如果比较没有指示阈值相似度,则停止基于序列的真实机器人的控制。在实施机器人动作144a2之后,比较引擎126或150可以将来自实施机器人动作144a2之后的点的真实状态数据实例170a2与模拟状态数据实例149a2进行比较。机器人动作144a3的实施可以取决于指示阈值相似度的比较,或者可替代地,机器人动作144a3可以在比较期间部分地(或完全地)实施,但是如果比较没有指示阈值相似度,则停止基于序列的真实机器人的控制。此外,在实施机器人动作144a3之后,比较引擎126或150可以将来自实施机器人动作144a3之后的点的真实状态数据实例170a3与模拟状态数据实例149a3进行比较。序列的进一步的机器人动作(如果有的话)或下一机器人动作序列(如果机器人动作144a3是序列的终端机器人动作)的实施可以取决于指示阈值相似度的比较,或者可替代地,机器人动作144a3可以在比较期间部分地(或完全地)实施,但是如果比较不指示阈值相似度,则停止基于序列的真实机器人的控制。
78.图4b类似于图4a,并且相同的附图标记表示相同的组件。然而,在每个动作之后不提供图4a中的模拟状态数据实例。相反,仅提供初始模拟状态数据实例149a0和模拟状态数据实例149a3。因此,比较引擎126或150将执行真实状态数据实例170a0和模拟状态数据实例149a0之间的初始比较,以及真实状态数据实例170a3和模拟状态数据实例149a3之间的比较,但是在机器人动作144a1和144a2之后不会基于真实状态数据执行比较。因此,图4a和图4b示出可以由比较引擎126或150执行比较的两个不同的非限制性示例频率。
79.在一些实现方式中,执行比较的频率可以在机器人任务的尝试执行的整个持续时
间内是固定的,并且可选地,可以对于多个不同机器人任务中的每一个是固定的。在一些替代实现方式中,可以在机器人任务的尝试执行的整个持续时间内和/或在多个不同机器人任务之间调整执行比较的频率。在那些实现方式中的一些中,可以根据真实世界环境的实际或预期熵、正在执行的机器人任务的一部分和/或正在执行的机器人任务来确定在给定时间执行比较的频率。例如,如果即将到来的模拟状态数据实例(或多个)指示真实世界环境可能改变(例如,由于真实机器人与真实世界对象(或多个)的交互(或多个)),则可以增加频率。另一方面,如果即将到来的模拟状态数据实例(或多个)指示真实世界环境可能保持静态,则可以降低频率或保持较低的频率。作为另一示例,对于沿着空走廊导航的机器人任务或机器人任务的一部分,可以利用第一频率。另一方面,对于试图抓取对象的机器人任务或机器人任务的一部分,可以利用大于第一频率的第二频率。以这些和其他方式,可以根据当前或预期的机器人动作(或多个)和/或环境状态来动态地调整比较的频率。这可以包括增加复杂机器人动作(或多个)(例如,涉及与环境对象(或多个)交互的机器人动作)和/或高熵环境的频率,同时降低不太复杂的机器人动作(或多个)(例如,在不与环境对象(或多个)交互的情况下导航或移动组件(或多个))和/或较低熵环境的频率。因此,可以选择性地降低比较的频率,从而导致利用真实世界机器人的较少计算和/或功率资源。此外,在一些实现方式中,生成真实状态数据实例的频率甚至可以被调整以反映比较的频率。例如,在这些实现方式中的一些实现方式中,将仅以与比较的频率匹配的频率生成真实状态数据实例。这可以包括仅处理该频率下的传感器数据实例和/或甚至基于该频率来适配对应传感器组件(或多个)的感测频率。调整相应传感器组件的感测频率可以包括调整它们以在该频率(如果可能的话)或在尽可能接近该频率并且可选地大于该频率的相应给定频率下感测。适配对应传感器组件(或多个)的感测频率可以导致利用真实世界机器人的较少计算和/或功率资源。
80.图5示意性地描绘机器人520的示例架构。机器人520包括机器人控制系统560、一个或多个操作组件540a-540n和一个或多个传感器542a-542m。传感器542a-542m可以包括例如视觉传感器、光传感器、压力传感器、压力波传感器(例如,麦克风)、接近传感器、加速度计、陀螺仪、温度计、气压计等。虽然传感器542a-m被描绘为与机器人520集成,但这并不意味着限制。在一些实现方式中,传感器542a-m可以位于机器人520外部,例如作为独立单元。
81.操作组件540a-540n可以包括例如一个或多个末端执行器和/或一个或多个伺服电机或其他致动器,以实现机器人的一个或多个组件的移动。例如,机器人520可以具有多个自由度,并且每个致动器可以响应于控制命令在一个或多个自由度内控制机器人520的致动。如本文所使用的,除了可以与致动器相关联并且将接收到的控制命令转换成用于驱动致动器的一个或多个信号的任何驱动器(或多个)之外,术语致动器还包括产生运动的机械或电气设备(例如,马达)。因此,向致动器提供控制命令可以包括向驱动器提供控制命令,该驱动器将控制命令转换成用于驱动电气或机械装置以产生期望的运动的适当信号。
82.机器人控制系统560可以在一个或多个处理器中实现,例如cpu、gpu和/或机器人520的其他控制器(或多个)。在一些实现方式中,机器人520可以包括“脑盒”,其可以包括控制系统560的全部或方面。例如,脑盒可以向操作组件540a-n提供实时数据突发,其中每个实时突发包括一个或多个控制命令的组,其尤其指示一个或多个操作组件540a-n中的每一
个的运动参数(如果有的话)。控制命令可以基于利用如本文所述的机器人模拟器确定的机器人动作。在一些实现方式中,机器人控制系统560可以执行图2的方法200的某些框。
83.图6是可以可选地用于执行本文描述的技术的一个或多个方面的示例计算设备610的框图。例如,机器人模拟器可以在计算设备610上或在多个计算设备610的集群中被实现。计算设备610通常包括至少一个处理器614,其经由总线子系统612与多个外围设备通信。这些外围设备可以包括存储子系统624(包括例如内存子系统625和文件存储子系统626)、用户接口输出设备620、用户接口输入设备622和网络接口子系统616。输入和输出设备允许用户与计算设备610交互。网络接口子系统616提供到外部网络的接口,并且耦合到其他计算设备中的对应接口设备。
84.用户接口输入设备622可以包括键盘、指向设备(诸如鼠标、轨迹球、触摸板或图形输入板)、扫描仪、并入显示器中的触摸屏、音频输入设备(诸如语音识别系统、麦克风)和/或其他类型的输入设备。通常,术语“输入设备”的使用旨在包括将信息输入到计算设备610中或通信网络上的所有可能类型的设备和方式。
85.用户接口输出设备620可以包括显示子系统、打印机、传真机或诸如音频输出设备的非视觉显示器。显示子系统可以包括阴极射线管(crt)、诸如液晶显示器(lcd)的平板设备、投影设备或用于创建可见图像的一些其他机构。显示子系统还可以诸如经由音频输出设备来提供非视觉显示。通常,术语“输出设备”的使用旨在包括从计算设备610向用户或另一机器或计算设备输出信息的所有可能类型的设备和方式。
86.存储子系统624存储提供本文描述的一些或所有模块的功能的编程和数据构造。例如,存储子系统624可以包括用于执行图2的方法的某些方面的逻辑。
87.这些软件模块通常由处理器614单独执行或与其他处理器组合执行。存储子系统624中使用的内存625可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)630和存储固定指令的只读存储器(rom)632。文件存储子系统626可以为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、cd-rom驱动器、光盘驱动器或可移动介质盒。实现某些实现方式的功能的模块可以由文件存储子系统626存储在存储子系统624中,或者存储在处理器(或多个)614可访问的其他机器中。
88.总线子系统612提供用于使计算设备610的各种组件和子系统按预期彼此通信的机制。尽管总线子系统612被示意性地示出为单个总线,但是总线子系统的替代实现方式可以使用多个总线。
89.计算设备610可以是各种类型,包括工作站、服务器、计算集群、刀片服务器、服务器群或任何其他数据处理系统或计算设备。由于计算机和网络的不断变化的性质,图6中描绘的计算设备610的描述仅旨在作为用于说明一些实现的目的的特定示例。计算设备610的许多其他配置可能具有比图6中描绘的计算设备更多或更少的组件。
90.在一些实现方式中,提供了一种由一个或多个处理器实施的方法,并且该方法包括基于真实环境状态数据配置机器人模拟器的模拟环境。真实环境状态数据基于真实环境的一个或多个基于传感器的观察。该方法还包括使用机器人模拟器确定用于在真实环境中控制真实机器人以执行机器人任务的至少一部分的机器人动作序列。该方法还包括向机器人模拟器的模拟机器人应用机器人动作序列以生成模拟状态数据实例的序列。每个模拟状
态数据实例对于机器人动作序列中的对应点定义以下中的一个或两个:对应点的对应预期环境状态数据,以及对应点的对应预期机器人状态数据。该方法还包括控制真实机器人以实现机器人动作序列的第一子集,并将真实状态数据实例与机器人动作序列中关于对应点的模拟状态数据实例中的对应一个进行比较。真实状态数据实例对于对应点定义以下中的一个或两个:更新的真实环境状态数据,基于真实环境的一个或多个更新的基于传感器的观察;以及真实机器人状态数据,基于真实机器人的一个或多个基于传感器的观察。该方法还包括,响应于比较指示更新的真实状态数据与对应点的预期状态数据实例中的对应一个之间的阈值相似度:控制真实机器人以实施机器人动作序列的第二子集。
91.本文公开的技术的这些和其他实现方式可以包括以下特征中的一个或多个。
92.在一些实现方式中,该方法还包括响应于比较不指示阈值相似度,停止基于机器人动作序列对真实机器人的控制。在这些实现方式的一些版本中,该方法还包括响应于比较不指示阈值相似度:基于更新的真实环境状态数据重新配置模拟环境;使用机器人模拟器确定更新的机器人动作序列,以用于在执行机器人任务时控制真实机器人;将更新的机器人动作序列应用于机器人模拟器的模拟机器人,以生成更新的模拟状态数据实例的序列;控制真实机器人实施更新的机器人动作序列的第一更新子集;将更新的真实状态数据实例与更新的机器人动作序列中的对应更新点的更新的模拟状态数据实例中的对应更新的模拟状态数据实例进行比较;以及响应于将更新的真实状态数据实例与更新的模拟状态数据实例中的对应更新的模拟状态数据实例进行比较指示阈值相似度:控制真实机器人以实施更新的机器人动作序列的更新的第二子集。每个更新的模拟状态数据实例对于更新的机器人动作序列中的相应更新点定义以下中的一个或两个:相应更新点的相应更新的预期环境状态数据,以及基于真实机器人的一个或多个基于传感器的观察的真实机器人状态数据。
93.在一些实现方式中,该方法包括控制真实机器人实施机器人动作序列的第二子集并实施机器人动作序列的任何附加子集。在那些实现方式的一些版本中,该方法还包括,在完全实施机器人动作序列之前:使用机器人模拟器确定用于在执行机器人任务的另一部分中控制真实机器人的下一机器人动作序列;以及利用模拟机器人和与模拟状态数据实例中的终端模拟状态数据实例对应的机器人模拟器的环境,向机器人模拟器的模拟机器人应用下一机器人动作序列以生成模拟状态数据实例的下一序列。在这些版本中的一些版本中,该方法还包括在完全实施机器人动作序列之后,控制真实机器人实施下一序列或机器人动作。控制真实机器人以实施下一机器人动作序列可以包括:控制真实机器人以实施下一机器人动作序列的第一下一子集;将下一真实状态数据实例与所述下一模拟状态数据实例中的对应一个进行比较;以及响应于比较指示阈值相似度,控制真实机器人实施下一机器人动作序列的第二下一子集。
94.在一些实现方式中,一个或多个基于传感器的观察包括基于真实机器人的一个或多个真实传感器的基于机器人传感器的观察。
95.在一些实现方式中,一个或多个基于传感器的观察包括基于环境传感器的观察,其基于未耦接到真实机器人但在真实环境中的一个或多个真实传感器。
96.在一些实现方式中,确定用于在执行机器人任务的至少一部分中控制真实机器人的机器人动作序列包括:将替代的机器人动作序列应用于机器人模拟器;将来自将替代的
机器人动作序列应用于机器人模拟器的一个或多个替代特征与来自将机器人动作序列应用于机器人模拟器的一个或多个特征进行比较;以及基于将一个或多个替代特征与一个或多个特征进行比较,确定利用机器人动作的序列代替机器人动作的替代序列,以用于在执行机器人任务的至少一部分时控制真实机器人。在这些实现方式的一些版本中,一个或多个特征包括任务成功特征和效率特征中的一个或两个,并且一个或多个替代特征包括替代任务成功特征和替代效率特征中的一个或两个。在那些版本中的一些版本中,一个或多个特征包括任务成功特征,并且该方法还包括在应用机器人动作序列之后,基于机器人模拟器的终端状态生成任务成功特征。此外,在那些版本的一些中,一个或多个特征附加地或替代地包括效率特征,并且该方法还包括基于以下中的一个或两个来生成效率特征:机器人动作序列中的机器人动作的数量,以及模拟机器人的一个或多个模拟组件在执行机器人动作序列时穿过的距离。
97.在一些实现方式中,将真实状态数据实例与对应点的模拟状态数据实例中的对应一个进行比较由真实机器人的一个或多个处理器执行。
98.在一些实现方式中,机器人模拟器在远离真实机器人但与真实机器人网络通信的一个或多个远程处理器上实施。
99.在一些实现方式中,提供一种由真实机器人的一个或多个处理器实施的方法,并且该方法包括接收机器人动作序列和模拟状态数据实例的序列。每个模拟状态数据实例对于机器人动作序列中的对应点定义以下中的一个或两个:对应点的对应预期环境状态数据,以及对应点的对应预期机器人状态数据。该方法还包括控制真实机器人以实现机器人动作序列的第一子集,并将真实状态数据实例与机器人动作序列中的对应点的模拟状态数据实例中的对应一个进行比较。真实状态数据实例对于对应点定义以下中的一个或两个:更新的真实环境状态数据,基于真实环境的一个或多个更新的基于传感器的观察;以及真实机器人状态数据,基于真实机器人的一个或多个基于传感器的观察。该方法还包括,响应于比较指示更新的真实状态数据与对应点的预期状态数据实例中的对应一个之间的阈值相似度:控制真实机器人以实施机器人动作序列的第二子集。
100.本文公开的技术的这些和其他实现方式可以包括以下特征中的一个或多个。
101.在一些实现方式中,该方法还包括响应于比较不指示阈值相似度,停止基于机器人动作序列对真实机器人的控制。
102.在一些实现方式中,该方法还包括响应于比较不指示阈值相似度:向机器人模拟器组件发送更新的真实环境状态数据;从机器人模拟器组件接收更新的机器人动作序列,所述更新的机器人动作序列是基于更新的真实环境状态数据和更新的模拟状态数据实例的序列生成的;控制真实机器人实施更新的机器人动作序列的第一更新的子集;将更新的真实状态数据实例与更新的机器人动作序列中的对应更新点的更新的模拟状态数据实例中的对应更新的模拟状态数据实例进行比较;以及响应于将更新的真实状态数据实例与更新的模拟状态数据实例中的对应的更新的模拟状态数据实例比较指示阈值相似度:控制真实机器人以实施更新的机器人动作序列的更新的第二子集。
103.在一些实现方式中,机器人模拟器在远离真实机器人但与真实机器人网络通信的一个或多个远程处理器上实施。
104.在一些实现方式中,提供了一种由一个或多个处理器实施的方法,并且该方法包
括基于真实环境状态数据来配置机器人模拟器的模拟环境,该真实环境状态数据基于真实环境的一个或多个基于传感器的观察。该方法还包括使用机器人模拟器确定机器人动作的第一候选序列和机器人动作的第二候选序列,用于在现实环境中控制现实机器人以执行机器人任务的至少一部分。该方法还包括利用配置之后的模拟环境向机器人模拟器的模拟机器人应用机器人动作的第一候选序列以生成第一模拟状态数据,并且利用配置之后的模拟环境向机器人模拟器的模拟机器人应用机器人动作的第二候选序列以生成第二模拟状态数据。该方法还包括基于第一模拟状态数据和第二模拟状态数据确定利用机器人动作的第一候选序列代替机器人动作的第二候选序列,以用于在执行机器人任务的至少一部分时控制真实机器人。该方法还包括响应于确定利用机器人动作的第一候选序列,使真实机器人实施机器人动作的第一候选序列。
105.本文公开的技术的这些和其他实现方式可以包括以下特征中的一个或多个。
106.在一些实现方式中,基于第一模拟状态数据和第二模拟状态数据确定利用机器人动作的第一候选序列代替机器人动作的第二候选序列包括:基于第一模拟数据生成一个或多个第一特征;基于所述第二模拟数据生成一个或多个第二特征;以及基于将第一特征与第二特征进行比较来确定利用机器人动作的第一候选序列。在那些实现方式的一些版本中,一个或多个第一特征包括第一任务成功特征和第一效率特征中的一个或两个,并且其中一个或多个第二特征包括第二任务成功特征和第二效率特征中的一个或两个。
107.在一些实现方式中,提供了一种由一个或多个处理器实施的方法,并且该方法包括基于真实环境状态数据来配置机器人模拟器的模拟环境,该真实环境状态数据基于真实环境的一个或多个基于传感器的观察。该方法还包括使用机器人模拟器确定机器人动作的第一候选序列和机器人动作的第二候选序列,用于在现实环境中控制现实机器人以执行机器人任务的至少一部分。确定第一候选序列包括利用模拟状态数据,该模拟状态数据模拟利用真实环境中的任何传感器完全不能生成的真实状态数据。该方法还包括使真实机器人实施机器人动作的第一候选序列。
108.本文公开的技术的这些和其他实现方式可以包括以下特征中的一个或多个。
109.在一些实现方式中,模拟状态数据模拟真实状态数据,该真实状态数据通过从模拟视点生成并且完全不能利用真实环境中的任何传感器生成,并且真实环境中的任何传感器都不能在没有人为干预的情况下在真实环境中从对应的真实视点捕获真实视觉数据。
110.在一些实现方式中,模拟状态数据通过从特定类型的模拟传感器生成而模拟完全不能利用真实环境中的任何传感器生成的真实状态数据,并且真实环境中的任何传感器都不是特定类型。
111.其他实现方式可以包括非暂时性计算机可读存储介质,其存储可由一个或多个处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)和/或张量处理单元(tpu))执行以执行诸如本文描述的方法中的一个或多个的方法的指令。其他实现方式可以包括一个或多个计算机和/或一个或多个机器人的系统,其包括一个或多个处理器,该一个或多个处理器可操作以执行存储的指令以执行诸如本文描述的方法中的一个或多个的方法。
当前第1页1  
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图