CN114641375A - 动态规划控制器 - Google Patents
动态规划控制器 Download PDFInfo
- Publication number
- CN114641375A CN114641375A CN202080071819.0A CN202080071819A CN114641375A CN 114641375 A CN114641375 A CN 114641375A CN 202080071819 A CN202080071819 A CN 202080071819A CN 114641375 A CN114641375 A CN 114641375A
- Authority
- CN
- China
- Prior art keywords
- robot
- solution
- manipulation
- optimization problem
- legged robot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1615—Programme controls characterised by special kind of manipulator, e.g. planar, scara, gantry, cantilever, space, closed chain, passive/active joints and tendon driven manipulators
- B25J9/162—Mobile manipulator, movable base with manipulator arm mounted on it
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
- B25J9/163—Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
- B25J9/1653—Programme controls characterised by the control loop parameters identification, estimation, stiffness, accuracy, error analysis
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1679—Programme controls characterised by the tasks executed
- B25J9/1689—Teleoperation
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
- B25J9/1697—Vision controlled systems
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B62—LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
- B62D—MOTOR VEHICLES; TRAILERS
- B62D57/00—Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track
- B62D57/02—Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members
- B62D57/032—Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members with alternately or sequentially lifted supporting base and legs; with alternately or sequentially lifted feet or skid
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B13/00—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
- G05B13/02—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
- G05B13/04—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
- G05B13/042—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators in which a parameter or coefficient is automatically adjusted to optimise the performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40298—Manipulator on vehicle, wheels, mobile
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40444—Hierarchical planning, in levels
Abstract
动态规划控制器(200)接收操纵(210)和当前状态(202),并将操纵和当前状态转换为非线性优化问题(222)。非线性优化问题被配置为优化未知力和未知位置向量。在第一时间实例(Ii,to),控制器将非线性优化问题线性化为第一线性优化问题,并使用二次规划确定第一线性优化问题的第一解(232)。在第二时间实例(h,ti),控制器基于第一解来将非线性优化问题线性化为第二线性优化问题,并使用二次规划基于第一解来确定第二线性优化问题的第二解。控制器还基于第二解来生成关节命令(204)以在操纵期间控制机器人的运动。
Description
技术领域
本公开涉及一种动态规划控制器。
背景技术
机器人通常被定义为可重新编程且多功能的操纵器(manipulator),其被设计成通过可变被编程运动来移动材料、零件、工具或专用设备以用于任务的执行。机器人可以是物理锚定的操纵器(例如,工业机器人臂)、在整个环境中移动的移动机器人(例如,使用腿、轮子、或基于抓地的机械),或操纵器和移动机器人的一些组合。机器人用于各种行业,例如包括制造业、运输业、危险环境、勘探和医疗。因此,以快速且有效的方式为机器人编程以进行各种行为的能力给这些行业提供了附加的益处。
发明内容
本公开的一方面提供了一种用于动态规划器的方法。该方法包括在数据处理硬件处接收有腿机器人的操纵和该有腿机器人的当前状态。该操纵包括有腿机器人要执行的一个或多个移动事件。该方法还包括由数据处理硬件将有腿机器人的操纵和该有腿机器人的当前状态转换为非线性优化问题。该非线性优化问题被配置为优化未知力和未知位置向量。在第一时间实例,该方法包括由数据处理硬件将非线性优化问题线性化为第一线性优化问题,以及由该数据处理硬件使用二次规划确定第一线性优化问题的第一解。在第一时间实例之后的第二时间实例,该方法包括由数据处理硬件基于第一时间实例的第一解来将非线性优化问题线性化为第二线性优化问题,以及使用二次规划基于第一解来确定第二线性优化问题的第二解。该方法还包括由数据处理硬件基于第二解来生成关节命令,以在操纵期间控制有腿机器人的运动。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,该方法包括由数据处理硬件基于第二解和有腿机器人的前向动力学来确定综合解,以及由该数据处理硬件确定该综合解与第二解之间的比较满足优化阈值。在此实施方式中,该优化阈值指示相应解生成关节命令的准确度。将综合解和第二解(即优化的解)进行比较提供了线性化的准确性的测量。即,线性问题的解是否也是原非线性问题的解。
在一些示例中,在第二时间实例,该方法包括由数据处理硬件确定第二解不满足非线性约束,并为第二线性优化问题生成迭代约束。在此示例中,迭代约束包括基于第二解不满足非线性约束的线性约束。这里,在第二时间实例,该方法还包括由数据处理硬件使用二次规划来更新第二线性优化问题的第二解,该二次规划包括迭代约束。
在一些配置中,未知力对应于当有腿机器人执行操纵时有腿机器人脚处的力。未知位置向量可以对应于当有腿机器人执行操纵时有腿机器人的身体相对于有腿机器人的脚的位置。第一解和第二解中的每一个都可以包括有腿机器人的一条或多条腿抵靠表面的接触力、有腿机器人的一条或多条腿的触地位置、有腿机器人的一条或多条腿的触地位置、有腿机器人的一条或多条腿的触地时间或一条或多条腿的离地时间。
在一些实施方式中,该方法包括由数据处理硬件基于关节命令来指令有腿机器人的至少一条站立腿的关节,该关节命令包括至少一条站立腿的关节的关节扭矩。这里,该方法可以包括由数据处理硬件通过确定对应于至少一条站立腿的第二解的接触力满足至少一条站立腿的扭矩极限约束和至少一条站立腿的摩擦约束,来生成至少一条站立腿的关节的关节扭矩。
在一些示例中,有腿机器人对应于四足机器人。接收操纵可以包括从与数据处理硬件通信的用户设备接收操纵,并且操纵可以由用户设备的用户在用户设备上运行的用户接口处定义。
本公开的另一方面提供了一种机器人。该机器人包括身体、连接到身体的两条或更多条腿、以及与身体和两条或更多条腿通信的控制系统。该控制系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,当在数据处理硬件上运行时,这些指令使得数据处理硬件执行操作。这些操作包括接收机器人的操纵和机器人的当前状态,该操纵包括机器人要执行的一个或多个移动事件。这些操作还包括将机器人的操纵和当前状态转换为非线性优化问题。该非线性优化问题被配置为优化未知力和未知位置向量。在第一时间实例,这些操作包括将非线性优化问题线性化为第一线性优化问题,以及使用二次规划来确定第一线性优化问题的第一解。在第一时间实例之后的第二时间实例,这些操作包括基于第一时间实例的第一解将非线性优化问题线性化为第二线性优化问题。在第一时间实例之后的第二时间实例,这些操作还包括使用二次规划基于第一解来确定第二线性优化问题的第二解,以及基于第二解来生成关节命令,以在操纵期间控制机器人的运动。
这个方面可以包括以下可选特征中的一个或多个。在一些配置中,这些操作包括基于第二解和机器人的前向动力学来确定综合解,以及确定该综合解和第二解之间的比较满足优化阈值。在此配置中,该优化阈值指示相应解生成关节命令的准确度。
在一些实施方式中,在第二时间实例,这些操作包括确定第二解不满足非线性约束,并为第二线性优化问题生成迭代约束。这里,迭代约束包括基于第二解不满足非线性约束的线性约束。在此实施方式中,在第二时间实例,这些操作还包括使用二次规划来更新第二线性优化问题的第二解,该二次规划包括迭代约束。
在一些示例中,未知力对应于当机器人执行操纵时机器人脚处的力。未知位置向量可以对应于当机器人执行操纵时机器人的身体相对于机器人的脚的位置。第一解和第二解中的每一个都可以包括有腿机器人的一条或多条腿抵靠表面的接触力、有腿机器人的一条或多条腿的触地位置、有腿机器人的一条或多条腿的触地位置、有腿机器人的一条或多条腿的触地时间或一条或多条腿的离地时间。
在一些配置中,这些操作包括基于关节命令来指令机器人的两条或更多条腿中的至少一条站立腿的关节,该关节命令包括至少一条站立腿的关节的关节扭矩。这里,这些操作可以包括通过确定对应于至少一条站立腿的第二解的接触力满足至少一条站立腿的扭矩极限约束和至少一条站立腿的摩擦约束,来生成至少一条站立腿的关节的关节扭矩。
在一些实施方式中,机器人对应于四足机器人。机器人在接收操纵时可以包括从与数据处理硬件通信的用户设备接收操纵,并且操纵可以由用户设备的用户在用户设备上运行的用户接口处定义。
在附图和以下描述中阐述了本公开的一个或多个实施方式的细节。根据描述和附图以及权利要求书,其他方面、特征和优点将变得显而易见。
附图说明
图1A是在机器人环境中的示例机器人的透视图。
图1B是图1A的机器人的示例系统的示意图。
图2A-图2G是用于图1A的机器人的示例操纵控制器的示意图。
图3是用于使用操纵控制器使机器人执行操纵的操作的示例布置。
图4是可以用于实施本文所描述的系统和方法的示例计算设备的示意图。
各种附图中相同参考标号表示相同的元素。
具体实施方式
拥有或控制机器人的实体可能想要对机器人的移动进行预编程,例如可重复的移动例程。不幸的是,预编程的移动可能需要硬编码来生成期望的移动。硬编码通常是耗时的并且可能导致瓶颈,使得只有有限数量的人(例如,编码员)可以能够为机器人的移动进行编码。此外,对经编码的移动的修改或对经编码的移动的调试可能导致冗长的反馈循环(loop)以实施移动例程。换句话说,机器人通常缺乏快速创作机器人行为的手段。
预编程的移动的另一潜在问题是,它可能考虑或可能不考虑机器人周围的环境和/或机器人本身的物理特性。换句话说,对预编程的移动进行编码的人可能没有意识到在预编程的移动期间对机器人可能有其他约束。在不考虑这些其他约束的情况下,预编程的例程在运行期间可能会失败或损坏机器人或机器人周围的环境。例如,预编程的移动例程的编码员可能没有意识到机器人将在例程期间承载附加的25磅负载,或者该例程可能发生在具有静态或动态障碍物的动态环境中。这清楚地将考虑机器人在移动例程期间将经历的所有或大多数状况的负担施加到实体或编码员上,以便实现成功的移动例程。
为了克服这些问题中的一些,机器人100包括操纵控制器200,操纵控制器200能够在没有显著硬编码的情况下为机器人100构建移动。换句话说,操纵控制器200是提供灵活框架的控制器,用于以最少的用户输入生成动态机器人行为。利用这种灵活的框架,操纵控制器200用作一种快速原型流水线,其允许用户(例如,机器人操作员或机器人所有者)以降低的编程和/或工程劳动成本生成新的机器人行为(例如,移动例程或移动模式)。这里,操纵控制器200接收用户可读/可写的输入,并将这些输入转换为运动命令。
在一些示例中,用户10在用户设备20上为操纵控制器200生成操纵210。这里,用户设备20使用计算资源22、24(例如,数据处理硬件22和与数据处理硬件22通信的存储器硬件24)来运行一接口,该接口允许用户10定义操纵210。用户设备20的一些示例包括移动设备(例如,移动电话、平板电脑、膝上型电脑等)、个人计算机(PC)、工作站、终端或具有计算能力以产生操纵210的任何其他计算设备。在用户设备20处可访问的接口可以是基于网络(web)的(例如,从网络浏览器启动的基于网络的应用)、用户设备20本地的(例如,安装在用户设备20的计算资源22、24上和/或被配置为在其上运行),或者两者的某种组合。在一些实施方式中,用户设备20使用接口来使用有线或无线连接将操纵210通信传输给机器人100。例如,接口通过网络(例如,图1B所示的网络150)将操纵210通信传输给机器人100。
参考图1A,机器人100包括身体110,身体110具有基于运动(locomotion)的结构,例如耦接到身体110的腿120a-d,使得机器人100能够在环境30周围移动。在一些示例中,每条腿120是可铰接结构,使得一个或多个关节J准许腿120的构件122移动。例如,每条腿120包括将腿120的上部构件122、122U耦接到身体110的髋关节JH和将腿120的上部构件122U耦接到腿120的下部构件122L的膝关节JK。尽管图1A描绘了具有四条腿120a-d的四足机器人,但是机器人100可以包括任何数量的腿或基于移动的结构(例如,具有两条腿的两足或人形机器人),其提供了穿越环境30内的地形的手段。
为了穿越地形,每条腿120具有接触地形表面(即,抓地表面)的远端124。换句话说,腿120的远端124是机器人100使用的腿120的端部,以在机器人100移动期间枢转、植入或通常提供抓地力。例如,腿120的远端124对应于机器人100的脚。在一些示例中,尽管未示出,但是腿120的远端124包括踝关节JA,使得远端124可相对于腿120的下部构件122L铰接。
在一些示例中,机器人100包括起到机器人操纵器作用的臂126。臂126可以被配置为围绕多个自由度移动,以便接合环境30的元素(例如,环境30内的物体)。在一些示例中,臂126包括一个或多个构件128,其中构件128通过关节J耦接,使得臂126可以围绕关节J枢转或旋转。例如,在具有一个以上的构件128的情况下,臂126可以被配置为延伸或缩回。为了举例说明,图1A描绘了具有三个构件128的臂126,这三个构件对应于下部构件128L、上部构件128U和手构件128H。这里,下部构件128L可以围绕位于身体110附近的第一臂关节JA1(例如,臂126连接到机器人100的身体110的位置)旋转或枢转。下部构件128L在第二臂关节JA2处耦接到上部构件128U,并且上部构件128U在第三臂关节JA3处耦接到手构件128H。在一些示例中,手构件128H包括附加构件以使能不同类型的抓握。这些附加构件的范围可以从简单的两构件爪状手构件128H到模拟人手手指的更复杂的手构件128H。在一些实施方式中,臂126在机器人100的身体110上的承窝(socket)处连接到机器人100。在一些配置中,承窝被配置为连接器,使得臂126可以根据臂126是否需要用于操作而附接到机器人100或从机器人100分离。
机器人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平面。换句话说,矢状平面将机器人100分成左侧和右侧。通常垂直于矢状平面,地平面(也称为横向平面)通过在x方向轴AX和y方向轴AY的方向上延伸而横跨X-Y平面。地平面是指机器人100的腿120的远端124可以生成抓地力以帮助机器人100在环境30周围移动的地面12。机器人100的另一解剖平面是跨机器人100的身体110延伸的正面平面(例如,从具有第一腿120a的机器人100的左侧到具有第二腿120b的机器人100的右侧)。正面平面通过在x方向轴AX和z方向轴AZ的方向上延伸而横跨X-Z平面。
当有腿机器人在环境30周围移动时,机器人100的每条腿120可以与地面12接触或者不与地面12接触。当腿120与地面12接触时,腿120被称为站立腿120ST。当腿120不与地面12接触时,腿120被称为摆动腿120SW。当腿120从地面12离地(lift-off,LO)时,腿120从站立腿120ST转变为摆动腿120SW。相应的,在摆动腿不与地面12接触之后触地(touch down,TD)抵靠地面12时,摆动腿120SW也可以转变为站立腿120ST。这里,当腿120用作摆动腿120SW时,机器人100的另一条腿120可以用作站立腿120ST(例如,以保持机器人100的平衡)。
为了在环境30周围操纵,机器人100包括具有一个或多个传感器132、132a-n(例如,示为第一传感器132、132a和第二传感器132、132b)的传感器系统130。传感器132可以包括视觉/图像传感器、惯性传感器(例如,惯性测量单元(IMU))、力(force)传感器和/或运动学(kinematic)传感器。传感器132的一些示例包括相机,例如立体相机、扫描光检测和测距(LIDAR)传感器或扫描激光检测和测距(LADAR)传感器。在一些示例中,传感器132具有定义对应于传感器132的感测范围或区域的对应视场Fv。例如,图1A描绘了机器人100的视场FV。每个传感器132可以是可枢转的和/或可旋转的,使得传感器132可以例如围绕一个或多个轴(例如,相对于地平面的x轴、y轴或z轴)改变视场FV。
当用传感器132测量视场FV时,传感器系统130生成对应于视场FV的传感器数据134(也称为图像数据)。在一些示例中,传感器数据134是对应于由三维体积图像传感器132生成的三维体积点云的图像数据。附加地或替代地,当机器人100在环境30周围操纵时,传感器系统130收集机器人100的姿势数据,该姿势数据包括惯性测量数据(例如,由IMU测量)。在一些示例中,姿势数据包括关于机器人100的运动学数据和/或方位数据,例如,关于机器人100的腿120的关节J或其他部分的运动学数据和/或方位数据。通过利用传感器数据134,机器人100的各种系统可以使用传感器数据134来定义机器人100的当前状态(例如,机器人100的运动学的当前状态)和/或机器人100周围的环境30的当前状态。
在一些实施方式中,传感器系统130包括耦接到关节J的传感器132。在一些示例中,这些传感器132耦接到操作机器人100的关节J的马达M(例如,传感器132、132a-b)。这里,这些传感器132以基于关节的传感器数据134的形式生成关节动力学(dynamics)。作为基于关节的传感器数据134收集的关节动力学可包括关节角度(例如,上部构件122U相对于下部构件122L)、关节速度(例如,关节角速度或关节角加速度)和/或关节J处经受的力(也称为关节力)。这里,由一个或多个传感器132生成的基于关节的传感器数据134可以是原始传感器数据、被进一步处理以形成不同类型的关节动力学的数据134JD、或两者的某种组合。例如,传感器132测量关节位置(或耦接在关节J处的构件122的位置),并且机器人100的系统执行进一步的处理以从位置数据导出速度和/或加速度。在其他示例中,传感器132被配置为直接测量速度和/或加速度。
当传感器系统130收集传感器数据134时,计算系统140被配置为存储、处理传感器数据134和/或将传感器数据134通信传输给机器人100的各种系统(例如,控制系统170和/或操纵系统300)。为了执行与传感器数据134相关的计算任务,机器人100的计算系统140包括数据处理硬件142和存储器硬件144。数据处理硬件142被配置为运行存储在存储器硬件144中的指令,以执行与机器人100的活动(例如,移动和/或基于移动的活动)相关的计算任务。一般而言,计算系统140指的是数据处理硬件142和/或存储器硬件144的一个或多个位置。
在一些示例中,计算系统140是位于机器人100上的本地系统。当位于机器人100上时,计算系统140可以是集中式的(即,在机器人100上的单个位置/区域中,例如,机器人100的身体110)、分布式的(即,位于机器人100周围的各种位置)、或者两者的混合组合(例如,其中大多数集中式硬件和少数分布式硬件)。为了说明一些差异,分布式计算系统140可以允许处理发生在活动位置处(例如,在移动腿120的关节的马达处),而集中式计算系统140可以允许中央处理中枢(hub)与位于机器人100上各种位置处的系统通信(例如,与移动腿120的关节的马达进行通信)。
附加地或替代地,计算系统140包括位于机器人100远处的计算资源。例如,计算系统140经由网络150与远程系统160(例如,远程服务器或基于云的环境)通信。非常像计算系统140,远程系统160包括远程计算资源,例如远程数据处理硬件162和远程存储器硬件164。这里,传感器数据134或其他经处理的数据(例如,由计算系统140本地处理的数据)可以存储在远程系统160中,并且可以被计算系统140访问。在一些示例中,计算系统140被配置为利用远程资源162、164作为计算资源142、144的扩展,使得计算系统140的资源可以驻留在远程系统160的资源上。
在一些实施方式中,如图1A和图1B所示,机器人100包括控制系统170。控制系统170可以被配置为与机器人100的系统(例如至少一个传感器系统130)通信。控制系统170可以使用硬件140执行操作和其他功能。控制系统170包括至少一个控制器172,其被配置为控制机器人100。例如,控制器172基于来自机器人100的系统(例如,传感器系统130和/或控制系统170)的输入或反馈来控制机器人100的移动以穿越环境30周围。在一些实施方式中,控制器172控制机器人100的姿势和/或行为之间的移动。
在一些示例中,控制器172通过控制围绕机器人100的一个或多个关节J的移动来控制机器人100。在一些配置中,控制器172是具有编程逻辑的软件,其控制至少一个关节J或操作关节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)的移动。换句话说,对于一些操纵210,控制器172可以被配置为控制机器人100的多个部分的移动,例如两条腿120a-b、四条腿120a-d或者两条腿120a-b与臂126相结合。
在一些实施方式中,控制系统170的一个或多个控制器172包括操纵控制器200。操纵控制器200可以起到像控制系统170的其他控制器172一样的作用,但是另外能够为被称为操纵210的输入提供控制。换句话说,操纵控制器200是能够动态规划操纵210的控制器172。操纵210是稀疏地定义一个或多个移动事件212的控制规范。在一些示例中,操纵210是面向用户的,使得用户10编写定义操纵210的控制规范(例如,用一些基本编码)。尽管控制规范可包括某种程度的编码,但操纵210通常被设计成具有最小的规范。通过具有最小的规范,用户10可以能够快速地和/或有效地为机器人100生成新的行为和/或修改旧的行为。作为规范的一部分,用户10描述了用户10希望机器人100基于一个或多个移动事件212、212a-n执行的行为。例如,对于有腿机器人100,操纵210通常主要影响腿运动。这里,有腿机器人100的一些移动事件212包括脚124的触地和/或脚124的离地。在一些示例中,移动事件212按时间顺序描述了用户10希望机器人100在行为上做什么。换句话说,移动事件212包括移动(或无移动)和移动的持续时间。在此方面,移动事件212可以包括机器人100没有执行任何移动的移动暂停。例如,如果用户10想要机器人100执行倒立作为操纵210,则倒立操纵210的移动事件212可以描述机器人100的两条前腿120的触地,随后是机器人100的两条后腿120的离地,并以某个指定持续时间的暂停/等待时段结束(例如,保持倒立位置)。当操纵控制器200解释操纵210时,该操纵控制器200被配置为从操纵210的开始到操纵210的结束按时间顺序分析操纵210,使得操纵210本身在执行期间不会动态改变。
在一些实施方式中,操纵210是无状态的(stateless)。换句话说,操纵210仅关心用户10希望机器人100为行为做什么,而不关心机器人100当前正在做什么。这种无状态方式还可以简化用户10的操纵生成,因为用户10不必担心机器人100的潜在更复杂的当前动力学和/或机器人100周围的环境30的动力学。
在一些示例中,操纵控制器200接收一个以上的操纵210。例如,用户10生成一个以上的操纵210,并请求机器人100同时执行两个或更多个操纵210。在一些实施方式中,机器人100与接口通信,该接口包括用户10可以选择机器人100要执行的预编程的或硬编码的操纵210的列表。这里,尽管该接口包括有限数量的操纵210,但是该接口可以允许用户10以各种方式组合操纵210以用于更大的定制。对于具有很少或没有编码能力的用户10,或者当机器人所有者想要控制机器人100接收的操纵210的类型时,这种类型的受控定制可以是优选的。
一些操纵210可以被动地控制机器人100的部分(例如,机器人100的关节J),而其他操纵210主动地控制机器人100的部分(例如,机器人100的关节J)。换句话说,被动操纵210指的是修改主要行为的行为。关于关节控制,两个操纵210可以影响相似的关节J。例如,实际上来说,身体110的移动是通过对机器人100的至少一条腿120的至少一个关节J进行改变而发生的。然而,当腿120的关节J已经被分配给操纵210(例如,对于脚步操纵210或腿操纵)时,身体110的移动可能导致关节控制干扰。换句话说,身体操纵210是次要考虑,当它不会干扰例如腿操纵210时,它可能影响关节控制。在一些示例中,为了防止由关节干扰引起的问题,某些操纵210在创建期间被指定为被动操纵210或主要操纵210。在一些实施方式中,操纵控制器200确定操纵210是否是被动操纵210,并且当操纵210是被动操纵210时,建议对主要行为或与主要行为相关联的操纵210的行为修改。这里,可以修改行为的操纵210被称为提示。当提示在特定时间实例发生时,每个其他活动控制器172(例如,操纵控制器200)考虑该提示。当控制器172解释该提示时,控制器172可以确定该提示对应于与控制器172控制的关节J不同的关节J,并且忽略修改其针对该提示的控制器行为。当该提示对应于相同的关节J时,控制器172可以将该提示的行为修改并入到它自己的行为中。
参考图2A-图2G,操纵制器200包括问题生成器220和求解器230。问题生成器220被配置为将操纵制器200接收的操纵210转化成使得该操纵系统200能够执行运行或试图运行操纵210的移动控制的格式。在一些示例中,为了运行一个或多个操纵210,操纵系统200考虑机器人100的当前状态202。更具体地,在隔绝的环境中运行操纵210而不考虑机器人100的当前状态202可能显著降低机器人100成功运行操纵210的能力。由于操纵210是无状态的,问题生成器220通过将操纵210与机器人100的当前状态202组合来为求解器230形成问题222。这里,由问题生成器220形成的问题222是面向求解器的。作为面向求解器的,在一些示例中,问题222不必是人类可读的格式,而是可以是机器可读的格式。此外,由于问题222包括机器人100的当前状态202,所以问题222是有状态的。
在一些实施方式中,问题生成器220生成问题222,该问题222包括时间划分。这些时间划分被称为时间步长224。在将操纵210与问题222进行比较时,操纵210在移动事件212中操作,移动事件212一般说移动何时改变,而问题222描述在时间步长224期间做什么。在一些配置中,时间步长224是固定大小的(例如,五十毫秒)。时间步长224的大小可以对应于操纵210的移动事件212之间的定时。例如,问题生成器220通过确定每个指定移动事件212之间的时间来确定时间步长224的大小。一旦问题生成器220确定了每个相邻移动事件212之间的时间,移动事件212之间的最低时间量可以变成时间步长224的固定大小,或者对应于时间步长224的固定大小的倍数。一般来说,问题生成器220划分操纵210,使得移动事件212发生在时间步长224的边界224b处。
当将操纵210划分成时间步长224时,问题生成器220可被配置为意识到太多时间步长224在计算上是昂贵的。由于这些花费,在一些示例中,问题生成器220组合时间步长224。在组合时间步长224的一种方式中,问题生成器220生成时间步长224,使得时间步长224的大小在操纵210的将来越来越长。换句话说,时间步长224在持续时间方面变得越来越长。在一些实施方式中,即使时间步长224变得更长,更长的时间步长224也是初始时间步长224(即,最短的基本时间步长单位)的整数倍。该方式允许操纵210在不久的将来具有带有最短基本时间步长单位的细粒度时间指令,并且在操纵210的将来具有更长的越来越粗的粒度时间指令。在一些配置中,问题生成器220将最大数量的时间步长224通信传输给求解器230。这里,时间步长224的最大数量可以预先确定(例如,为了保持求解器230的计算速度)。尽管问题生成器220可以生成多于最大数量的时间步长224,并且求解器230仍将起作用,但是最大数量允许求解器230例如保持计算效率和及时吞吐量。
为了说明,图2A描绘了被分成时间步长224的操纵210。这里,操纵210还包括四个事件212、212a-d,其中第一事件212、212a是第一腿120、120a的离地,第二事件212、212b是第一腿120、120a的触地,第三事件212、212c是第二腿120、120b的离地,第四事件212、212d是第二腿120、120b的触地。在此示例中,接近当前时间(如时钟所示),对于四个时间步长224、224a-d,时间步长224在长度上是单个时间步长单位,然后接下来的两个时间步长224、224e-f被组合成单个时间步长224(例如,如虚线所示)。在组合的两个时间步长224e-f之后,是另一个单个时间步长224、224g,接着是两个时间步长的两个组合的集合:第一时间步长224、224h-i的集合和第二时间步长224、224j-k的集合。在第二时间步长224j-k的集合之后,是另一单个时间步长224、224l,接着是三个时间步长224、224m-o的集合。在三个时间步长224、224m-o的集合之后,操纵210以两个时间步长224、224p-q的集合结束。在此示例中,时间步长224的组合通常遵循这样的模式,即四个基本时间步长的集合,接着是四个两倍基本时间步长的集合,接着是四个三倍基本时间步长的集合。这里,这种模式被移动事件212轻微破坏。即使时间步长224可以被组合,问题生成器220保持在移动事件212处有时间步长边界。换句话说,如图2A所示,单个时间步长224g通常将是更大时间步长224的一部分,除了第二移动事件212b和第三移动事件212c形成单个时间步长224g的边界224b。在这种情形下,如果单个时间步长224g被组合到更大的时间步长224,则操纵210的移动事件212b-c之一或两者可能缺少重要的时间细节(例如,这对操纵210的成功可能是关键的)。
在一些示例中,不同于操纵210,问题222贯穿整个操纵210变化。例如,问题222在每个时间步长224都发生变化。图2B是描绘问题生成器220在操纵210期间生成新问题222的示例。这里,问题生成器220为整个操纵210生成第一问题222、222a。然后,在操纵210中途,问题生成器220为操纵210的后半部分生成第二问题222、222b。当求解器230是通过了操纵210的大部分时(例如,通过了操纵210的90%),问题生成器220为操纵210的剩余部分(例如,剩余的10%)生成第三问题222、222c。通过使问题222适应时间步长224的每个变化,问题生成器220确保求解器230解决了最当前的问题222。
在一些实施方式中,例如图2C,问题生成器220被配置为基于在操纵控制器200处接收的提示,来确定是否修改操纵210。例如,当操纵控制器200接收到作为第一操纵210、210a的提示和无提示的第二操纵210、210b时,问题生成器220确定提示210a是否对应于与操纵控制器200控制的关节J不同的关节J。当提示210a对应于与操纵控制器200控制的关节J不同的关节J时,操纵控制器200忽略修改无提示的第二操纵210、210b的移动行为(未示出)。然而,当提示对应于相同的关节J时,问题生成器220可将提示210a的行为修改并入到第二操纵210b的行为中(例如,示为经修改的操纵210ab)。在一些示例中,问题生成器220基于每个操纵210的规范,来识别操纵210的关节J。这里,规范可以识别哪些关节J被委派给操纵210。
在一些示例中,问题生成器220帮助解决机器人100的当前状态202与机器人100的预期状态之间的不一致。换句话说,机器人100的当前状态202可能不同于机器人100的预期状态,使得这种变化可能导致求解器230准确识别操纵控制器200的行为控制的问题。例如,根据机器人100的操纵210和时钟,机器人100应该在地面12上具有两条腿120、120a-b,但测量的状态(即,当前状态202)反映出机器人100仍然有第一条腿120、120a(例如,作为摆动腿120SW)在空中,其还没有触地(即,延后触地)。这里,问题生成器220通过并入机器人100的当前状态202来确保求解器230不会错误地确定不考虑当前状态202所识别的延后触地的解232。类似于延后触地,问题生成器220也可以识别(例如,通过当前状态202)腿120具有提早触地。
继续参考图2A-图2F,求解器230从问题生成器220接收问题222,并输出问题222的解232。在一些示例中,求解器230基于并入问题222的当前状态202来识别机器人100的初始状态234。例如,当操纵控制器200主要处理有腿机器人100的移动时,初始状态234包括哪些脚124当前与地面12接触,以及这些脚124在哪里与地面接触。初始状态234还可以包括机器人100的身体110的初始动力学,例如身体110的位置、身体110的速度和/或身体110的方位。在一些示例中,根据并入问题222的操纵210,问题222包括标称离地和/或触地时间以及标称离地和/或触地位置(例如,示为TD/Lox,t)。这里,术语“标称”表示离地/触地时间和离地/触地位置是由操纵210指定的目标(例如,来自创作操纵210的用户10)。在这些示例中,操纵210还可指定定义接触表面(例如,地面12)的方向的接触法线。这里,有接触法线的情况下,机器人100(例如,在解算器230处)可以能够确定摩擦锥,该摩擦锥识别不同的力可以如何在没有滑动或者没有滑动的阈值风险的情况下被施加到接触表面。求解器230还接收成本(cost)函数214(例如,由操纵210指定)作为问题222的一部分。成本函数214是指操纵210的最终姿势PF的识别和/或指定该最终姿势PF的重要性的值。在一些示例中,成本函数214更复杂,使得操纵210在操纵210内的不同时间具有不同重要性的多个姿势P,这些姿势P被并入到求解器230的问题222中。
基于这些输入,求解器230生成解232。作为解232的部分,求解器230确定用以执行操纵210的接触力236。在一些示例中,除了接触力236之外,解232包括实际触地/离地定时和/或实际触地/离地位置。这里,触地/离地定时和触地/离地位置被称为实际的,因为求解器230可以基于求解器230的优化来调整标称离地/触地定时和离地/触地位置。在一些情况下,解232包括触地/离地定时,但仅包括触地位置。通过能够调整标称输入,机器人100可以更加鲁棒,因为机器人100可以适应来自环境30的反馈(例如,某物碰撞机器人100)或行为中的干扰(例如,摔倒或绊倒)。附加地或替代地,能够调整触地定时和/或位置允许操纵210的移动事件212更容易地被创作,而无需考虑关于定时或位置的精确输入(例如,对于机器人100的腿120)。换句话说,用户10只需创作近似可行的行为(即,创建操纵210),并且求解器230可以确定实际可行的解232。间接来说,求解器230还可以确定机器人100的COM和机器人100的方位轨迹。这里,求解器230间接确定COM和方位轨迹,因为这些值可以从解的接触力236和前向动力学中导出。前向动力学(forward dynamics)通常是指使用身体的力(或扭矩)来预测身体每个部分的方位。换句话说,通过知道机器人100的结构关系并确定用以执行操纵210的接触力236,前向动力学可以预测机器人100在操纵210期间的动力学和/或运动学。或者,求解器230可以将机器人身体110建模为具有单个部分。
求解器230试图确定机器人100的方位,其中方位是问题222的基于扭矩的解232。通过寻求基于扭矩的解,求解器230关注机器人100的扭矩,该扭矩被测量为力乘以位置向量。这里,如果求解器230试图确定这些项中的一项(例如,力或位置向量任一者),求解器230将能够利用其中求解过程将是线性的情况下的二次规划(QP)。不幸的是,由于求解器230试图优化未知力项和未知位置向量项两者(即,二次项),求解器230不能依赖于其基本形式的传统QP。相反,求解器230将问题线性化。
在一些实施方式中,求解器230试图同时确定身体110相对于脚124的位置(即,位置向量项)以及脚124处的力(即,力项)的解。这里,由于求解器230试图求解这些变量两者,所以问题222是非线性优化问题(例如,二次问题)而不是线性优化问题。通常,这意味着求解器230不能用QP优化。然而,其他更一般的优化方法不如QP有效,因为更一般的求解器(例如,序列二次规划)花费明显更多的时间量,并因此不能使机器人100满足速度要求,该速度要求允许机器人100在执行操纵210时在平衡或机器人物理方面是反应性的或甚至是主动性的。为了克服这个问题,求解器230通过做出一些假设将问题222从非线性优化问题222(例如,二次问题)转换为线性优化问题222来线性化动力学。为了解释该变换,求解器230想要确定是两个变量(即,力和位置向量)的乘积的力矩,而实际上无法将这些变量相乘。在一些示例中,求解器230将这两个变量的乘积表示为不准确的线性表示。然而求解器230通过对每个变量的猜测或估计的错误程度的乘积来表示这种不准确性。因此,随着对每个变量的猜测改善,固有误差(即线性化的不准确性)会缩小。
在一些实施方式中,求解器230被配置为在每个时间步长224确定与地面12接触的每条腿120的接触力236。这里,接触力236是三维力(例如,可以包括x、y和/或z方向上的力分量)。对于每个时间步长224,求解器230可以假设接触力236是分段常数。换句话说,求解器230可以假设接触力236在特定时间步长224期间不变。在一些配置中,求解器230将机器人100的身体状态238定义为机器人100的COM位置、机器人100的COM速度、机器人100的方位(例如,基于欧拉角或四元数)、以及机器人100在世界参考系中的角速度。当求解器230确定接触力236时,求解器230可使用前向动力学来确定在操纵210的每个时间步长224的身体状态238。
在一些示例中,由求解器230定义的机器人100的身体状态238是机器人100的简单刚体模型。换句话说,求解器230不认为机器人100是具有耦接到机器人100的身体110的铰接关节腿120的有腿机器人100。通过将机器人100建模为简单刚体,由求解器230确定的身体状态238可能具有一些不准确性。例如,由于机器人100比简单刚体更复杂,因此从机器人100的身体状态238导出的机器人100的动力学可能具有某种程度的不准确性,而机器人100的运动学可以相当准确。在一些示例中,机器人100的方位不是根据刚体针对身体状态238来定义,而是根据机器人100的自然姿势来定义,其中自然姿势考虑了机器人100的附加惯性体(例如,关节腿120、臂126、构件128等)。这里,通过使用自然姿势,在机器人100的动力学(例如,腿120的运动)的增加的准确度但关于机器人100的运动学的降低的准确度(例如,关于髋关节JH位于机器人100上的位置的准确性)之间存在折衷。在一些配置中,求解器230使用机器学习(例如,神经网络)来混合每种方式的优点。例如,求解器230根据自然姿势来定义机器人100的身体状态238的方位,但是使用机器学习来确定运动学的偏移,使得机器人100的动力学仍然准确,并且使用自然姿势的机器人100的运动学的准确性增加。
在一些示例中,来自求解器230的解232包括对触地定时的调整和/或对触地位置的调整。例如,在操纵210,用户10指定触地定时和/或触地位置是否可调整。当用户10指定可以调整触地定时和/或触地位置时,求解器230可以确定这些调整(例如,如果优化指示调整)作为解232的部分。
参考图2D,在一些示例中,求解器230迭代地生成一个或多个解232。这里,当求解器230迭代地生成解232时,问题222针对每次迭代I而改变。该方式与更一般的求解器形成对比,例如序列QP。当序列QP求解一个QP时,序列QP使用它的解来重新线性化和求解相同QP。尽管这是一种基于迭代的方式,但序列QP不允许优化问题在再求解之间发生变化。在求解器230的情况下,当求解器230最初在第一次迭代I,I1求解QP时,第一解232、232a不对应于准确的解232,因为做出了将问题222从非线性优化问题222(例如,二次问题)转换为线性优化问题222的假设。然而,由于从非线性优化问题222(例如,二次问题)到线性优化问题222的转换,使得第一解232a成为不准确解232的线性化误差是二次的,使得该误差可以被迭代地减小以收敛于准确解232。因此,为了生成比第一解232a更准确的解232,第一解232a被反馈到求解器230中,作为对问题222的下一次迭代I、I2的线性化的猜测。这里,问题222在每次迭代I时改变,因为问题222考虑了机器人100的当前状态202,并且当前状态202随着时间的流逝而更新。换句话说,即使当问题222的迭代I之间可能存在少量时间时(例如,对于机器人100,试图在时钟的每个滴答t求解问题222),对于求解器230,问题222也会改变。通过使用先前迭代I的解232作为当前迭代I的线性化估计,求解器230缩小了每次迭代I的误差,以收敛于准确的解232。可以通过将解232(例如,在每次迭代I)与综合解(integratedsolution)232i进行比较来测量解232的质量。求解器230通过使解232运行通过机器人100的前向动力学来生成综合解232i。为了说明,来自求解器230的第一解232a通常是差的解,因为线性化发生在初始点周围,而对于初始点将为求解器230提供的解232的准确性知之甚少或一无所知。第二解232、232b然后变得更加准确,因为线性化以已知的精确性发生在第一解232a周围。通常,第二解232b具有可用于由操纵控制器200进行的行为控制的精度,但是后续的解,例如第三解232、232c或第四解232、232d,通常对于由操纵控制器200进行的行为控制更加精确。
在一些实施方式中,求解器230将动力学线性化,这产生了具有二次成本函数的问题,求解器230可以将其公式化为QP,并用QP求解器求解。如果求解器230不能使动力学线性化,成本函数将会比二次更复杂或更高阶。这不能被公式化为QP,并因此也不能用QP求解器求解。可以求解这类问题的更通用求解器的一个示例叫做序列二次规划(SQP)。SQP做的事情类似于求解QP,并用这个解重新线性化一个新的QP。因此,在一些情况下,求解器230对原始非线性问题运行SQP求解器,同时还允许非线性问题在QP迭代之间改变。此外,重新线性化的解不断改变,而不是一旦完成就重新开始。
可选地,求解器230可以被配置为通过确定综合解232i与任何相应解232之间的比较满足优化阈值,来确定哪个解迭代提供足够的准确性来控制操纵210的移动。这里,优化阈值是指示解232将具有成功执行操纵210的可能性的预定准确度。在一些示例中,该比较是不同的比较。在其他示例中,比较是比率比较(例如,很像百分产率)。
在一些实施方式中,求解器230的QP是成本函数和一些数量的线性约束。求解器230试图满足这些成本约束,以便实现问题222的优化。这些成本约束可以是用户在操纵210处指定的、对求解器230通用的、和/或可由实体(例如,用户10)控制的其他设置。在一些示例中,求解器230包括成本项240以最小化接触力236。成本项240的另一示例是求解器230试图实现目标姿势PT,其中目标姿态PT具有相关联的值(例如,所分配的重要性成本)。目标姿势PT可以仅发生在操纵210的移动轨迹的结束(即,作为最终姿势PF),或者目标姿势PT可以发生在操纵210内的其他时间(例如,在每个时间步长224或一个或多个指定的时间步长224)。求解器230的其他潜在成本项240包括与标称触地定时和/或标称触地位置的最大和/或最小偏差。这里,这些成本项240可以规定触地的位置和定时对用户10有多重要。附加地或替代地,用户10可以包括指定髋部相对于脚124的位置的成本项240。问题222也可以被配置为使得用户10可以包括定制成本项240(例如,定制移动)。例如,用户10规定成本项240,其指示机器人100应该向特定方向跳得尽可能高或者倾斜得尽可能远。在一些配置中,求解器230包括成本项240,以最小化用于操纵210的关节J的关节扭矩(或最大化关节扭矩)。尽管这些成本项240中的每个都被单独描述,但是求解器230可以受制于这些成本项240中的一个或多个(例如,以任何组合)。
约束可以是不等式约束或等式约束任一者。在一些示例中,求解器230包括摩擦约束240f(例如,作为不等式)。由于接触力236是求解器230的优化变量,所以摩擦约束240f可以直接写成依赖于这些优化变量。这里,摩擦约束240f的配置通常类似于具有圆锥形或棱锥形(例如,四边三维棱锥)的函数。为了将摩擦约束240f实施为圆锥,求解器230可以使用迭代约束(例如,腿长约束)。在这些示例中的一些示例中,摩擦约束240f的函数通过使函数的最小值为正的非零数来适应具有轻微不准确性(例如,在小的力值下)的控制器172。
在一些实施方式中,求解器230使用迭代约束240、240i。迭代约束240i指的是利用求解器230的特征的约束240,其中求解器230可以添加附加约束240并继续求解或执行快速解232而不重新开始问题222。当约束240通常被最好地表达为非线性函数时,迭代约束240i可以是有用的,但是这种类型的约束240与求解器230的QP不兼容。求解器230不是试图将非线性函数表示为几个单独的线性约束240的近似,而是首先生成没有迭代约束240i的解232。然后检查解232,以确定解232是否会违反目标非线性约束240。当求解器230识别出解232将违反目标非线性约束240时,求解器230可以生成迭代约束240i。这里,迭代约束240i进一步将解232约束为线性约束,该线性约束在求解器230求解问题222时与求解器230兼容。通过首先求解没有非线性约束的问题,求解器230可以更好地确定非线性约束的什么线性近似将是最准确的。
例如,图2E示出了表示腿长约束240的虚线圆,其中机器人100的腿120的长度可以被约束为机器人100的髋部(例如,髋关节JH)的位置的函数。换句话说,只要髋关节JH的位置在虚线圆内,机器人100将满足腿长约束240。不幸的是,虚线圆将是非线性约束240、240n1。这里,求解器230生成机器人100的第一解232、232a(例如,示为第一框),并且识别出第一解232a将违反表示机器人100的髋部位置的虚线圆的非线性约束240nl。由于此违反,求解器230生成迭代约束240i,其被示为与第一解232a附近的圆上的点相切的线。利用迭代约束240i,求解器230生成第二解232、232b(例如,示为第二框),其中第二解232、232b的一些部分在虚线圆的非线性约束240nl内。这里,第一解232a和第二解232b出现在相同的QP迭代I1、t0期间,使得求解器230不重新线性化问题222(即,解232a-b发生在相同的时间滴答t0)。迭代约束240i在线性化迭代期间用作补充约束。换句话说,迭代约束240i发生在给定问题222内的迭代中,而当求解器230在新的或随后的未来时间(例如,随后的时间滴答t1)求解问题222时,发生线性化迭代。求解器230可以包括关于最大腿长或最小腿长的约束240。
求解器230的约束240的另一示例是髋部约束240、240h。这里,髋部约束240h表示每条腿120的上部构件128U具有有限的运动范围,以在X-Z正面平面(也称为身体平面)中围绕y方向轴AY在髋关节JH处旋转。上部构件128U的过度旋转将对机器人100的身体110造成冲击或干扰。在一些实施方式中,髋部约束240h被表示为X-Z正面平面中的线,该线约束机器人100的脚124的脚位置,脚124对应于具有上部构件128U的腿120。通过约束脚位置的X-Z位置,上部构件128U不应造成过度旋转问题。
在一些示例中,存在对离地/触地的定时和/或位置的约束240。尽管用户10可以指定求解器230能够调整触地/离地定时和/或触地/离地位置,但是这些调整可以包括约束240,约束240标识这些调整的范围或程度。例如,触地位置的约束240被表示为多边形区域,其中该多边形区域表示合法触地区域。
利用解232,操纵控制器200被配置为执行对应于问题222的操纵210的行为(例如,行为的优化版本)。换句话说,操纵控制器200必须实际上将解232转化成一个或多个命令204以执行操纵200。例如,操纵控制器200生成命令204,该命令(例如,被称为关节命令204)控制对应于操纵210的一个或多个关节J以执行操纵210。这里,命令204可以基于来自求解器230的解232将关节扭矩TJ分配给关节J。附加地或替代地,命令204可以向关节J分配期望的位置/速度。通常,站立腿是扭矩控制的,但是摆动腿是位置控制的。
在一些实施方式中,对于有腿机器人100,操纵控制器200通过处理站立腿120ST和/或摆动腿120SW来执行行为。为了执行腿120的处理,操纵控制器200可以具有不同的协议来将解232应用于站立腿120ST和/或摆动腿120SW。在一些配置中,例如图2F-图2G,为了将来自求解器230的解232转换成实际的移动控制,操纵控制器200还包括处理机250。在一些示例中,处理机250通常被配置为从解232中识别接触力236、触地位置和/或触地定时,并实施解232的这些部分以控制站立腿120ST和/或摆动腿120SW。在这些配置中,处理机250接收以下作为输入:来自解232的接触力236,作为站立腿120ST的目标力;站立腿120ST的关节J的扭矩限制约束240、240t;和摩擦约束240f。基于这些输入,处理机250确定施加在站立腿120ST的关节J处的关节扭矩TJ。在一些配置中,为了使处理机250基于解232来控制机器人100的一条或多条站立腿120ST,处理机250可以包括优化模型252,例如QP,其接收输入并确定关节扭矩TJ以施加在站立腿120ST的关节J处(例如,如图2G所示)。通过使用处理机250,操纵控制器200可以确保当控制一条或多条站立腿120ST时,实际考虑了可能已经在求解器230处被违反或被部分违反的约束240(例如,通过求解器230处的折衷)。否则,实际控制对于实现操纵210和/或在操纵210期间保持平衡可能是有问题的。为了说明,求解器230可以确定服从摩擦约束240但不服从扭矩限制约束240t的接触力236。在这个示例中,如果处理机250考虑了扭矩限制约束240t,但是没有考虑摩擦约束240f,则处理机250可以修改关节扭矩TJ以符合扭矩限制约束240t,并且在站立腿120ST的实际控制期间违反摩擦约束240f。为了克服这些问题,处理机250被配置为复制约束240,以确保对机器人100的最佳实际控制。处理机250可以包括用于机器人100的每条腿120的单独优化模型,或者可以包括用于多条腿120的更大的优化模型,其能够在多于一条腿120之间分配关节控制(例如,补偿腿120之间的不足)。
基于来自求解器230的解232(例如,基于解232的触地位置和/或触地定时),摆动腿120SW可以由操纵控制器210(例如,由处理机250)以多种方式控制。在一些示例中,操纵控制器210根据操纵210的规范控制摆动腿120SW。例如,用户10指定操纵210中摆动腿120以触地为目标的路点。这里,由操纵210指定的路点可以根据时间或根据位置来指定。在用户10根据位置指定路点的位置的情况下,操纵控制器200可以确定对应于此位置的定时。在一些特殊情况下,操纵控制器200被配置为使用解232来命令摆动腿移动,使得摆动腿120SW触地垂直表面(即,具有明显非垂直法线的表面)而不是相对水平的表面(例如,地面12)。在一些配置中,操纵控制器200采用摆动腿控制技术,如于2019年8月6日提交的题为“Leg SwingTrajectories”的美国申请第62/883,502号中所描述,该申请通过引用并入本文,以基于来自求解器230的解232来控制机器人100的一个或多个摆动腿120SW。
在一些实施方式中,求解器230可以花费可变的时间量来完成。此外,如果有许多活动约束240,求解器可能花费特别长的时间,这通常意味着它正在做一些困难的事情。操纵控制器200可通过取消求解器230对解232的运行并使用具有更短运行时间的仅部分优化的解232来处理该问题。此外,由于求解器230可能依赖于围绕先前解的线性化,因此求解器230可能需要几次迭代来收敛,在此期间可能发生坏解232。然而,求解器230通过使用线性化进行得有多好的度量来知道这何时发生。作为响应,控制系统170可以指定备用控制器172、200,其可能不是非常最优的,但是对于期望的控制器172、200要收敛所需的几个时间步长(例如,通常<10ms)来说是可接受的。通过将该控制器172指定为备用控制器172,控制系统170可以继续做它之前正在做的任何事情。
图3是动态规划至少一个操纵210的方法300的操作的示例布置。在操作302,方法300接收机器人100的操纵210和机器人100的当前状态202,其中操纵210包括机器人100要执行的一个或多个移动事件212。在操作304,方法300将机器人100的操纵210和当前状态202转换为非线性优化问题222,其中非线性优化问题222被配置为优化未知力和未知位置向量。在操作306,方法300在第一时间实例I1、t0执行两个子操作306、306a-b。在子操作306a,方法300将非线性优化问题222线性化为第一线性优化问题222、222a。在子操作306b,方法300使用二次规划确定第一线性优化问题222a的第一解232、232a。在操作308,方法300在第二时间实例I1、t0执行两个子操作308、308a-b,其中第二时间实例I2、t1在第一时间实例I1、t0之后。在子操作308a,方法300基于第一时间实例t0的第一解232a来将非线性优化问题222线性化为第二线性优化问题222、222b。在子操作308b,方法300使用二次规划基于第一解232a来确定第二线性优化问题222b的第二解232、232b。在操作310,方法300基于第二解232b来生成关节命令204以在操纵210期间控制机器人100的运动。
在一些示例中,方法300还基于第二解232b和机器人100的前向动力学确定综合解232i,并且确定综合解232i与第二解232b之间的比较满足优化阈值,其中优化阈值指示相应解232生成关节命令204的准确度。在一些实施方式中,方法300进一步确定第二解232b不满足非线性约束240、240n1,并且为第二线性优化问题222b生成迭代约束240、240i,其中迭代约束240i包括基于第二解232b不满足非线性约束240n1的线性约束。这里,方法300还使用二次规划更新第二线性优化问题222b的第二解232b,其中二次规划包括迭代约束240i。
图4是示例计算装置400的示意图,该示例计算装置400可以用于实施本文中所描述的系统(例如,操纵控制器200)和方法(例如,方法300)。计算设备400旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。这里所示的组件、它们的连接和关系以及它们的功能仅仅是示例性的,并不意味着限制本文件中所描述和/或所要求保护的发明的实施。
计算设备400包括处理器410(例如,数据处理硬件)、存储器420(例如,存储器硬件)、存储设备430、连接到存储器420和高速扩展端口450的高速接口/控制器440、以及连接到低速总线470和存储设备430的低速接口/控制器460。组件410、420、430、440、450和460中的每个使用各种总线互连,并且可以安装在公共主板上或者以其他适当的方式安装。处理器410可以处理用于在计算设备400内运行的指令,包括存储在存储器420中或存储设备430上的指令,以在外部输入/输出设备(例如耦接到高速接口440的显示器480)上显示图形用户界面(GUI)的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和多种类型的存储器。此外,可以连接多个计算设备400,每个设备提供必要操作的部分(例如,作为服务器组、一组刀片服务器或多处理器系统)。
存储器420在计算设备400内非暂时性地存储信息。存储器420可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器420可以是用于临时或永久存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。
存储设备430能够为计算设备400提供大容量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储器设备,或者设备阵列,包括存储区域网络或其他配置中的设备。在附加的实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含指令,当运行时,这些指令执行一个或多个方法,例如上面所描述的那些方法。信息载体是计算机或机器可读介质,例如存储器420、存储设备430或处理器410上的存储器。
高速控制器440管理计算设备400的带宽密集型操作,而低速控制器460管理较低带宽密集型操作。这种职责分配仅是示例性的。在一些实施方式中,高速控制器440耦接到存储器420、显示器480(例如,通过图形处理器或加速器),并且耦接到高速扩展端口450,高速扩展端口450可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器460耦接到存储设备430和低速扩展端口490。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口490可以通过例如网络适配器耦接到一个或多个输入/输出设备,例如键盘、定点设备、扫描仪或诸如交换机或路由器的网络设备。
如图所示,计算设备400可以以多种不同的形式实施。例如,它可以被实施为标准服务器400a或者在一组这样的服务器400a中多次实现为膝上型计算机400b、机架式服务器系统400c的部分或者机器人100的部分。
本文所描述的系统和技术的各种实施方式可以在数字电子和/或光学电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些不同的实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,该可编程系统包括至少一个可编程处理器,该可编程处理器可以是专用或通用的,其被耦接以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向其发送数据和指令。
这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或汇编/机器语言来实施。如本文所使用的,术语“机器可读介质”和“计算机可读介质”指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中所描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流程也可以由专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行。举例来说,适于运行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括或可操作地耦接到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传送数据,或两者兼有。然而,计算机不需要有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括举例来说半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)、LCD(液晶显示器)监视器或触摸屏,以及可选的键盘和定点设备,例如鼠标或轨迹球,用户可以通过其向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户的客户端设备上的网络浏览器发送网页。
已经描述了许多实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其他实施方式也在以下权利要求的范围内。
Claims (20)
1.一种方法(300),包括:
在数据处理硬件处接收有腿机器人(100)的操纵(210)和所述有腿机器人(100)的当前状态(202),所述操纵(210)包括所述有腿机器人(100)要执行的一个或多个移动事件(212);
由所述数据处理硬件将所述有腿机器人(100)的所述操纵(210)和所述当前状态(202)转换为非线性优化问题(222),所述非线性优化问题(222)被配置为优化未知力和未知位置向量;
在第一时间实例(I1,t0):
由所述数据处理硬件将所述非线性优化问题(222)线性化为第一线性优化问题(222,222a);以及
由所述数据处理硬件使用二次规划来确定所述第一线性优化问题(222,222a)的第一解(232,232a);
在所述第一时间实例(I1,t0)之后的第二时间实例(I2,t1):
由所述数据处理硬件基于所述第一时间实例(I1,t0)的所述第一解(232,232a),将所述非线性优化问题(222)线性化为第二线性优化问题(222,222b);以及
由所述数据处理硬件使用所述二次规划基于所述第一解(232,232a)来确定所述第二线性优化问题(222,222b)的第二解(232,232b);以及
由所述数据处理硬件基于所述第二解(232,232b)来生成关节命令(204)以在所述操纵(210)期间控制所述有腿机器人(100)的运动。
2.根据权利要求1所述的方法(300),还包括:
由所述数据处理硬件基于所述第二解(232,232b)和所述有腿机器人(100)的前向动力学来确定综合解(232i);以及
由所述数据处理硬件确定所述综合解(232i)与所述第二解(232,232b)之间的比较满足优化阈值,所述优化阈值指示相应解(232)生成关节命令(204)的准确度。
3.根据权利要求1所述的方法(300),还包括,在所述第二时间实例(I2,t1):
由所述数据处理硬件确定所述第二解(232,232b)不满足非线性约束(240,240nl);
由所述数据处理硬件为所述第二线性优化问题(222,222b)生成迭代约束(240,240i),所述迭代约束(240,240i)包括基于所述第二解(232,232b)不满足所述非线性约束(240,240nl)的线性约束(240);以及
由所述数据处理硬件使用所述二次规划更新所述第二线性优化问题(222,222b)的所述第二解(232,232b),所述二次规划包括所述迭代约束(240,240i)。
4.根据权利要求1-3中任一项所述的方法(300),其中,所述未知力对应于当所述有腿机器人(100)执行所述操纵(210)时,所述有腿机器人(100)的脚(124)处的力(236)。
5.根据权利要求1-4中任一项所述的方法(300),其中,所述未知位置向量对应于当所述有腿机器人(100)执行所述操纵(210)时,所述有腿机器人(100)的身体(110)相对于所述有腿机器人(100)的脚(124)的位置。
6.根据权利要求1-5中任一项所述的方法(300),其中,所述第一解(232,232a)和所述第二解(232,232b)中的每一个包括所述有腿机器人(100)的一条或多条腿(120)抵靠表面的接触力(236)、所述有腿机器人(100)的一条或多条腿(120)的触地位置、所述有腿机器人(100)的一条或多条腿(120)的触地时间或所述有腿机器人(100)的一条或多条腿(120)的离地时间。
7.根据权利要求1-6中任一项所述的方法(300),还包括由所述数据处理硬件基于所述关节命令(204)来指令所述有腿机器人(100)的至少一条站立腿(120,120ST)的关节(J),所述关节命令(204)包括所述至少一条站立腿(120,120ST)的关节(J)的关节扭矩(TJ)。
8.根据权利要求7所述的方法(300),还包括由所述数据处理硬件通过确定对应于所述至少一条站立腿(120,120ST)的所述第二解(232,232b)的接触力(236)满足至少一条站立腿(120,120ST)的扭矩限制约束(240,240t)和所述至少一条站立腿(120,120ST)的摩擦约束(240,240f),来生成所述至少一条站立腿(120,120ST)的关节(J)的关节扭矩(TJ)。
9.根据权利要求1-8中任一项所述的方法(300),其中,所述有腿机器人(100)对应于四足机器人。
10.根据权利要求1-9中任一项所述的方法(300),其中,接收所述操纵(210)包括从与所述数据处理硬件通信的用户设备(20)接收所述操纵(210),并且其中所述操纵(210)是由所述用户设备(20)的用户(10)在所述用户设备(20)上运行的用户接口处定义的。
11.一种机器人(100),包括:
身体(110);
耦接到所述身体(110)的两条或更多条腿(120);以及
与所述身体(110)和所述两条或更多条腿(120)通信的控制系统(170),所述控制系统(170)包括数据处理硬件(410)和与所述数据处理硬件(410)通信的存储器硬件(420),所述存储器硬件(420)存储指令,所述指令在所述数据处理硬件(410)上被运行时使所述数据处理硬件(410)执行操作,所述操作包括:
接收有腿机器人(100)的操纵(210)和所述有腿机器人(100)的当前状态(202),所述操纵(210)包括所述有腿机器人(100)要执行的一个或多个移动事件(212);
将所述有腿机器人(100)的所述操纵(210)和所述当前状态(202)转换为非线性优化问题(222),所述非线性优化问题(222)被配置为优化未知力和未知位置向量;
在第一时间实例(I1,t0):
将所述非线性优化问题(222)线性化为第一线性优化问题(222,222a);以及
使用二次规划确定所述第一线性优化问题(222,222a)的第一解(232,232a);
在所述第一时间实例(I1,t0)之后的第二时间实例(I2,t1):
基于所述第一时间实例(I1,t0)的所述第一解(232,232a)来将所述非线性优化问题(222)线性化为第二线性优化问题(222,222b);以及
使用所述二次规划基于所述第一解(232,232a)来确定所述第二线性优化问题(222,222b)的第二解(232,232b);以及
基于所述第二解(232,232b)来生成关节命令(204)以在所述操纵(210)期间控制所述有腿机器人(100)的运动。
12.根据权利要求11所述的机器人(100),其中,所述操作还包括:
基于所述第二解(232,232b)和所述有腿机器人(100)的前向动力学来确定综合解(232i);以及
确定所述综合解(232i)与所述第二解(232,232b)之间的比较满足优化阈值,所述优化阈值指示相应解(232)生成关节命令(204)的准确度。
13.根据权利要求11所述的机器人(100),其中,所述操作还包括,在所述第二时间实例(I2,t1):
确定所述第二解(232,232b)不满足非线性约束(240,240nl);
为所述第二线性优化问题(222,222b)生成迭代约束(240,240i),所述迭代约束(240,240i)包括基于所述第二解(232,232b)不满足所述非线性约束(240,240nl)的线性约束(240);以及
使用所述二次规划更新所述第二线性优化问题(222,222b)的第二解(232,232b),所述二次规划包括所述迭代约束(240,240i)。
14.根据权利要求11-13中任一项所述的机器人(100),其中,所述未知力对应于当所述有腿机器人(100)执行所述操纵(210)时,所述有腿机器人(100)的脚(124)处的力(236)。
15.根据权利要求11-14中任一项所述的机器人(100),其中,所述位置位置向量对应于当所述有腿机器人(100)执行所述操纵(210)时,所述有腿机器人(100)的身体(110)相对于所述有腿机器人(100)的脚(124)的位置。
16.根据权利要求11-15中任一项所述的机器人(100),其中,所述第一解(232,232a)和所述第二解(232,232b)中的每一个包括所述有腿机器人(100)的一条或多条腿(120)抵靠表面的接触力(236)、所述有腿机器人(100)的一条或多条腿(120)的触地位置、所述有腿机器人(100)的一条或多条腿(120)的触地时间或所述有腿机器人(100)的一条或多条腿(120)的离地时间。
17.根据权利要求11-16中任一项所述的机器人(100),其中,所述操作还包括基于所述关节命令(204)来指令所述有腿机器人(100)的至少一条站立腿(120,120ST)的关节(J),所述关节命令(204)包括所述至少一条站立腿(120,120ST)的关节(J)的关节扭矩(TJ)。
18.根据权利要求17所述的机器人(100),其中,所述操作还包括通过确定对应于所述至少一条站立腿(120,120ST)的所述第二解(232,232b)的接触力(236)满足至少一条站立腿(120,120ST)的扭矩限制约束(240,240t)和所述至少一条站立腿(120,120ST)的摩擦约束(240,240f),来生成所述至少一条站立腿(120,120ST)的关节(J)的关节扭矩(TJ)。
19.根据权利要求11-18中任一项所述的机器人(100),其中,所述机器人(100)对应于四足机器人。
20.根据权利要求11-19中任一项所述的机器人(100),其中,接收所述操纵(210)包括从与所述数据处理硬件通信的用户设备(20)接收所述操纵(210),并且其中所述操纵(210)是由所述用户设备(20)的用户(10)在所述用户设备(20)上运行的用户接口处定义的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/601,035 | 2019-10-14 | ||
US16/601,035 US11465281B2 (en) | 2019-10-14 | 2019-10-14 | Dynamic planning controller |
PCT/US2020/055269 WO2021076453A1 (en) | 2019-10-14 | 2020-10-12 | Dynamic planning controller |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114641375A true CN114641375A (zh) | 2022-06-17 |
Family
ID=73198439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080071819.0A Pending CN114641375A (zh) | 2019-10-14 | 2020-10-12 | 动态规划控制器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11465281B2 (zh) |
EP (1) | EP4045390B1 (zh) |
JP (1) | JP7324932B2 (zh) |
KR (1) | KR20220080080A (zh) |
CN (1) | CN114641375A (zh) |
WO (1) | WO2021076453A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9259838B1 (en) * | 2014-07-24 | 2016-02-16 | Google Inc. | Systems and methods for ground plane estimation |
US11548151B2 (en) * | 2019-04-12 | 2023-01-10 | Boston Dynamics, Inc. | Robotically negotiating stairs |
DE102019129338B3 (de) * | 2019-10-30 | 2021-02-18 | Pilz Gmbh & Co. Kg | Modellprädiktive Interaktionsregelung |
US11494710B1 (en) * | 2019-12-19 | 2022-11-08 | Kalibrate Technologies Limited | Optimization constraint adaptation for long-term target achievement |
US11833680B2 (en) | 2021-06-25 | 2023-12-05 | Boston Dynamics, Inc. | Robot movement and online trajectory optimization |
CN114407008B (zh) * | 2021-12-29 | 2023-06-09 | 广州极飞科技股份有限公司 | 机器人运动控制方法、装置、设备及存储介质 |
CN114954728A (zh) * | 2022-06-17 | 2022-08-30 | 武汉科技大学 | 一种仿生陪伴机器人 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7313463B2 (en) | 2005-03-31 | 2007-12-25 | Massachusetts Institute Of Technology | Biomimetic motion and balance controllers for use in prosthetics, orthotics and robotics |
JP5034235B2 (ja) * | 2006-01-16 | 2012-09-26 | ソニー株式会社 | 制御システム及び制御方法、並びにコンピュータ・プログラム |
JP5692122B2 (ja) * | 2012-03-05 | 2015-04-01 | トヨタ自動車株式会社 | 重心高さ軌道生成装置、その生成方法及びプログラム |
KR101428328B1 (ko) * | 2012-12-27 | 2014-08-08 | 현대자동차주식회사 | 로봇의 보행제어방법 및 시스템 |
US9120227B2 (en) * | 2013-08-15 | 2015-09-01 | Disney Enterprises, Inc. | Human motion tracking control with strict contact force constraints for floating-base humanoid robots |
US9868210B1 (en) | 2015-12-30 | 2018-01-16 | Google Inc. | Methods and systems for planning a body position of a robotic device |
-
2019
- 2019-10-14 US US16/601,035 patent/US11465281B2/en active Active
-
2020
- 2020-10-12 KR KR1020227009973A patent/KR20220080080A/ko not_active Application Discontinuation
- 2020-10-12 WO PCT/US2020/055269 patent/WO2021076453A1/en unknown
- 2020-10-12 JP JP2022504722A patent/JP7324932B2/ja active Active
- 2020-10-12 CN CN202080071819.0A patent/CN114641375A/zh active Pending
- 2020-10-12 EP EP20804024.6A patent/EP4045390B1/en active Active
-
2022
- 2022-08-29 US US17/898,278 patent/US20220410390A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11465281B2 (en) | 2022-10-11 |
JP2022551218A (ja) | 2022-12-08 |
WO2021076453A1 (en) | 2021-04-22 |
KR20220080080A (ko) | 2022-06-14 |
EP4045390B1 (en) | 2024-04-24 |
EP4045390A1 (en) | 2022-08-24 |
US20220410390A1 (en) | 2022-12-29 |
US20210107150A1 (en) | 2021-04-15 |
JP7324932B2 (ja) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7324932B2 (ja) | 動的計画コントローラ | |
US9120227B2 (en) | Human motion tracking control with strict contact force constraints for floating-base humanoid robots | |
Jiang et al. | State-of-the-Art control strategies for robotic PiH assembly | |
Kagami et al. | Online 3D vision, motion planning and bipedal locomotion control coupling system of humanoid robot: H7 | |
Neto et al. | High‐level robot programming based on CAD: dealing with unpredictable environments | |
JP6321905B2 (ja) | 関節システムの制御方法、記憶媒体、制御システム | |
Kim et al. | Computationally-robust and efficient prioritized whole-body controller with contact constraints | |
US20220305646A1 (en) | Simulation-in-the-loop Tuning of Robot Parameters for System Modeling and Control | |
US20220193894A1 (en) | Supervised Autonomous Grasping | |
JP2022176917A (ja) | ロボットデバイスを制御するための方法 | |
US20230278214A1 (en) | Robot localization using variance sampling | |
Mazare et al. | Adaptive variable impedance control for a modular soft robot manipulator in configuration space | |
US11607806B2 (en) | Techniques for generating controllers for robots | |
CN114454981B (zh) | 双足机器人的弹跳运动控制方法、装置及双足机器人 | |
US20220143836A1 (en) | Computer-readable recording medium storing operation control program, operation control method, and operation control apparatus | |
Liu et al. | Interactive virtual humans: A two-level prioritized control framework with wrench bounds | |
US11691292B2 (en) | Robot choreographer | |
Al-Junaid | ANN based robotic arm visual servoing nonlinear system | |
Zhang et al. | Com shifter and body rotator for step-by-step teleoperation of bipedal robots | |
Fang et al. | Learning from wearable-based teleoperation demonstration | |
Siradjuddin et al. | An iterative robot-image Jacobian approximation of image-based visual servoing for joint limit avoidance | |
JP4457617B2 (ja) | モーション生成システム及びロボットのモーション評価方法 | |
WO2024021744A1 (zh) | 一种控制足式机器人的方法、装置、电子设备、计算机可读存储介质、计算机程序产品及足式机器人 | |
Shirpurkar | Investigation of Effects of Changing Length Scales of Uniformly Structured Rough Terrain on Hexapedal Locomotion using Simulation | |
Lin et al. | Synchronized Control of Robotic Arm based on Virtual Reality and IMU Sensing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |