CN113771039B - 用于估计机器人操作参数的方法和计算*** - Google Patents
用于估计机器人操作参数的方法和计算*** Download PDFInfo
- Publication number
- CN113771039B CN113771039B CN202111148035.6A CN202111148035A CN113771039B CN 113771039 B CN113771039 B CN 113771039B CN 202111148035 A CN202111148035 A CN 202111148035A CN 113771039 B CN113771039 B CN 113771039B
- Authority
- CN
- China
- Prior art keywords
- arm
- movement
- arm segment
- joint
- estimate
- 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.)
- Active
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/1679—Programme controls characterised by the tasks executed
- B25J9/1692—Calibration of manipulator
-
- 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
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- 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/1633—Programme controls characterised by the control loop compliant, force, torque control, e.g. combined with position 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Manipulator (AREA)
Abstract
本公开涉及用于估计机器人操作参数的方法和计算***。提出了一种用于估计摩擦和/或质心(CoM)的计算***和方法。***可以通过选择以下各项中的至少一个来执行方法:(i)多个关节中的第一关节,或(ii)多个臂区段中的第一臂区段。计算***还输出用于引起机械臂移动的一组一个或多个移动命令,该移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动,并接收与第一关节或第一臂区段相关联的一组致动数据和一组移动数据。计算***还基于该组致动数据和该组移动数据来确定以下各项中的至少一个:(i)摩擦参数估计或(ii)CoM估计。
Description
本申请是申请日为2021年5月7日、题为“用于估计机器人操作参数的方法和计算***”的发明专利申请202180002097.8的分案申请。
对相关申请的交叉引用
本申请要求2021年4月29日提交的题为“METHOD AND COMPUTING SYSTEM FORESTIMATING PARAMETER FOR ROBOT OPERATION”的第17/243,939号美国申请的优先权,该美国申请要求2020年5月7日提交的题为“A ROBOTIC SYSTEM WITH ROBOT OPERATIONPARAMETER DETERMINATION”的第63/021,089号美国临时申请的权益,这些申请的全部内容通过引用并入本文中。
技术领域
本公开涉及一种用于估计机器人操作的一个或多个参数的方法和计算***。
背景技术
随着自动化变得更加普遍,机器人正在更多环境中使用,诸如在仓储和零售环境中。例如,机器人可以被用于与仓库中的物体进行交互。机器人的移动可以是固定的,或者可以基于输入,诸如由仓库中的传感器生成的信息。
然而,尽管技术进步,机器人通常缺乏复制执行更大和/或更复杂任务所需的人类交互所必要的复杂性。为了使机器人接近人类动作,机器人应该被校准以便准确和精确地控制机器人的移动。
发明内容
本公开的一个方面涉及一种计算***和/或一种由该计算***执行的方法。计算***可以包括通信接口和至少一个处理电路。通信接口可以被配置为与具有机械臂的机器人通信,该机械臂包括在多个关节处彼此可移动地连接的多个臂区段。至少一个处理电路可以被配置为,当计算***与机器人通信时,诸如通过执行非暂时性计算机可读介质上的指令来执行方法。该方法可以包括选择以下各项中的至少一个:(i)多个关节中的第一关节,或(ii)多个臂区段中的第一臂区段,其中第一关节将第一臂区段连接到紧邻第一臂区段的第二臂区段。该方法还包括输出用于引起机械臂移动的一组一个或多个移动命令,该移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动。该方法还可以包括接收与第一关节或第一臂区段相关联的一组致动数据和一组移动数据。该组致动数据可以是指示在第一臂区段和第二臂区段之间正在发生该相对移动的时间段中第一关节处的总扭矩或总力的传感器数据。该组移动数据可以是指示该时间段期间第一臂区段和第二臂区段之间的相对移动的量或速率的传感器数据。该方法还可以包括基于该组致动数据和该组移动数据来确定以下各项中的至少一个:(i)与第一臂区段和第二臂区段之间的摩擦相关联的摩擦参数估计,或(ii)与第一臂区段相关联的质心(CoM)估计。
附图说明
图1A-1C示出了根据本文的实施例的用于执行机器人校准的***。
图2A-2C提供了示出根据本文的实施例的用于执行机器人校准的计算***的框图。
图3A-3E示出了根据本文的实施例的在其中可以执行机器人校准的环境。
图4示出了根据本文的实施例的用于执行机器人校准的示例方法的流程图。
图5A和5B示出了根据本文的实施例的臂区段的移动。
图6A-6C示出了根据本文的实施例的用于执行机器人校准的旋转位置、旋转速度或旋转加速度。
图7A-7C示出了根据本文的实施例的用于执行机器人校准的旋转位置、旋转速度或旋转加速度。
图8示出了根据本文的实施例的表示旋转轴的可能朝向的假想锥体。
图9示出了根据本文的实施例的用于执行机器人校准的传感器数据的示例。
图10A-10D示出了根据本文的实施例的用于执行机器人校准的传感器数据的示例。
图11A和11B示出了根据本文的实施例的用于执行机器人校准的传感器数据的示例。
具体实施方式
本公开的一方面涉及估计机器人的特性,其可以作为机器人校准操作的一部分来执行。在一些情况下,机器人可以位于例如仓库或工厂中,并且可以被用于拾取该环境中的物体或以其他方式与该环境中的物体进行交互。机器人校准操作可涉及估计描述机器人物理特性的一个或多个参数,诸如机器人部件之间的摩擦,或机器人部件的质心(CoM)的位置。在一些情况下,这些物理特性的值可能偏离机器人制造商提供的标称值或理论值。偏差可能由各种各样的因素(诸如制造公差、老化、温度变化或某个其他因素)引起。
在实施例中,机器人校准操作可以涉及对机器人的一个或多个部件进行致动以引起它们的移动。可生成描述该移动的传感器数据,其可以被用于执行机器人校准操作。在一些情况下,机器人的部件可以是例如机械臂的臂区段。在一些实现方案中,可以执行机器人校准以促进对机械臂的更准确或精确的控制。机器人校准操作可以被用于例如规划或执行机械臂的轨迹。例如,发动机信号或其他移动命令可以以考虑机械臂的物理特性的方式被生成,这些物理特性可以已经从机器人校准操作中确定。
在实施例中,机器人校准操作可以在逐个部件的基础上执行。例如,如果上面讨论的机械臂包括在多个关节处连接的多个臂区段,则机器人校准操作可以在逐个关节或逐个区段的基础上执行。这样的执行机器人校准操作的方式可以涉及一次仅直接致动一个关节或仅直接致动一个臂区段,或者更一般地,一次仅引起一个关节或一次仅引起一个臂区段的运动。这样的机器人校准方式可以减少机器人校准操作期间的移动量或移动范围,这可以更好地适应具有严格的空间限制的环境。此外,这样的机器人校准方式还可以通过避免多个关节或多个臂区段的同时移动而提高机器人校准的准确性,因为多个臂区段或多个关节的同时移动更有可能生成振动,这些振动会将测量噪声引入用于机器人校准的传感器数据中。
在实施例中,执行机器人校准可以涉及使用第一移动分布简档(profile)以及使用第二速率分布简档,第一移动分布简档可以生成对于估计摩擦更为优选的传感器数据,第二速率分布简档可以生成对于估计质心(CoM)更为优选的传感器数据。例如,第一移动分布简档可以试图使所得移动的速率具有宽范围的值,这可以有利于摩擦参数估计(诸如粘性摩擦系数的估计)的确定。在此示例中,第二移动分布简档可以试图限制所得移动的速率或加速度,这可以限制被引入传感器数据中的测量噪声的量。
在实施例中,如果机械臂包括串联连接的多个臂区段,则估计一个臂区段的质心(CoM)可以涉及移除或以其他方式补偿来自一个或多个下游臂区段的对该臂区段的影响。在一些情况下,执行机器人校准操作可以涉及在确定任何其他臂区段的相应CoM估计之前确定最远下游臂区段的相应CoM估计。在这样的情况下,机器人校准操作然后可以在向上游的方向上前进以确定上游臂区段的CoM估计。因此,当臂区段的CoM估计正被确定时,关于下游臂区段的CoM的信息可能已经是可用的,这可以允许移除来自下游臂区段的影响或者考虑该影响。
图1A、1B和1C示出了用于确定估计或以其他方式描述机器人的一个或多个物理特性的信息的(或更具体地用于执行机器人校准的)***1000。本领域技术人员将意识到图1A-1C示出了用于执行机器人校准的***1000的一个示例,并且图1A-1C中示出的部件可以被移除或省略,和/或附加部件可以被添加到***1000。如图1A所示,***1000可以包括计算***1100和机器人1200。在实施例中,***1000可以是机器人校准***或其部件,其中机器人校准***被配置为执行机器人校准,这可涉及例如确定机器人1200的一个或多个物理特性或某个其他特性。可以执行机器人校准,例如,以便提高可以控制机器人1200的机器人移动(也被称为机器人运动)的准确性水平,或更具体地,以便提高规划和/或精确执行机器人1200的轨迹的能力。
在一些情况下,计算***1100可以确定机器人1200的一个或多个物理特性,和/或可以使用机器人1200的一个或多个物理特性来生成用于使机器人1200根据规划的轨迹输出移动(也被称为运动)的移动命令。例如,计算***1100可以被配置为确定特定于或以其他方式考虑机器人1200的一个或多个物理特性的移动命令(例如,发动机命令)。作为示例,该一个或多个物理特性可以包括例如机器人1200的部件(例如,机械臂的臂区段)之间的摩擦、这些部件具有它们的质心(CoM)的相应位置、这些部件的质量或惯性矩的相应值,和/或某个其他物理特性。机器人的这些特性可以约束或以其他方式影响机器人1200的运动,和/或影响机器人1200的部件应该如何被致动。
在一些情况下,由***1000估计的特性可以被用于描述机器人1200的运动的物理学(physics)(例如,运动学(kinematics)),这诸如是通过描述机器人1200的一个或多个部件如何对力、扭矩、或其他形式的致动进行响应而实现的。如果图1A的计算***1100或另一计算***被用于控制机器人1200的移动,则该移动可以基于估计的特性来控制。例如,发动机或其他致动器可以输出力或扭矩来启动或调整机器人1200的部件的运动(例如,线性运动或旋转运动),但该运动可能会受到因素的影响,这些因素诸如是由于摩擦而产生的力(其可以阻碍运动或运动中的变化)、由于重力而产生的力、和/或诸如部件的质量或惯性矩(其也可以阻碍运动或运动中的变化)的惯性元素。在此示例中,控制机器人部件的运动可以涉及在确定例如由用于驱动机器人部件的致动器输出的力或扭矩的幅度值、方向和/或持续时间时补偿以上因素,或更一般地考虑这些因素。运动控制可以被用于例如执行机器人1200的轨迹,在一些情况下这可涉及精确地遵循机器人的各种部件的位置、速度或速率和/或加速度的规划值。即,运动控制可能涉及遵循规划的轨迹,这可涉及机器人的各种部件的速度和/或加速度的一个具体值或一组值。上面讨论的对物理特性的估计可以被用于控制致动器以便使得所执行的轨迹紧密地匹配于所规划的轨迹。
在实施例中,执行机器人校准可以涉及确定或更新力模型和/或扭矩模型。在这样的实施例中,计算***1100(或某个计算***)可以基于力模型和/或扭矩模型来确定要由(一个或多个)致动器施加多少力和/或扭矩,或者力和/或扭矩的方向或持续时间。在一些情况下,力模型和/或扭矩模型可以由描述影响机器人1200或其部件上的总力或总扭矩的因素的信息形成,或包括该信息。例如,力模型和/或扭矩模型可以包括表示例如摩擦、重力、质量、惯性矩和/或其组合的参数的值。在一些情况下,力模型和/或扭矩模型可以包括摩擦模型,该摩擦模型可以包括描述机器人或其部件将经历多少摩擦的信息。作为示例,摩擦模型可以包括表示粘性摩擦(也被称为动摩擦或滑动摩擦)和库仑摩擦(也被称为静态摩擦)的参数,这将在下面更详细地讨论。在一些情况下,力模型和/或扭矩模型可以描述(一个或多个)致动器输出的力和/或扭矩与机器人部件所经历的总扭矩或总力之间的关系(例如,数学关系),和/或可以描述由(一个或多个)致动器输出的力和/或扭矩与所造成的机器人部件的运动之间的关系。在以上示例中,如果机器人校准得出了力模型或扭矩模型,则计算***1100(或某个其他计算***)可以利用该力模型和/或扭矩模型来控制该(一个或多个)致动器,或更一般地控制机器人1200的运动。
如上所述,图1A的***1000可以被用于执行机器人校准,诸如通过确定描述或以其他方式表示机器人1200的一个或多个物理特性的信息。在一些情况下,***1000(以及由***1000执行的相关联的方法)操作以通过引起机器人1200的移动并使用描述移动的数据来确定机器人的物理特性来执行机器人校准。更具体地,在移动期间,计算***1100可以监视机器人1200并且接收描述机器人1200的部件的移动的传感器数据。基于接收到的传感器数据,计算***1100可以确定用于机器人1200或其部件的物理特性中的每一个的相应估计值。
在实施例中,机器人1200可以包括机械臂1210,并且执行机器人校准可以涉及确定机械臂1210的部件(例如,臂区段)的一个或多个物理特性。更具体地,机械臂1210可以包括数目n个臂区段12121、12122、…1212n(也被称为机械臂1210的连杆),并且从机器人校准确定的一个或多个物理特性可以对臂区段12121-1212n中的一个或多个进行描述。在一些情况下,臂区段12121-1212n中的每一个可以在多个运动平面中独立地致动或移动。在一些实现方案中,臂区段12121-1212n可以彼此串联耦合(例如,经由多个关节),使得机械臂1210由一系列臂区段12121-1212n形成。在此实施例中,臂区段12121-1212n可以形成用于将末端执行器或其他臂区段移动到特定姿势的运动链。例如,臂区段12121-1212n可以被耦合,使得臂区段12121-1212n中的每一个都具有第一端(例如,近端)并具有第二端(例如,远端),该第一端被耦合到机器人基座或臂区段12121-1212n系列中的前一臂区段,该第二端被耦合到臂区段12121-1212n系列中的后续臂区段或形成机械臂1210的远端。以此方式,臂区段12121之后可以是臂区段12122,臂区段12122之后可以是臂区段12123,臂区段12123之后可以是臂区段12124等。作为示例,臂区段12121可以在臂区段12121的近端处被耦合到机器人基座并且可以在臂区段12121的远端处被耦合到臂区段12122。还在此示例中,臂区段12122可以在臂区段12122的近端处被耦合到臂区段12121,并且可以在臂区段12122的远端处被耦合到臂区段12123。本领域技术人员将意识到,臂区段12121-1212n可以以任何布置被耦合,以便根据机器人1200的操作要求执行移动。在一些实现方案中,臂区段1212n可以是末端执行器装置。
在实施例中,如果机器人校准涉及确定关于机械臂1210的臂区段12121-1212n的物理特性的信息,则该信息可以被用于控制机械臂1210的移动。例如,臂区段12121-1212n可以相对于彼此移动以产生机械臂1210的整体运动以实现末端执行器或机械臂1210的远端处的其他臂区段的期望姿势。如果计算***1100参与控制机械臂1210的移动(诸如通过为机械臂1210规划轨迹),则计算***1100可以规划各个臂区段的移动。为各个臂区段进行的此移动规划可以基于关于各个臂区段的物理特性的所确定的信息。在一些情况下,机器人校准可以涉及确定力模型和/或扭矩模型,该力模型和/或扭矩模型描述影响在各个臂区段上施加多少总力或总扭矩的因素。例如,力模型和/或扭矩模型可以应用于臂区段或连接一对臂区段的关节,并且可以描述该臂区段或关节所经历的总力或总扭矩与臂区段相对于关节的移动的量或速率之间的关系。在这样的情况下,计算***1100可以基于力模型和/或扭矩模型来规划各个臂区段的移动。
在实施例中,如果执行机器人校准涉及确定关于机械臂1210的臂区段12121-1212n的每个臂区段的物理特性的信息,则该物理特性可以涉及描述臂区段的移动和直接施加到该臂区段的扭矩或力之间的关系的参数。例如,对于臂区段12121-1212n中的每一个,该参数可以描述臂区段的质心位置、臂区段的质量或重量、臂区段的质量如何分布、臂区段的惯性矩,和/或臂区段和机械臂1210的另一个部件(例如,另一个臂区段)之间的摩擦。该参数可以由计算***1100或任何其他计算***在为机械臂1210规划轨迹时使用。例如,计算***1100可以使用该参数来预测特定量的力或扭矩将产生多少移动或移动速率,或确定需要多少力或扭矩来生成一定量的移动或移动速率。更具体地,计算***1100可以使用该参数来确定对摩擦对臂区段的影响、重力对臂区段的影响(其可以近似为作用于臂区段的CoM)和/或臂区段的质量或惯性矩进行补偿的力或扭矩的量。
在实施例中,如图1B所示,机器人1200可以包括一个或多个传感器的组1220和一个或多个致动器(例如,发动机)的组1230,其可以被用于执行机器人校准操作。一个或多个致动器的组1230可以各自被配置为输出力或扭矩,该力或扭矩可以被施加到机械臂1210的臂区段12121-1212n中的一个或多个,以便引起该一个或多个臂区段的移动。在实施例中,一个或多个致动器的组1230的操作可以由计算***1100控制。例如,计算***1100可以被配置为输出用于引起一个或多个致动器的组1230的至少一个致动器的激活的一个或多个移动命令。在一些实现方案中,该一个或多个移动命令可以包括用于使一个或多个致动器的组1230激活并输出力和/或扭矩的模拟信号和/或数字信号。在一些情况下,该一个或多个移动命令可以控制由激活的致动器输出多少力或扭矩、力或扭矩的方向和/或力或扭矩的持续时间。
在实施例中,如图1C所示,一个或多个致动器的组1230可以包括多个致动器12301-1230n,这些多个致动器12301-1230n中的每一个可以输出用于引起多个臂区段12121-1212n的相应臂区段的移动的力或扭矩。例如,多个致动器12301-1230n可以被配置为输出用于旋转或以其他方式移动臂区段12121-1212n的扭矩。在一个示例中,致动器12301-1230n可以被耦合到或放置在臂区段12121-1212n处,并且可以在被激活时输出相应的力或扭矩以分别引起臂区段12121-1212n的移动。在这样的示例中,致动器12301-1230n的激活和/或致动器12301-1230n输出的力或扭矩的相应量可以由计算***1100(例如,经由移动命令)控制。
在实施例中,一个或多个传感器的组1220被配置为生成一个或多个组的传感器数据(也被称为数据组),其被计算***1100用来执行机器人校准。在一些情况下,数据组可以测量或以其他方式表示臂区段12121-1212n中的一个或多个的移动和/或臂区段12121-1212n经历的力或扭矩。例如,传感器数据的一个或多个数据组可以包括一组致动数据和一组移动数据。
在实施例中,该组致动数据可以包括表示臂区段12121-1212n中的一个或多个所经历的或在一个或多个关节处所经历的总力和/或总扭矩的数据。臂区段上的总力或总扭矩可以包括或基于由致动器12301-1230n的贡献而产生的力或扭矩、由于来自重力的贡献而产生的力或扭矩、以及由于来自摩擦的贡献而产生的力或扭矩。
在实施例中,臂区段12121-1212n中的一个的该组移动数据可以包括表示臂区段的移动量或移动速率(例如,速度或加速度)的数据。该移动可以是例如臂区段的旋转、臂区段的线性移动或某个其他移动。在一些情况下,移动量或移动速率可以相对于机器人1200的另一个部件(诸如另一个臂区段)来测量。例如,此另一臂区段的位置可被视为基线位置(或更一般地,参考系),移动的臂区段的移动量或移动速率从该基线位置来测量。在一些情况下,移动量可以由移动的臂区段的位置或位移表示,其可以相对于例如上面讨论的基线位置。如果移动涉及一个臂区段相对于基线位置的旋转,则该位置或位移也可被称为旋转位置、旋转位移或角位移,并且可以以度或弧度来测量。在一些情况下,旋转位置的正值可以指示移动的臂区段已经在一个方向(例如,逆时针方向)旋转超过基线位置,而旋转位置的负值可以指示移动的臂区段已经以相反方向(例如,顺时针方向)旋转超过基线位置。
在实施例中,一个或多个传感器的组1220可以包括被用于生成致动数据的第一组传感器12221、12222、…1222n和被用于生成移动数据的第二组传感器12241、12242、…1224n,如图1C所示。在一些实现方案中,第一组传感器12221-1222n可以被放置在臂区段12121-1212n处或以其他方式与臂区段12121-1212n对应。类似地,第二组传感器12241-1224n也可以被放置在臂区段12121-1212n处或以其他方式与臂区段12121-1212n对应。在此示例中,第一组传感器12221-1222n中的每一个可以生成相应的一组致动数据,该组致动数据指示多个臂区段12121-1212n中的相应臂区段处的力或扭矩。此外,第二组传感器12241-1224n中的每一个可以生成相应的一组移动数据,该组移动数据指示多个臂区段12121-1212n中的相应臂区段的移动量或移动速率。在一些实现方案中,臂区段12121-1212n由致动器12301-1230n驱动或以其他方式致动,并且第一组传感器12221-1222n中的每个传感器可以是对应于多个致动器12301-1230n中的相应致动器的扭矩传感器或电流传感器。如果传感器12221-1222n中的每一个是电流传感器,则该传感器可以被配置为测量流过该传感器的相应电流量,其可以基本上等于流过多个致动器12301-1230n中的相应致动器的相应电流量。流过致动器的电流量可以被用于计算或以其他方式确定对应的臂区段所经历的总力或总扭矩的量。此计算可由计算***1100或由传感器12221-1222n自身执行。
图2A提供了示出计算***1100的实施例的框图。计算***1100包括至少一个处理电路1110和(一个或多个)非暂时性计算机可读介质1120。在实施例中,处理电路1110包括一个或多个处理器、一个或多个处理核、可编程逻辑控制器(“PLC”)、专用集成电路(“ASIC”)、可编程门阵列(“PGA”)、现场可编程门阵列(“FPGA”),其任何组合或任何其他处理电路。在实施例中,非暂时性计算机可读介质1120可以是存储设备,诸如电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如,诸如计算机软盘、硬盘驱动器(HDD)、固态驱动器(SSD)、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、其任何组合或任何其他存储设备。在一些情况下,非暂时性计算机可读介质1120可以包括多个存储设备。非暂时性计算机可读介质1120可以替代地或附加地存储计算机可读程序指令,在由处理电路1110执行时,该指令使处理电路1110执行本文描述的一种或多种方法,诸如关于图4所示的方法4000描述的操作。
图2B描绘了计算***1100A,其是计算***1100的实施例并且包括通信接口1130。通信接口1130可以被配置为在计算***1100A和机器人1200之间提供有线或无线通信路径,诸如使用上面讨论的传感器(例如,1220)和/或致动器(例如,1230)。作为示例,通信电路可以包括RS-232端口控制器、USB控制器、以太网控制器、控制器、PCI总线控制器、网络控制器、任何其他通信电路或其组合。如果计算***1100A生成一个或多个移动命令,则通信接口1130可以被配置为将该一个或多个移动命令传送到致动器组1230。此外,如果传感器组1220生成传感器数据,则通信接口1130可以被配置为从传感器组1220接收传感器数据(例如,移动数据和致动数据)。在这样的情况下,计算***1100的处理电路1110可以被配置为经由通信接口1130直接或间接地接收传感器数据。
在实施例中,处理电路1110可以由存储在非暂时性计算机可读介质1120上的一个或多个计算机可读程序指令来编程。例如,图2C示出了计算***1100B,其是计算***1100/1100A的实施例,其中处理电路1110由一个或多个模块编程,该一个或多个模块包括机器人校准模块1122,其可以包括用于执行机器人校准的计算机可读程序指令。在各种实施例中,术语“计算机可读指令”和“计算机可读程序指令”被用于描述被配置为执行各种任务和操作的软件指令或计算机代码。在各种实施例中,术语“模块”泛指被配置为使处理电路1110执行一个或多个功能任务的软件指令或代码的集合。当处理电路或其他硬件部件正在执行模块或计算机可读指令时,模块和计算机可读指令可被描述为执行各种操作或任务。
在实施例中,如图2C所示,非暂时性计算机可读介质1120可以存储或以其他方式包括传感器数据1124,该数据可以被处理电路1110用来执行机器人校准。传感器数据1124可以包括例如上面描述的致动数据和移动数据。在一些情况下,传感器数据1124可能已经由图1B的传感器组1220生成,并且可能已经经由图2B的通信接口1130被接收。如果存储的传感器数据1124被用于执行机器人校准操作,则非暂时性计算机可读介质1120还可以存储被确定为机器人校准操作的结果的信息1126(也被称为机器人校准信息1126)。机器人校准信息1126可以描述机器人(例如,1200)的一个或多个物理特性。例如,机器人校准信息可以包括对描述机器人的一个或多个物理特性的各种参数的相应估计(也被称为估计值)。在一些情况下,机器人校准信息可以描述扭矩模型、力模型和/或摩擦模型。
图3A-3D示出了根据各种实施例的在其中可以执行机器人校准的(一个或多个)示例环境。本领域技术人员将意识到图3A-3D示出了用于执行机器人校准的(一个或多个)环境的一个示例,并且图3A-3D中示出的现有部件可以被移除和/或附加部件可以被添加到环境。图3A呈现了机器人3200的侧视图,机器人3200可以是机器人1200的实施例。机器人3200可以包括耦合到基座3202的机械臂3210。在图3A的示例中,机械臂3210可以包括多个臂区段32121、32122、32123、32124、32125和32126(也被称为连杆),其可以被耦合在多个关节32141、32142、32143、32144、32145处。在图3A的示例中,臂区段32121-32126可以被连接为一系列臂区段,这些臂区段可以在向下游的方向上延伸,该方向可以是远离基座3202的方向。在此示例中,沿着机械臂3210最远下游的臂区段32126可以是末端执行器装置(例如,机械抓持器),并且可以形成机械臂3210的远端。即,相对于机器人基座3202,臂区段32126可以是机械臂3210的最远侧臂区段。
在实施例中,关节32141-32145可以直接耦合相应的紧邻的臂区段对。例如,臂区段32121在关节32141处被耦合到臂区段32122。在此示例中,臂区段32121和臂区段32122可以被认为彼此紧邻,因为它们经由关节32141直接耦合到彼此。关节32141可以允许一对臂区段32121、32122之间的相对移动。在一个示例中,关节32141可以是转动关节(或更一般地,枢轴点),其允许一对臂区段32121、32122之间的相对旋转,或更具体地允许臂区段32122相对于臂区段32121旋转。在此示例中,其他关节32142至32145各自可以是直接连接相应的一对紧邻的臂区段并且允许该对臂区段之间的相对旋转的转动关节。例如,关节32145可以直接连接臂区段32125和臂区段32126,并允许臂区段32126相对于臂区段32125旋转。在另一个示例中,机械臂3210可以附加地或替代地具有棱柱关节,其允许一对紧邻的臂区段之间的相对线性运动(也被称为相对横向运动)。
如上所述,臂区段32121-32126可以被连接为一系列臂区段,这些臂区段可以在向下游的方向上从臂区段32121延伸到臂区段32126。臂区段32121可以距机器人基座3202最近(也被称为最近侧),而臂区段32126可以距机器人基座3202最远(即,也被称为最远侧)。该一系列臂区段32121至32126可以形成运动链,其中一个臂区段(例如,32123)的移动引起下游臂区段(例如,32124、32125、32126)的移动。臂区段32121-32126的串联连接还可定义近端(或近侧方向)和远端(或远侧方向)。例如,臂区段32121-32126中的每一个可以具有相应的近端和相应的远端。近端可以更靠近机器人基座3202,而远端可以更靠下游,使得它距机器人基座3202更远。作为示例,臂区段32123可以具有被直接连接到臂区段32122的近端,并且可以具有被直接连接到臂区段32124的远端。此外,如果臂区段(例如,32124、32125或32126)被直接或间接连接到另一个臂区段(例如,32123)的远端,则前一个臂区段(例如,32124、32125或32126)可以被认为在后一个臂区段(例如32123)的远端。相反,如果臂区段(例如,32123、32124、32125)被直接或间接连接到另一个臂区段(例如,32126)的近端,则前一个臂区段(例如,32123、32124、32125)可以被认为是在后一个臂区段(例如,32126)近端。作为另一个示例,臂区段32123可以被认为是相对于臂区段32122和相对于臂区段32121的远侧臂区段,而臂区段32121和32122可以被认为是相对于臂区段32123的近侧臂区段。
在实施例中,如图3B所示,机器人3200可以包括多个致动器33301、33302、33303、33304和33305(其可以是致动器12301至1230n的实施例),用于引起相应臂区段32122-32126的移动,或者更具体地用于引起相应紧邻臂区段对之间的相对移动。在一些情况下,多个致动器33301至33305可以分别被放置在关节32141至32145处或附近。在一些实现方案中,致动器33301-33305可以是被绕关节32141-32145放置的发动机,并且可以在关节32141-32145处输出扭矩或力。致动器33301至33305各自可以输出相应的力或扭矩,用于使臂区段32122-32126中的相应一个臂区段相对于相邻臂区段(或相对于某个其他参考系)移动。例如,致动器33303可以被放置在关节32143处或附近,该关节32143直接连接一对臂区段32123、32124。致动器33303可以在关节32143处输出扭矩,该扭矩可以引起该对臂区段32123、32124之间的相对旋转。更具体地,该扭矩可以使该对臂区段32123、32124中更远侧的臂区段32124相对于该对臂区段中的更近侧的臂区段32123旋转。此外,臂区段32124可以围绕关节32143旋转。在实施例中,致动器33301-33305可以包括发动机(例如,电和/或磁发动机)、泵(例如,液压泵或气动泵)、一些其他致动器,或其组合。
在实施例中,机器人3200可以包括被用于生成传感器数据的一组传感器,这些传感器数据可以被用于执行机器人校准。例如,如图3C所示,机器人3200可以包括被用于生成致动数据的第一组传感器32221、32222、32223、32224和32225以及被用于生成移动数据的第二组传感器32241、32242、32243、32244和32245。更具体地,第一组传感器32221-32225(其可以是传感器12221至1222n的实施例)各自可以被配置为生成与多个臂区段32122-32126中的相应臂区段的致动相关的相应一组致动数据。更具体地,针对特定臂区段的一组致动数据可以测量指示施加在该臂区段上或由该臂区段经历的力或扭矩的参数。例如,传感器32221可以生成对应于臂区段32122相对于臂区段32121的致动(或反之亦然)的第一组致动数据,而传感器32222可以生成对应于臂区段32123相对于臂区段32122的致动(或反之亦然)的第二组致动数据。作为另一个示例,传感器32223可以生成对应于臂区段32124相对于臂区段32123的致动(或反之亦然)的第三组致动数据,而传感器32224可以生成对应于臂区段32125相对于臂区段32124的致动(或反之亦然)的第四组致动数据。
在实施例中,传感器32221-32225可以是或可以包括力传感器或扭矩传感器,这些力传感器或扭矩传感器各自被配置为直接测量关节32141-32145处的总力或扭矩,或更具体地测量在这些关节处所连接的臂区段32122-32126上的总力或扭矩。在实施例中,传感器32221-32225可以包括被配置为测量电流或电压的电流传感器或电压传感器。在一个示例中,传感器32221-32225可以是被配置为测量流过致动器33301-33305的相应电流量的电流传感器。在此示例中,传感器32221-32225中的每一个可以与致动器33301-33305中的相应致动器(例如,发动机)串联电连接。传感器可以测量流过其自身的电流量,该电流量可以等于或基本等于被提供给相应致动器、被相应致动器汲取或以其他方式流过相应致动器的电流量。流过致动器的电流量可以指示致动器所处的对应关节处的总力或总扭矩。在一些情况下,关节或关节处的臂区段可以充当由致动器驱动的机械负载,并且流过致动器的电流量可以取决于多少电压被提供以激活致动器并且取决于机械负载的特点,诸如负载是否受到致动器提供的扭矩以外的扭矩(例如,由重力引起的扭矩)的影响,和/或负载的运动是否受到另一个扭矩(例如,由于摩擦而产生的阻力扭矩)的阻碍。作为示例,传感器32224可以测量流过致动器33304的电流量,该电流量可以指示关节32144处的总力或扭矩,或更具体地,臂区段32125或臂区段32124上的总力或总扭矩(用于相对于由关节32144提供的枢轴点旋转臂区段32125和/或32124)。
在一些情况下,由传感器32221-32225生成的致动数据可以具有值,该值等于有多少电流流过对应致动器33301-33305。在这样的情况下,计算***1100可以被配置为基于由致动数据表示的电流值来计算或以其他方式确定总扭矩或总力的值。在一些情况下,传感器32221-32225自身可以被配置为计算或以其他方式确定总扭矩或总力的值,并提供该扭矩值或该力值作为致动数据的一部分。该计算可以基于例如电流和总扭矩或总力之间的预定义的关系,诸如其中总扭矩等于或基于预定义的常数(其可以被称为扭矩常数)乘以电流的关系。因此,计算***1100可以被配置为通过将扭矩常数乘以由传感器32221-32225测量的电流值来执行总扭矩的以上计算。在一些实现方案中,计算***1100(和/或传感器32221-32225)可以访问存储的致动器信息,该存储的致动器信息可以提供扭矩常数的值。例如,扭矩常数可以是存储在非暂时性计算机可读介质1120中的值。
如上所述,图3C中的第二组传感器32241-32245可以生成相应组的移动数据。在一些实现方案中,第二组传感器32241-32245可以被分别布置在关节32141-32145处或附近。由传感器32141-32145生成的相应组的移动数据可分别测量或以其他方式描述臂区段32122-32126的移动,或更具体地描述由关节32141-32145连接的相应对的臂区段之间的相对移动。例如,传感器32245可以测量或以其他方式描述臂区段32126相对于关节32145和相对于臂区段32125的移动,或更具体地描述由关节32145直接连接的紧邻的一对臂区段32126、32125之间的相对移动。在以上示例中,臂区段32126可以是该对中的更远侧的臂区段,而臂区段32125可以是该对中的更近侧的臂区段。作为另一个示例,传感器32244可以测量或以其他方式描述臂区段32125相对于关节32144和相对于臂区段32124的移动。
在实施例中,移动数据可以测量或以其他方式描述臂区段的移动量或移动速率。移动量或移动速率可以相对于基线位置(诸如臂区段被连接到的关节的位置、臂区段在其开始移动之前的位置、紧邻移动的臂区段的近侧臂区段的位置,或某个其他基线位置(也被称为参考位置))来测量。在一些情况下,移动量可以指臂区段相对于基线位置的位置。如果该移动涉及臂区段的旋转,则移动量(或更具体地,旋转量)在一些情况下可以指臂区段的旋转位置(也被称为角位置、旋转位移、或角位移)。臂区段的旋转位置可以相对于基线位置来测量。作为示例,图3D示出了臂区段32125相对于关节32144并相对于臂区段32124而围绕延伸通过关节32144的旋转轴线A进行旋转的情况,其中关节32144可以直接连接这两个臂区段。在此示例中,臂区段32125的旋转位置可以由角度θ指示,其测量臂区段32125相对于基线位置已经旋转了多少。如上所述,各种位置可以用作基线位置。在一个示例中,如图3E中臂区段32124和32125的简化图所示,基线位置可以是臂区段32125在臂区段32125相对于关节32144和相对于臂区段32124静止时所处的位置3510(例如,臂区段的朝向),使得旋转位置的角度θ可以从位置3510起进行测量。在图3E中,基线位置3510可以与水平位置形成角度α(例如,非零角度)。更具体地,与基线位置3510相关联的朝向可以与水平朝向形成角度α,该水平朝向可以是垂直于重力的朝向。角度α在下面更详细地讨论。
在实施例中,移动数据可以测量或以其他方式描述臂区段(例如,32125)正在旋转或以其他方式移动的速率。移动速率可以相对于上面讨论的基线位置来测量。在一些情况下,一个臂区段围绕关节(例如,32144)的移动速率可以相对于该关节或相对于紧邻的臂区段(例如,32124)来测量。在一些实现方案中,移动速率可以指速率、速度或加速度(例如,旋转速率、旋转速度或旋转加速度)。在此示例中,旋转速率可以指旋转速度的幅度,而旋转速度还可以描述旋转方向(例如,顺时针或逆时针)。在实施例中,计算***1100可以被配置为基于由传感器32241-32245生成的移动数据来确定附加移动数据。例如,如果传感器32241-32245直接测量旋转位置,并在移动数据中提供该测量结果,则计算***1100可以被配置为基于旋转位置来确定旋转速度和/或旋转加速度(例如,作为旋转位置的基于时间的导数)。在实施例中,第二组传感器32241-32245可以包括角位移传感器、线性位移传感器、被配置为生成移动数据的其他传感器,或者其组合。
图4描绘了用于确定描述机器人(例如,1200/3200)的特性(例如,物理特性)的估计参数值的示例方法4000的流程图。在一些情况下,方法4000可以作为机器人校准操作的一部分来执行。本领域技术人员将意识到,图4示出了用于估计机器人的特性的方法的一个示例,并且用于估计机器人的特性的其他示例方法可以具有比方法4000更少的步骤、更多的步骤和/或与方法4000不同的步骤。在实施例中,方法4000可以由计算***1100执行,或更具体地至少由计算***1100的处理电路1110执行,诸如当处理电路1110正在执行存储在非暂时性计算机可读介质1120上的指令(例如,用于机器人校准模块1122的指令)时。
在实施例中,方法4000的一些或全部步骤可以被执行多次,其中该多次可以对应于多次迭代。虽然下面关于方法4000的步骤的讨论可以示出那些步骤的一次迭代,但是附加迭代可以被执行。每次迭代可特定于特定臂区段、特定关节、由关节连接的特定臂区段对和/或为该臂区段或关节估计的特定物理特性(例如,摩擦或质心)。例如,一次迭代或一组迭代可以在一个时间段期间执行,以估计一个臂区段或一个关节的物理特性,而下一次迭代或下一组迭代可以在另一个时间段期间执行,以估计另一个臂区段或另一个关节的物理特性。在一些情况下,可以执行一次迭代以估计与臂区段或关节相关联的一个物理特性(例如,摩擦参数估计),而可以执行另一次迭代以估计与该臂区段或关节相关联的另一物理特性(例如,质心)。在实施例中,方法4000的步骤可以在一个时间段期间执行以估计机器人的臂区段、关节或其他部件或部件组合的特定特性(例如,与摩擦有关的特性),并且一些或全部步骤可以在另一时间段期间重复以估计该部件或部件组合的另一特性(例如,与质心有关的特性)。
在一些实现方案中,迭代可以以顺序方式估计机器人的臂区段或其他部件的特性。顺序方式可以涉及,例如,估计机器人的一系列部件中的一个部件的一个或多个特性,然后估计机器人的该一系列部件中的下一个部件的一个或多个特性。例如,如果机器人的部件是在多个关节(32141-32145)处连接的一系列臂区段(32121-32126),则顺序方式可能涉及向上游的序列,在该序列中,最早的迭代被用来估计最远侧臂区段(例如,32126,其在一系列臂区段中最下游)或最远侧关节(例如,32145)的一个或多个特性(例如,质心)。在该最早的迭代之后,下一次迭代可以向上游进行以估计与最远侧臂区段或最远侧关节紧挨的上游的近侧臂区段(例如,32125)或关节(例如,32144)的一个或多个特性(例如,质心)。该向上游的序列可以使用下一次迭代在上游方向上进行,以便按照从离机器人基座(例如,3202)最远的臂区段(例如,32124)或关节(例如,32143)朝向最靠近机器人基座的臂区段(例如,32121)或关节(例如,32141)行进的序列来估计剩余臂区段(例如,32124-32121)或剩余关节(例如,32143-32141)的一个或多个特性。
在实施例中,方法4000可以开始于或以其他方式包括步骤4002,其中计算***1100选择第一关节或第一臂区段中的至少一个。第一关节可以从机械臂的多个关节(诸如图3A-3C的机械臂3210的多个关节32141-32145)中选择。同样地,第一臂区段可以从机械臂的多个臂区段(诸如机械臂3210的多个臂区段32121-32126)中选择。例如,被选择的第一关节可以是例如32144,或被选择的第一臂区段可以是例如臂区段32125。在此示例中,被选择的第一关节将第一臂区段连接到另一个臂区段,诸如紧邻第一臂区段的第二臂区段(例如,臂区段32124)。如果此示例中的多个臂区段串联连接,则第二臂区段可以例如直接连接到第一臂区段的近端。换句话说,第一臂区段可以被直接连接到第二臂区段的远端,使得第一臂区段位于第二臂区段远侧。
在实施例中,第一关节或第一臂区段可以在步骤4002中被选择,以便估计与第一关节或第一臂区段相关联的物理特性。更具体地,计算***1100可以选择第一臂区段(例如,32125)或第一关节(例如,32144)以便引起第一关节处的运动,或更具体地,引起通过第一关节连接的第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对运动。如下面更详细地讨论的,计算***1100可以接收与该运动相关联的传感器数据,并且使用该传感器数据来估计与第一关节或第一臂区段相关联的物理特性。如上所述,步骤4002的此示例可以涉及步骤4002的一次迭代,并且可以被用于估计第一关节或第一臂区段的物理特性。在一些实现方案中,步骤4002可被重复,以执行步骤4002的另一次迭代。此另一次迭代可以被用于例如选择第二臂区段(例如,32124)或用于第二关节(例如,32143),以便估计第二臂区段(例如,32124)的或第二关节(例如,32143)的物理特性。
在实施例中,计算***1100可以选择机械臂(例如,1210/3210)的任何关节或臂区段作为第一关节或第一臂区段。在实施例中,计算***1100可以在步骤4002中根据预定义的序列(诸如上面讨论的向上游的序列)选择第一关节或第一臂区段。例如,如果执行步骤4002的多次迭代,则向上游的序列可以涉及在步骤4002的多次迭代中的最早迭代期间选择机械臂的最远侧臂区段或最远侧关节。在步骤4002的后续迭代期间,向上游的序列可以涉及选择另一个关节或另一个臂区段,该另一个关节或另一个臂区段相对于在前次迭代期间选择的关节或臂区段是紧挨在上游的。
在实施例中,计算***1100可以选择多个关节、多个臂区段或由多个关节连接的多对紧邻的臂区段,以便同时估计多个关节或多个臂区段的特性。同时估计多个关节或多个臂区段的特性可以涉及直接同时致动多个关节或多个臂区段(例如,通过同时激活多个致动器),使得多个臂区段分别同时相对于多个关节移动。
在实施例中,对于步骤4002的每次迭代,计算***1100可以选择单个关节、单个臂区段或由关节连接的单对紧邻的臂区段,而不选择任何其他关节、臂区段、或紧邻臂区段对,以便仅直接致动所选择的关节或臂区段。更具体地,同时选择多个关节或多个臂区段可能导致多个臂区段的同时移动,如以上所讨论的。由于围绕臂区段或围绕由臂区段形成的机器人的环境中的空间限制,这样的同时移动可能造成问题。空间限制可能是由于例如机器人附近的物体(例如,电线)或结构(例如,天花板梁)。在这样的示例中,多个臂区段的同时移动可能潜在地为机器人造成可能导致与机器人附近的物体或结构发生碰撞的一定范围的运动。此外,多个臂区段的同时移动可能生成振动或其他形式的测量噪声。该测量噪声可能影响传感器数据的准确性。例如,一个臂区段的移动可能生成振动,该振动在机械臂上传播并影响准确测量机械臂的另一臂区段的移动的能力。换句话说,由前一臂区段的移动引起的振动可能将测量噪声引入到测量后一臂区段的移动的传感器数据中。由多个臂区段的同时移动引起的此测量噪声可能影响传感器数据的准确性,并且因此影响多个臂区段的特性的相应估计的准确性。因此,选择多个关节或多个臂区段来同时估计那些关节或臂区段的特性可能影响所得到的估计值(也被称为估计)的准确性。
因此,如上所述,计算***1100可以在步骤4002或步骤4002的迭代期间选择机械臂的一个关节而不选择机械臂的任何其他关节,或者可以选择机械臂的一个臂区段而不选择机械臂的任何其他臂区段。更具体地,计算***1100可以在步骤4002的第一迭代(其可以在其他迭代之前和/或之后)期间从机械臂(例如,3210)的多个关节(例如,32141-32145)中选择上面讨论的第一关节(例如,32144)而不选择该多个关节中的任何其他关节,或者可以从多个臂区段(例如,32121-32126)中选择上面讨论的第一臂区段(例如,32125)而不选择该多个臂区段中的任何其他臂区段。这样的选择可以作为在逐个关节或逐个区段的基础上执行机器人校准的一部分。例如,这样的执行机器人校准的基础可以涉及在特定迭代或时间段期间直接致动机械臂的单个关节或单个臂区段,而不在该迭代或时间段期间直接致动机械臂的任何其他关节或任何其他臂区段,使得在步骤4002的一次迭代或对应时间段期间仅单个关节或单个臂区段被直接致动。在一些情况下,如果机械臂(例如,3210)具有用于在多个关节(例如,33301-33304)处输出致动的多个相应的致动器(例如,图3B和3C的33301-33305),则步骤4002可以涉及在特定时间段或迭代期间选择第一致动器(例如,33304)以激活而在该时间段或迭代期间不选择该多个致动器中的任何其他致动器以激活。这样的选择可以在该时间段或迭代期间引起第一致动器(例如,33304)被激活而不引起多个致动器中的任何其他致动器的激活。该选择可以导致第一致动器(例如,33304)被激活以致动第一关节(例如,32144),或更具体地,在第一关节(例如,32144)处输出扭矩或力,以便在该时间段或迭代期间引起在第一关节(例如,32144)处的旋转。在第一关节(例如,32144)处的旋转可以指第一关节(例如,32144)被旋转,或者指连接到第一关节的臂区段(例如,32125)相对于第一关节(32144)或相对于另一个臂区段(例如,相对于臂区段32124,其经由关节32124连接到臂区段32125)被旋转。因为在该示例中在此时间段或迭代期间没有其他致动器被选择以激活,所以在此时间段或迭代期间在多个关节中的任何其他关节处没有旋转。换句话说,第一致动器(例如,33304)可在此时间段或迭代期间被激活以引起第一臂区段(例如,32125)相对于第一关节(例如,32144)或相对于紧邻第一臂区段(例如,32145)的第二臂区段(例如,32124)的移动,而在此时间段或迭代期间没有任何其他臂区段相对于对应关节的移动,或者而没有任何其他紧邻的一对臂区段之间的相对移动。
返回图4,方法4000可以包括步骤4004,其中计算***1100可以在该步骤的迭代期间生成一组一个或多个移动命令,用于经由在步骤4002中选择的第一关节(例如,32144)引起第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对移动,或更具体地,用于经由第一关节引起第一臂区段相对于第二臂区段移动。在一些情况下,该一个或多个移动命令可以被用于激活多个致动器中的第一致动器(例如,33304),并且可以由计算***1100经由图2B的通信接口1130输出或以其他方式传送到第一致动器(例如,33304)。例如,如果第一致动器(例如,33304)是发动机,则该一个或多个移动命令可以各自是用于激活发动机的发动机命令。在一些实现方案中,一个或多个发动机命令可以形成或包括被用于激活发动机的一个或多个信号(例如,电压信号或电流信号)。在一些情况下,该一个或多个命令可以能够控制发动机被激活的水平或幅度,诸如经由一个或多个移动命令的持续时间或经由编码在一个或多个移动命令中的信息来控制。发动机被激活的水平或幅度可以被用于控制由发动机输出的扭矩或力的量。
在实施例中,当致动器(例如,33304)接收该一个或多个移动命令时,致动器可以在关节处输出运动,或更具体地,输出力或扭矩以在关节处引起运动。如上所述,关节处的运动可以指关节自身移动(例如,旋转),或指关节的一个部件相对于关节的另一部件移动,或指臂区段相对于关节移动。例如,图5A示出了致动器33304响应于一个或多个移动命令而输出沿第一方向(例如,逆时针方向)的第一扭矩以引起臂区段32125在第一方向上相对于臂区段32124围绕关节32144从开始位置(例如,基线位置)旋转到中间位置。图5B示出了致动器33304响应于一个或多个移动命令而输出沿相反的第二方向(例如,顺时针方向)的第二扭矩以引起臂区段32125然后在第二方向上相对于臂区段32124围绕关节32144从中间位置旋转到结束位置。
如上所述,在实施例中,计算***1100可以在特定时间段或迭代期间选择一个关节或一个臂区段被直接致动,而不在该时间段或迭代期间选择任何其他关节或任何其他臂区段被直接激活。在一些情况下,计算***1100可以在步骤4004中生成一个或多个移动命令,使得该一个或多个移动命令引起所选关节处的运动,或更具体地,引起所选臂区段相对于该关节(或相对于紧邻的臂区段)的运动,而在该时间段或迭代期间不引起任何其他关节处的运动,或更具体地,不引起任何其他的一对紧邻臂区段之间的相对移动(例如,不引起任何其他臂区段相对于对应关节的移动)。更具体地,在一次迭代中生成的一组一个或多个移动命令可以被用于在该迭代中引起第一致动器(例如,33304)的激活而不引起多个致动器中的任何其他致动器的激活(例如,不激活致动器33301-33303和33305)。如上面讨论的,一次仅激活一个致动器可以更好地适应由机器人所处环境强加的空间限制。更具体地,因为此示例中的一个或多个移动命令一次仅引起在一个关节处的运动,所以与机器人的环境中的物体或结构发生碰撞的风险可以被降低。一次仅激活一个致动器还可以提高机器人校准的准确性。即,一个或多个移动命令可以使一个致动器(例如,33304)被激活以在一个关节处输出运动,而其他致动器保持停用,使得停用的致动器不在其对应关节处输出运动。在其他关节处这样的运动的缺少可以减少振动噪声或其他噪声的量,对于与被激活的致动器相对应的关节而言,这可以提高对运动进行测量的准确性。更准确的测量可以导致来自机器人校准的更准确的结果。
在实施例中,计算***1100可以基于移动分布简档生成一个或多个移动命令,该移动分布简档可以是或可以包括描述所选关节处的运动或所选臂区段的运动(例如,上面讨论的第一臂区段相对于第二臂区段的运动)的预期或规划的特点的信息。在一些情况下,移动分布简档可以是位置分布简档,其指定所选臂区段或所选关节的位置(例如,旋转位置)的预期或规划值。在一些情况下,移动分布简档可以是速率分布简档、速度分布简档和/或加速度分布简档,其可以描述所选关节或所选臂区段的速率、速度和/或加速度(例如,旋转速率、旋转速度或旋转加速度)的一个或多个预期或规划值。在一些实现方案中,移动分布简档中的值可以是时间的函数,或更一般地对应于不同的时间点。在一些实现方案中,移动分布简档可以包括或表示描述运动的位置、速率、速度和/或加速度如何随时间变化的波形。在一些情况下,速率分布简档可以更具体地是指定旋转速率和方向的速度分布简档。
在实施例中,在步骤4004中生成的一个或多个移动命令可以被用于确定与两个臂区段(诸如在步骤4002的一次迭代期间选择的第一臂区段(例如,32125)和第二臂区段(例如,32124))之间的关节处的摩擦相关联的摩擦参数估计。例如,摩擦参数可以是第一臂区段和第二臂区段之间的粘性摩擦系数,或者可以是两个臂区段之间的静态摩擦(也被称为库仑摩擦)的量。在一些实现方案中,该一个或多个移动命令可以基于如下的移动分布简档来生成,即,该移动分布简档旨在生成针对估计摩擦而被优化的传感器数据。更具体地,可以基于如下的速率分布简档来生成一个或多个移动命令,即,该速率分布简档试图或旨在使所得到的运动经历一宽范围的速率或速度值。更具体地,这样的速率分布简档可以增强对某些类型的摩擦的测量,诸如两个部件之间的粘性摩擦,这种摩擦可以具有取决于两个部件之间的相对移动的速率的幅度。因此,试图或规划使关节或臂区段处的运动具有一广泛范围的速率或速度值的速率分布简档可以允许测量一广泛范围的粘性摩擦值,这可以提高估计粘性摩擦的特点(例如,估计粘性摩擦系数)的准确性。
在实施例中,用于估计摩擦参数的速率分布简档可以包括对应于特定时间段或迭代内的不同时间点(诸如其中选择了第一个臂区段或第一个关节的第一时间段)的多个速率值(例如,旋转速率)。该多个值可以包括等于预定义的最大操作速率的至少一个值。预定义的最大操作速率可以是例如致动器(例如,33304)或机械臂(例如,3210)或被致动的臂区段的额定最大速率。在一些情况下,预定义的最大操作速率可以由致动器、机器人或机械臂的制造商提供,并且可以存储在非暂时性计算机可读介质1120中或其他地方。在一些情况下,预定义的最大操作速率可能已经被制造商确定为致动器或机械臂可以进行操作同时所得到的运动仍然稳定的最大速率值。在一些情况下,预定义的最大操作速率可能已经被制造商确定为致动器或机器人可以持续操作一段时间而不对致动器或机械臂造成重大损坏风险的最大速率值。
作为示例,图6A-6C示出了可以被用于估计摩擦参数的移动分布简档。更具体地,图6A描绘了描述关节或臂区段的旋转位移或更具体地一个臂区段(例如,上面讨论的第一臂区段)相对于基线位置的旋转位置的位置分布简档。图6B描绘了对应的速率分布简档,或更具体地速度分布简档,其描述了臂区段的旋转速率(或更具体地,旋转速度)的值。旋转速率的值可以相对于例如由基线位置提供的参考系,或由对应关节或相邻臂区段(例如,上面讨论的第一关节或第二臂区段)提供的参考系。图6C描绘了描述臂区段相对于参考系的旋转加速度的值的对应加速度分布简档。在图6B的示例中,致动器或机械臂可以具有每秒150度的预定最大操作速率。如图6B中所示,速率分布简档可以试图或规划使旋转速度在tb处达到预定最大操作速度并且在tc处再次达到。还如上面讨论的,此速率分布简档可以被用于估计摩擦参数。
在图6B中,示出的值可以描述旋转速度。更具体地,它们指示在从ta到tc的时间范围期间旋转速度可以具有第一方向(例如,逆时针方向)。此时间范围可以对应于例如图5A中所示的旋转。这些值还指示在从tc到te的时间范围期间旋转速度可以具有第二方向(例如,顺时针方向),并且可以对应于图5B中所示的旋转。还如图6B中所示,旋转速度可以在时间tb和时间td处开始在幅度上向零减小。这些时间点可以对应于用于引起旋转的致动器(例如,33304)转换正在被输出的扭矩的方向(例如,从逆时针方向到顺时针方向)的时间。
在实施例中,在步骤4004中生成的一个或多个移动命令可以被用于确定臂区段(诸如上面针对步骤4002讨论的迭代中选择的第一臂区段(例如,32125))的质心(CoM)估计。在这样的实施例中,可以利用如下的移动分布简档来确定CoM估计,即,该移动分布简档旨在生成针对估计CoM而被优化的传感器数据。在一些实现方案中,用于估计CoM的移动分布简档可以不同于用于估计摩擦的移动分布简档。例如,第一速率分布简档或第一加速度分布简档可以被用于确定摩擦参数估计,而第二速率分布简档或第二加速度分布简档可以被用于确定CoM估计。
在实施例中,用于估计CoM的第二速率分布简档或第二加速度分布简档可以试图或规划限制运动的速率或加速度。更具体地,达到高的速率或加速度的运动可能生成增加的振动量,这可能将测量噪声引入传感器数据中。因此,限制速率或加速度可以减少测量噪声的量。此外,在一些情况下,臂区段的CoM可能取决于其旋转位置而不是其旋转速率。因此,限制速率或加速度,即使它减小了由运动实现的速率值的范围,也可能不会对CoM估计的准确性产生不利影响。在一个示例中,用于估计摩擦的第一速率分布简档可以包括旋转速率的第一多个值,而用于估计CoM的第二速率分布简档可以包括旋转速率的第二多个值。第二多个值可以对应于特定时间段或迭代内的不同时间点,并且第二速率分布简档可以对速率进行限制,使得所有第二多个值小于或等于预定义的速率阈值。在一个示例中,预定义的速率阈值可以是例如预定义的最大操作速率的预定义的百分比(例如,10%)。图7A至图7C示出了可以被用于估计CoM的位置分布简档、对应的速率分布简档和对应的加速度分布简档。更具体地,图7B示出了用于估计CoM的第二速率分布简档的示例。在此示例中,速率分布简档中的所有速率值可以小于或等于每秒70度的速率阈值。在一些实现方案中,如果加速度分布简档被用于估计CoM,则在移动发生的整个时间段期间,加速度分布简档可以使得移动速率(例如,两个相邻臂区段之间的相对移动)小于或等于预定义的加速度阈值。
如上所述,方法4000的各个步骤的一次迭代可以被用来估计关节或臂区段的一个特性,并且这些步骤的另一次迭代被执行以估计该关节或臂区段的另一个特性。在一个示例中,各个步骤(例如,4002、4004)的一次迭代可以生成第一组一个或多个移动命令,用于引起一对臂区段(诸如上面讨论的第一臂区段(例如,32125)和第二臂区段(例如,32124))之间的在第一时间段或第一迭代期间的相对移动。第一组一个或多个移动命令可以基于上面讨论的第一移动分布简档而生成,以确定例如摩擦参数估计。在此示例中,步骤的另一迭代可以被执行(例如,步骤4002和4004可以被重复)以生成第二组一个或多个移动命令以也引起第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对移动。第二组一个或多个移动命令可以基于上面讨论的第二移动分布简档而生成,以确定例如CoM估计。
在实施例中,如果方法4000的步骤(例如,4002、4004)被用于确定CoM估计,则计算***1100可以被配置为确定所选关节或所选臂区段的移动是否将围绕垂直或太接近垂直的轴发生。在一些情况下,轴可以是旋转轴,并且计算***1100可以确定旋转轴是否具有垂直或太接近垂直的朝向,其中垂直朝向可以指重力被施加的朝向。旋转轴的朝向可以取决于机械臂(例如,3210)的姿势,或更具体地取决于所选臂区段或所选关节如何定向。更具体地,在一些实现方案中,估计臂区段的CoM可以依赖于在臂区段的旋转或其他移动期间使臂区段的CoM更靠近或更远离枢轴点(例如,关节32144)移动。如果此移动的旋转轴太垂直,则臂区段的CoM可能与枢轴点保持恒定距离,这可能会干扰估计CoM的能力。因此,计算***1100可以确定臂区段或关节的朝向是否导致旋转轴具有垂直朝向或太接近具有垂直朝向。
在实施例中,计算***1100可以使用假想锥体来表示太接近垂直朝向(即平行于重力方向的朝向)的朝向范围,并确定旋转轴是否在该假想锥体中。更具体地,假想锥体可以表示旋转轴的可能朝向的范围,其中可能朝向的范围包括垂直朝向,并且包括与垂直朝向相差不超过预定义的角度阈值的其他朝向。换句话说,由该锥体表示的其他可能朝向与垂直朝向形成角度,并且这些角度小于或等于预定义的角度阈值。例如,图8示出了假想锥体5500,其表示垂直朝向V和在垂直朝向V的预定义的角度(例如,30度)内的其他朝向的范围。实际上,相对于垂直朝向V的预定义的角度阈值(即,由假想锥体5500表示)可以对应于旋转轴的如下的朝向,即,在该朝向上难以将对所选关节的重力影响量与对所选关节的实际振幅的噪声贡献进行区分。换句话说,当旋转轴在预定义的角度阈值内(即,在锥体内)时,重力影响量可能太低而无法准确地与对所选关节的噪声贡献区分。在此示例中,计算***1100可以确定用于特定臂区段的旋转的旋转轴R是否在假想锥体5500内。图8描绘了旋转轴R基本水平并且因此不在假想锥体5500内的示例。在另一示例中,如果计算***1100确定旋转轴在假想锥体中,则计算***1100可以输出这样的确定(旋转轴在假想锥体中的确定)的指示。例如,该指示可以是图形用户界面上的视觉指示。该指示可以将所得的CoM估计标记为可能具有次优水平的准确度,这可以被用于评估是否使用机械臂的另一个姿势来重新确定CoM估计。
在实施例中,计算***1100可以接收描述臂区段或关节(诸如上面讨论的第一关节或第一臂区段)的致动和/或移动的传感器数据。例如,返回到图4,方法4000可以包括步骤4006,其中计算***1100接收与在步骤4002中选择的关节或臂区段(例如,第一关节或第一段)相关联的一组致动数据。该组致动数据可以是指示在臂区段正在相对于关节或相对于相邻臂区段移动的时间段或迭代中(或更具体地,在两个臂区段(例如,第一臂区段和第二臂区段)之间正在发生相对移动的时间段中)该关节(例如,32144)处的总扭矩或总力的传感器数据。在一些实施例中,该组致动数据可以由与所选关节(例如,32144)或臂区段(例如,32125)相关联的传感器(例如,传感器32224)生成,并且可以经由通信接口1130被传送到计算***1100。
在实施例中,该组致动数据可以直接指示所选关节(例如,第一关节,诸如32124)处或臂区段(例如,第一臂区段,诸如32125)上的总力或总扭矩,或与该总力或总扭矩成正比,或可以间接指示该总力或总扭矩。图9示出了由致动数据指示的总扭矩的示例。如上所述,用于生成致动数据的传感器(例如,32224)在一些情况下可以是电流传感器,而该组致动数据可以正比于/直接测量或描述流过对应致动器(例如,33304)的电流,其中该电流用于引起所选臂区段的移动,诸如第一臂区段相对于第二臂区段的移动。在这样的示例中,计算***1100可以被配置为基于由致动数据直接测量的电流值来计算或以其他方式确定关节处或臂区段上的总力或总扭矩。如上所述,总扭矩或电流可以通过将电流值乘以预定义的扭矩常数来计算。
返回图4,方法4000可以包括步骤4008,其中计算***1100接收一组移动数据。该组移动数据可以是指示所选臂区段或所选关节的移动(诸如在第一时间段或第一迭代期间第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对移动)的量或速率的传感器数据。在这样的示例中,该相对移动的量可以指示第一臂区段相对于由第二臂区段或第一关节(例如,32124)提供的基线位置的旋转位置,而相对移动的速率可以指示第一臂区段相对于由第二臂区段或第一关节提供的参考系的旋转速率、旋转速度或旋转加速度。在一些情况下,该组移动数据可以直接测量旋转速率、旋转速度或旋转加速度。在一些情况下,该组移动数据可以直接测量旋转位置,并且计算***1100可以被配置为基于旋转位置如何随时间变化来计算或以其他方式确定旋转速率、旋转速度或旋转加速度。在一些实施例中,该组移动数据可由与所选关节(例如,关节32144)相关联的传感器(例如,传感器32244)生成。
在实施例中,该组移动数据可以包括描述与图6A至7C中的移动分布简档基本匹配的移动的值。例如,如果该组移动数据具有描述臂区段相对于基线位置的旋转位置的值,则由移动数据的值描述的旋转位置可以基本与图6A或图7A中的位置分布简档相匹配。类似地,如果该组移动数据具有描述臂区段(例如,第一臂区段,诸如32125)相对于特定参考系的旋转速率的值,则移动数据的值可以描述基本与图6B或7B中的速度分布简档相匹配的移动。
返回图4,方法4000可以包括步骤4010,其中计算***1100确定所选关节或所选臂区段的摩擦参数估计或质心(CoM)估计中的至少一个。这样的确定可以基于该组致动数据和该组移动数据。例如,步骤4010的一次迭代可以涉及确定与第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的摩擦相关联的摩擦参数估计,而质心(CoM)估计是与第一臂区段(例如,32125)相关联的。在更具体的示例中,估计的摩擦参数可以是第一臂区段和第二臂区段之间的粘性摩擦系数,或者是第一臂区段和第二臂区段之间的静态摩擦量。还在此示例中,CoM估计可以是第一关节(其可以充当枢轴点)和第一臂区段的CoM之间的距离r的值。如上所述,方法4000的步骤在一些情况下可以被重复以执行步骤的多次迭代。在这样的情况下,步骤4002-4008的一次迭代可以在第一时间段期间被执行以确定摩擦参数估计,并且这些步骤的另一次迭代可以在第二时间段(其可以在第一时间段之前或之后)期间被执行以确定CoM估计。
图10A-10D示出了摩擦参数估计可以如何基于一组致动数据和一组移动数据来确定。更具体地,图10A和10B是以下各项的组合的图:(i)总扭矩值和(ii)对应的旋转速度值。在步骤4010的一次迭代中,这些速度值可以定义第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对移动。更具体地,这些值的每个组合可以包括表示在相应时间点处在一关节(例如,第一关节)处的总扭矩的第一值,以及表示该时间点处的旋转速度的第二值。例如,第一值可以指示在例如在一时间点处第一臂区段相对于第二臂区段上的总扭矩,并且第二值可以指示在该时间点处第一臂区段和第二臂区段之间的旋转速度。图10A中绘制的值的组合可以对应于例如图5A中所示的旋转,其中第一臂区段(例如,32125)在第一方向上增加旋转速率,然后停止旋转。图10B中绘制的值的组合可以对应于图5A和5B中所示的旋转,其中第一臂区段(例如,32125)在第一方向上增加旋转速率,停止旋转,在第二方向上增加旋转速率,然后再次停止旋转。
在实施例中,致动数据表示的总扭矩可以基于来自致动器对两个臂区段(诸如第一臂区段(例如,32125)和第二臂区段(例如,32124))之间的惯性的贡献。在实施例中,总扭矩可以基于来自摩擦的贡献。更具体地,在一些情况下,总扭矩可以通过示例方程来描述:
τ=来自致动器的贡献+来自重力的贡献+来自摩擦的贡献 (1)
在上面的方程中,τ是指第一关节(例如,32144)上的总扭矩,并且可以等于或推导自致动数据。在此示例中,来自致动器的贡献可以指由致动器(例如,33304)输出的扭矩或力。例如,在正在为上面讨论的第一臂区段(例如,32125)或第一关节(例如,32144)估计摩擦参数的迭代中,来自致动器的此贡献可以由项[数学符号.1]I表示,其中[数学符号.2]表示第一臂区段相对于第二臂区段的旋转加速度,并且其中I是第一臂区段的惯性矩。
在实施例中,此迭代中来自重力的贡献可以指由下游段(诸如第一臂区段和末端执行器(也被称为末端执行器装置))的重量引起的扭矩,其中该扭矩相对于由第一关节提供的枢轴点起作用。例如,来自重力的贡献可以由项mgrcosθ或mgrsinθ表示,其中θ表示下游区段相对于重力矢量(或相对于基线位置)的旋转位置,而mg表示下游区段的重量贡献。更具体地,m表示下游段的质量,而g表示重力加速度(例如,9.8m/sec2)。在此示例中,r表示第一臂区段的质心(CoM)与第一关节之间的距离。在一些实现方案中,质量m或重量mg的值可以是存储在非暂时性计算机可读介质1130中的已知值。
在实施例中,来自摩擦的贡献可以指由摩擦对第一臂区段相对于第二臂区段或相对于第一关节的运动或运动中的变化提供了多少阻力。在一些情况下,来自摩擦的贡献可以被表示为[数学符号.3]其中s表示第一臂区段和第二臂区段之间的静态摩擦(也被称为库仑摩擦)的量,[数学符号.4]表示第一臂区段相对于由第二臂区段提供的参考系的旋转速度,并且b表示第一臂区段和第二臂区段之间的粘性摩擦系数。在这样的情况下,在第一臂区段和第二臂区段之间的相对旋转期间静态摩擦可以保持恒定,而粘性摩擦的幅度可以随着旋转速度的幅度增加而增加。
在实施例中,计算***1100可以被配置为从致动数据中有效地提取或以其他方式确定来自摩擦的贡献,该贡献也可以被称为总扭矩的摩擦分量。例如,图10C和10D示出了表示各种时间点的总扭矩的摩擦分量的值的组合。总扭矩的摩擦分量的这些值可以与旋转速度的值组合。在一些情况下,如果致动器的贡献和重力的贡献是已知的,则计算***1100可以被配置为通过从致动数据所指示的总扭矩中减去致动器的贡献和重力的贡献来提取总扭矩的摩擦分量。例如,如果计算***1100先前已经执行了步骤4002-4010的先前迭代以确定了对I(表示惯性矩)的估计或对r(表示CoM)的估计,则计算***1100可以使用这些估计以及由移动数据提供或推导自移动数据的值[数学符号.5]θ、来确定来自致动器的贡献(其可被估计为[数学符号.6]I)和来自重力的贡献(其可被估计为mgr cosθ)。计算***1100然后可以从总扭矩中减去致动器的贡献和重力的贡献以提取摩擦的贡献。在一些情况下,计算***1100可以通过求解将总扭矩与摩擦相关的一组联立方程来有效地提取摩擦分量,如下面更详细讨论的。
如图10D中所示,计算***1100可以被配置为使用总扭矩的摩擦分量(其可以被从致动数据中提取)和旋转速度(其可以由移动数据提供或被从中提取)之间的关系来确定摩擦参数估计。更具体地,两个臂区段之间的摩擦可以包括静态摩擦和粘性摩擦。如上面讨论的,在一些情况下,静态摩擦可以表示为常数(s)而粘性摩擦可以被表示为旋转速度的线性函数[数学符号.7]使得总扭矩的摩擦分量可以近似为[数学符号.8]在这样的情况下,计算***1100可以对图10D中的值的组合应用线性拟合,这些组合表示总扭矩的摩擦分量。更具体地,计算***1100可以确定线7500A和/或7500B,其拟合穿过(fitthrough)或以其他方式近似于图10C和10D的值的组合。线7500A或7500B可以表示以上表达式[数学符号.9]更具体地,计算***1100可以确定粘性摩擦系数(b)等于或基于线7500A或7500B的斜率(或作为这些线相应斜率的平均),并确定静态摩擦(s)等于或基于线7500A或7500B的高度(例如,等于Y-截距7501A或7501B,或它们的幅度的平均)。
如上所述,计算***1100可以被配置为通过求解将总扭矩与摩擦相关的一组联立方程来有效地提取摩擦分量。如上所述,总扭矩τ可以基于来自致动器的贡献、来自重力的贡献和来自摩擦的贡献。在一个示例中,总扭矩可能基于下面更具体的关系[数学符号.10]:
在此示例中,参数τ的值可以由致动数据提供或推导自致动数据。参数[数学符号.11]θ、(其可分别表示旋转位置、旋转速度和旋转加速度)可由移动数据提供或推导自移动数据。还如上面讨论的,参数I表示惯性矩,参数mg表示臂区段(例如,第一臂区段)的重量,参数r表示臂区段的CoM与该臂区段被连接到的关节(例如,第一关节)之间的距离,参数s表示静态摩擦量,并且参数b表示粘性摩擦系数。在上面的示例中,α可以是基线位置和水平朝向之间的角度,如图3E所示。此外,Sign([数学符号.12])函数可以被用于表示具有与运动方向相反的方向的静态摩擦。更具体地,Sign([数学符号.13])函数在[数学符号.14]为正时可以具有值1,在[数学符号.15]为负时可以具有值-1,在[数学符号.16]为0时可以具有值0。
在实施例中,计算***1100可以被配置为使用上面的关系来生成对应于不同时间点或者更一般地对应于以下各项的不同组合的一组方程:(i)扭矩值和(ii)位置、速度或加速度值。例如,计算***1100可以被配置为生成以下方程组,其可以表示为矩阵[数学符号.17]:
在上面的示例中,[数学符号.18]τ1、τ2、……τn可能对应于由致动数据提供或推导自致动数据的不同扭矩值。此外,[数学符号.19] 可以对应于由移动数据提供或推导自移动数据的不同加速度值,并且其分别对应于[数学符号.20]τ1、τ2、……τn。类似地,[数学符号.21]可以对应于由移动数据提供或推导自移动数据的不同速度值,并且[数学符号.22]θ1、θ2、……θn可以对应于由移动数据提供或推导自移动数据的的不同位置值,其中这些位置或速度的值也可以对应于[数学符号.23]τ1、τ2、……τn。在实施例中,这些值可以对应于不同的时间点。例如,[数学符号.24]τ1、θ1、和可以对应于由(一个或多个)传感器在第一时间点(例如,图10A和10B中的ta)做的测量,而[数学符号.25]τ2、θ2、和可以对应于由(一个或多个)传感器在第二时间点(例如,图10A和10B中的tb)做的测量。
在实施例中,计算***1100可以被配置为求解上面的联立方程组以确定s、b、I、m、r和/或α的相应值。求解方程可能涉及确定满足或近似满足上面的方程的s、b、I、m、r和/或α的相应值。在一些实现方案中,计算***1100可以被配置为应用最小二乘拟合方法来确定上面的参数的相应值,其例如使得来自致动数据的测量的扭矩值[数学符号.26]τ1、τ2、……τn与使用移动数据和上面的参数的估计值计算的预测的扭矩值(也被称为扭矩预测值或扭矩值的预测)之间的误差量最小化。
在实施例中,计算***1100在步骤4010中可以基于上面讨论的技术确定摩擦参数估计。例如,摩擦参数估计可以是上面讨论的参数s的值(其表示静态摩擦),和/或可以是上面讨论的参数b的值(其表示粘性摩擦系数)。在一些情况下,如上所述,用于确定摩擦参数估计的致动数据、移动数据和/或其他传感器数据可能已经以对于估计摩擦而言最优的方式生成。例如,传感器数据可能已经基于以下速率分布简档生成,该速率分布简档试图使臂区段的旋转速率(相对于由另一个臂区段提供的参考系)在时间段的特定迭代期间至少达到一次预定义的最大操作速率。
在以上示例中,计算***1100不仅确定摩擦参数(例如,s或b)的估计,而且确定参数r的估计,参数r可以表示臂区段的质心(CoM)。在一些情况下,此估计可以被计算***用作机器人校准的结果。在其他情况下,计算***1100可以将此估计视为估计摩擦的副产品,并且可以在迭代结束之后丢弃CoM估计。在这样的情况下,计算***1100可以执行对于估计CoM而言更优的另一次迭代。更具体地,在一些情况下,用于估计摩擦的传感器数据对于估计CoM而言可能是次优的。在这样的情况下,计算***1100可以执行步骤4002-4010(或仅步骤4004-4010)的另一次迭代以获得对于估计CoM更优的一组传感器数据。例如,该组致动数据和移动数据可能已经利用如下的速率分布简档生成,该速率分布简档试图将速率或旋转限制在预定义的阈值以下,如上面所讨论的。
在实施例中,计算***1100可以使用上面的求解联立方程的技术来在步骤4010的一次迭代中确定CoM估计。在这样的迭代中,计算***1100还可以确定摩擦参数(例如,s或b)的估计。计算***1100可以使用这样的估计作为机器人校准的结果,或者可以将该估计视为估计CoM的副产品,并且在迭代结束之后丢弃摩擦参数的估计。
在一些情况下,计算***1100可以使用上面的技术或某个其他技术来有效地从致动数据中提取由于臂区段(例如,第一臂区段)的重量(或更具体地,是由于重力对臂区段CoM的影响)而产生的总扭矩的分量。在一个示例中,此分量可以表达为mgrcos(θ+α),并且可以通过例如从总扭矩中减去致动器的贡献(例如,[数学符号.27]I)和摩擦的贡献(例如,[数学符号.28])来获得。例如,图11A提供了表示总扭矩的重力分量的值的示例,其可以近似为重力对臂区段的CoM的影响。图11B示出了正弦拟合,或更具体地,示出了计算***1100用于拟合图11A中的值的正弦曲线。在一些情况下,计算***1100可以基于该正弦曲线的幅度和相移来确定CoM估计。更具体地,计算***1100可以被配置为基于正弦曲线的幅度确定mgr的值,而参数α可以影响正弦曲线的相移。在此示例中,计算***1100可以将正弦曲线的幅度除以臂区段的重量来确定r,r可以表示臂区段的CoM。
在实施例中,当基于致动数据确定特定臂区段的CoM估计时,计算***1100可以被配置为考虑下游臂区段(例如,更远侧的臂区段)可能对致动数据或其他传感器数据的影响。更具体地,如上面关于图3A-3C、5A和5B所讨论的,可以对具有被连接为一系列臂区段的多个臂区段的机械臂执行机器人校准,其中一些臂区段(例如,32121-32125)具有更下游或更远侧的一个或多个臂区段(例如,32126)。例如,上面讨论的第一臂区段(例如,32125)在一些情况下可以被连接到一个或多个远侧臂区段(例如,32126),该一个或多个远侧臂区段相对于第一臂区段(例如,32125)位于下游。来自该一个或多个远侧臂区段(例如,32126)的重量可以对第一关节(例如,32144)处的总扭矩有贡献,并且因此可以影响用于确定第一臂区段(例如,32125)的CoM估计的传感器数据。在这样的情况下,计算***1100可以在确定第一臂区段(例如,32125)的CoM估计之前确定与一个或多个远侧臂区段(例如,32126)相关联的CoM估计。以此方式,当计算***1100正在确定与第一臂区段(例如,32125)相关联的CoM估计时,它可以能够使用与一个或多个远侧臂区段(例如,32126)相关联的较早确定的CoM估计来确定传感器数据受该一个或多个远侧臂区段的重量影响的程度,以便移除或补偿该影响。
作为示例,计算***1100可以基于在步骤4006和4008中接收的一组致动数据和一组移动数据来确定与第一臂区段(例如,32125)相关联的初始CoM估计,该一组致动数据和一组移动数据可以已经在第一臂区段的移动期间生成。初始CoM估计可能受来自一个或多个远侧臂区段(例如,32126)的重量的影响。因此,计算***1100可以基于与该一个或多个远侧臂区段(例如,32126)相关联的CoM估计来确定一调整,以用于移除该一个或多个远侧臂区段(例如,32126)对初始CoM估计的影响。该调整可能会导致初始CoM估计更移近第一关节。计算***1100可以将该调整应用于初始CoM估计,以生成与第一臂区段(32125)相关联的经调整的CoM估计。在步骤4010中针对第一臂区段(例如,32125)为机器人校准确定的CoM估计可以等于或基于经调整的CoM估计。
在实施例中,当计算***1100在步骤4010的一次迭代中已经确定臂区段(例如,第一臂区段)的CoM估计时,计算***1100然后可以在下一次迭代中使用该臂区段的CoM估计来确定上游臂区段(例如,上面讨论的第二臂区段)的CoM估计。在一个特定示例中,计算***1100可以执行方法4000的步骤的最早一次迭代或最早一组迭代以确定机械臂(例如,3210)中最远侧的或最下游的关节(例如,32145)和/或臂区段(例如,32126)的CoM估计。计算***1100可以通过在向上游的方向上前进来执行方法4000的步骤的后续一次迭代或一组迭代。更具体地,计算***1100可以被配置为使用步骤4002-4010的下一次迭代来确定紧挨最远侧臂区段的上游的臂区段的CoM估计。在此迭代中,计算***可以被配置为通过移除来自一个或多个下游臂区段的影响来确定此上游臂区段的CoM估计。来自一个或多个下游臂区段的此影响可以由最远侧臂区段的CoM来近似,该最远侧臂区段的CoM可能已经在步骤4002-4010的先前迭代中确定。
在实施例中,当计算***1100正在执行步骤4010的迭代以确定特定臂区段的CoM估计时,它可以被配置为确定来自k个下游臂区段对致动数据和/或对在特定迭代中正被估计的臂区段或当前关节的初始CoM估计的净影响或净贡献,或更具体地,来自下游臂区段的相应重量的净影响。例如,净影响可以根据以下公式确定[数学符号.29]:
在实施例中,计算***1100可以在步骤4010中确定与臂区段相关联的惯性矩的估计。例如,计算***1100可以被配置为求解上面确定的方程以确定I的值,其表示该惯性矩。
如上所述,方法4000可以具有步骤4002-4010中的一些或全部在多个迭代或多个时间段期间被多次执行的实施例。例如,一次迭代可以被执行以引起第一臂区段(例如,32125)和第二臂区段(例如,32124)之间的相对移动以确定摩擦参数估计,而另一次迭代可以被执行以引起第一臂区段和第二臂区段之间的附加的相对移动以确定CoM估计。虽然上面的讨论关于第一臂区段(例如,32125)和第一关节(例如,32124)示出了步骤4002-4010,但步骤4002-4010的其他迭代可以关于其他臂区段或其他关节被执行。
在实施例中,方法4000可以包括可以在执行机器人校准之后被执行的步骤。该步骤可以涉及输出用于引起后续的机械臂移动的后续一组一个或多个移动命令。在一个示例中,该后续一组一个或多个移动命令可以基于从机器人校准确定的(一个或多个)摩擦参数估计和/或(一个或多个)CoM估计来生成。例如,该后续一组一个或多个移动命令可以基于与上面讨论的第一臂区段或第一关节相关联的摩擦参数估计和/或CoM估计。在一个示例中,摩擦参数估计和/或CoM估计可以被用于更新可以被计算***1100用来生成该后续一组一个或多个移动命令的扭矩模型和/或摩擦模型。在一些情况下,计算***可以被配置为生成该后续一组一个或多个运动命令,使得它们使一个或多个致动器(例如,33301-33305)生成相应量的力或扭矩,这些力或扭矩补偿机械臂(例如,3210)的各个部件之间的摩擦,并考虑这些部件的CoM的相应位置。
各种实施例的附加讨论:
实施例1涉及一种计算***,该计算***可以包括通信接口和至少一个处理电路。通信接口可以被配置为与具有机械臂的机器人通信,该机械臂包括在多个关节处彼此可移动地连接的多个臂区段。至少一个处理电路可以被配置为:当计算***与机器人通信时,诸如通过执行非暂时性计算机可读介质上的指令来执行方法。方法可以包括选择以下各项中的至少一个:(i)来自所述多个关节中的第一关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第一臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第一关节将第一臂区段连接到紧邻第一臂区段的第二臂区段。方法还包括输出用于引起机械臂移动的一组一个或多个移动命令,所述机械臂移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动;接收与第一关节或第一臂区段相关联的一组致动数据,其中所述一组致动数据是指示在第一臂区段和第二臂区段之间正在发生所述相对移动的时间段中第一关节处的总扭矩或总力的传感器数据;接收与第一关节或第一臂区段相关联的一组移动数据,其中所述一组移动数据是指示所述时间段期间第一臂区段和第二臂区段之间的所述相对移动的量或速率的传感器数据;基于所述一组致动数据和所述一组移动数据,确定以下各项中的至少一个:(i)与第一臂区段和第二臂区段之间的摩擦相关联的摩擦参数估计,或(ii)与第一臂区段相关联的质心(CoM)估计;输出用于引起后续的机械臂移动的后续一组一个或多个移动命令,其中所述后续一组一个或多个移动命令是基于以下各项中的至少一个而生成的:(i)所述摩擦参数估计或(ii)与第一臂区段相关联的CoM估计。
实施例2包括实施例1的计算***。在此实施例中,所述一组一个或多个移动命令用于引起第一臂区段和第二臂区段之间的所述相对移动而不引起所述多个臂区段中的任何其他一对紧邻的臂区段之间的相对移动。
实施例3包括实施例2的计算***。在此实施例中,所述至少一个处理电路被配置为:当与所述计算***通信的所述机器人具有用于在所述多个关节处输出致动的多个相应的致动器时,从所述多个致动器中选择第一致动器以激活,而不选择所述多个致动器中的任何其他致动器以激活,其中第一致动器对应于第一关节或第一臂区段。还在此实施例中,由所述至少一个处理电路生成的所述一组一个或多个移动命令用于引起第一致动器的激活而不引起所述多个相应致动器中的任何其他致动器的激活。
实施例4包括实施例3的计算***。在此实施例中,所述一组一个或多个移动命令用于在第一关节处引起旋转而不在所述多个关节中的任何其他关节处引起旋转。
实施例5包括实施例1-4中任一项的计算***。在此实施例中,第一臂区段与第二臂区段发生所述相对移动的所述时间段为第一时间段。此外,此实施例包括以下特征:所述一组一个或多个移动命令是第一组一个或多个移动命令,并且用于在第一时间段期间引起第一臂区段和第二臂区段之间的所述相对移动以具有第一速率分布简档,所述一组致动数据是与第一关节或第一臂区段相关联的第一组致动数据,所述一组移动数据是与第一关节或第一臂区段相关联的第一组移动数据,其中第一组致动数据和第一组移动数据两者都与第一速率分布简档相关联。还在此实施例中,所述至少一个处理电路被配置为基于第一组致动数据和第一组移动数据来确定所述摩擦参数估计,并且还被配置为执行以下操作:输出第二组一个或多个移动命令,用于经由第一关节引起第一臂区段和第二臂区段之间的附加的相对移动,并且用于使所述附加的相对移动具有不同于第一速率分布简档的第二速率分布简档;接收与第一关节或第一臂区段相关联的第二组致动数据,其中第二组致动数据是指示在所述附加的相对移动正在发生的第二时间段期间第一关节处的总扭矩或总力的传感器数据;接收与第一关节或第一臂区段相关联的第二组移动数据,其中第二组移动数据是指示第二时间段期间所述附加的相对移动的量或速率的传感器数据;基于第二组致动数据和第二组移动数据确定所述CoM估计。还在此实施例中,所述后续一组一个或多个移动命令是基于所述摩擦参数估计和所述CoM估计而生成的。
实施例6包括实施例5的计算***。在此实施例中,第一速率分布简档包括对应于第一时间段内的不同时间点的旋转速率的第一多个值,其中第一多个值中的至少一个值等于预定义的最大操作速率。还在此实施例中,第二速率分布简档包括对应于第二时间段内的不同时间点的旋转速率的第二多个值,其中第二多个值中的所有值小于或等于预定义的速率阈值。
实施例7包括实施例1-5中任一项的计算***。在此实施例中,所述一组一个或多个移动命令被生成以用于在所述时间段的至少一部分期间使所述相对移动的速率达到预定义的最大操作速率,使得所述一组致动数据的至少一部分和所述一组移动数据的至少一部分对应于所述预定义的最大操作速率。此外,在此实施例中,所述至少一个处理电路被配置为基于所述一组致动数据和所述一组移动数据来确定所述摩擦参数估计。
实施例8包括实施例7的计算***。在此实施例中,所述摩擦参数估计是对粘性摩擦系数的估计,或者是对库仑摩擦的估计。
实施例9包括实施例1-5中任一项的计算***。在此实施例中,所述一组一个或多个移动命令被生成以用于在所述相对移动正在发生的整个所述时间段期间使所述相对移动的速率小于或等于预定义的加速度阈值。还在此实施例中,所述至少一个处理电路被配置为基于所述一组致动数据和所述一组移动数据来确定所述CoM估计。
实施例10包括实施例1-9中任一项的计算***。在此实施例中,所述至少一个处理电路被配置为:当所述一组一个或多个移动命令用于经由第一关节引起第一臂区段和第二臂区段之间的相对旋转时,执行以下操作:确定所述相对旋转的旋转轴是否在表示一朝向范围的旋转轴的假想锥体内,其中所述朝向范围包括垂直朝向,并且其中所述垂直朝向与所述朝向范围中的所有其他朝向之间的相应角度小于或等于预定义的角度阈值;以及输出所述旋转轴是否在所述假想锥体内的指示。
实施例11包括实施例1-10中任一项的计算***。在此实施例中,所述至少一个处理电路被配置为:当所述多个臂区段被连接为一系列臂区段,并且包括第一臂区段下游的一个或多个远侧臂区段时,确定与所述一个或多个远侧臂区段相关联的CoM估计。还在此实施例中,与第一臂区段相关联的所述CoM估计是基于与所述一个或多个远侧臂区段相关联的所述CoM估计而确定的。
实施例12包括实施例11的计算***。在此实施例中,所述至少一个处理电路被配置为通过以下方式确定与第一臂区段相关联的CoM估计:基于所述一组致动数据和所述一组移动数据来确定与第一臂区段相关联的初始CoM估计;基于与所述一个或多个远侧臂区段相关联的CoM估计,确定调整,所述调整用于移除所述一个或多个远侧臂区段对所述初始CoM估计的影响;以及将所述调整应用于所述初始CoM估计,以生成与第一臂区段相关联的经调整的CoM估计,其中与第一臂区段相关联的CoM估计等于或基于所述经调整的CoM估计。
实施例13包括实施例12的计算***。在此实施例中,所述至少一个处理被配置为:当第二臂区段在第一臂区段的上游时,基于与第一臂区段相关联的CoM估计来确定与第二臂区段相关联的CoM估计。
实施例14包括实施例1-13中任一项的计算***。在此实施例中,所述至少一个处理电路还被配置为确定第一臂区段和第二臂区段之间的所述相对移动的一运动范围,其中所述一组一个或多个移动命令是基于所述运动范围而生成的。
实施例15包括实施例1-14任一项的计算***。在此实施例中,所述至少一个处理电路被配置为:当所述一组致动数据测量流过致动器以用于引起第一臂区段和第二臂区段之间的所述相对移动的电流时,基于所述电流确定第一关节处的所述总扭矩。
实施例16包括实施例1-15中任一项的计算***。在此实施例中,所述至少一个处理电路还被配置为基于所述一组致动数据和所述一组移动数据来确定与第一臂区段相关联的惯性矩估计。
实施例17包括实施例1-16中任一项的计算***。此实施例具有以下特征:第一臂区段与第二臂区段之间发生所述相对移动的所述时间段为第一时间段;与第一关节或第一臂区段相关联的所述一组致动数据为第一组致动数据,并且与第一关节或第一臂区段相关联的所述一组移动数据为第一组移动数据,所述一组一个或多个移动命令是第一组一个或多个移动命令,与第一臂区段和第二臂区段之间的摩擦相关联的所述摩擦参数估计是第一摩擦参数估计,与第一臂区段相关联的CoM估计是第一CoM估计。在此实施例中,至少一个处理电路被配置为执行以下操作:所述至少一个处理电路被配置为执行以下操作:选择以下各项中的至少一个:(i)来自所述多个关节中的第二关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第二臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第二关节将第二臂区段连接到紧邻第二臂区段的第三臂区段;输出用于引起机械臂移动的第二组一个或多个移动命令,所述机械臂移动包括第二臂区段和第三臂区段之间经由第二关节的相对移动;接收第二组致动数据和第二组移动数据,其中第二组致动数据是指示在第二臂区段和第三臂区段之间正在发生所述相对移动的第二时间段期间第二关节处的总扭矩或总力的传感器数据,并且其中第二组移动数据是指示第二时间段期间第二臂区段和第三臂区段之间的所述相对移动的量或速率的传感器数据;基于第二组致动数据和第二组移动数据,确定以下各项中的至少一个:(i)第二摩擦参数估计,或(ii)第二CoM估计,其中第二摩擦参数估计与第二臂区段和第三臂区段之间的摩擦相关联,并且第二CoM估计指示第二臂区段的CoM。还在此实施例中,所述后续一组一个或多个移动命令是进一步基于以下各项中的至少一个而生成的:(i)第二摩擦参数估计或(ii)第二CoM估计。
对于相关领域的普通技术人员将显而易见的是,在不脱离任何实施例的范围的情况下,可以对本文所述的方法和应用进行其他适当的修改和调整。上述实施例是说明性示例,并且不应被解释为将本发明限于这些特定实施例。应该理解的是,本文公开的各种实施例可以以与说明书和附图中具体呈现的组合不同的组合来组合。还应该理解,根据示例,本文描述的任何过程或方法的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,所有描述的动作或事件对于执行方法或过程可能不是必需的)。另外,尽管为了清楚起见,本文的实施例的某些特征被描述为由单个部件、模块或单元执行,但是应当理解,本文描述的特征和功能可以由部件、单元、模块的任何组合来执行。因此,在不脱离所附权利要求书所限定的本发明的精神或范围的情况下,本领域技术人员可以进行各种改变和修改。
Claims (23)
1.一种计算***,包括:
通信接口,被配置为与具有机械臂的机器人通信,所述机械臂包括在多个关节处彼此可移动地连接的多个臂区段;以及
至少一个处理电路,被配置为当所述计算***与所述机器人通信时执行以下操作:
选择以下各项中的至少一个:(i)来自所述多个关节中的第一关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第一臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第一关节将第一臂区段连接到紧邻第一臂区段的第二臂区段;
输出用于引起机械臂移动的一组一个或多个移动命令,所述机械臂移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动;
接收与第一关节或第一臂区段相关联的一组致动数据,其中所述一组致动数据是指示在第一臂区段和第二臂区段之间正在发生所述相对移动的时间段中第一关节处的总扭矩或总力的传感器数据;
接收与第一关节或第一臂区段相关联的一组移动数据,其中所述一组移动数据是指示所述时间段期间第一臂区段和第二臂区段之间的所述相对移动的量或速率的传感器数据;
基于所述一组致动数据和所述一组移动数据,确定以下各项中的至少一个:(i)与第一臂区段和第二臂区段之间的摩擦相关联的摩擦参数估计,或(ii)与第一臂区段相关联的质心CoM估计;
输出用于引起后续的机械臂移动的后续一组一个或多个移动命令,其中所述后续一组一个或多个移动命令是基于以下各项中的至少一个而生成的:(i)所述摩擦参数估计或(ii)与第一臂区段相关联的CoM估计。
2.权利要求1所述的计算***,其中所述一组一个或多个移动命令用于引起第一臂区段和第二臂区段之间的所述相对移动而不引起所述多个臂区段中的任何其他一对紧邻的臂区段之间的相对移动。
3.如权利要求2所述的计算***,其中所述至少一个处理电路被配置为:当与所述计算***通信的所述机器人具有用于在所述多个关节处输出致动的多个相应的致动器时,从所述多个相应的致动器中选择第一致动器以激活,而不选择所述多个相应的致动器中的任何其他致动器以激活,其中第一致动器对应于第一关节或第一臂区段,
其中由所述至少一个处理电路生成的所述一组一个或多个移动命令用于引起第一致动器的激活而不引起所述多个相应的致动器中的任何其他致动器的激活。
4.如权利要求3所述的计算***,其中所述一组一个或多个移动命令用于在第一关节处引起旋转而不在所述多个关节中的任何其他关节处引起旋转。
5.如权利要求1所述的计算***,其中:
第一臂区段与第二臂区段之间发生所述相对移动的所述时间段为第一时间段,
所述一组一个或多个移动命令是第一组一个或多个移动命令,并且用于在第一时间段期间引起第一臂区段和第二臂区段之间的所述相对移动以具有第一速率分布简档,
所述一组致动数据是与第一关节或第一臂区段相关联的第一组致动数据,
所述一组移动数据是与第一关节或第一臂区段相关联的第一组移动数据,其中第一组致动数据和第一组移动数据两者都与第一速率分布简档相关联,
所述至少一个处理电路被配置为基于第一组致动数据和第一组移动数据来确定所述摩擦参数估计,并且还被配置为执行以下操作:
输出第二组一个或多个移动命令,用于经由第一关节引起第一臂区段和第二臂区段之间的附加的相对移动,并且用于使所述附加的相对移动具有不同于第一速率分布简档的第二速率分布简档;
接收与第一关节或第一臂区段相关联的第二组致动数据,其中第二组致动数据是指示在所述附加的相对移动正在发生的第二时间段期间第一关节处的总扭矩或总力的传感器数据;
接收与第一关节或第一臂区段相关联的第二组移动数据,其中第二组移动数据是指示第二时间段期间所述附加的相对移动的量或速率的传感器数据;
基于第二组致动数据和第二组移动数据确定所述CoM估计,
其中所述后续一组一个或多个移动命令是基于所述摩擦参数估计和所述CoM估计而生成的。
6.如权利要求5所述的计算***,其中第一速率分布简档包括对应于第一时间段内的不同时间点的旋转速率的第一多个值,其中第一多个值中的至少一个值等于预定义的最大操作速率,以及
其中第二速率分布简档包括对应于第二时间段内的不同时间点的旋转速率的第二多个值,其中第二多个值中的所有值小于或等于预定义的速率阈值。
7.如权利要求1所述的计算***,其中所述一组一个或多个移动命令被生成以用于在所述时间段的至少一部分期间使所述相对移动的速率达到预定义的最大操作速率,使得所述一组致动数据的至少一部分和所述一组移动数据的至少一部分对应于所述预定义的最大操作速率,其中所述至少一个处理电路被配置为基于所述一组致动数据和所述一组移动数据来确定所述摩擦参数估计。
8.如权利要求7所述的计算***,其中所述摩擦参数估计是对粘性摩擦系数的估计,或者是对库仑摩擦的估计。
9.如权利要求1所述的计算***,其中所述一组一个或多个移动命令被生成以用于在所述相对移动正在发生的整个所述时间段期间使所述相对移动的速率小于或等于预定义的加速度阈值,其中所述至少一个处理电路被配置为基于所述一组致动数据和所述一组移动数据来确定所述CoM估计。
10.如权利要求1所述的计算***,其中所述至少一个处理电路被配置为:当所述一组一个或多个移动命令用于经由第一关节引起第一臂区段和第二臂区段之间的相对旋转时,执行以下操作:
确定所述相对旋转的旋转轴是否在表示一朝向范围的旋转轴的假想锥体内,其中所述朝向范围包括垂直朝向,并且其中所述垂直朝向与所述朝向范围中的所有其他朝向之间的相应角度小于或等于预定义的角度阈值;以及
输出所述旋转轴是否在所述假想锥体内的指示。
11.如权利要求1所述的计算***,其中所述至少一个处理电路被配置为:当所述多个臂区段被连接为一系列臂区段,并且包括第一臂区段下游的一个或多个远侧臂区段时,确定与所述一个或多个远侧臂区段相关联的CoM估计,
其中与第一臂区段相关联的所述CoM估计是基于与所述一个或多个远侧臂区段相关联的所述CoM估计而确定的。
12.如权利要求11所述的计算***,其中所述至少一个处理电路被配置为通过以下方式确定与第一臂区段相关联的CoM估计:
基于所述一组致动数据和所述一组移动数据来确定与第一臂区段相关联的初始CoM估计;
基于与所述一个或多个远侧臂区段相关联的CoM估计,确定调整,所述调整用于移除所述一个或多个远侧臂区段对所述初始CoM估计的影响;以及
将所述调整应用于所述初始CoM估计,以生成与第一臂区段相关联的经调整的CoM估计,其中与第一臂区段相关联的CoM估计等于或基于所述经调整的CoM估计。
13.如权利要求12所述的计算***,其中所述至少一个处理电路被配置为:当第二臂区段在第一臂区段的上游时,基于与第一臂区段相关联的CoM估计来确定与第二臂区段相关联的CoM估计。
14.如权利要求1所述的计算***,其中所述至少一个处理电路还被配置为确定第一臂区段和第二臂区段之间的所述相对移动的一运动范围,其中所述一组一个或多个移动命令是基于所述运动范围而生成的。
15.如权利要求1所述的计算***,其中所述至少一个处理电路被配置为:当所述一组致动数据测量流过致动器以用于引起第一臂区段和第二臂区段之间的所述相对移动的电流时,基于所述电流确定第一关节处的所述总扭矩。
16.如权利要求1所述的计算***,其中所述至少一个处理电路还被配置为基于所述一组致动数据和所述一组移动数据来确定与第一臂区段相关联的惯性矩估计。
17.如权利要求1所述的计算***,其中:
第一臂区段与第二臂区段之间发生所述相对移动的所述时间段为第一时间段;
与第一关节或第一臂区段相关联的所述一组致动数据为第一组致动数据,并且与第一关节或第一臂区段相关联的所述一组移动数据为第一组移动数据,
所述一组一个或多个移动命令是第一组一个或多个移动命令,
与第一臂区段和第二臂区段之间的摩擦相关联的所述摩擦参数估计是第一摩擦参数估计,
与第一臂区段相关联的CoM估计是第一CoM估计,以及
其中所述至少一个处理电路被配置为执行以下操作:
选择以下各项中的至少一个:(i)来自所述多个关节中的第二关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第二臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第二关节将第二臂区段连接到紧邻第二臂区段的第三臂区段;
输出用于引起机械臂移动的第二组一个或多个移动命令,所述机械臂移动包括第二臂区段和第三臂区段之间经由第二关节的相对移动;
接收第二组致动数据和第二组移动数据,其中第二组致动数据是指示在第二臂区段和第三臂区段之间正在发生所述相对移动的第二时间段期间第二关节处的总扭矩或总力的传感器数据,并且其中第二组移动数据是指示第二时间段期间第二臂区段和第三臂区段之间的所述相对移动的量或速率的传感器数据;
基于第二组致动数据和第二组移动数据,确定以下各项中的至少一个:(i)第二摩擦参数估计,或(ii)第二CoM估计,其中第二摩擦参数估计与第二臂区段和第三臂区段之间的摩擦相关联,并且第二CoM估计指示第二臂区段的CoM,
其中所述后续一组一个或多个移动命令是进一步基于以下各项中的至少一个而生成的:(i)第二摩擦参数估计或(ii)第二CoM估计。
18.如权利要求1所述的计算***,其中,用于引起后续的机械臂移动的所述后续一组一个或多个移动命令被配置为引起根据规划的轨迹的机械臂移动。
19.一种非暂时性计算机可读介质,其上具有指令,所述指令当由计算***的至少一个处理电路执行时,使所述至少一个处理电路执行以下操作:
当所述计算***与具有机械臂的机器人通信时,其中所述机械臂包括在多个关节处彼此可移动地连接的多个臂区段,选择以下各项中的至少一个:(i)来自所述多个关节中的第一关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第一臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第一关节将第一臂区段连接到紧邻第一臂区段的第二臂区段;
输出用于引起机械臂移动的一组一个或多个移动命令,所述机械臂移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动;
接收与第一关节或第一臂区段相关联的一组致动数据,其中所述一组致动数据是指示在第一臂区段和第二臂区段之间正在发生所述相对移动的时间段中第一关节处的总扭矩或总力的传感器数据;
接收与第一关节或第一臂区段相关联的一组移动数据,其中所述一组移动数据是指示所述时间段期间第一臂区段和第二臂区段之间的所述相对移动的量或速率的传感器数据;
基于所述一组致动数据和所述一组移动数据,确定以下各项中的至少一个:(i)与第一臂区段和第二臂区段之间的摩擦相关联的摩擦参数估计,或(ii)与第一臂区段相关联的质心CoM估计;
输出用于引起后续的机械臂移动的后续一组一个或多个移动命令,其中所述后续一组一个或多个移动命令是基于以下各项中的至少一个而生成的:(i)所述摩擦参数估计或(ii)与第一臂区段相关联的CoM估计。
20.如权利要求19所述的非暂时性计算机可读介质,其中所述一组一个或多个移动命令用于引起第一臂区段和第二臂区段之间的所述相对移动而不引起所述多个臂区段中的任何其他一对紧邻的臂区段之间的相对移动。
21.如权利要求19所述的非暂时性计算机可读介质,其中,用于引起后续的机械臂移动的所述后续一组一个或多个移动命令被配置为引起根据规划的轨迹的机械臂移动。
22.一种用于操作机器人的方法,包括
通过被配置为与具有机械臂的机器人通信的计算***选择以下各项中的至少一个,其中所述机械臂包括在多个关节处彼此可移动地连接的多个臂区段:(i)来自所述多个关节中的第一关节而不选择所述多个关节中的任何其他关节,或(ii)来自所述多个臂区段中的第一臂区段而不选择所述多个臂区段中的任何其他臂区段,其中第一关节将第一臂区段连接到紧邻第一臂区段的第二臂区段;
通过所述计算***,输出用于引起机械臂移动的一组一个或多个移动命令,所述机械臂移动包括第一臂区段和第二臂区段之间经由第一关节的相对移动,
通过所述计算***,接收与第一关节或第一臂区段相关联的一组致动数据,其中所述一组致动数据是指示在第一臂区段和第二臂区段之间正在发生所述相对移动的时间段中第一关节处的总扭矩或总力的传感器数据;
通过所述计算***,接收与第一关节或第一臂区段相关联的一组移动数据,其中所述一组移动数据是指示所述时间段期间第一臂区段和第二臂区段之间的所述相对移动的量或速率的传感器数据;
通过所述计算***,基于所述一组致动数据和所述一组移动数据,确定以下各项中的至少一个:(i)与第一臂区段和第二臂区段之间的摩擦相关联的摩擦参数估计,或(ii)与第一臂区段相关联的质心CoM估计;
通过所述计算***,输出用于引起后续的机械臂移动的后续一组一个或多个移动命令,其中所述后续一组一个或多个移动命令是基于以下各项中的至少一个而生成的:(i)所述摩擦参数估计或(ii)与第一臂区段相关联的CoM估计。
23.如权利要求22所述的方法,其中,用于引起后续的机械臂移动的所述后续一组一个或多个移动命令被配置为引起根据规划的轨迹的机械臂移动。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063021089P | 2020-05-07 | 2020-05-07 | |
US63/021,089 | 2020-05-07 | ||
US17/243,939 | 2021-04-29 | ||
US17/243,939 US11691285B2 (en) | 2020-05-07 | 2021-04-29 | Method and computing system for estimating parameter for robot operation |
PCT/JP2021/017442 WO2021225150A1 (en) | 2020-05-07 | 2021-05-07 | Method and computing system for estimating parameter for robot operation |
CN202180002097.8A CN113924192A (zh) | 2020-05-07 | 2021-05-07 | 用于估计机器人操作参数的方法和计算*** |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180002097.8A Division CN113924192A (zh) | 2020-05-07 | 2021-05-07 | 用于估计机器人操作参数的方法和计算*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113771039A CN113771039A (zh) | 2021-12-10 |
CN113771039B true CN113771039B (zh) | 2022-08-02 |
Family
ID=78854336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111148035.6A Active CN113771039B (zh) | 2020-05-07 | 2021-05-07 | 用于估计机器人操作参数的方法和计算*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113771039B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101362335A (zh) * | 2007-08-10 | 2009-02-11 | 发那科株式会社 | 机器人程序调整装置 |
CN101646534A (zh) * | 2007-06-27 | 2010-02-10 | 松下电器产业株式会社 | 机器手控制装置及控制方法、机器人及程序 |
JP2018089744A (ja) * | 2016-12-02 | 2018-06-14 | ファナック株式会社 | ロボットを制御するロボット制御装置、およびロボットに加わる外乱値を推定する方法 |
CN108453735A (zh) * | 2018-03-15 | 2018-08-28 | 河南大学 | 一种基于摩擦纳米发电机仿生机械手的抓取方法、装置 |
CN108472028A (zh) * | 2016-09-16 | 2018-08-31 | 威博外科公司 | 机器人臂 |
-
2021
- 2021-05-07 CN CN202111148035.6A patent/CN113771039B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101646534A (zh) * | 2007-06-27 | 2010-02-10 | 松下电器产业株式会社 | 机器手控制装置及控制方法、机器人及程序 |
CN101362335A (zh) * | 2007-08-10 | 2009-02-11 | 发那科株式会社 | 机器人程序调整装置 |
CN108472028A (zh) * | 2016-09-16 | 2018-08-31 | 威博外科公司 | 机器人臂 |
JP2018089744A (ja) * | 2016-12-02 | 2018-06-14 | ファナック株式会社 | ロボットを制御するロボット制御装置、およびロボットに加わる外乱値を推定する方法 |
CN108453735A (zh) * | 2018-03-15 | 2018-08-28 | 河南大学 | 一种基于摩擦纳米发电机仿生机械手的抓取方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113771039A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113924192A (zh) | 用于估计机器人操作参数的方法和计算*** | |
JP7199178B2 (ja) | ロボット制御装置、ロボット装置、ロボット制御のパラメータ調整方法、およびプログラム | |
JP5896789B2 (ja) | ロボット制御装置、ロボット装置、ロボット制御方法、プログラム及び記録媒体 | |
CN110076773B (zh) | 机器人设备、制造物品的方法及电机驱动设备 | |
JP7080649B2 (ja) | 制御方法、物品の製造方法、制御プログラム、記録媒体、ロボットシステム、制御装置 | |
KR101548945B1 (ko) | 탄성 로봇 구조를 위한 운동 제어기 | |
EP2752274B1 (en) | Control method and control device | |
JP2020101541A (ja) | トルク推定のための方法および装置 | |
JP7118249B2 (ja) | モータ制御装置 | |
WO2018029910A1 (ja) | パラレルリンク機構の制御装置 | |
CN113771039B (zh) | 用于估计机器人操作参数的方法和计算*** | |
JP3698770B2 (ja) | 負荷重量の推定方法 | |
WO2021060104A1 (ja) | 情報処理装置、情報処理システム及び情報処理方法 | |
CN113821006B (zh) | 用于确定指示机器人校准质量的误差参数的值的方法和计算*** | |
Lendermann et al. | Comparison of passivity based impedance controllers without torque-feedback for variable stiffness actuators | |
JP2020075329A (ja) | シミュレーション装置、制御システム、ロボットシステム、シミュレーション方法、プログラム及び記録媒体 | |
Hur et al. | Joint torque servo of a high friction robot manipulator based on time-delay control with feed-forward friction compensation | |
CN113650014A (zh) | 一种基于回声状态网络的冗余机械臂追踪控制方法 | |
JP7237249B1 (ja) | ロボット制御装置、ロボット制御方法およびロボット制御プログラム | |
WO2022244441A1 (ja) | マニピュレータ | |
CN114367989B (zh) | 缺省的机械臂阻抗控制方法、装置、机械臂及存储介质 | |
Öltjen et al. | Efficient computation of system-specific motion commands for serial and parallel robots based on differential flatness | |
Ho et al. | Trajectory Tracking Controller for a 4-DoF Flexible Joint Robot Arm |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |