提供了一种机器人,具有一个由多个关节和连杆组成的运动链,包括与机器人基座连接的根关节和至少一个末端执行器。多个执行器固定安装在机器人基座上。多个肌腱连接到运动链上的对应多个驱动点,并连接到多个执行器上,旨在将执行器的位置和力量传递到肌腱驱动的运动链关节的驱动点,尽管由于多个肌腱的可变性,会导致精度损失。控制器操作该运动链以执行任务。该控制器被配置为基于执行器状态和图像数据生成执行器指令数据,并以补偿肌腱驱动机制中精度损失的方式进行操作。翻译而来供参考,亦可加入知识星球阅读英文原版、中文译本(见文末)。
图1A和图1B以简化形式描述了本文披露的机器人100的整体架构。机器人100包括一个主机器人主体110,如图1A所示,简化为一个运动链,其中包括多个关节(标记为J1到J10的关节)和连接这些关节的连杆。该运动链可以根据具体的实现需求包含任意数量和种类的关节和连杆。尽管图示的实施例显示为类人形形式,机器人并不一定必须为类人形。
运动链包含一个固定安装在机器人基座11上的根关节J1。机器人基座11可以是根关节J1的任何类型的结构框架或基材。在某些实现中,基座配置为固定在地面上。在其他实现中,基座可以安装在带有刹车和驱动系统的轮子上,以便根据需要进行移动和定位。通常,多个运动链可能有其根关节安装在基座11上。
在这个简化示例中,运动链包括连接关节J1、J2、J3和J4的连杆,代表机器人的“躯干”。此外,运动链还包括一个分支,包含关节J2、J7和J10,以及末端执行器12,该末端执行器也可以包含多个关节和连杆,用于抓握。运动链的第二个分支包括关节J3、J5和J8,以及末端执行器13,该末端执行器同样可以包含多个关节和连杆,用于抓握。运动链的第三个分支包括关节J4、J6和J9,以及传感元件14,该元件在此示例中包含一个或多个传感器,这些传感器单独或结合生成传感数据,三维地和时间上指示末端执行器和物体的位置。
图1A所示的一组肌腱15从对应的驱动点(未显示)延伸,用于肌腱驱动的关节以及运动链上的其他可能的肌腱驱动元件,连接到一个包含执行器Al到AN的驱动系统和安装在基座上的控制器130。这些执行器Al到AN驱动肌腱,肌腱将运动和力量传递到运动链上的肌腱驱动的关节或其他元件的驱动点。
如图所示,执行器Al到AN连接到通信网络16,与控制器130通信。此外,通信网络16还连接到运动链上的组件,包括传感元件14以及其他传感器组件,如关节角度传感器、触觉传感器、压力传感器和安装在末端执行器或包含末端执行器的分支上的接近传感器。通信网络16可以包含有线和无线连接,用于在执行器和其他组件之间传输数据和控制信息。
通常,主机器人主体110可以指类人形形式,例如,包含多个附属肢体(如头部、左右手臂),这些附属肢体形成运动链上的分支,并连接到基于根结构(如脊柱、躯干、腹部、腰部、臀部、髋部)的根关节。多个附属肢体可以包括一个或多个操纵肢体(如左右手臂)和末端执行器(如左右手),并通过根部肢体相连接。多个关节包括操纵关节(如肩关节、手臂关节、前臂关节、肘关节、手腕关节),这些关节配置为沿一个或多个自由度(DoFs)移动操纵肢体。多个关节还包括末端执行器关节(如手指和拇指关节),这些关节配置为沿一个或多个自由度移动末端执行器。多个关节还包括根部肢体关节(如躯干关节、腹部关节),这些关节配置为沿一个或多个自由度移动根部肢体。
图1B中示意了控制器130的实现。控制器130包括一个软件组件180,该软件可以存储在非易失性存储器中,由控制器中的一个或多个处理器执行。控制器130还包括一个与网络16连接的机器人接口122,以及一个连接到互联网或其他广域网的互联网接口124。控制器130还包括用于非易失性存储权重的数据存储170,这些权重结合定义了神经网络模型,以及控制器和控制器130配置中使用的其他参数。
在机器人实施例中,控制器与多个执行器和传感器通信以操作运动链,包含存储系统文件的内存,文件中标识了一组神经网络拓扑结构、可配置为执行神经网络拓扑结构的神经网络执行电路,以及用于将反馈数据(包括或衍生自执行器数据和传感器数据)作为输入应用到神经网络执行电路的电路。在某些示例中,控制器包括一个程序或软件组件180,用于根据特定任务从该组中加载和卸载神经网络拓扑,以响应反馈数据操控对象。
软件组件180可以包括操作系统181、系统文件182(例如XML文件)、参数集,其中包括配置头183、包含程序代码的代码块184、权重加载逻辑185、权重更新逻辑186、训练逻辑187、反馈逻辑188,以及“n”个神经网络拓扑189。配置头183包含用于识别配置文件的逻辑,这些配置文件配置控制器130以执行特定任务。系统包括参数,在执行过程中,当遇到权重加载逻辑时,访问配置头以识别配置文件,启用选定的拓扑并加载构成该拓扑训练模型的权重,使用程序代码184配置神经网络和其他控制模块。例如,配置头可以为每个特定神经网络包含一个全局唯一标识符(GUID),以在给定程序中实例化该神经网络。控制程序的实现可以补偿机器人肌腱驱动关节中由于肌腱可变性导致的精度损失。
系统可以包含逻辑,用于确定该特定神经网络的权重是否已经被上传。如果系统确定权重尚未上传,则包含逻辑访问远程服务190的权重分发组件,并请求由配置头中的GUID标识的神经网络的权重块。系统检索神经网络的权重,并将这些权重写入内存块中,神经网络在执行过程中可以访问该内存中的权重。
当机器人初始化或首次操作时,权重可以被加载到内存中。权重也可以在其他时刻进行更新。例如,远程服务190可以通知机器人的系统组件需要新的权重。系统可以重置配置头,使应用逻辑启动上述的权重更新程序。这一逻辑可以用于更新神经网络的权重,当训练出性能更好的神经网络模型时,系统能够将更新的权重传播到一个或多个机器人。因此,系统可以更新神经网络的权重,这可能影响机器人的行为变化或提升任务执行的性能。这可以通过固件更新193完成,而无需更新系统和应用软件。在某一实现中,远程服务190可以运行训练模拟,并在更多训练时长(例如每一千小时等)后,定期更新机器人中神经网络的权重。
这些机器人可以启用互联网功能,并通过网络171(例如通过API进行的无线通信)与基于云的远程服务190进行通信,以访问存储系统文件或网络拓扑数据和权重的内存。机器人可以从远程服务190接收输入数据,并将其状态信息或其他数据发送回远程服务190。
控制器130负责操作机器人100。机器人100包含运动链,运动链包括多个响应于控制器130输出的关节和连杆。在某一实现中,控制器130包含一个训练过的神经网络,用于操作运动链以执行任务。该神经网络具有配置为使用训练好的权重块(例如训练权重170)执行神经网络运行的拓扑(例如拓扑189之一)。
控制器130包含配置头183,配置头183用于包括识别神经网络训练权重块实例的标识符。控制器130还包含权重加载逻辑185,权重加载逻辑185可以访问配置头183。权重加载逻辑185配置为使用权重块标识符,检索并提供训练权重块的实例给拓扑,以执行神经网络运行并生成控制器输出。在某一实现中,权重块标识符为全局唯一标识符(GUID)。权重加载逻辑185还配置为从远程服务190中的权重管理服务器192检索训练权重块的实例。权重管理服务器192配置为存储多个训练权重块的实例。
在某一实现中,配置头183进一步配置为包含关联数据,将权重块标识符与神经网络标识符关联。神经网络标识符用于识别神经网络。在某些实现中,控制器130还包含系统文件182,提供这些关联数据。配置头183从系统文件182读取关联数据。在某一实现中,系统文件182采用可扩展标记语言(XML)格式。
在某一实现中,控制器130还包括权重更新逻辑186,该逻辑配置为更新系统文件182和配置头183,以包含新的关联数据,将新的权重块标识符与神经网络标识符关联。新的权重块标识符标识训练权重块的一个新实例。权重加载逻辑185进一步配置为使用新的权重块标识符,检索并提供训练权重块的新实例给拓扑,以执行神经网络运行并生成控制器输出。权重加载逻辑185还配置为从远程服务190中的权重管理服务器192检索训练权重块的新实例。
在某些实现中,训练权重块的新实例配置神经网络以操作运动链来执行新任务。在其他实现中,训练权重块的实例配置神经网络以操作运动链来执行具有第一精度的任务。在某一实现中,训练权重块的新实例配置神经网络以更高的精度执行任务。在另一实现中,第一次训练生成了训练权重块的实例,该训练使用了一个训练数据集和多个训练周期。在另一实现中,第二次训练生成了新的训练权重块实例,第二次训练使用了更多或更优化的训练样本,并进行了更多的训练周期。
在某些实现中,控制器130还包括多个具有不同拓扑的神经网络执行电路,用于不同的任务。神经网络中的多个神经网络被训练以操作运动链来执行各自的任务,且每个神经网络具有不同的拓扑,配置为使用各自训练的权重块执行神经网络的运行,生成控制器输出。在这些实现中,配置头183进一步配置为包含多个权重块标识符,这些标识符用于标识多个训练权重块。配置头183还包含关联数据,将权重块标识符与多个神经网络标识符关联,从而神经网络标识符用于识别各自的神经网络。在这些实现中,权重加载逻辑185配置为使用相应的权重块标识符,检索并提供训练权重块给各自的拓扑,以执行各自的神经网络并生成相应的控制器输出。
在某些实现中,控制器130还包括训练逻辑187,该逻辑配置为基于在任务执行期间由运动链生成的执行数据和传感器数据,进一步训练神经网络生成控制器输出,并生成训练权重块的演化实例。
在某些实现中,控制器130还包括额外的未训练神经网络,由训练逻辑根据运动链在任务执行期间生成的执行数据和传感器数据进行训练,并生成训练权重块的特定实例。
在某些实现中,控制器130还包括反馈逻辑188,配置为将训练权重块的演化实例和专门化实例发送到权重管理服务器192。在一个实现中,反馈逻辑188还配置为将运动链在任务执行期间生成的执行数据和传感器数据发送到训练数据收集服务器(例如,经验收集器195)。
在某些实现中,权重管理服务器192还配置为将训练权重块的演化实例和专门化实例提供给其他机器人,以便配置这些机器人的神经网络,使其使用演化实例和专门化实例。在一个实现中,权重管理服务器192通过权重分发服务器194在机器人之间分发训练权重和其他数据(例如,从其他机器人感知到的训练数据)。
在某些实现中,训练数据收集服务器(例如经验收集器195)配置为将任务执行期间由运动链生成的执行数据和传感器数据提供为训练数据,以用于训练其他机器人的神经网络。
在一个实现中,控制器130与机器人操作连接。在另一实现中,控制器130与机器人100进行通信。库存控制191用于对机器人100及其群体进行固件更新193。
在一个实现中,我们披露了一种基于计算机实现的方法,用于远程更新神经网络的权重。该神经网络具有配置为使用训练权重块运行神经网络的拓扑。该方法包括访问权重块标识符,该标识符用于识别神经网络的训练权重块实例;使用权重块标识符从服务器检索训练权重块实例,并将该实例提供给拓扑以执行神经网络的运行;更新权重块标识符以识别神经网络的新训练权重块实例;并使用新权重块标识符从服务器检索新训练权重块实例,并将新实例提供给拓扑以执行神经网络的运行。
更多有关控制架构的信息如下所述:
图1A和图1B总体上展示了一个机器人,包括一个机器人基座和由多个关节和连杆组成的运动链,包括与机器人基座连接的根关节以及至少一个末端执行器。在此示例中,多个执行器固定安装在机器人基座上,执行器生成执行器数据,指示当前的执行器状态。多个执行器响应于执行器命令数据来驱动执行器,并调整执行器状态,从而使相应的肌腱产生运动或施加力量。多个肌腱连接到运动链上的相应驱动点,并与多个执行器连接。这些肌腱通过非线性、环境条件(如温度和湿度)及随着时间推移的磨损等因素,可能导致精度损失。控制器与多个执行器通信,操作运动链执行任务,并生成基于执行器状态和其他可用信息的执行器命令数据。控制器包括一个训练过的神经网络,该神经网络可以在任务执行过程中补偿肌腱驱动机制的精度损失。
在某些实现中,运动链上除了根关节之外没有其他执行器。在其他实现中,运动链上的所有可移动关节(包括根关节)都由安装在基座上的多个执行器Al至AN通过肌腱驱动。
在某些实现中,至少一个末端执行器包括运动链上的连杆和关节的组合,配置用于抓握物体,并且与安装在基座上的多个执行器Al至AN连接的多个肌腱包括连接到末端执行器连杆和关节上的驱动点的肌腱,使这些肌腱从末端执行器的驱动点延伸到基座。
在某些实现中,机器人包含一个第一个末端执行器和一个第二个末端执行器,运动链包括连接到第一个末端执行器的第一分支,以及连接到第二个末端执行器的第二分支。多个肌腱连接到安装在基座上的多个执行器Al至AN,并包括连接到第一和第二分支驱动点的肌腱。
图2A是一个类人形机器人主体110的正视图200A的实现示例,图2B则是该机器人主体110的左侧视图200B。机器人主体110可以包括多个身体部件201至218,这些部件对应于运动链的元素或连杆。示例身体部件包括:头部201,右眼202和左眼203,颈部204,右肩205,左肩206,右臂207,左臂208,右肘209,左肘210,右前臂211,左前臂212,右手腕213,左手腕214,右手215,左手216,躯干217,以及腹部218。腹部可以包含一个炮塔关节,连接到结构框架或基座,形成运动链的根部。左右肩关节分别形成运动链分支的根关节,末端执行器包括左右手。颈部是携带左右“眼”传感器的运动链分支的根关节。
在这个示例中,左右“眼”各包含两个图像传感器,用于生成光学图像数据,如RGB编码的像素数据,以及通过检测发射能量(如红外线或超声波)反射的时间生成的激光雷达距离数据。因此,传感器数据可以包括四个传感器矩阵流,每个流包含R、G、B矩阵平面和距离矩阵平面,用于每个感知间隔。
机器人主体110的一些身体部件也可以被视为其附属肢体。例如,右操纵肢体可以包括右肩205(分支根关节)、右臂207、右肘209、右前臂211、右手腕213和右手215。同样,左操纵肢体可以包括左肩206(分支根关节)、左臂208、左肘210、左前臂212、左手腕214和左手216。主体的根附属肢体可以包括躯干217和/或腹部218。头部201也可以被视为主体的附属肢体,而颈部204可以被视为一个携带头部和传感器的分支根关节。
在某些实现中,右手215连同其手指和拇指被视为右操纵肢体的末端执行器,同样,左手216连同其手指和拇指被视为左操纵肢体的末端执行器。
头部201从颈部204延伸,躯干217从颈部204延伸至基座(图4A中展示了基座402),并呈现出一对肩膀(205、206)。一对手臂(207、208),即右臂207和左臂208,分别从躯干217的两侧伸出。一对手(215、216),即右手215和左手216,分别从右臂207和左臂208延伸出来。
机器人主体110的右臂可以包括右肩205、右臂207、右肘209、右前臂211、右手腕213和右手215。同样,左臂可以包括左肩206、左臂208、左肘210、左前臂212、左手腕214和左手216。
熟悉该领域的技术人员会理解,由于机器人主体110旨在模拟类人形体,在此非限制性示例中,各种四肢(如肩膀205、206,手臂207、208,手215、216等)可以是对称的,并且左右两侧具有相同的对称骨骼结构。在图中,机器人主体110的右侧和左侧组件分别用“右”或“R”和“左”或“L”来标识,而在正视图(如图1所示)中,右臂207和右手215实际上在图像的左侧。
在其他实现中,机器人主体110可以包含更少或更多的身体部件,并具有不同数量的运动链分支。例如,机器人主体110可以连接到一个额外的运动链的根关节,该运动链包括类似于腰部、骨盆、髋部、腿部、膝盖、脚踝和脚的关节。在某些实现中,机器人的结构框架或基座包括一个类似于人类骨盆或骶骨的框架,具有三个类似于左腿、右腿以及躯干和上半身的运动链,如图1A所示。
此外,机器人主体110可以被配置为与人类的比例相同,使得机器人能够在通常为人类工人设计的工作空间中共享相同的工作环境。
图3A、3B和3C展示了机器人主体110运动链上的关节示例集300A、300B和300C。关节集300A、300B和300C分布在或连接于机器人主体110的身体部件201-218之间。除了运动链的根关节外,所有这些关节都可以由控制器相对于基座独立或相互依赖地移动。
机器人主体110的每个关节301-330可以具有一个或多个自由度(DoFs),这些自由度为机器人100提供了操作标准工具和组装组件所需的灵活性。例如,头部关节317-318、肩关节302-303、肘关节308-309以及手腕关节310-315等某些关节可以具有至少两个自由度(俯仰和滚动)。颈部关节301可以具有至少两个或三个自由度。手指关节320-330位于右手和左手的每个手指的指骨之间,可以具有至少两个自由度。
在某些实现中,机器人主体110的每只手臂可以具有至少三个自由度,包括肩部的屈伸和内收/外展关节以及肘部的屈伸关节。在某些实现中,躯干关节316可以具有至少两个自由度,包括屈伸和内旋/外旋关节。机器人主体110总共可以具有超过四十个自由度,所有这些自由度可以根据任务的复杂性由控制器控制。
在图3A中,“NECK ROT” 301是颈部204的一个示例关节,具有相应的自由度。颈部关节301位于颈部204的底部和躯干217之间,配置为围绕颈轴相对于躯干217进行旋转。颈部关节301还可以使颈部204相对于躯干217沿颈轴倾斜。颈轴通常位于肩膀205和206之间,颈部关节301被配置为为头部201提供额外的活动范围,以防止头部201在倾斜时与躯干217和/或颈部204接触。
在图3B中,“HEAD_TURN” 317 和 “HEAD NOD” 318 是头部201的两个示例关节,分别提供两个相应的自由度(DoFs)。第一个头部关节317配置为绕第一个头部轴相对于颈部204和躯干217旋转头部201,导致头部201倾斜或俯仰。第一个头部轴通常平行于在肩膀205和206之间延伸的颈轴。第二个头部关节318配置为绕第二个头部轴相对于颈部204和躯干217旋转头部201,导致头部201旋转或偏航。第二个头部轴通常垂直于在肩膀205和206之间延伸的颈轴。颈部关节301、第一头部关节317和第二头部关节318共同提供了头部201相对于躯干217的滚转、俯仰和偏航的运动能力。此外,头部201的方向会根据沿第一个和第二个头部轴的运动而变化。在某些实现中,头部201具有六个自由度,但颈部204具有两个或三个自由度。
机器人主体110的右臂可以被认为包含七个右臂关节302、304、306、308、310、312和314,提供相应的七个自由度。左臂同样包含七个左臂关节303、305、307、309、311、313和315,也提供相应的七个自由度。需要理解的是,机器人主体110的左右手臂并不限于只有七个自由度,可以根据需求使用任意数量的关节和自由度,这在该领域内是众所周知的。
图3C展示了一个用于抓握的末端执行器,在该示例中,该末端执行器模仿了具有四根手指和一个拇指的手。它包括右手215的十一指关节320-330,提供相应的十一自由度(DoFs)。左手216(参见图2B)也具有相应的十一指关节320-330,提供相应的十一自由度。该手是一个类人形的末端执行器示例,它包含运动链上的末端执行器根关节,以及由该根关节向下延伸的连杆和关节组合,配置用于抓握物体。多个肌腱连接到末端执行器上的驱动点,而与肌腱相连的执行器位于末端执行器根关节的上游。
指关节320-330允许手215、216完成大量的制造抓握类型。这些可实现的抓握类型是本领域技术人员熟知的类型。更具体地说,每只手215、216包含四根手指和一个对生拇指,这些手指和拇指可以部分过度伸展,以在抓取物体之前获得良好的预抓握位置,或在有限空间内进行操作,达到类人的灵活抓握、力量抓握和工具抓握。拇指关节328、329、330提供了拇指内置的扭转功能,使其能够实现接近人类的活动范围,并与四根手指达到多种相对位置。
需要理解的是,手215、216并不限于拥有十一指关节320-330和相应的十一自由度,可以根据需求使用任意数量的指关节和自由度,这在该领域内是众所周知的。
以下是图3A、3B和3C中展示的18个右操纵关节的示例列表,其中关节302是右臂的分支根关节:
• “SHOULDER_ROT_R” 302,右肩旋转关节
• “SHOULDER_ADD_R” 304,右肩内收关节
• “ARM_ADD_R” 306,右臂内收关节
• “ELBOW_R” 308,右肘关节
• “WRI_SUP_R” 310,右腕旋转关节
• “WRI_ADD_R” 312,右腕内收关节
• “WRI_FLEX_R” 314,右腕屈曲关节
• “Fl FLEX_LO_R” 327,右手食指下关节
•“Fl FLEX_HI_R” 323,右手食指上关节
• “F2 FLEX_LO_R” 326,右手中指下关节
• “F2 FLEX_HI_R” 321,右手中指上关节
• “F3 FLEX_LO_R” 325,右手无名指下关节
• “F3 FLEX_HI_R” 320,右手无名指上关节
• “F4 FLEX_LO_R” 324,右手小指下关节
• “F4 FLEX_HI_R” 322,右手小指上关节
• “TH_ADD_R” 328,右拇指内收关节
• “TH_FLEX_LO_R” 329,右拇指下关节
• “TH_FLEX_HI_R” 330,右拇指上关节
以下是左操纵关节的18个示例列表,其中关节303是左臂的分支根关节:
• “SHOULDER_ROT_L” 303,左肩旋转关节
• “SHOULDER_ADD_L” 305,左肩内收关节
• “ARM_ADD_L” 307,左臂内收关节
• “ELBOW_L” 309,左肘关节
• “WRI_SUP_L” 311,左腕旋转关节
• “WRI_ADD_L” 313,左腕内收关节
• “WRI_FLEX_L” 315,左腕屈曲关节
• “Fl FLEX_LO_L”,左手食指下关节
• “Fl FLEX_HI_L”,左手食指上关节
• “F2 FLEX_LO_L”,左手中指下关节
• “F2 FLEX_HI_L”,左手中指上关节
• “F3 FLEX_LO_L”,左手无名指下关节
• “F3 FLEX_HI_L”,左手无名指上关节
• “F4 FLEX_LO_L”,左手小指下关节
• “F4 FLEX_HI_L”,左手小指上关节
• “TH_ADD_L”,左拇指内收关节
• “TH_FLEX_LO_L”,左拇指下关节
• “TH_FLEX_HI_L”,左拇指上关节
根据这里描述的技术,实施方案可以实现左臂和右臂的所有操纵关节都由肌腱驱动,肌腱延伸到运动链附着的结构框架上的执行器。在某些实施方案中,手臂分支上肌腱驱动关节的执行器至少位于驱动点上游的两个关节处。在一些实施方案中,手臂分支上的所有肌腱驱动关节的执行器都位于手臂分支根关节的上游。在某些实施方案中,末端执行器(如手部)的所有肌腱驱动关节的执行器都位于手部末端执行器根关节的上游。
在某些实施方案中,末端执行器(如手部)上的所有肌腱驱动关节的执行器至少位于与类人形臂相似的运动链分支上的肘部屈曲关节上游。在某些实施方案中,手部末端执行器的所有肌腱驱动关节的执行器位于手臂分支根关节(例如肩部)的上游。
图4A是一个实施例的正视图400A,显示机器人100被划分为主机器人主体110和放置在“特区”(extraterritorial zone)内的机器人基座402。为了描述方便,“特区”指的是位于主机器人主体的运动链以下的结构部分。在该实施例中,机器人的一部分或全部执行器被配置在基座内,位于主机器人主体110之外。主机器人主体110的运动链根关节连接到位于“特区”内的基座402上。图4B是图4A中所示分界线的左视图400B。图5是移除外壳后展示执行系统120的斜视图,显示了用于肌腱驱动执行系统中的执行器和减速器的配置。
图5展示了去除外壳后执行系统120的斜视图,展示了用于驱动肌腱执行系统的执行器和减速齿轮的配置。
执行系统120位于机器人100的主机器人主体110之外。主机器人主体110不包含用于驱动肌腱的执行器512。这些执行器512与它们驱动的机器人连接部件201-218以及关节310-330空间分离,执行器512位于根关节之外,安装在相对于机器人连接部件201-218和关节310-330固定的结构框架上。机器人100的固定部分示例包括底座504和基座522。在一些实现中,执行系统120位于主机器人主体110的根关节下方。根附属结构可以是主机器人主体110的躯干217,或腹部218,也可以是腰部、躯干、骨盆或髋部。
在一些实现中,执行系统120包含在支撑主机器人主体110的底座504中。该底座可以安装在基座522上,基座可通过轮子532移动。底座504以及机器人100可以通过杆502移动。在其他实现中,底座504也可以包含适用于任务的装置,如腿部、履带或其他可移动或固定的基座,具体取决于应用场景。电源可以集成到机器人100上,例如背部携带或佩戴可充电电池组,或者通过外部电缆连接其他合适的能量供应设备,为关节301-330的运动提供足够的电能。
执行器512的示例包括伺服执行器、关节执行器、线性执行器、步进执行器和旋转执行器。在某些实现中,每个执行器512包括一个执行器电机(例如,直流电机、刷式电机、无刷电机、交流电机、遥控电机)和齿轮单元。在一个实现中,一些或全部执行器512包括增量编码器、直流电机、工业网络模块、模块化机械结构、智能控制器、无接触(磁性)绝对编码器(AMS)、带有轴承的集成齿轮单元以及一个或多个安装支架。
以下是执行系统120中的40个执行器的示例列表,它们分别驱动主机器人主体110中的40个关节。
以下是相关关节和动作的列表:
• ARM_ADD_L: 左臂内收
• F2_FLEX_LO_L: 左手中指低位弯曲
• HEAD_NOD: 头部点头
• TH_FLEX_LO_L: 左手拇指低位弯曲
• ARM_ADD_R: 右臂内收
• F2_FLEX_LO_R: 右手中指低位弯曲
• HEAD_TURN: 头部转动
• TH_FLEX_LO_R: 右手拇指低位弯曲
• ELBOW_L: 左肘
• F3_FLEX_HI_L: 左手无名指高位弯曲
• SHOULDER_ADD_L: 左肩内收
• TWIST: 扭转
• ELBOW_R: 右肘
• F3_FLEX_HI_R: 右手无名指高位弯曲
• SHOULDER_ADD_R: 右肩内收
• WAIST_BEND: 腰部弯曲
• F1_FLEX_HI_L: 左手食指高位弯曲
• F3_FLEX_LO_L: 左手无名指低位弯曲
• SHOULDER_ROT_L: 左肩旋转
• WRI_ADD_L: 左腕内收
• F1_FLEX_HI_R: 右手食指高位弯曲
• F3_FLEX_LO_R: 右手无名指低位弯曲
• SHOULDER_ROT_R: 右肩旋转
• WRI_ADD_R: 右腕内收
• F1_FLEX_LO_L: 左手食指低位弯曲
• F4_FLEX_HI_L: 左手小指高位弯曲
• TH_ADD_L: 左拇指内收
• WRI_FLEX_L: 左腕弯曲
• F1_FLEX_LO_R: 右手食指低位弯曲
• F4_FLEX_HI_R: 右手小指高位弯曲
• TH_ADD_R: 右拇指内收
• WRI_FLEX_R: 右腕弯曲
• F2_FLEX_HI_L: 左手中指高位弯曲
• F4_FLEX_LO_L: 左手小指低位弯曲
• TH_FLEX_HI_L: 左拇指高位弯曲
• WRI_SUP_L: 左腕旋前
• F2_FLEX_HI_R: 右手中指高位弯曲
• F4_FLEX_LO_R: 右手小指低位弯曲
• TH_FLEX_HI_R: 右拇指高位弯曲
• WRI_SUP_R: 右腕旋前
这些是机器人关节和动作的符号化表示,用于指定机器人身体各部分的动作。
系统如本文所述,可以包含用于驱动运动链中肌腱驱动关节的10个以上的执行器,这些执行器安装在运动链外,例如在支撑机器人主体的底座中。系统还可以包含用于驱动运动链中肌腱驱动关节的20个以上、30个以上,甚至40个以上的执行器,这些执行器安装在运动链外,例如在支撑机器人主体的底座中。
在示例性实施中,执行系统包括一组安装在底座中的执行器,此外还有一组安装在执行器架旁边的减速齿轮。某些执行器包括安装在执行器架中的滑轮,用于驱动连接到关节处的肌腱。一些执行器通过驱动机构与减速齿轮架中的齿轮相连,减速齿轮驱动滑轮来施加更大的扭矩,适用于需要更大力量的关节。图中所示,执行器架和减速齿轮架经过紧凑且平衡的结构设计。执行器架由一组弧形梁组成,这些执行器径向分布在每一级梁的周围。减速齿轮架由多个平面层组成,以倾斜的排列方式紧邻执行器架,设计用于接收来自相应执行器电机的传动轴。
每个执行器512都可能具有一个执行器ID,用于在通信系统中进行地址分配,并通过执行器的元数据进一步标识,例如电流限制、最大电压限制、最小电压限制、极性、顺时针角度限制、逆时针角度限制、温度限制、最大扭矩、波特率和返回延迟时间。
执行器数据标识多个执行器参数的数值。执行器参数的示例包括:执行器在相应关节上施加的当前扭矩,执行器当前的电流消耗,目标电流消耗,相应关节的当前速度、当前位置和目标位置,当前提供给执行器的输入电压,执行器的当前温度,以及相应关节的当前角度。
在某些实现中,每个执行器512还包括一个或多个执行器传感器。执行器传感器的示例包括位置传感器、角度传感器、惯性测量单元(IMU)、光电叉传感器、张力传感器和力/扭矩传感器。在某些实现中,执行器传感器可以感知附属结构和末端执行器的感应信息。感应信息的示例包括旋转信息(例如关节角度)、位置信息(例如绝对关节位置、相对关节位置)、速度信息(例如关节角速度、关节加速度)和扭矩信息(例如关节负载)。
控制器可以配置为向神经网络提供反馈数据,这些数据包括或来源于执行器数据和执行器传感器数据,并在控制器的反馈回路中进行时间间隔的处理。
图6A是执行系统120中的执行器512在执行器架上的局部放大视图600A,图6B是执行系统中某个特定执行器外壳的单独左视图600B。
机器人主体110的每个关节301-330由执行系统120中的一个或多个执行器512驱动。运动通过肌腱驱动机制从执行器512传递到关节301-330。肌腱驱动机制每个执行器和关节可能使用一个或多个肌腱(电缆/线),在某些实施例中,肌腱从单个执行器开始,但在下游分成多个肌腱(例如,在关节或附属肢体/末端执行器处)。例如,右手215和左手216的手指屈伸由执行器512的子集通过差动滑轮传动控制。屈曲肌腱的一端插入手指的关节,另一端直接连接到相应的执行器512。
在一个实现中,执行器使用一组肌腱(例如图6A中的肌腱1和肌腱2)来驱动机器人主体110中的相应关节。这组肌腱从执行器延伸,穿过运动链中的一个或多个连杆(附属肢体中的一个),并在相应关节处终止于驱动点。执行器对肌腱施加张力,使肌腱在相应关节产生扭矩,并沿一个或多个自由度驱动关节。
执行系统120的执行器512被配置为独立驱动多个关节中的相应关节,通常是通过各自的一组肌腱独立运作。例如,第一执行器使用第一组肌腱驱动第一关节,第二执行器使用第二组肌腱驱动第二关节,第三执行器使用第三组肌腱驱动第三关节。
在一个实现中,肌腱被固定在执行器512的舵机臂上。舵机臂的示例包括圆盘臂、双伺服臂、三伺服臂、交叉/四臂和花键舵机臂。在某些实现中,肌腱由聚合物(例如橡胶)制成。橡胶肌腱模拟人类肌腱,提供了机械优势,使得只要执行器持续拉动肌腱,关节扭矩就会逐渐增加。在其他实现中,肌腱由尼龙或金属(如不锈钢)制成。
在一个实现中,肌腱包括一个弱侧肌腱(如手指关节的伸展肌腱,图6A、6B中的肌腱1)和一个强侧肌腱(如手指关节的屈曲肌腱,图6A、6B中的肌腱2),它们安装在滑轮轮上。在所示配置中,执行器滑轮采用拉-拉配置。在此配置中,滑轮轮顺时针旋转时拉动肌腱1,同时放出肌腱2;逆时针旋转时则拉动肌腱2,放出肌腱1。
随着时间的推移,磨损会在肌腱中引入传动不准确和非线性现象,导致执行器运动和力量向运动链的传递出现精度问题。非线性现象的例子包括松弛、死区和回程滞后。所披露的技术包括一种基于弹性联轴器的肌腱布线系统,该系统在肌腱运动链中插入联轴器,以吸收随着时间积累的非线性现象。消除或减弱这些非线性现象能够更准确地估计机器人的姿态(例如,指尖位置、关节角度、关节扭矩),并提高执行器数据作为机器人姿态指示器的精度。
在某些实现中,弹性联轴器连接肌腱组中的至少一个肌腱到执行器。每根肌腱有两个相对的末端:一个关节末端(远端)终止于机器人主体110中的关节的驱动点,另一个执行器末端(近端)终止于执行系统120中执行器的滑轮轮。在优选的实现中,弹性联轴器位于弱侧肌腱的执行器末端。在其他实现中,弹性联轴器可以位于肌腱的关节末端。
在一个实现中,弹性联轴器是一个弹性元件。例如,弹性元件可以是一个延展纤维。另一个弹性元件的例子是弹簧(例如螺旋弹簧/回弹簧)。
转向图6B,展示了一个执行器的外壳,包括执行器电机壳体、舵机臂(horn)和安装在舵机臂上的三通道滑轮轮,配置为拉-拉(pull-pull)结构。执行器电机壳体连接到一个支撑板上。肌腱2的导管固定在执行器壳体上(例如通过示例中的板)。肌腱1的导管固定在弹簧的第一个底座上,弹簧的第二个底座连接到支撑板。第一个肌腱穿过肌腱1的导管、弹簧的第一个底座上的孔、弹簧的内部以及弹簧第二个底座上的孔,最终连接到滑轮轮的一个通道。第二个肌腱穿过肌腱2的导管,穿过板连接到滑轮轮的第二个通道。
弹簧可以预加载,从而为肌腱1的导管提供拉伸力和压缩力。当执行器拉动第一个肌腱并延伸时,肌腱1的导管和弹簧组合会被压缩,弹簧的力抵抗压缩,吸收肌腱长度的变化,减少肌腱中的松弛。当第一个肌腱被执行器拉伸、第二个肌腱被拉动时,肌腱1的导管和弹簧组合会延伸,弹簧的力有助于消除肌腱中的松弛。
执行器至少有一个舵机臂和至少一个滑轮轮,肌腱滑过这些滑轮轮。在某些实现中,穿过支撑板并滑过滑轮轮的肌腱部分会被导管覆盖。
在一个实现中,末端执行器是手指,相关手指关节被配置为移动相应的手指。在这种实现中,肌腱包括一个伸展肌腱(例如图6A和6B中的肌腱1),用于使相应手指关节产生伸展运动,另一个屈曲肌腱(例如图6A和6B中的肌腱2)用于使相应手指关节产生屈曲运动。滑轮轮使伸展肌腱和屈曲肌腱相互对立地延长和缩短。
在某些实现中,弹性联轴器位于主机器人主体110之外。在一个实现中,弹性联轴器是执行系统120的一部分。
在某些实现中,弹性联轴器是肌腱的延展部分(例如图6A和6B中的屈曲肌腱2)。
在某些实现中,肌腱组包括两个以上的肌腱,联轴器将肌腱组中的每根肌腱连接到执行器。
反冲补偿齿轮单元
除了由执行器512驱动之外,机器人主体110中的一些较大的关节还由一个或多个减速齿轮单元702驱动。这些较大的关节的示例包括需要大扭矩驱动的肩关节和前臂关节。
图7A是执行系统120中某些齿轮单元702的放大视图,图7B是特定齿轮单元的单独左视图。
在这个示例中,齿轮单元702固定安装在机器人基座504上。肌腱(例如图7B中的肌腱1和肌腱2)连接到运动链上的多个相应驱动点和齿轮单元702。这些肌腱的布置是为了将执行器的位置和力量传递到运动链上的驱动点。此处的减速齿轮包括行星齿轮,包含一个外环齿轮和一个齿数较少的内齿轮,提供减速和增加扭矩的效果。
外环齿轮通过肌腱导向装置(肌腱1导向和肌腱2导向)连接到肌腱通道。齿轮单元还包括一个执行器电缆导管,用于与控制器进行电子连接。
停止传感器
驱动像肩关节这样的大关节可能需要执行器轴进行多次完整旋转。由于执行器编码器可能只能报告当前轴角度或差分角度值,并且不报告轴的完整旋转次数,因此无法知道相应关节在其最大运动范围内的当前位置。因此,执行器侧的同一个角度读数可能对应于由执行器轴的两次或多次旋转引起的两个或多个不同的关节位置,导致将执行器数据转换为实际位置信息时出现困难。
为了解决这个问题,齿轮单元进一步包含一个停止参考传感器,例如霍尔效应传感器,安装在与齿轮连接的外壳中。在霍尔效应的实现中,一个或多个磁体被放置在磁体槽中,提供外环齿轮上的停止参考点。当外环齿轮旋转时,霍尔效应传感器检测到磁体并向控制器发送信号。在系统初始化时,外环齿轮可以相对于停止参考点进行定位,提供一个用于解释执行器轴差分角度的起始参考点。
在某个实现中,执行器512生成包含角度信息的执行器状态数据,但由于执行器可能进行多次完整旋转而导致角度数据存在不确定性,这会影响运动链中多个连杆的全程运动。执行器响应执行器命令数据调整执行器状态。齿轮单元702与相应的执行器512通信。齿轮单元702还连接到停止参考传感器,传感器被配置为感知齿轮单元中齿轮的停止位置,并与控制器通信齿轮相对于起始位置的旋转次数,以结合其他传感器数据,用于控制器控制回路中的反馈数据的推导或直接使用。
控制器与执行器512进行通信,操作运动链以执行任务,并根据执行器状态数据和旋转次数生成执行器命令数据,以补偿执行器状态数据中的不确定性。在某些实现中,停止传感器附加在齿轮单元上。
该技术能够通过调整执行器使附属肢体运动到行星齿轮单元中的停止位置,初始化附属肢体的预设位置。执行器的运动可以由控制器中的逻辑参考停止位置,从而提供更准确的受驱动关节的实际位置信息。该技术还可以根据停止位置和角度信息,跟踪由于行星齿轮单元的一个或多个完整旋转所导致的附属肢体的全程运动,从而获得当前附属肢体的位置,并将该信息提供给控制器,结合其他传感器数据,用于控制器控制回路中的反馈数据。
触觉传感器
在某些实施例中,右手215和左手216的指尖可以包含触觉传感器。这些触觉传感器可以包括短距离的接近传感器,例如红外发射器和红外接收器/探测器。发射器和接收器嵌入在半透明的硅胶外壳中。在其他实施例中,可以使用力敏电阻(FSR)技术来感知对物体施加的实际压力。其他触觉传感器的示例包括GelSight传感器、应变计传感器、光学偏转传感器和光学位移传感器。这些触觉传感器还可以包括接近传感器和压力传感器的组合,测量指尖与物体之间的接触压力。
这些物体可以是机器人100在任务中操纵的目标物体。在某些实现中,右手215和左手216的手掌也包含至少一个触觉传感器,提供额外的接近和压力输出。
接近数据、压力数据、温度数据和/或触觉数据可以一起被视为触觉数据。在一个实现中,触觉传感器提供两个标量输出:接近读数和压力读数。对于十根手指,产生20个标量输出,这些输出可以编码为一个二维向量。这些输出可以在控制器的反馈回路期间被控制器读取或提供,并用作反馈数据,或用于生成提供给神经网络的反馈数据,进而生成执行器命令。
视觉传感器
右眼202和左眼203安装在头部201上。在某些实现中,右眼202和左眼203与头部201共享共同的平移-俯仰轴。在其他实现中,右眼202和左眼203具有独立的平移-俯仰轴。在某些实现中,右眼202和左眼203具有独立的平移轴,但共享共同的俯仰轴。在一些实现中,右眼202和左眼203安装在具有两自由度的平移-俯仰平台(例如万向节)上,实现平滑的追踪和快速跳动的相机运动。
此外,在某些实现中,双眼同时向相反方向旋转的辐辏角可以调节,允许改变机器人100近距离物体的立体视觉。在其他实现中,眼睛的指向可能是固定的,而不是由机器人或相机控制器驱动。
右眼202和左眼203各自拥有至少一个视觉传感器。在某些实施例中,每只眼睛可以包含两个图像传感器,生成四个图像数据流。在一个实现中,视觉传感器是立体深度传感器,如Intel® RealSense™传感器(示例型号包括D435、F200、R200、T265、D435i IMU、D415和L515)。特定的Intel® RealSense™传感器包括彩色相机、两个红外相机和一个红外投影仪。彩色相机为全高清(1920x1080像素)Bayer模式滚动快门CMOS成像器,视场为70x43x77度(水平x垂直x对角线)。红外相机的空间分辨率为640x480像素,工作深度范围为10-4000毫米,时间分辨率高达60Hz。两个红外相机相距70毫米,具有10位全球快门VGA CMOS单色相机,配有可见光切除滤光片,用于阻挡低于840毫米的光线。红外相机的视场为60x45x70度(水平x垂直x对角线)。红外投影仪为固定模式的纹理投影仪。
在一个实现中,右眼202和左眼203的视觉传感器的垂直视场(VFoV)大于水平视场(HFoV)。即,视觉传感器的纵横比(定义为HFoV除以VFoV)小于1。这是通过将视觉传感器以90度旋转安装在头部201中,并呈纵向方向实现的。
在某些实现中,右眼202和左眼203中的视觉传感器具有不重叠的视场。在其他实现中,它们的视场是重叠的。在一个实现中,视觉传感器的视场通过颈部204的俯仰轴和平移轴得以扩展。此外,使用执行系统120中的相应执行器,可以独立控制头部201的运动,从而控制右眼202和左眼203的运动,而不受机器人100其他身体部位的运动影响。
视觉传感器每隔一段时间生成图像数据和深度数据,例如每20毫秒(即每秒50帧)生成一次。每只眼睛生成的图像数据可以包括三个通道(红、绿、蓝),分别对应RGB传感器,并且还有一个深度通道,该深度数据可以通过RGB传感器、红外传感器、LiDAR传感器和RGB-D传感器生成。这些图像数据显示了每个时间间隔内物体和末端执行器(手)的位置和方向,并可以直接作为反馈数据提供给控制器,或用于推导反馈数据。
电子架构
图8A展示了一个电子架构800A的实现,包含用于机器人100执行控制回路的中央控制单元802。图8B展示了带有中央控制单元802和一些局部控制器1-7的电子架构800B的实现,它们用于机器人100执行控制回路。
图8A是机器人100的一个简化功能框图。机器人100包括主机器人主体110(包括运动链)和执行系统120。机器人100包括中央控制单元802(即控制器),在此示例中包含命令生成器814和预处理器844。控制器与多个执行器和传感器通信,操作运动链上的组件。控制器包括一个训练过的神经网络,处于反馈回路中,接收源自或包含执行器数据和传感器数据的反馈输入,生成执行器命令数据,以响应反馈数据,执行任务并操控物体。
执行系统120向中央控制单元802提供执行数据822,并从中央控制单元802接收执行器命令数据812,包括执行器命令。此外,机器人100还包括视觉传感器830(生成图像数据832和距离数据)、触觉传感器840(生成触觉传感器数据842)、接近传感器850(生成相对于末端执行器的物体接近数据852)和压力传感器860(生成接触压力数据862)。执行数据822、图像数据832、触觉传感器数据842、物体接近数据852和接触压力数据862被传送到中央控制单元802。
预处理器844可以处理这些数据,生成机器人100的状态向量。该状态向量能够补偿从执行器反馈的原始数据中的不准确性。因此,反馈数据包括执行器数据和独立于执行器数据的传感器数据,生成的状态向量可以更加精确。命令生成器814生成一系列命令,驱动机器人完成任务,其精度高于仅使用执行器状态信息的情况,这是由于关节驱动机制中的不确定性得到了补偿。预处理器844可能包含一个或多个用于生成反馈数据的训练神经网络。同样,命令生成器可以包含一个或多个训练神经网络。在某些实现中,命令生成器和预处理器使用强化学习进行端到端训练,其他训练方法也可以应用,包括控制器中神经网络的单独训练。
因此,中央控制单元802处理至少来自执行系统120中的执行器512的执行数据822、来自头部201中的视觉传感器830的图像数据832,以及来自右手215和左手216中的触觉传感器840的触觉传感器数据842,生成执行器命令数据812。
分布式控制器
电子架构800A由中央控制单元802控制执行器512以及肌腱、关节、身体部件和机器人100,使用命令生成器814和/或预处理器844。在某些实现中,电子架构800B还包括分布式局部控制器,负责底层电机控制,包括电流、速度和位置控制,关节传感器的评估,向执行器功率电子元件输出控制信号,执行器控制器的参数化(如增益调度),以及从力/扭矩传感器和惯性测量系统获取数据。每个局部控制器可以处理一组执行器(例如一个、两个或三个执行器)。电缆连接执行器传感器、执行器和驱动器到局部控制器。中央控制单元802和局部控制器可以通过高速通信接口进行通信,如CAN、FireWire或SERCOS,支持实时控制,其中每一组新的执行器命令基于反馈数据,该反馈数据指示上一组命令对机器人姿态和任务物体的影响。
控制器
中央控制单元802包括命令生成器814和预处理器844,执行控制回路,处理当前时间间隔的数据,并生成下一时间间隔使用的执行器命令数据812。命令生成器814是一个神经网络系统,可以使用强化学习算法进行训练,并配置为实现控制反馈回路的策略。该神经网络系统可以使用诸如多层感知器(MLP)、前馈神经网络(FFNN)、全连接神经网络(FCNN)、卷积神经网络(CNN)和循环神经网络(RNN)等神经网络。
强化学习算法的示例包括确定性策略梯度算法和策略梯度行动者-评论员算法,如深度确定性策略梯度(DDPG)与事后经验回放(HER)以及分布式分布确定性策略梯度(D4PG)。
中央控制单元802还配置了一个系统文件,包括配置文件(例如图9中的配置文件916),该文件指定机器人100要执行的任务。配置文件可以标识任务中的子任务序列,以及目标位置、目标角度、采样目标位置和目标角度的最大值和最小值、策略路径和轨迹、策略加速系数和反馈动作。每个“任务”可以使用通过训练神经网络系统生成的一组权重来实现,包括在反馈回路中接收源自执行器数据和传感器数据的反馈数据的训练神经网络,该网络生成执行器命令数据,以响应反馈数据让机器人操控物体或为操控物体做准备。
输入数据902可以包括来自头部201中视觉传感器146的范围图像数据832,该数据指示物体和末端执行器在三维空间中的位置和方向以及时间信息,还包括来自执行系统120的执行器512的执行数据822。输入数据902还可以包括来自右手215和左手216中触觉传感器840的触觉传感器数据842。输入数据902还可以包括来自接近传感器850的物体接近数据852,以及来自压力传感器860的接触压力数据862。输入数据902还可以包括来自外部独立运动追踪系统(如OptiTrack™)的外部运动追踪数据932,该系统跟踪机器人100和物体在三维空间中的运动。输入数据902还可以包括传达机器人100对指定命令执行情况的确认数据942。这些输入数据可以作为反馈回路中的反馈数据使用,或者用于推导反馈数据,甚至两者兼有。
执行器命令数据812会更新执行器512的一个或多个执行器参数。执行器命令数据812的示例包括位置更新、绝对位置、角度更新、绝对角度、扭矩更新、绝对扭矩、速度更新、绝对速度、加速度更新、绝对加速度、旋转更新以及绝对旋转。执行器命令数据812用于更新执行器512在下一个时间间隔的状态,这反过来会使肌腱、关节、身体部件和机器人100在下一个时间间隔中转换到不同的状态(例如,张力、位置、方向)。
执行器命令数据812可以包含对每个执行器512或仅对一部分执行器的命令。每个命令可以包含一个执行器ID,以及用于驱动执行器到下一个状态的数值。在上述实现中,作为控制器输出的执行器命令数据812可以包括用于差分定位的驱动变化向量,或目标位置的定位模式向量,或力/扭矩值向量,或者适用于所控制执行器的各种模式命令的组合。
执行器512执行执行器命令数据812中指定的命令,生成下一个时间间隔的执行数据822,并促使视觉传感器830生成图像数据832,触觉传感器840生成触觉传感器数据842。这个过程由控制器130实现的控制回路不断迭代。
在某些实现中,控制器130生成的执行器命令数据812可以由校准模块(未显示)处理,生成与机器人100的特定配置相关的校准版本的执行器命令数据。校准后的执行器命令数据用于更新执行器512的相应状态。
预处理器
图9展示了预处理器844的一个实现,其首先处理输入数据,并生成反馈数据,反馈数据在此示例中为状态向量938,控制器130使用该向量生成执行器命令数据812。输入数据首先由预处理器844处理,预处理器使用这些数据推导出状态向量938,然后将其作为反馈输入提供给控制器130。控制器130处理当前时间间隔的状态向量938,并生成用于下一个时间间隔的执行器命令数据812。
预处理器844包含通过计算机软件和神经网络引擎(如GPU或其他神经网络加速处理器)实现的逻辑模块。包含的逻辑模块可以被描述为物体姿态追踪器904、机器人姿态追踪器924、速度确定器944和状态准备器928。物体姿态追踪器904和机器人姿态追踪器924可以使用线性回归器、指数回归器、状态向量机、梯度提升树(如XGBoost)或神经网络(如多层感知器MLP、前馈神经网络FFNN、全连接神经网络FCNN、卷积神经网络CNN、循环神经网络RNN)来实现。
预处理器844实现了一套预处理逻辑900。预处理逻辑900包括通过物体姿态追踪器904处理图像数据832,并确定物体的姿态(位置和/或方向),即物体姿态906,在某些实施例中还包括机器人的姿态或至少末端执行器的姿态。在一个实现中,物体姿态追踪器904使用深度物体姿态估计(DOPE)算法进行训练,能够在多个自由度上确定物体和末端执行器的姿态,包括物体位置和物体方向。
预处理逻辑900还包括通过机器人姿态追踪器924处理执行数据822,并确定机器人100的姿态,即机器人姿态926,以补偿从执行器512读取的执行数据822中的精度误差。在一个实现中,机器人姿态追踪器924经过训练,可以确定机器人100关节的姿态,涵盖多个自由度,包括关节位置和关节角度。在某些实现中,图像数据832也通过机器人姿态追踪器924处理,以生成机器人姿态926。
这样,通过预处理逻辑处理输入数据后,预处理器844可以更准确地生成状态向量938,减少了由于执行器数据和传感器数据中的误差带来的不确定性,并通过反馈回路帮助控制器更加精确地生成执行命令。
以下是由机器人姿态追踪器924基于关节角度逐个关节生成的机器人姿态926示例:
1. ‘TWIST’(扭转)
2. ‘WAIST_BEND’(腰部弯曲)
3. ‘HEAD_TURN’(头部转动)
4. ‘HEAD_NOD’(头部点头)
5. ‘SHOULDER_ROT_R’(右肩旋转)
6. ‘SHOULDER_ADD_R’(右肩内收)
7. ‘ARM_ADD_R’(右臂内收)
8. ‘ELBOW_R’(右肘)
9. ‘WRI_SUP_R’(右腕旋前)
10. ‘WRI_ADD_R’(右腕内收)
11. ‘WRI_FLEX_R’(右腕弯曲)
12. ‘TH_ADD_R’(右拇指内收)
13. ‘TH_MCP_R’(右拇指掌指关节)
14. ‘TH_IP_R’(右拇指指间关节)
15. ‘F1_MCP_R’(右手食指掌指关节)
16. ‘F1_PIP_R’(右手食指近侧指间关节)
17. ‘F1_DIP_R’(右手食指远侧指间关节)
18. ‘F2_MCP_R’(右手中指掌指关节)
19. ‘F2_PIP_R’(右手中指近侧指间关节)
20. ‘F2_DIP_R’(右手中指远侧指间关节)
21. ‘F3_MCP_R’(右手无名指掌指关节)
22. ‘F3_PIP_R’(右手无名指近侧指间关节)
23. ‘F3_DIP_R’(右手无名指远侧指间关节)
24. ‘F4_MCP_R’(右手小指掌指关节)
25. ‘F4_PIP_R’(右手小指近侧指间关节)
26. ‘F4_DIP_R’(右手小指远侧指间关节)
27. ‘SHOULDER_ROT_L’(左肩旋转)
28. ‘SHOULDER_ADD_L’(左肩内收)
29. ‘ARM_ADD_L’(左臂内收)
30. ‘ELBOW_L’(左肘)
31. ‘WRI_SUP_L’(左腕旋前)
32. ‘WRI_ADD_L’(左腕内收)
33. ‘WRI_FLEX_L’(左腕弯曲)
34. ‘TH_ADD_L’(左拇指内收)
35. ‘TH_MCP_L’(左拇指掌指关节)
36. ‘TH_IP_L’(左拇指指间关节)
37. ‘F1_MCP_L’(左手食指掌指关节)
38. ‘F1_PIP_L’(左手食指近侧指间关节)
39. ‘F1_DIP_L’(左手食指远侧指间关节)
40. ‘F2_MCP_L’(左手中指掌指关节)
41. ‘F2_PIP_L’(左手中指近侧指间关节)
42. ‘F2_DIP_L’(左手中指远侧指间关节)
43. ‘F3_MCP_L’(左手无名指掌指关节)
44. ‘F3_PIP_L’(左手无名指近侧指间关节)
45. ‘F3_DIP_L’(左手无名指远侧指间关节)
46. ‘F4_MCP_L’(左手小指掌指关节)
47. ‘F4_PIP_L’(左手小指近侧指间关节)
48. ‘F4_DIP_L’(左手小指远侧指间关节)
预处理逻辑900还可以包括通过速度确定器944处理机器人姿态926,以推导机器人的关节角速度,即关节角速度946,并将其应用到控制器中的反馈回路中。
来自不同传感器的数据可以异步接收,并用于生成执行器命令集。预处理器在一个输入时间间隔内累积这些传感器数据,从而生成时间对齐的反馈数据,反馈数据指示一系列前置命令集的结果(包括最近的命令集),并用于生成下一组命令。
预处理逻辑900还包括通过状态准备器928处理物体姿态906、机器人姿态926、关节角速度946以及一个或多个来自前一时间间隔的状态向量956,使这些数据时间对齐,并生成状态向量938。该状态向量938包含时间对齐的反馈数据,作为神经网络生成命令数据的输入。在一个实现中,状态准备器928使用线性插值进行时间对齐。控制器130处理状态向量938并生成执行器命令数据812。
在某些实现中,图像数据152同时描绘了物体和机器人的末端执行器(如右手215和/或左手216)。在这种情况下,预处理逻辑900进一步包括通过一个物体和机器人追踪器处理图像数据,该追踪器结合了物体姿态追踪器904和机器人姿态追踪器924的功能,从而确定物体姿态906和机器人姿态926。
在某些实现中,预处理逻辑900还可以处理运动链上的或运动链外的传感器数据,包括触觉传感器数据842、外部运动追踪数据932以及确认数据942。
如图9所示,控制单元包括一个第一神经网络,配置用于处理前一时间间隔的执行器状态,并生成表示运动链位置和方向信息的中间机器人姿态数据。此外,控制器包括一个第二神经网络,配置用于处理来自图像传感器的图像,并生成表示物体位置和方向信息的中间物体姿态数据。此外,控制器包括与第一神经网络通信的关节速度逻辑,配置用于根据中间机器人姿态数据确定运动链中关节的关节速度信息。此外,控制器包括与第一神经网络、第二神经网络和关节速度逻辑通信的状态向量逻辑,并根据机器人姿态数据、物体姿态数据和关节速度信息生成状态向量。此外,控制器包括与状态向量逻辑通信的第三神经网络,配置用于根据状态向量生成瞬时时间间隔内的执行器指令数据。第一、第二和第三神经网络可以通过强化学习进行端到端训练。在某些实施例中,第一、第二和第三神经网络可以分别训练。
控制回路
图10展示了控制器130执行的控制回路1000的一种实现方式。在前一个时间间隔(t-1)中,预处理器844处理图像数据t-1和执行器数据t-1(以及在某些实现中其他传感器数据),并生成状态向量t-1。控制器130处理状态向量t-1,并生成用于当前时间间隔的执行器命令数据t。然后,执行器命令数据t用于更新执行器512的相应状态,从而导致机器人100的关节状态发生变化,进而使机器人100的一个或多个身体部位移动。
需要理解的是,先前时间的状态向量(例如t-1)可能包含来自任何先前时间的存储信息(例如t-2、t-3等)。此外,在每个循环中,可能会利用一个或多个先前的状态向量作为控制回路的输入。
执行器命令数据t促使执行器512移动机器人100的头部201以及一个或多个操控器和/或末端执行器(例如手臂、手、手指)。头部201独立于操控器移动,头部201的移动会改变机器人100的视觉传感器146的姿态(位置和/或方向)。因此,视觉传感器的视野范围/视野的起点/视线发生变化。
该过程在当前时间间隔和下一个时间间隔中重复进行。控制器130处理传感器数据,推导出状态向量t,并生成用于下一个时间间隔的执行器命令数据t+1。然后,执行器命令数据t+1用于更新执行器512的相应状态,从而导致机器人100的关节状态发生变化,进而移动机器人100的一个或多个身体部位。反馈回路继续,控制器130处理传感器数据,推导出状态向量t+1,并生成用于下一个时间间隔的执行器命令数据t+2。然后,执行器命令数据t+2用于更新执行器512的相应状态,从而导致机器人100的关节状态发生变化,进而移动机器人100的一个或多个身体部位,以执行操控物体的任务。
总体来说,描述了一种用于操作包括多个腱驱动关节和连接的运动链的机器人的方法。该方法包括读取配置为驱动多个腱驱动关节的腱的执行器状态信息;读取生成包含物体的视野图像的图像传感器数据;并根据执行器状态信息和图像(以及在某些情况下的其他传感器数据)生成执行器命令数据,以操作运动链中的多个腱驱动关节来执行任务,包括补偿多个腱驱动关节腱的不精确性。该方法可以适应本文所描述的机器人配置。
图11展示了一种操作机器人(例如机器人100)的过程1100的实现方式,该机器人具有一个可调整方向的头部,图像传感器安装在头部上。机器人有一个带有头部的传感器分支,包括视觉和测距传感器,以及至少一个操控器分支。过程1100实施了一个示例控制回路1155。过程1100包括访问在前一个时间间隔t-1生成的先前图像和测距传感器数据t-1,访问由一个或多个传感器附属执行器在前一个时间间隔t-1生成的传感器附属执行器数据t-1,这些执行器通过执行传感器附属腱来移动传感器附属部分以执行任务,还包括访问在前一个时间间隔t-1由一个或多个操控器附属执行器生成的操控器附属执行器数据t-1,这些执行器通过执行操控器附属腱来移动操控器附属部分以执行任务。
过程1100包括处理先前的图像数据t-1、先前的传感器附属执行器数据t-1以及先前的操控器附属执行器数据t-1,并生成用于当前时间间隔t的瞬时执行器命令数据1112,以补偿先前传感器附属执行器数据t-1和先前操控器附属执行器数据t-1中的精度误差。过程1100包括根据瞬时执行器命令数据1112调整传感器附属执行器,执行传感器附属腱以移动传感器附属部分,从而改变视觉传感器的姿态1125;并根据瞬时执行器命令数据1112调整操控器附属执行器,执行操控器附属腱以移动操控器附属部分,从而改变操控器附属部分的姿态1130。改变视觉传感器的姿态包括改变视觉传感器的位置和/或方向。在某些实现中,改变视觉传感器的位置和/或方向包括改变视觉传感器的视野,包括改变视觉传感器视野的起点以及视线。改变操控器附属部分的姿态包括改变操控器附属部分的位置和/或方向。
过程1100包括在当前时间间隔t内使用修改后的视觉传感器姿态生成或捕捉1135瞬时图像数据。
过程1100包括读取1140在当前时间间隔t内从调整后的传感器附属执行器生成的瞬时传感器附属执行器数据t,该瞬时传感器附属执行器数据t由于传感器附属腱的可变性而存在精度误差;并读取1140在当前时间间隔t内从调整后的操控器附属执行器生成的瞬时操控器附属执行器数据t,该瞬时操控器附属执行器数据t由于操控器附属腱的可变性而存在精度误差。
过程1100包括处理瞬时图像数据t、瞬时传感器附属执行器数据t以及瞬时操控器附属执行器数据t,并在控制器中生成1150用于下一个时间间隔t+1的下一个执行器命令数据1152,以补偿瞬时传感器附属执行器数据t和瞬时操控器附属执行器数据t中的精度误差。
过程1100包括迭代控制回路1155,直到任务完成。
图12展示了使用神经网络1250来驱动传感器执行器1260和操控器执行器1270的一个实现。神经网络1250处理输入1252并生成输出1254。传感器执行器1260根据输出1254修改传感器(例如,传感器R 202和传感器L 203)的视场(FoV),从而创建传感器的修改视场(例如,FoV 1201、1202、1211、1212、1225、1226、1228)。随后,传感器基于修改后的视场生成图像。
操控器执行器1270根据输出1254修改操控器的姿态,从而创建操控器的修改姿态(例如,1201、1204、1205、1206、1207、1208、1212、1209、1210-1232)。
该系统利用神经网络的输出调整传感器和操控器的姿态或视角,以适应任务需求或环境变化。
图13说明了一种控制机器人(例如,机器人100)的实现。该机器人包括一个末端执行器(例如,手),末端执行器带有用于在任务1300期间操控目标物体的接触点(例如,接触点1-5)。机器人还包括一个带有传感器(例如,相机)的传感器臂(例如,头部),用于生成与任务1300对应的视野的图像。
执行任务1300包括根据执行器命令数据1302调整传感器臂的执行器1312,以将传感器置于一系列姿态1322中。执行任务1330还包括根据执行器命令数据1302调整接触点的执行器1312,以将接触点置于一系列姿态1324中。
执行任务1300包括在各个时间间隔使用传感器生成图像,以提供视野的一系列图像1332(例如,图像A、B、C),该图像序列包括一个即时图像,对应于一个即时时间间隔。执行任务1330还包括从调整过的传感器臂和接触点的执行器接收一系列执行器读数1334,该执行器读数序列包括一个即时执行器读数,对应于即时时间间隔。
执行任务1330包括迭代地1340处理即时图像和即时执行器读数,以生成执行器命令数据1302,从而在下一个时间间隔中调整传感器和接触点的执行器。
计算机系统
图14显示了可用于实现所披露技术的计算机系统1400。计算机系统1400包括至少一个中央处理单元(CPU)1472,它通过总线子系统1455与多个外围设备通信。这些外围设备可以包括一个存储子系统1410,例如,存储设备和文件存储子系统1436、用户界面输入设备1438、用户界面输出设备1476和网络接口子系统1474。输入和输出设备允许用户与计算机系统1400进行交互。网络接口子系统1474提供了与外部网络的接口,包括与其他计算机系统中的相应接口设备的接口。
在一个实现中,控制器130可以与存储子系统1410和用户界面输入设备1438通信连接。
用户界面输入设备1438可以包括键盘、鼠标、轨迹球、触控板、图形输入板、扫描仪、集成于显示器中的触摸屏、语音识别系统、麦克风等其他输入设备。通常,“输入设备”一词意在包括所有可能的设备和输入信息到计算机系统1400的方式。
用户界面输出设备1476可以包括显示子系统、打印机、传真机或非视觉显示设备如音频输出设备。显示子系统可以包括LED显示器、阴极射线管(CRT)、液晶显示器(LCD)或投影设备,或其他用于创建可见图像的机制。显示子系统还可以提供非视觉显示,如音频输出设备。通常,“输出设备”一词意在包括所有可能的设备和从计算机系统1400输出信息给用户或其他计算机系统的方式。
存储子系统1410存储提供某些或全部模块和方法功能的软件构件。这些软件模块通常由处理器1478执行。处理器1478可以是图形处理单元(GPU)、现场可编程门阵列(FPGA)、特定应用集成电路(ASIC)和/或粗粒度可重构架构(CGRA)。处理器1478可以由深度学习云平台托管,如Google Cloud Platform™、Xilinx™ 和Cirrascale™。处理器1478的例子包括Google的Tensor处理单元(TPU)™,以及NVIDIA、微软、Graphcore、Qualcomm等提供的各种平台处理器。
存储子系统1410中的内存子系统1422可以包括多个内存,包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)1432和用于存储固定指令的只读存储器(ROM)1434。文件存储子系统1436可以为程序和数据文件提供持久性存储,且可以包括硬盘驱动器、软盘驱动器及其可移动介质、CD-ROM驱动器、光驱或可移动介质盒。实现某些功能模块的软件可以存储在存储子系统1410的文件存储子系统1436中,或存储在处理器可以访问的其他机器中。
总线子系统1455提供了一种机制,让计算机系统1400的各个组件和子系统能够按预期相互通信。尽管总线子系统1455在图中以单一总线的形式示意,但其他实现中总线子系统可以使用多条总线。
篇幅所限,以上仅摘录部分内容,
如需获取英文原版、中文译文,请加入知识星球,
并搜索编号“A225”获取详细资料。
另在知识星球新增了一篇非公开资料,
《人形机器人离实际应用还有多远S131)》