机器人编舞的制作方法

文章来源:行业新闻 2024-04-17

  2.机器人通常被定义为可重新编程和多功能的机械手,其被设计用于通过可变的编程运动来移动材料、零件、工具或专用设备以用于执行任务。机器人能是物理锚定的机械手(例如,工业机械手臂)、在整个环境中(例如,使用腿、轮子或基于牵引的机构)移动的移动机器人、或者机械手和移动机器人的某种组合。机器人用在所有行业,包括例如制造、运输、危险环境、勘探和医疗保健。因此,以快速和有效的方式为各种运动例程对机器人进行编程的能力为这一些行业提供了额外的好处。

  3.本公开的一个方面提供了一种用于生成关节命令的方法。该方法有在数据处理硬件处接收动作(maneuver)脚本,该动作脚本包括供有腿机器人执行的多个动作。在这里,每个动作都与成本相关联。该方法还包括由数据处理硬件识别动作脚本的多个动作中的两个或更多个动作在同一时刻发生。该方法还包括由数据处理硬件基于所述两个或更多个动作以及与所述两个或更多个动作相关联的成本来确定有腿机器人在该时刻执行的组合动作。该方法还包括由数据处理硬件生成关节命令,以在关节命令命令有腿机器人的一组关节的时刻控制有腿机器人的运动。在这里,该一组关节对应于组合动作。

  4.本公开的实现方式可包括以下可选特征中的一个或多个。在一些实现方式中,有腿机器人对应于四足机器人。在一些示例中,多个动作之一包括提示,其中该提示对应于有腿机器人的主体的主体运动。在这些示例中,该方法还可以包括由数据处理硬件确定该提示是否与在与该提示相同的时刻发生的多个动作中的另一个动作兼容,并且当该提示与该另一个动作兼容时,由数据处理硬件修改该另一个动作以结合该提示的主体运动。在一些配置中,每个动作被配置为使用用于有腿机器人的主动控制器或者修改用于有腿机器人的主动控制器,其中修改用于有腿机器人的主动控制器的动作定义了提示。可选地,与每个动作相关联的成本包括用户定义的成本,该成本指示有腿机器人执行该动作的重要性。

  5.在一些示例中,多个动作中的至少一个包括脚步动作,其中脚步动作包括有腿机器人的摆动腿触地的位置和时间。在一些实现方式中,多个动作中的至少一个包括手臂动作,其中手臂动作包括有腿机器人的机械手的姿态。在一些配置中,动作脚本包括舞蹈脚本,并且每个动作包括舞蹈动作。这里,该方法还可以包括由数据处理硬件将舞蹈脚本的每个舞蹈动作与歌曲的节拍同步。附加地或替代地,该方法还可包括由数据处理硬件确定动作脚本的多个动作中的第一个动作的退出状态符合后续动作的进入状态。

  6.本公开的另一方面提供了一种能够生成关节指令的机器人。机器人包括主体、连接到主体的两条或更多条腿、以及与主体和两条或更多条腿通信的计算系统。计算系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,当这些指令

  在数据处理硬件上执行时使得数据处理硬件执行操作。这些操作包括接收动作脚本,该动作脚本包括用于机器人执行的多个动作。在这里,每个动作都与成本相关联。该操作还包括识别该动作脚本的多个动作中的两个或更多个动作在同一时刻发生。这些操作还包括基于两个或更多个动作以及与两个或更多个动作相关联的成本来确定机器人在该时刻执行的组合动作。这些操作还包括在关节命令命令机器人的一组关节的时刻生成关节命令以控制机器人的运动。在这里,该一组关节对应于组合动作。

  7.该方面可包括以下可选特征中的一个或多个。在一些实现方式中,有腿机器人对应于四足机器人。在一些示例中,多个动作之一包括提示,其中该提示对应于的主体的主体运动。在这些示例中,操作还可包括确定该提示是否与在与该提示相同的时刻发生的多个动作中的另一个动作兼容,以及当该提示与该另一个动作兼容时,修改该另一个动作以结合该提示的主体运动。在一些配置中,每个动作被配置为使用机器人的主动控制器或者修改机器人的主动控制器,其中修改机器人的主动控制器的动作定义了提示。可选地,与每个动作相关联的成本包括用户定义的成本,该成本指示机器人执行该动作的重要性。

  8.在一些示例中,多个动作中的至少一个包括脚步动作,其中脚步动作包括机器人的摆动腿触地的位置和时间。在一些实现方式中,多个动作中的至少一个包括手臂动作,其中手臂动作包括机器人的机械手的姿态。在一些配置中,动作脚本包括舞蹈脚本,并且每个动作包括舞蹈动作。这里,操作能更加进一步包括使舞蹈脚本的每个舞蹈动作与歌曲的节拍同步。附加地或备选地,操作还可包括确定动作脚本的多个动作中的第一个动作的退出状态符合后续动作的进入状态。

  9.本公开的一个或多个实现方式的细节在附图和以下说明书里面阐述。根据说明书和附图以及权利要求书,别的方面、特征和优点将变得显而易见。

  18.通常,拥有或控制机器人的实体希望对机器人的运动进行预编程。例如,实体希望机器人执行可重复的运动例程。不幸的是,预编程的运动可能需要硬编码来生成期望的运动。这里,硬编码指的是某人,如程序员,生成或编辑一组用计算机编程语言编写的指令。硬编码通常是耗时的,并且可能会引起瓶颈,使得只有有限数量的人(例如,程序员/编码员)能够为机器人的运动编码。此外,对编码的运动的修改或对编码的运动的调试可能导致冗长的反馈循环来实现运动例程。换句话说,机器人通常缺乏快速创作机器人行为的手段。此外,机器人的制造商可能会阻止对新的机器人运动进行硬编码的能力和/或阻止对先前为现有机器人运动硬编码的代码进行编辑的能力。

  19.预编程运动的另一个潜在问题是,它可能会或可能不会考虑机器人周围的环境和/或机器人本身的物理特性。换句话说,对预编程运动进行编码的人可能没意识到在预编程运动期间对机器人可能有其他约束。如果不考虑这些其他约束,预编程的程序在执行期间可能会失败或损坏机器人或机器人周围的环境。例如,用于预编程运动例程的编码员可能没有意识到机器人将在例程期间承载额外的25磅负载,或者该例程有几率发生在具有静态或动态障碍物的动态环境中。这显然使实体或编码员有责任考虑机器人在运动例程期间将经历的所有或大部分条件,以实现成功的运动例程。

  20.为克服这样一些问题中的一些,参考图1a,用户10在用户界面(ui)200处为机器人1 00设计运动例程。机器人100包括与ui 200通信的动作系统300。这里,ui 200使得机器人100的用户10能够以动作脚本202的形式生成运动例程。动作脚本202通常指用户10在ui 200处为机器人100设计以在机器人环境30中执行的多个动作210,210a-n(例如,在时间上可能重叠)。这里,μi 200能够为机器人100构建运动而不需要任何新的硬编码。换句线,这些动作能被分层或组合在一起,以直观和接近实时的方式生成机器人100的运动例程。此外,ui 200的一些动作210被参数化,使得用户10可以在ui 200处定制这些动作210的各方面,以适合他/她期望的运动例程。如将变得显而易见的,虽然由用户10为运动例程获得和选择的动作210本身能(例如,由机器人100的制造商)预编程或硬编码到机器人中,动作脚本202中的动作210的组合和序列使得机器人100能够执行/进行运动例程,而不需要用户10对运动例程进行任何硬编码。

  21.在一些实例中,用户10在用户设备20上运行ui 200。这里,用户设备20使用诸如数据处理硬件22和与数据处理硬件22通信的存储器硬件24的计算资源22、24来执行ui 200。用户设备20的一些示例包括移动电子设备(例如,移动电话、平板电脑、膝上型电脑等)、个人计算机(pc)、工作站、终端或具有执行ui 200的计算能力的任何其他计算设备。ui 200可以是基于网站(web)的(例如,从网络浏览器启动的基于网站的应用)、(例如,安装在用户设备20的计算资源22、24上和/或被配置为在其上执行的)用户设备20本地的、或者两者的某种组合。在一些实现方式中,用户设备20使用ui 200来使用有线b所示的网络150)将动作脚本202传送给机器人100。

  22.继续参考图1a,机器人100包括主体110,主体110具有基于运动的结构,诸如连接到主体110的腿120a-d,腿120a-d使得机器人100能够在环境10周围移动。在一些示例中,每条腿120是可铰接的结构,使得一个或多个关节j允许腿120的构件122移动。例如,每条腿120包括将腿120的上部构件122,122u连接到主体110的髋关节jh和将腿120的上部构件122u连接到腿120的下部构件122

  的膝关节jk。尽管图1a描绘了具有四条腿120a-d的四足机器人,但是机器人100可以包括任何数量的腿或基于运动的结构(例如,具有两条腿的两足或人形机器人),其提供了穿越环境10内的地形的手段。

  23.为了穿越地形,每条腿120具有接触地形表面(即牵引表面)的远端124。换句线的运动期间枢转、放置或通常提供牵引。例如,腿120的远端124对应于机器人100的脚。在一些示例中,尽管未示出,腿120的远端124包括踝关节ja,使得远端124可相对于腿120的下部构件122

  24.在一些示例中,机器人100包括用作机器人机械手的手臂126。手臂126可以被配置

  成围绕多个自由度移动,以便接合环境30的元素(例如,环境30内的物体)或者执行姿势(例如,美学姿势)。在一些示例中,手臂126包括一个或多个构件128,其中构件128通过关节j连接,使得手臂126可以围绕(多个)关节j枢转或旋转。例如,通过多于一个的构件128,手臂126可以被配置为延伸或缩回。为了举例说明,图1a描绘了具有三个构件128的手臂126,这三个构件128对应于下部构件128

  旋转或枢转(例如,其中手臂126连接到机器人100的主体110)。下部构件128

  处连接到手构件128h。在一些示例中,手构件128h包括附加构件以实现不一样的抓握。这些附加构件的范围可以从简单的两构件爪状手构件128h到模拟人手的手指的更复杂的手构件128h。在一些实现方式中,手臂126在机器人100的主体110上的插座处连接到机器人100。在一些配置中,插座被配置为连接器,使得手臂126能够准确的通过要不要手臂126做相关操作而附接到机器人100或从机器人100分离。

  25.机器人100具有沿着重力方向的垂直重力轴(例如,示为z方向轴az)和质心cm,该质心cm的位置对应于机器人100的所有零件的平均位置,其中这些零件根据其质量进行加权(即,机器人100的分布质量的加权相对位置总和为零的点)。机器人100还具有基于相对于垂直重力轴az(即,相对于重力的固定参考系)的cm的姿态p,以定义机器人100采取的特定姿势或站立。机器人100的姿势可以由机器人100在空间中的方位或角位置来定义。腿120相对于主体110的运动改变了机器人100的姿态p(即,机器人的cm的位置和机器人100的姿势或方位的组合)。这里,高度通常指沿z方向的距离。机器人100的矢状面对应于在y方向轴ay和z方向轴az的方向上延伸的y-z平面。换句线平分为左侧和右侧。通常垂直于矢状面,地平面(也称为横向平面)通过在x方向轴a

  和y方向轴ay的方向上延伸而跨越x-y平面。地平面指的是地面12,其中机器人100的腿120的远端124可以生成牵引力以帮助机器人100在环境30周围移动。机器人100的另一解剖平面是延伸穿过机器人100的主体110的前平面(例如,从机器人100的具有第一条腿120a的左侧到机器人100的具有第二条腿120b的右侧)。前平面通过在x方向轴a

  26.当有腿机器人在环境30周围移动时,机器人100的每条腿120可与地面12接触,或不与地面12接触。当腿120与地面12接触时,腿120被称为站立腿120

  。相反,当摆动腿在不与地面12接触之后接触地面(td)12时,摆动腿120

  27.为了在环境30周围进行机动,机器人100包括具有一个或多个传感器132,132a-n(例如,示为第一传感器132,132a和第二传感器132,132b)的传感器系统130。传感器132可以包括视觉/图像传感器、惯性传感器(例如惯性测量单元(ium))、力传感器和/或运动学传感器。视觉/图像传感器132的一些示例包括相机(诸如立体相机)、扫描光检测和测距(lidar)传感器或扫描激光检测和测距(ladar)传感器。在一些示例中,传感器132具有定义对应于传感器132的感测范围或区域的对应的(多个)视场fv。例如,图1a描绘了机器人100的视场fv。每个传感器132可以是可枢转的和/或可旋转的,使得传感器132可以例如围绕一个或多个轴(例如,相对于地平面的x轴、y轴或z轴)改变视场fv。

  28.当用传感器132勘测视场fv时,传感器系统130生成对应于视场fv的传感器数据134(也称为图像数据)。在一些示例中,传感器数据134是对应于由三维体积图像传感器132生成的三维体积点云的图像数据。附加地或可选地,当机器人100在环境30周围进行机动时,传感器系统130收集机器人100的姿态数据,该姿态数据包括(例如,由imu测量的)惯性测量数据。在一些示例中,姿态数据包括关于机器人100的运动学数据和/或方位数据,例如,关于机器人100的腿120的别的部分或关节j的运动学数据和/或方位数据。利用传感器数据134,机器人100的各种系统能使用传感器数据134来定义机器人100的当前状态(例如,机器人100的运动学)和/或机器人100周围的环境30的当前状态。

  29.在一些实现方式中,传感器系统130包括连接到关节j的(多个)传感器132。在一些示例中,这些传感器132(例如,传感器132,132a-b)连接到操作机器人100的关节j的电机m。这里,这些传感器132以基于关节的传感器数据134的形式生成关节动力学。作为基于关节的传感器数据134收集的关节动力学可以包括关节角度(例如,上部构件122u相对于下部构件122

  )、关节速度(例如,关节角速度或关节角加速度)和/或关节j处受到的力(也称为关节力)。这里,由一个或多个传感器132生成的基于关节的传感器数据134可以是原始传感器数据、被进一步处理以形成不同类型的关节动力学134

  的数据、或者两者的某种组合。例如,传感器132测量关节位置(或在关节处连接的(多个)构件122的位置),并且机器人100的系统执行进一步的处理以从位置数据导出速度和/或加速度。在其他示例中,传感器132被配置成直接测量速度和/或加速度。

  30.当传感器系统130收集传感器数据134时,计算系统140被配置成存储、处理和/或向机器人100的各种系统(例如,控制系统170和/或动作系统300)传送传感器数据134。为了执行与传感器数据134相关的计算任务,机器人100的计算系统140包括数据处理硬件142和存储器硬件144。数据处理硬件142被配置为进行存储在存储器硬件144中的指令,以执行与机器人100的活动(例如,运动和/或基于运动的活动)相关的计算任务。一般来说,计算系统140指的是数据处理硬件142和/或存储器硬件144的一个或多个位置。

  31.在一些示例中,计算系统140是位于机器人100上的本地系统。当位于机器人100上时,计算系统140可以是集中式的(即,在机器人100上的单个位置/区域,例如,机器人100的主体110)、分散式的(即,位于机器人100的各个位置处)、或者两者的混合式组合(例如,其中大多数集中式硬件和少数分散式硬件)。为了说明一些差异,分散式计算系统140可以允许处理发生在活动位置处(例如,在移动腿120的关节的电机处),而集中式计算系统140可以允许中央处理中心与位于机器人100上的不同位置处的系统进行通信(例如,与移动腿120的关节的电机通信)。

  32.附加地或可选地,计算系统140包括远离机器人100的计算资源。例如,计算系统140经由网络150与远程系统160(例如,远程服务器或基于云的环境)通信。非常类似于计算系统140,远程系统160包括远程计算资源,诸如远程数据处理硬件162和远程存储器硬件164。这里,传感器数据134或其他经处理的数据(例如,由计算系统140在本地处理的数据)可以存储在远程系统160中,并且可以被计算系统140访问。在一些示例中,计算系统140被配置成利用远程资源1 62、164作为计算资源142、144的扩展,使得计算系统140的资源可以驻留在远程系统160的资源上。在一些配置中,远程系统160和/或计算系统140托管ui 200,使得用户10使用网络浏览器应用经由网络150访问ui 200。

  33.在一些实现方式中,如图1a-1c所示,机器人100包括控制系统170。控制系统170可以被配置成与机器人100的系统(诸如至少一个传感器系统130和/或动作系统300)通信。控制系统170能够正常的使用硬件140执行操作和其他功能。控制系统170包括至少一个控制器172,其被配置为控制机器人100。例如,控制器172基于来自机器人100的系统(例如,传感器系统130、控制系统170和/或动作系统300)的输入或反馈来控制机器人100的移动以在环境30周围穿越。在一些实现方式中,控制器172控制机器人100的姿势和/或行为之间的运动。

  34.在一些示例中,控制器172通过控制机器人100的一个或多个关节j的运动来控制机器人100。在一些配置中,控制器172是具有控制至少一个关节j或操作或连接到关节j的电机m的编程逻辑的软件。例如,控制器172控制施加到关节j的力的量(例如,关节j处的扭矩)。作为可编程控制器172,控制器172控制的关节j的数量是可缩放的和/或可定制的以用于特定的控制目的。控制器172可以控制机器人100的单个关节j(例如,控制单个关节j处的扭矩)或者控制机器人100的多个关节j。当控制多个关节j时,控制器172可以向由控制器172控制的每个关节j施加相同或不同的扭矩。通过控制多个关节j,控制器172可以协调机器人100的更大结构(例如,主体110、一条或多条腿120、手臂126)的运动。换句线可以被配置成控制机器人100的多个零件的运动,例如两条腿120a-b、四条腿120a-d或者两条腿120a-b与手臂126的组合。例如,图1c描绘了机器人100的电机m和这些电机m针对机器人100的给定结构控制的关节j之间的示例关系。这里,图1c示出了四个控制器172,172a-d,它们被设置成控制机器人100的部分。第一控制器172,172a控制与第一条腿120,120a和第二条腿120,120b相关的膝关节jk和髋关节jh的电机m。第二控制器172b被示出配置成控制用于与单条腿(诸如第三条腿120,120c)相关的膝关节jk和髋关节jh的电机m。第三控制器172c被示出配置成控制与第三条腿120c、第四条腿120,120d相关的电机m,以及与手臂关节j

  相关的电机m之一。第四控制器172d被示出配置成控制仅与机器人100的手臂126相关的电机m。为了实际比较,第三控制器172c可以允许机器人100在第三条腿120c和第四条腿120d上方倾斜到机器人的主体110的一侧,同时还用手臂180抓握某物。与第三控制器172c相比,机器人100可以用三个控制器172执行倾斜和抓握功能,其中两个控制器172分别控制第三条和第四条腿120c-d,而第四控制器172d控制手臂126。协调多个控制器172(例如,用于精细电机控制)或使用单个控制器172(例如,为简单起见)可能有一些优点或原因。

  35.参考图2a-2f,ui 200被配置为允许用户1 0以动作脚本202的形式构建运动例程。在一些示例中,动作脚本202是用户10(例如,经由ui 200)与机器人100通信以使机器人100能够执行运动例程的计算机可读格式。在一些实现方式中,动作脚本202是用户10请求机器人100执行的设定时间段t内的一系列运动。为了构建动作脚本202,ui 200提供多个动作210 a-n供用户10选择。这里,动作210指的是由控制系统170的控制器172协调的机器人100的硬编码运动。动作210可以对应于机器人100的控制器172(例如,为控制系统170编程的主动控制器)、对机器人100的控制器172的修改、机器人100的控制器172的一个或多个输入参数214、或其任意组合。在一些示例中,动作210定义(例如,通过指定控制特定关节j或关节j的控制器172)执行与动作210相关联的(多个)基础运动所必需的一组关节j。一些不一样的动作210包括以下:移动机器人100的脚124的脚步动作210,210f(或腿动作);移动机器人100的手臂126的手臂动作210,210 a;和/或移动机器人100的主体110的主体动作210,

  210b。此外,由于动作210可以对应于控制器172,所以动作210的运动可以对应于任何数量的关节j,甚至来自机器人100的不同部分的关节j(例如,来自机器人的主体110的不同侧上的两条腿120)。换句线可被配置为不同类型动作的混合。例如,组合了脚步动作210f和手臂动作210a的动作210。在一些配置中,动作210被参数化,使得动作210已用参数214硬编码,参数214可被修改以生成运动中的设定量的可定制变化。例如,脚步动作210f包括参数214,诸如指定用哪只脚124迈步、脚步的坐标/位置(例如,lo/td位置)、指定的迈步脚124的摆动高度、和/或指定的迈步脚124的迈步速度。在主体动作210b的情况下,参数214可包括摇摆区域、摇摆的位置、摇摆的方向、摇摆速度和/或摇摆风格。

  36.在一些示例中,为了对一个或多个动作210进行排序以形成动作脚本202,ui 200将动作210和动作脚本202两者划分为称为条带ts的时间段。换言之,来自动作210的时间条带ts与动作脚本202的时间条带ts兼容,使得动作210可占据动作脚本202的一个或多个条带ts。通过将动作脚本202细分成单元,如条带ts,动作脚本202可缩放至不同的时间长度。换句线随时间划分成多个离散的动作210,其中每个动作210对应于固定数量的条带ts。例如,用于在时间线,210a-d并且持续总共四十个条带ts的动作脚本202。这里,第一个动作210a占据十二个条带ts,第二个动作210b和第三个动作210c各占据八个条带ts,并且第四个动作210d占据十二个条带ts。当用户10希望在四十秒内执行该四十条带的动作脚本202时,机器人100将十二秒分配给第一个动作210a和第四个动作210d中的每一个,并将八秒分配给第二个动作210b和第三个动作210c中的每一个。相反,当用户10希望在两倍于八十秒的时间内执行该四十条带的动作202时,机器人100缩放动作210的条带,使得机器人100将二十四秒分配给第一个动作210a和第四个动作210d中的每一个,并将十六秒分配给第二个动作210b和第三个动作210c中的每一个。附加地或可替换地,由于每个动作210也在具有开始时间和结束时间的设定的时间段tm内发生,动作脚本202可以包括在动作210之前、之间或之后的未被占用的条带,作为运动例程的一部分。

  37.在一些实现方式中,ui 200包括动作210的列表212,用户10可从列表212中选择以构建动作脚本202。当用户10从列表212中选择时(例如,该选择在图2b中被示为动作210周围的加粗轮廓),动作210的选择可显示用户10可定制的特定于动作210的参数214(例如,在模拟器230中示出)。在一些示例中,用户10通过选择或通过选择动作210并将其拖到脚本构建器220中来将动作210添加到动作脚本202。选择的一些示例包括双击或选择动作210并点击gui元素,诸如

  (例如,如图2b所示)。这里,脚本构建器220可以是与动作列表212在同一窗口内的另一面板,或者是单独的窗口。

  38.当将动作210添加至脚本构建器220以构建动作脚本202时,动作210可具有基于动作210的硬编码的默认大小(例如,条带数量)。例如,默认情况下,对应于简单运动的单个动作210可以比更复杂的运动(例如,倒立)占据更少的条带ts。在任一情况下,动作210的默认条带ts数量可对应于机器人100成功执行动作210所需的最小时间量。在一些实现方式中,通过将动作210被添加到脚本构建器220,然后可进一步修改动作210。例如,用户10调整动作210的大小以将动作210扩展到大于动作210的默认条带ts数量的数量的条带ts上。在一些示例中,脚本构建器220是包括被分成段(例如,条带ts)的时间线的面板或窗口。这里,用户10在用户10指定的时间线内的条带位置处(例如,通过选择或拖放过程)将(多个)

  动作210导入时间线a,时间线指的是时间线可以占据该空间。换句线的关节j的分配。在一些配置中,机器人100的每个关节j被分配给时间线a对应于腿关节,诸如膝关节jk和髋关节jh。在一些示例中,一个或多个层224不具有任何关节j。没有任何关节j的层224的示例可以是当层224对应于特定类型的动作210,诸如主体动作210b时。换句话说,可能存在被动控制关节j的某些动作210。换句线可能影响已经被指定或分配给特定层224的关节j。例如,实际上来说,通过改变机器人100的至少一条腿120的至少一个关节j来发生主体110的移动。然而,当腿120的关节j已经被分配给层224时(例如,对于脚步动作210f或腿动作),主体110的运动可能导致两个层224之间的关节控制干扰。在一些示例中,为了防止由关节干扰引起的问题,ui 200可将主体动作210b作为对另一层224的控制器172的建议修改或特定控制器172的运动参数来传送。换句线b是次要考虑因素,当它不会干扰例如腿动作时,可能影响关节控制。这里,可修改对关节j的控制的动作210被称为提示210h。当提示210h在特定时刻出现时,提示210h被每个其他主动控制器172(例如,每个时间-电流控制器172)考虑。当控制器172解释提示210h时,控制器172可以确定提示210h对应于与控制器172控制的关节j不同的关节j,并且忽略针对提示210h修改其控制器行为。当提示210h对应于相同的关节j时,控制器172可以将提示210h的运动或运动参数214结合到它自己的行为中。

  40.在一些示例中,如图2b,ui 200的脚本构建器220允许用户10在每个时刻在每个层224(例如,示为三层224,224a-c)上具有动作210。当关节j被分配给层224以防止干扰时,多个动作210可以在时间线上的同一时刻分层。换句线的某些部分时,多个动作210可以层叠在彼此之上,以参与机器人100的更宽范围的动力学。例如,提示210h的指定允许多个动作210在时间线上的同一时刻分层,因为一个层224将是控制(例如,腿动作)的主要考虑因素,而另一层224,诸如主体动作210b的层224,224b将是控制的次要考虑因素。通过具有层224,动作210可以以各种组合来组合和/或排序,以给予用户10比简单的列表212上可用的动作210的数量更多的选项。例如,图2b示出了第一层224a(例如,手臂动作层)上的第一个动作210a,210a,第二层224b(例如,主体动作层)上的第二个动作210b、210b,以及第三层224c(例如,腿动作层)上的第三个动作210f、210c。

  41.尽管ui 200允许动作210的分层构造,但μi 200通常不确定动作210的组合的可行性。相反,只要动作210的分层不违反μi 200处(例如,脚本构建器220处)的规则,μi 200就将具有层224的组合的动作脚本202传送给机器人100(例如,传送给机器人100的动作系统300)。在一些示例中,动作210专用于特定层224。更具体地,ui 200将不允许用户10将主体动作210b放置在不控制与主体动作210b相关的关节j的层224上。例如,如图2c所示,用户10不能将影响一条或多条腿120的关节j的摇摆主体动作210b放置在仅控制手臂关节ja的层224上。在一些实现方式中,当用户10将动作210添加到脚本构建器220的时间线影响的关节j相关联的(多个)层224(例如,需要控制动作210的基础运动)。这里,用户10控制动作210在时间线被配置为在时间线上操作关节j。在这些配置中,脚本构建器220包括多个层224上的动作210,该多个层224占据对应于动作210的默认数量的条带ts的每个层224的条带ts。例如,图2d示出了脚本构建器220的时间线b的十二个条带ts和第三层224、224c的十二个条带ts。这里,动作210被示为单个块,使得ui 200防止用户10在不同的层224中不同地操纵相同的动作210,这可能在机器人100试图执行动作210时导致错误。参考图2d,由于时间线可通过在同一时刻的某一部分占据第一层224a来与第二个动作210b组合。

  43.在一些配置中,ui 200包括关于动作210的开始状态(即,进入状态218s)和结束状态(即,退出状态218e)的规则。ui 200结合这些规则以防止机器人100尝试动作脚本202时可能的错误。例如,如图2d所示,当第二个动作210,210b以机器人100跪着的结束状态218e结束时,随后的动作210(例如,被示为第三个动作210c)不能假定机器人100立即能够做出基于机器人100站立的开始状态218s的动作210(例如,某些类型的脚步动作210f)。

  44.为了克服相邻动作210之间的这些潜在问题,每个动作210可包括进入状态218s和/或退出状态218e。在每个动作210包括进入状态218s和/或退出状态218e的情况下,ui 200(例如,脚本构建器220)可比较两个相邻动作210之间的过渡状态(例如,第一个动作210a的退出状态218e和相邻的第二个动作210b的进入状态218s)以确定这些过渡状态是否兼容。当这些过渡状态不兼容时,ui 200向用户10传达动作210的序列不兼容。在一些示例中,ui 200认识到特定的退出状态218e可能与多于一个的进入状态218s兼容。

  45.可替代地,ui 200可在用户10试图放置或选择相邻动作210时做出该决定。这里,当邻近动作210不兼容时,ui 200不允许用户10进行动作210的放置或选择。在图2d所描绘的示例中,不兼容的所选动作210c变灰并用

  示出,以向用户10传达动作210在时间线中的该位置不兼容。在一些实现方式中,ui 200在ui 200处显示消息,该消息传达出动作210与用户10希望在时间线的位置不兼容。在一些示例中,列表212是动态的,使得列表212显示与先前选择兼容的动作210。例如,用户10可选择(即,点击)放置在时间线。在一些示例中,ui 200包括用户10选择以基于进入状态218s和/或退出状态218e来显示兼容的动作210的gui元素(例如,来自ui 200中的菜单或工具栏)。附加地或替换地,当用户10选择或试图将动作210放置在时间线上的不兼容位置时,ui 200可向用户10提供帮助。例如,ui 200可建议用户10添加动作210作为时间线上在时间上彼此相邻时不兼容的动作210之间的过渡。这里,ui 200建议将第一个动作210a的退出状态218e与第二个动作210b的进入状态218s匹配的动作210。

  46.在一些示例中,如图2e,脚本构建器220可缩放用于多于一个的机器人100,100a-b。例如,脚本构建器220包括多个时间线a-b,其中每个时间线e中,第一时间线a,并且第二时间线b。通过协调多个机器人100的时间线之间的协调运动例程。例如,第一机器人100a执行(多个)运动的第一阶段p1,暂停,而第二机器人100b然后执行(多个)运动的第二阶段p2,然后第一机器人100a与第二机器人100b一起执行(多个)运动的最后第三阶段。在一些实现方式中,ui 200可以与不同类型的

  机器人100兼容,使得机器人100的类型或型号可以加载有机器人配置文件特定配置文件。这里,机器人特定配置文件可以加载具有特定于机器人特定配置文件的机器人100的多个层224的时间线a-c的第一时间线a-b的第二时间线b不包括手臂126,因此对应于手臂126的关节j的层224是不必要的。尽管图2e示出了在同一窗口中显示的时间线a-b,但是每个时间线可以具有其自己的窗口(例如,用户10可以在该窗口之间切换)。

  47.返回参考图2a-2e,在一些示例中,ui 200还包括模拟器230。模拟器230可以是ui 200的主窗口或者ui 200的其自身窗口内的面板。在一些实现方式中,模拟器230被配置成显示机器人100的模型232或化身作为动作210的视觉模拟。例如,用户10选择一个或多个动作210,并且模拟器230显示所选择的一个或多个动作210的样本再现。在一些配置中,如图2d,模拟器230包括gui元素234,该gui元素234可输入或调整与该动作210相关联的参数214。在这些配置中,模拟器230可显示应用由用户10输入的参数214的动作210。例如,在图2d中显示为参数214的gui元素234的滑块可以在动作210(例如,主体动作210b)期间调整机器人100的主体110的倾斜或俯仰。尽管图2d示出了用于选择动作210n的单组参数214,但模拟器230可被配置成显示对应于所选动作210的参数214的不同gui元素234。例如,当用户10选择第二个动作210b时,滑块gui元素234可改变为简单的输入字段。

  48.在一些配置中,ui 200被配置为向机器人100传送动作脚本202的部分。通过传送动作脚本202的部分,用户10可对运动例程的子部分进行故障排除或调试。例如,当用户10对动作脚本202未能在机器人100处成功执行而受挫时,用户10使用ui 200来选择动作脚本202的一部分以与机器人100通信。在一些实现方式中,ui 200请求机器人100循环执行动作脚本202或动作脚本202的一部分。这里,当机器人100循环执行动作脚本202或其一部分时,用户10可以在ui 200处更新动作脚本202。在一些配置中,用户10在时间线中指定在何处循环动作脚本202。例如,用户10将循环小部件226(图2e和2f)(例如,被示为可调整的垂直条)插入时间线中,以指定运动例程应该重复(例如,重新开始)的动作脚本202中的位置。为了说明,图2e示出了在动作脚本202a-b的第三阶段p3之前的循环小部件226,使得用户10可以对第一阶段p1和第二阶段p2的动作210,210i-q进行故障排除。

  49.此外,ui 200可配置为保存和/或加载已由用户10构建或正在构建的过程中的动作脚本202。例如,ui 200与用户设备20的计算资源22、24或远程系统160的计算资源162通信,以存储或加载特定的动作脚本202。在一些示例中,ui 200允许用户10与其他用户共享动作脚本202,使得可以协作构建动作脚本202。在一些实现方式中,ui 200包括存储容器(例如,文件目录),该存储容器包括一个或多个动作脚本202或指向一个或多个动作脚本202的位置的指针。附加地或替代地,机器人100的计算系统140可以存储动作脚本202(例如,临时地或持续某个延长的时间段)。

  50.在一些实现方式中,动作脚本202对应于舞蹈例程,其中每个动作210为机器人100可执行的舞蹈动作。这里,时间线的时间条带ts可以用于与特定歌曲的节奏(即,速率)相协调。例如,一首歌曲被识别(例如,由ui 200)为特定数量的每分钟节拍(bpm),并且每个条带ts对应于单个节拍b的划分。由于动作210是可缩放的,所以歌曲的节奏可被改变(例如,加速或减速)或者实际歌曲可被改变,并且动作脚本202的执行可适应于改变的节奏。

  51.在一些实现方式中,脚本构建器220包括将时间线设置为特定节奏(例如bpm)以对应特定歌曲的设置(例如gui元素234)。例如,该设置可允许用户10将歌曲的节拍b直接映射到动作210或动作210的部分。例如,图2f描绘了脚步动作210f在时间线f的方框表示中指示触地(td)和/或抬离(lo)位置。利用该td/lo指示,用户10可以将td或lo直接与歌曲的节拍b对齐(或在升调上不对齐)。例如,在图2a-2f中,时间线通过条带ts之间的较暗条显示歌曲的节拍b。

  52.在一些配置中,ui 200(例如,脚本构建器220)包括促进动作脚本202与来自歌曲的音频同步的特征。在一些示例中,诸如图2e,ui 200包括时间线可以是时间同步工具,其中用户10可以将滑动条228设置在时间线的位置可以用于指示机器人100应该开始执行动作脚本202的运动例程(例如,舞蹈)的开始位置。例如,图2f描绘了第一个动作220a之前的滑动条228。

  53.在一些实现方式中,如图2f,ui 200向机器人100发送作为配置文件的动作脚本202,连同ui 200的当前系统时间204(例如,根据用户设备20的时钟的时间戳)和机器人100应开始运动例程的开始时间206(例如,如由滑动条228的位置指示的)。这里,机器人100在接收到具有ui200的系统时间204和运动例程的开始时间206的动作脚本202时,将等待由ui 200指定的时间量,然后开始运动例程(例如,开始跳舞)。在一些示例中,当机器人100接收动作脚本202时,机器人100假定ui 200和机器人100之间的动作脚本202的通信已经花费了一定量的通信时间,并且同步其自己的时钟以考虑该通信时间量。例如,机器人100将其自己的时钟同步为从ui 200接收的时钟时间戳204加上通信时间的附加量。基于该时间同步,机器人100在某个未来时间(例如,在未来等于ui 200的系统时间204和指定开始时间206之间的差的时间)开始运动例程(例如,舞蹈)。

  54.附加地或可选地,机器人100向ui 200提供关于机器人100感知到它在运动例程(例如,跳舞)中的时间位置的反馈208。例如,机器人100(例如,以时间戳的形式)提供其自己的时钟时间208,208a(图3)作为反馈208。这里,机器人的时间应该非常类似于ui 200的系统时间204,因为当机器人100接收动作脚本202时的先前同步。在一些示例中,当ui 200的系统时间204和机器人100的时钟时间208a之间存在差时,ui 200可以将其系统时间204重新发送给机器人100以重新同步。在一些实现方式中,当重新同步发生时,机器人100可以被配置为加速或减速动作脚本202的动作210。例如,机器人100识别机器人100可以更快或更慢地执行的候选动作210,以通过重新同步来调整动作例程202。在又一些示例中,代替来自机器人100的反馈208,ui 200周期性地将其当前时钟204(例如,以某个指定的频率)传送给机器人100,使得机器人100检查ui 200和机器人100之间的同步。在这些示例中,当来自ui 200的周期性通信指示时间未对准时,机器人100执行再同步。在一些配置中,当ui 200的系统时间204和机器人100的时钟208a之间的差满足时间偏移阈值(例如,超过设置为时间偏移阈值的值)时,机器人100重新同步。当ui 200和机器人100之间存在小的时间偏移时,这种方法可以防止机器人100频繁地重新同步。

  55.参考图3,动作系统300包括接口310(诸如应用编程接口(api))、定序器320和动态规划器330。从整体的角度来看,动作系统300的目标是接收运动请求(例如,具有(多个)动作210的动作脚本202)作为输入,并将该输入转换成为机器人100生成运动的解决方案。这里,即使输入是不可能的(例如,从物理学或机器人动力学的角度来看),动作系统300被配

  置成返回一个解决方案,该解决方案是基于输入为机器人100生成运动的最接近的可能的解决方案。换句线的顺应性或实际可行性。当动作210的组合在给定时刻出现在动作脚本202中时(即,用户10具有分层动作210),该方法尤其有用。

  56.在一些示例中,接口310用作ui 200和机器人100之间的通信手段。换句线的方式。在一些实现方式中,定序器320解释来自接口310的动作脚本202,以理解机器人100何时应该尝试执行动作脚本202的特定动作210的时序。在一些示例中,定序器320作为动作脚本202的动作210的调度来操作。在一些配置中,定序器320通过识别机器人100的时钟时间208a并识别应该在所识别的时间运行的(多个)动作210来操作。例如,基于机器人100的时钟208a,定序器320识别动作脚本202的特定条带ts,并确定机器人100是否应该在该时间条带ts执行或试图执行动作210。当定序器320识别出一个或多个动作210与所识别的时间条带ts相关联时,定序器320可以将(多个)这些动作210传送给动态规划器330。例如,图3描绘了具有标识机器人100的当前时间208a的时钟符号和对应于当前时间208a的动作脚本202的时间条带ts的定序器320。这里,有三个动作210h-j发生在该时间条带ts处(例如,在三个动作210h-j周围用虚线来生成命令302以控制机器人100移动或试图移动的运动。动作系统300可使用动态规划器330来生成命令302的全部或一部分。在一些示例中,动态规划器330被配置成生成用于机器人100的关节j的命令302,以便控制机器人的运动(也称为关节命令302)。这里,关节命令302可以对应于关节位置、关节力(例如,关节扭矩)、关节角度、与关节j相关的角速度等。当控制器172在特定时刻被动作210激活时,控制器172使用动态规划器330作为工具,以确定关节命令302(例如,关节扭矩)来实现或试图实现(多个)动作210的运动。在机器人100是有腿机器人(例如,四足动物)的示例中,动态规划器330通常用于协调腿动作210,因为腿运动是有腿机器人100的常见控制类型(例如,通常层叠在一起)。对于有腿机器人100,控制管理系统170可以通过力控制(例如,关节扭矩)来控制(多个)站立腿120

  ,并且通过位置(例如,利用关节角度和角速度)来控制(多个)摆动腿120

  58.为生成关节命令302,动态规划器330包括求解器332。这里,求解器332指的是优化模型,该优化模型结合了机器人100和/或机器人100的周围环境的各种约束334(例如,结构约束、物理世界约束、用户定义的约束等)。为了协调运动,动态规划器330的求解器332可接收或被预编程以满足这些约束334,使得机器人100可在执行所请求的(例如,通过动作脚本202所请求的)运动的同时继续功能(例如,保持其平衡)。约束334的一些更具体的示例包括机器人100的运动约束的范围、基于机器人100的结构尺寸(例如,腿长度)的约束、机器人100上(例如,在机器人100的脚124处)的摩擦力的估计等。

  59.为了生成关节命令302,动态规划器330从动作脚本202接收关于一个或多个动作210的信息,诸如参数214。在一些示例中,动态规划器330识别与动作210(例如,在动态规划器330处接收的每个动作210)相关联的成本336。这里,成本336指的是指定动作210的运动或运动的特定部分的重要性的值。例如,成本336对应于动作210的目标事件姿态p

  通常指给定运动的期望主置或方位。在一些实现方式中,由动态规划器330接收的每个动作210包括成本336。这里,如图2a所示,当构建该动作脚本202时,该

  60.通过具有与输入到求解器332中的动作210相关联的成本336,求解器332被配置为优化多个成本336,以了解如何在动作脚本202中的特定时刻最佳地执行多于一个的动作210。换句线b在同一时刻发生时,每个动作210a-b包括成本336,336a-b,该成本336,336a-b通知求解器332关于每个动作210a-b什么是重要的(例如,对用户10来说)。例如,第一个动作210a是脚步动作210f,其中用户10确实希望在脚步期间(例如,在摆动期间)实现脚124的特定触地位置,但是不关心(或重视)脚步期间的运动速度或脚步动作210f期间脚124的方位。这里,用户10可以为脚步动作210f设置触地位置的成本336以反映这种高重要性(例如,大的成本值)。在该示例中,当用户10将附加动作210(诸如摇摆的主体动作210b)分层作为第二个动作210b时,求解器332可决定减少该第二个动作210b的摇摆量,使得它不会损害第一个动作210a的触地位置的准确性。这里,摇摆量可能已经被设计为ui 200处的参数214。在这种情况下,第二个动作210b可被配置有反映摇摆量的较低重要性的成本336b。在该示例中,当每个动作210 a-b具有造成潜在冲突的高成本336时,求解器332可试图优化运动结果以解决冲突命令之间的冲突或妥协。

  61.在一些配置中,在动态规划器330之前解决作为提示210h的动作210。换句线h是否与在同一时刻发生的其他动作210兼容。在这些配置中,当提示210h与在与提示210h相同的时刻发生的(多个)动作210兼容时,(多个)动作210被修改以结合提示210h的运动或提示210h的参数214。基于该过程,动态规划器330可接收已经由求解器332处的提示210h修改的动作210。

  62.在一些示例中,机器人100的控制器172在不使用动态规划器330的情况下进行动作210。换句线不是必需的。例如,特定的动作210不会造成关节控制冲突。换句线f在同一时刻发生时,操作手臂动作210a的控制器172可以在不利用动态规划器330的情况下对手臂126继续其自己的关节命令302。在一些示例中,当不需要优化时(例如,当在进行该动作210的(多个)运动期间仅发生一个动作210而没有潜在的关节干扰时),动作210绕过动态规划器330。在一些实现方式中,动作系统300被配置为不允许动作210绕过动态规划器330,即使对于基本动作210。在这种方法中,即使对于基本动作210也使用动态规划器330将有助于确保机器人100在动作210的运动期间服从现实世界的约束(例如,约束334)。这种方法还使得机器人100能够在运动期间保持平衡和运动流畅性。

  63.虽然并非所有动作210都必须利用动态规划器330,但在一些实现方式中,绕过动态规划器330并非基于使用不相交的关节j组的(多个)控制器172。相反,在一些示例中,动作系统300可使用轨迹(或

  )来避免多个控制器172试图命令相同关节j的情况。在一些情况下,使用动态规划器330实现许多但非全部控制器172。动态规划器330结合了提示210h以避免解析希望命令相同关节j的多个控制器172。

  64.在一些实现方式中,动作210为控制器172或提示210h。可选地,动作210可以是控制器172和提示210h两者。控制器172直接控制机器人100的关节j。在所示的示例中,控制器172接收提示210h作为以特定方式修改相应控制器172的行为的请求。舞蹈动作(例如,动作

  210)被分配给一个或多个轨迹(层224)。舞蹈动作在哪个(哪些)轨迹上进行是该单个舞蹈动作的类型的固有属性,而不是用户10选择的东西。例如,

  移动可能总是在主体轨迹上进行。轨迹定义它们的舞蹈动作是提示210h还是控制器172。在某些情况下,所有的腿和手臂移动都是控制器172,并且所有的主体运动都是提示210h。如果一个舞蹈动作使用多个轨迹,如果它们中的任何一个是控制器轨迹,则它是控制器172。动态规划器330是许多腿轨迹控制器使用的工具。它知道如何结合提示210h来修改它的行为。

  65.在一些实现方式中,为了生成机器人100的关节j的关节命令302,动作系统300考虑机器人100的当前状态338。这里,机器人100的当前状态338可以指与机器人100或机器人100的周围环境相关的任何测量。例如,当前状态338包括来自传感器系统130的关于机器人100试图执行动作210的时间(例如,由定序器320识别的时间)的传感器数据134。当前状态338的一些示例包括机器人100的位置、机器人100的速度和/或机器人100正在经受的力。当动作系统300考虑当前状态338时,动作系统300(例如,动态规划器330)可基于当前状态338更新约束334,以实现求解器332的精确优化。

  66.图4为生成控制机器人100的运动的命令的方法400的操作的示例布置。在操作402,方法400接收动作脚本202,该动作脚本202包括供有腿机器人100执行的多个动作210。这里,每个动作210与成本336相关联。在操作404,方法400识别该动作脚本202的多个动作210中的两个或更多个动作210在同一时刻发生。在操作406,方法400基于两个或更多个动作210和与两个或更多个动作210相关联的成本336来确定有腿机器人100在该时刻执行的组合动作。在操作408,方法400生成关节命令302以在该时刻控制有腿机器人100的运动,关节命令302命令有腿机器人100的一组关节j。这里,该一组关节j对应于组合动作。

  67.在一些示例中,多个动作210包括与有腿机器人100的主体l10的主体运动相对应的提示。这里,方法400确定该提示是否与在与该提示相同的时刻发生的多个动作210中的另一个动作210兼容,并且当该提示与该另一个动作210兼容时,修改该另一个动作210以结合该提示的主体运动。在一些实现方式中,接收该动作脚本202包括从与该数据处理硬件通信的用户设备20接收该动作脚本202。这里,该动作脚本202由用户设备20的用户10在用户设备20上运行的用户界面200处定义。在一些配置中,当动作脚本202包括舞蹈脚本并且每个动作210包括舞蹈动作时,方法400将舞蹈脚本的每个舞蹈动作与歌曲的节拍同步。

  68.图5为示例计算设备500的示意图,该示例计算设备500可用于实现本文件中所述的系统(例如,ui 200和/或动作系统300)和方法(例如,方法400)。计算设备500旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片式服务器、大型机和其他合适的计算机。这里所示的组件、它们的连接和关系以及它们的功能仅仅是示例性的,并不意味着限制本文件中描述和/或要求保护的发明的实现方式。

  69.计算设备500包括处理器510(例如,数据处理硬件)、存储器520(例如,存储器硬件)、存储装置530、连接至存储器520和高速扩展端口550的高速接口/控制器540,以及连接至低速总线和560中的每一个使用各种总线互连,并能安装在公共主板上或者以其他适当的方式安装。处理器510可以处理用于在计算设备500内运行的指令(包括存储在存储器520中的或在存储设备530上的指令),以在外部输入/输出设备(例如连接到高速接口540的显示器480)上显

  示图形用户界面(gui)的图形信息。在其他实现方式中,可以酌情使用多个处理器和/或多条总线,以及多个存储器和多种类型的存储器。此外,可以连接多个计算设备500,其中每个设备提供必要操作的部分(例如,作为服务器组、一组刀片服务器或多处理器系统)。

  70.存储器520在计算设备500内非暂时性地存储信息。存储器520可以是计算机可读介质、(多个)易失性存储器单元或(多个)非易失性存储器单元。非暂时性存储器520可以是用于在临时或永久的基础上存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(rom)/可编程只读存储器(prom)/可擦除可编程只读存储器(eprom)/电可擦除可编程只读存储器(eeprom)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、相变存储器(pcm)以及磁盘或磁带。

  71.存储设备530能够为计算设备500提供大容量存储。在一些实现方式中,存储设备530是计算机可读介质。在各种不同的实现方式中,存储设备530可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储器设备,或者设备(包括存储区域网络或其他配置中的设备)阵列。在附加的实现方式中,计算机程序产品有形地体现在信息载体中。该计算机程序产品包含指令,该指令当被进行时执行一种或多种方法(诸如上述那些方法)。信息载体是计算机或机器可读介质,诸如存储器520、存储设备530或处理器510上的存储器。

  72.高速控制器540管理计算设备500的带宽密集型操作,而低速控制器560管理较低带宽密集型操作。这种职责分配只是示例性的。在一些实现方式中,高速控制器540(例如,通过图形处理器或加速器)连接到存储器520、显示器580以及连接到可以接受各种扩展卡(未示出)的高速扩展端口550。在一些实现方式中,低速控制器560连接到存储设备530和低速扩展端口570。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口570可以(例如通过网络适配器)连接到一个或多个输入/输出设备(诸如键盘、定点设备、扫描仪)或网络设备(诸如交换机或路由器)。

  73.如图所示,计算设备500可以以多种不同的形式实现。例如,它可实现为标准服务器500a,或者在一组这样的服务器500a中多次实现为膝上型计算机500b、实现为机架服务器系统500c的部分、或者实现为机器人100的部分。

  74.这里描述的系统和技术的各种实现方式可以在数字电子和/或光学电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实现方式可以包括在可编程系统上可运行和/或可解释的一个或多个计算机程序中的实现方式,该可编程系统包括至少一个可编程处理器,可以是专用或通用的该可编程处理器被连接以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及将数据和指令发送到存储系统、至少一个输入设备和至少一个输出设备。

  75.这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并能用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来实现。如这里所使用的,术语

  指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号

  76.本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该一个或多个可编程处理器运行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流程也可以由专用逻辑电路(例如,fpga(现场可编程门阵列)或asic(专用集成电路))来执行。举例来说,适合于运行计算机程序的处理器包括通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地连接到用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),以从其接收数据或向其传送数据,或两者兼有。然而,计算机不需要有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如eprom、eeprom和闪存设备);磁盘(例如内部硬盘或可移动磁盘);磁光盘;以及cd rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路来补充或结合在专用逻辑电路中。

  77.为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实现,该计算机具有显示设备,例如crt(阴极射线管)、lcd(液晶显示器)监视器或用于向用户显示信息的触摸屏,以及可选的键盘和定点设备(例如鼠标或轨迹球),用户可以通过该定点设备向计算机提供输入。也可使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并能以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可通过向用户使用的设备发送文件和从用户使用的设备接收文件来与用户交互;例如,通过响应于从网络浏览器接收的请求,将网页发送到用户的客户端设备上的网络浏览器。

  78.已经描述了许多实现方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,能够直接进行各种修改。因此,其他实现方式在以下权利要求的范围内。

  如您需求助技术专家,请点此查看客服电线.功能涂层设计与应用 2.柔性电子器件设计与应用 3.结构动态参数测试与装置研发 4.智能机电一体化产品研发 5.3D打印工艺与设备

...
分享到
微信扫一扫
分享到朋友圈