Method and computing system for determining the value of an error parameter indicative of the quality of a robot calibration - Patents.com

The computing system improves robot calibration by estimating friction and center of mass parameters, enhancing precision and repeatability through accurate assessment of robot movements.

JP7723925B2Active Publication Date: 2025-08-15MUJIN INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2022077306
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-04-29
Filing Date
2022-05-10
Publication Date
2025-08-15
Estimated Expiration
2041-05-07

AI Technical Summary

Technical Problem

Robots lack the sophistication to replicate human-like interactions and perform complex tasks due to inadequate calibration, which affects their precision and repeatability in movements.

Method used

A computing system and method that utilizes sensor data to estimate friction and center of mass parameters, divides data into training and test sets, determines actuation prediction data, and calculates error parameters to assess the accuracy and reliability of robot calibration.

Benefits of technology

Enhances the precision and repeatability of robot movements by accurately estimating physical characteristics, allowing for better control of robotic kinematics and trajectory execution.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007723925000046
    Figure 0007723925000046
  • Figure 0007723925000047
    Figure 0007723925000047
  • Figure 0007723925000048
    Figure 0007723925000048
Patent Text Reader

Abstract

A computational system is provided for calibrating a robot to control its motion with accuracy and repeatability. The computing system stores sensor data including a motion data set and an actuation data set, and divides the sensor data into training data and test data by selecting the motion training data and corresponding actuation training data as training data and selecting the motion test data and corresponding actuation test data as test data, and determines at least one of a friction parameter estimate or a center of gravity estimate (CoM) based on the motion training data and the actuation training data, determines actuation prediction data based on the motion test data and at least one of the friction parameter estimate or the CoM estimate, and further determines residual data and determines a value of an error parameter.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is filed under the title "METHOD AND COMPUTING SYSTEM FOR DETERMINING A VALUE OF AN ERROR PARAMETER" This application claims priority to U.S. patent application Ser. No. 17 / 244,224, filed April 29, 2021, entitled "Indicative of Quality of Robot Calibration," which is incorporated herein by reference in its entirety. This application claims the benefit of U.S. Provisional Patent Application No. 63 / 021,089, filed May 7, 2020, entitled "ROBOT OPERATION PARAMETER DETERMINATION," the entire contents of which are incorporated herein by reference.

[0002] The present disclosure relates to a method and computing system for determining the value of an error parameter that is indicative of the quality of the results of a robot calibration. [Background technology]

[0003] As automation becomes more common, robots are used in more environments, such as warehousing and retail environments. For example, robots may be used to interact with objects in a warehouse. The robot's behavior may be constant or may be based on inputs, such as information generated by sensors in the warehouse.

[0004] However, despite technological advances, robots often lack the sophistication necessary to replicate the human interactions required to perform larger and / or more complex tasks. For robots to approximate human behavior, they must be calibrated to control their movements with precision and repeatability. Summary of the Invention

[0005] One aspect of the present disclosure relates to a computing system, a method executed by the computing system, and a non-transitory computer-readable medium having instructions that can cause the method to be implemented. In an embodiment, the computing system includes the non-transitory computer-readable medium and at least one processing circuit. The at least one processing circuit is configured to perform various operations when the non-transitory computer-readable medium stores sensor data including: (i) a motion dataset indicating an amount or rate of relative motion between a pair of immediately adjacent arm segments of the robot arm that is occurring or has occurred through a joint of the robot arm; and (ii) an actuation dataset indicating a total torque or total force at the joint during which the relative motion is occurring or has occurred. The various operations may include dividing the sensor data into training data and test data. Such division is performed by (i) selecting, as training data, the motion training data and corresponding actuation training data, where the motion training data is a first subset of the motion dataset and the actuation training data is a first subset of the actuation dataset, and (ii) selecting, as test data, the motion test data and corresponding actuation test data, where the motion test data is a second subset of the motion dataset and the actuation test data is a second subset of the actuation dataset. The various operations may further include determining, based on the motion training data and the actuation training data, at least one of (i) a friction parameter estimate associated with friction between a pair of immediately adjacent arm segments, or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments. The various operations may include determining, based on the motion test data and the actuation training data, (i) a friction parameter estimate associated with friction between a pair of immediately adjacent arm segments, or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments. The various operations may include determining, based on the motion test data and the (i) friction parameter estimate. and (ii) determining actuation prediction data based on at least one of the CoM estimates or the CoM estimates, where the actuation prediction data is a prediction indicative of a total torque or total force at the joint at the different time points. The various operations may further include determining residual data including residual data values describing a deviation between the actuation prediction data and the actuation test data corresponding to the different time points, determining a value of an error parameter based on the residual data, the error parameter value describing the residual data value, determining whether the value of the error parameter exceeds a defined error threshold, and outputting an indication of whether the value of the error parameter exceeds the defined error threshold. [Brief explanation of the drawings]

[0006] [Figure 1A] 1 illustrates a system for assessing the quality or reliability of robot calibration results or sensor data used to perform robot calibration, consistent with embodiments herein. [Figure 1B] 1 illustrates a system for assessing the quality or reliability of robot calibration results or sensor data used to perform robot calibration, consistent with embodiments herein. [Figure 1C] 1 illustrates a system for assessing the quality or reliability of robot calibration results or sensor data used to perform robot calibration, consistent with embodiments herein.

[0007] [Figure 2A] A block diagram illustrating a computational system for assessing the results of a robot calibration or the quality or reliability of sensor data used to perform a robot calibration is provided, consistent with embodiments herein. [Figure 2B]A block diagram illustrating a computational system for assessing the results of a robot calibration or the quality or reliability of sensor data used to perform a robot calibration is provided, consistent with embodiments herein. [Figure 2C] A block diagram illustrating a computational system for assessing the results of a robot calibration or the quality or reliability of sensor data used to perform a robot calibration is provided, consistent with embodiments herein. [Figure 2D] A block diagram illustrating a computational system for assessing the results of a robot calibration or the quality or reliability of sensor data used to perform a robot calibration is provided, consistent with embodiments herein.

[0008] [Figure 3A] 1 illustrates an environment in which robot calibration may occur consistent with embodiments herein. [Figure 3B] 1 illustrates an environment in which robot calibration may occur consistent with embodiments herein. [Figure 3C] 1 illustrates an environment in which robot calibration may occur consistent with embodiments herein. [Figure 3D] 1 illustrates an environment in which robot calibration may occur consistent with embodiments herein. [Figure 3E] 1 illustrates an environment in which robot calibration may occur consistent with embodiments herein.

[0009] [Figure 4] FIG. 1 shows a flow diagram illustrating an example method for determining values of error parameters that indicate the reliability or accuracy of the results of a robot calibration or the quality of the sensor data used to perform the robot calibration, consistent with embodiments herein.

[0010] [Figure 5A]10 illustrates the operation of arm segments, consistent with embodiments herein. [Figure 5B] 10 illustrates the operation of arm segments, consistent with embodiments herein.

[0011] [Figure 6A] 1 illustrates operational and performance data consistent with embodiments herein. [Figure 6B] 1 illustrates operational and performance data consistent with embodiments herein. [Figure 6C] 1 illustrates operational and performance data consistent with embodiments herein.

[0012] [Figure 7A] 1 illustrates operational and performance data consistent with embodiments herein. [Figure 7B] 1 illustrates operational and performance data consistent with embodiments herein. [Figure 7C] 1 illustrates operational and performance data consistent with embodiments herein.

[0013] [Figure 8A] 1 illustrates sensor data being split into training data and test data, consistent with embodiments herein. [Figure 8B] 1 illustrates sensor data being split into training data and test data, consistent with embodiments herein.

[0014] [Figure 9A] 10 illustrates an example of determining at least one friction parameter estimate based on training data, consistent with embodiments herein. [Figure 9B] 10 illustrates an example of determining at least one friction parameter estimate based on training data, consistent with embodiments herein. [Figure 9C] 10 illustrates an example of determining at least one friction parameter estimate based on training data, consistent with embodiments herein.

[0015] [Figure 10A] 1 illustrates an example of determining a center of mass (CoM) estimate based on training data, consistent with embodiments herein. [Figure 10B] 1 illustrates an example of determining a center of mass (CoM) estimate based on training data, consistent with embodiments herein.

[0016] [Figure 11] 10 illustrates an example of operational prediction data generated based on operational test data, consistent with embodiments herein.

[0017] [Figure 12] 10 illustrates an example of residual data values consistent with embodiments herein.

[0018] [Figure 13A] 10 illustrates an example of residual data values consistent with embodiments herein.

[0019] [Figure 13B] 10 illustrates an example of determining average values for each group of residual data values in each time window consistent with embodiments herein. DETAILED DESCRIPTION OF THE INVENTION

[0020] One aspect of the present disclosure relates to estimating robot characteristics, which may be performed as part of a robot calibration operation. In some scenarios, a robot may be located, for example, in a warehouse or factory and may be used to pick up or otherwise interact with objects in its environment. The robot calibration operation may involve estimating one or more parameters that describe the robot's physical characteristics, such as friction between robot components or where the center of mass (CoM) of the robot's components is located. In some scenarios, the values of these physical characteristics may deviate from nominal or theoretical values provided by the robot's manufacturer. The deviation may result from a variety of factors, such as manufacturing tolerances, aging, temperature changes, or some other factor.

[0021] More specific aspects of the present disclosure include estimates of one or more parameters, a model used to determine the estimates, and / or sensors used to determine the estimates. The sensor data relates to evaluating the accuracy, reliability, or quality of the data. In an embodiment, such evaluation may involve dividing the sensor data into training data and test data. For example, the sensor data may measure, for example, the motion of a component of a robot or the forces or torques experienced by the component, and may include actuation data and operational data. In this example, the sensor data may be divided into operational training data (also referred to as training actuation data), operational training data (also referred to as training operational data), actuation test data (also referred to as test actuation data), and operational test data (also referred to as test operational data). In other words, the actuation data and operational data may be divided into training data and test data, respectively. In this example, the actuation training data may be training data extracted from the actuation data, e.g., a first portion of the actuation data, while the actuation test data may be test data extracted from the actuation data, e.g., a second portion of the actuation data. Thus, the actuation training data and the actuation test data may be referred to as actuation-related training data and actuation-related test data, respectively. Similarly, the operational training data may be training data extracted from the operational data, e.g., a first portion of the operational data, while the operational test data may be test data also extracted from the operational data, e.g., a second portion of the operational data. Accordingly, the operational training data and operational test data in this example may be referred to as operational-related training data and operational-related test data, respectively. In some instances, the operational data may be divided into operational training data and operational test data based on the ratio between the velocity value indicated by the operational data and the position value indicated by the operational data. For example, the operational data may be divided into training data and test data by comparing the ratio to a defined ratio threshold, which may represent the slope of a line dividing a coordinate system representing the operational data into symmetric regions. In such an example, the operational data may be divided into training data and operational data corresponding to the operational training data and operational test data.

[0022] In some implementations, the actuation training data and the motion training data may be used to determine estimates or perform some other aspects of robot calibration. When estimates are determined, they may be used, along with the motion test data, to determine prediction data, or more specifically, actuation prediction data. As discussed in more detail below, the actuation prediction data may be data that provides a prediction indicative of the total torque or total force at an arm segment or joint. Thus, the actuation prediction data may also be referred to as actuation-related prediction data. In some instances, the actuation prediction data may be compared to the actuation test data to determine a residual data value indicative of the level of deviation between the actuation prediction data and the actuation test data. The residual data value may be used to assess the accuracy or reliability of the results of the robot calibration or the quality of the sensor data used to perform the robot calibration.

[0023] In embodiments, the accuracy, reliability, or quality discussed above may be evaluated via a value of an error parameter, which may be determined based on the residual data values. In some instances, the error parameter may indicate the frequency content of the residual data values. For example, the error parameter may be determined by applying a sliding time window to the residual data values and calculating respective average values for groups of residual data values within a particular time window. In this embodiment, the sliding time window may more specifically define multiple overlapping time windows corresponding to respective groups of residual data values. The multiple overlapping time windows may further correspond to multiple average values for the respective groups of residual data values. In some implementations, the value of the error parameter may be the maximum of the multiple average values. In some instances, the value of the error parameter may indicate whether the residual data values have low-frequency content or high-frequency content. The presence of low-frequency content may indicate or be consistent with the robot experiencing an event, such as a collision with another object, which may cause uneven movement of the robot and degrade the quality of the sensor data used for robot calibration, and the sensor data may measure the robot's behavior.

[0024] 1A, 1B, and 1C illustrate a system 1000 for determining information that estimates or otherwise describes one or more physical characteristics of a robot, i.e., more specifically, for performing robot calibration. Those skilled in the art will recognize that FIGS. 1A-1C illustrate one example of a system 1000 used to perform robot calibration, and that components shown in FIGS. 1A-1C may be removed or omitted and / or additional components may be added to system 1000. As shown in FIG. 1A, system 1000 may include a computing system 1100 and a robot 1200. In an embodiment, system 1000 may be a robot calibration system or a component thereof, where the robot calibration system is configured to perform robot calibration, which may involve, for example, determining one or more physical characteristics or some other characteristic of robot 1200. Robot calibration may be performed, for example, to increase the level of accuracy with which robotic motion (also referred to as robotic kinematics) of robot 1200 can be controlled, i.e., more specifically, to increase the ability of robot 1200 to plan and / or accurately execute trajectories. The computing system 1100 in the embodiments herein may be configured to determine the accuracy or reliability of the robot calibration. More specifically, the computing system 1100 may be configured to determine the value of an error parameter. The error parameter may indicate the accuracy of estimates, models, or other information obtained from the robot calibration (e.g., estimates of physical properties of the robot 1200) and / or the quality of sensor data used to perform the robot calibration.

[0025] In some instances, the computing system 1100 may determine one or more physical characteristics of the robot 1200 and / or may use the one or more physical characteristics of the robot 1200 to generate motion commands that cause the robot 1200 to output movements (also referred to as motion) that follow a planned trajectory. For example, the computing system 1100 may be configured to determine motion commands (e.g., motor commands) that are specific to or otherwise take into account one or more physical characteristics of the robot 1200. As examples, the one or more physical characteristics may include, for example, friction between components of the robot 1200 (e.g., arm segments of a robot arm), respective locations of the centers of mass (CoM) of those components, respective values of the masses or moments of inertia of those components, and / or some other physical characteristic. These robot characteristics may constrain or otherwise influence the motion of the robot 1200 and / or affect how the components of the robot 1200 should be actuated.

[0026] In some instances, the properties estimated by system 1000 may be utilized to describe the physics of the robot 1200's motion (e.g., kinematics), such as by describing how one or more components of robot 1200 respond to forces, torques, or other forms of actuation. When computing system 1100 of FIG. 1A , or another computing system, is used to control the motion of robot 1200, the motion may be controlled based on the estimated properties. For example, a motor or other actuator may output a force or torque to initiate or regulate motion (e.g., linear or rotational motion) of a component of robot 1200, but the motion may be affected by factors such as frictional forces (which may resist motion or changes in motion), gravitational forces, and / or inertial elements such as the component's mass or moment of inertia (which may also resist motion or changes in motion). In this example, controlling motion for a robotic component may involve, for example, counteracting or, more generally, taking the above factors into account when determining the magnitude, direction, and / or duration of forces or torques output by actuators used to drive the robotic component. Control may be used, for example, to execute a trajectory by the robot 1200, which in some scenarios may involve precisely following planned values for the position, velocity or speed, and / or acceleration of various components of the robot. That is, motion control may involve following a planned trajectory, which may involve a particular value or set of values for the velocity and / or acceleration of various components of the robot. Estimates of the physical properties discussed above may be used to control actuators to cause the executed trajectory to closely match the planned trajectory.

[0027] In embodiments, performing robot calibration may involve determining or updating a force model and / or torque model. In such embodiments, computing system 1100 (or some other computing system) may determine the amount of force and / or torque to be applied by the actuator, or the direction or duration of the force and / or torque, based on the force model and / or torque model. In some instances, the force model and / or torque model may be formed by or include information describing factors that affect the overall force or torque on robot 1200 or its components. For example, the force model and / or torque model may include values for parameters representing, for example, friction, gravity, mass, moments of inertia, and / or combinations thereof. In some scenarios, the force model and / or torque model may include a friction model, which may include information describing how much friction the robot or its components experience. As an example, the friction model may include parameters representing viscous friction (also referred to as kinetic or sliding friction) and Coulomb friction (also referred to as static friction), discussed in more detail below. In some situations, the force and / or torque model may describe the relationship (e.g., a mathematical relationship) between the forces and / or torques output by the actuators and the total torque or overall force experienced by the robot components, and / or may describe the relationship between the forces and / or torques output by the actuators and the resulting motion of the robot components. In the above example, if the robot calibration results in a force or torque model, the force and / or torque model may be utilized by computing system 1100 (or some other computing system) to control the actuators or, more generally, to control the motion of robot 1200. In this embodiment, the error parameters mentioned above may describe the accuracy or reliability of the force and / or torque model and / or may describe the quality of the sensor data used to generate the force and / or torque model.Thus, the computing system 1100 may be configured to determine values of the error parameters to determine the accuracy or reliability of the force and / or torque models obtained from performing a robot calibration.

[0028] 1A may be used to perform robot calibration, such as by determining information describing or otherwise representing one or more physical characteristics of robot 1200. In some instances, system 1000 (and associated methods performed by system 1000) operates to perform robot calibration by operating robot 1200 and using data describing the operation to determine the robot's physical characteristics. More specifically, during operation, computing system 1100 may monitor robot 1200 and receive sensor data describing the operation of components of robot 1200. Based on the received sensor data, computing system 1100 may determine a respective value for each of the physical characteristics of robot 1200 or its components. In this embodiment, error parameters that may be determined by computing system 1100 may indicate the accuracy or reliability of the estimated values of each of robot 1200's physical characteristics.

[0029] In an embodiment, the robot 1200 may include a robotic arm 1210. Performing the calibration may involve determining one or more physical properties of components (e.g., arm segments) of the robot arm 1210. More specifically, the robot arm 1210 includes n arm segments 12121, 12122, ... 1212 n (also referred to as links of the robot arm 1210), and one or more physical properties determined from the robot calibration may include the arm segments 1212 1-1212 n In some instances, one or more of the arm segments 12121-1212 may be described. nEach of the arm segments 12121-1212 may be independently actuable or operable in multiple planes of motion. n The robot arm 1210 is made up of a series of arm segments 12121-1212. n In this embodiment, the arm segments 12121 to 12122 may be connected to each other in series (for example, by a plurality of joints) so as to be formed from n can form a kinematic chain for moving an end effector (also called an end effector device) or other arm segments to a specific posture. n Arm segments 12121 to 1212 n Each of the robot base or a series of arm segments 12121 to 1212 n a first end (e.g., a proximal end) of the arm segment 12121-1212, the ... second end (e.g., a proximal end) of the arm segment 12121-1212, the n 1, or may be coupled to form the distal end of robot arm 1210. Thus, arm segment 12121 may be followed by arm segment 12122, which may be followed by arm segment 12123, which may be followed by arm segment 12124, etc. As an example, arm segment 12121 may be coupled to a robot base at the proximal end of arm segment 12121 and to arm segment 12122 at the distal end of arm segment 12121. Further to this example, arm segment 12122 may be coupled to arm segment 12121 at the proximal end of arm segment 12122 and to arm segment 12123 at the distal end of arm segment 12122. In some implementations, arm segment 1212 n can be end effector devices. Those skilled in the art will recognize that arm segments 12121 to 1212 n It will be appreciated that the various components may be coupled in any arrangement to perform operations according to the operational requirements of the robot 1200.

[0030] In the embodiment, the robot calibration is performed by using arm segments 12121 to 12122 of the robot arm 1210. n In cases where this involves determining information about the physical properties of arm segments 12121-1212, the information can be used to control the operation of the robot arm 1210. For example, n may be movable relative to each other at the distal end of the robot arm 1210 to produce overall motion of the robot arm 1210 to achieve a desired pose for the end effector or other arm segments. When the computing system 1100 is involved in controlling the movement of the robot arm 1210, such as by planning a trajectory for the robot arm 1210, the computing system 1100 may plan the movement of the individual arm segments. This planning of movement for the individual arm segments may be based on information determined regarding the physical properties of the individual arm segments. In some instances, robot calibration may involve determining a force model and / or torque model that describes factors that affect how much total force or torque is exerted on an individual arm segment. For example, the force model and / or torque model may be applied to an arm segment or a joint connecting a pair of arm segments and may describe the relationship between the total force or torque experienced by the arm segment or joint and the amount or speed of movement by the arm segment relative to the joint. In such instances, the computing system 1100 may plan the movement of the individual arm segments based on the force model and / or torque model. In this embodiment, if the computing system 1100 generates or otherwise determines a force model and / or torque model specific to an individual arm segment or joint, the computing system 1100 is further configured to determine error parameter values specific to that individual arm segment or joint. The error parameter values may refer to the values of the error parameters discussed above and may indicate the reliability or accuracy of the force or torque model. When the computing system 1100 generates a respective force model and / or torque model for each of the arm segments or joints, the computing system 1100 may further determine a respective error parameter value for each of the arm segments or joints.

[0031] In an embodiment, performing robot calibration involves performing the arm calibration on arm segments 12121-1212 of robot arm 1210. n When determining information about physical properties for each arm segment, the physical properties may include parameters that describe the relationship between the motion of the arm segment and the torque or force applied directly to the arm segment. For example, the parameters may be associated with arm segments 12121-1212. nFor each of the parameters, the parameters may describe the location of the center of mass of the arm segment, the mass or weight of the arm segment, how the mass of the arm segment is distributed, the moment of inertia of the arm segment, and / or friction between the arm segment and another component of the robotic arm 1210 (e.g., another arm segment). The parameters may be used by the computing system 1100 or any other computing system when planning a trajectory for the robotic arm 1210. For example, the computing system 1100 may use the parameters to predict how much motion or velocity of motion will be produced by a particular amount of force or torque, or to determine how much force or torque is needed to produce a particular amount of motion or velocity. More specifically, the computing system 1100 may use the parameters to determine the effect of friction on the arm segment, the effect of gravity on the arm segment (which may be approximated as acting on the CoM of the arm segment), and / or the amount of force or torque that will counteract the mass or moment of inertia of the arm segment. In this embodiment, if the robot calibration involves, for example, determining an estimate of the location of the center of mass of a particular arm segment, or the coefficient of friction between two arm segments, the error parameters discussed above may describe or otherwise indicate the accuracy and / or reliability of the estimate.

[0032] 1B, the robot 1200 may include one or more sets of sensors 1220 and one or more sets of actuators (e.g., motors) 1230 that may be used to perform robot calibration operations. The one or more sets of actuators 1230 may each be connected to arm segments 12121-12122 of the robot arm 1210 to operate one or more arm segments. nIn an embodiment, the operation of the set of one or more actuators 1230 may be controlled by the computing system 1100. For example, the computing system 1100 may be configured to output one or more movement commands to activate at least one actuator of the set of one or more actuators 1230. In some implementations, the one or more movement commands may include analog and / or digital signals to activate the set of one or more actuators 1230 and output a force and / or torque. The one or more movement commands may, in some instances, control how much force or torque is output by the activated actuator, the direction of the force or torque, and / or the duration of the force or torque.

[0033] In an embodiment, as shown in FIG. 1C, one or more sets of actuators 1230 may include a plurality of actuators 12301-1230 n each of which may include a plurality of arm segments 12121 to 1212 n For example, the actuators 12301 to 1230 may output a force or torque to operate each arm segment. n However, arm segments 12121 to 1212 n Rotate or In one embodiment, the actuators 12301-1230 may be configured to output torque to move the actuators in other ways. n Arm segments 12121 to 1212 n The arm segments 12121 to 1212 may be connected to or disposed on the arm segments 12121 to 1212 n When activated to operate, each may output a respective force or torque. n Activation of and / or actuators 12301-1230 nThe amount of force or torque, respectively, output by may be controlled by the computing system 1100 (eg, with motion commands).

[0034] In an embodiment, the set of one or more sensors 1220 is configured to generate one or more sets of sensor data (also referred to as datasets) that are used by the computing system 1100 to perform robot calibration. In some scenarios, the datasets are generated by the arm segments 12121-1212. n One or more of the movements of, and / or arm segments 12121 to 1212 n The sensor data may measure or otherwise represent the force or torque experienced by the actuator. For example, the one or more data sets for the sensor data may include an actuation data set and an operational data set.

[0035] In an embodiment, the actuation data set includes arm segments 12121-1212 n The data may include data representing the total force and / or torque experienced by one or more of the actuators 12301-1230, or experienced at one or more joints. The total force or torque on an arm segment may be calculated by the actuators 12301-1230. n The actuation data set ay may include or be based on a force or torque contributed by the arm, a force or torque contributed by gravity, and a force or torque contributed by friction. The actuation data set ay is directly indicative of or directly proportional to the total force or torque experienced by one or more arm segments or one or more joints.

[0036] In the embodiment, arm segments 12121 to 1212 nThe motion dataset for one of the arm segments may include data representing a motion quantity or a motion rate (e.g., velocity or acceleration) of the arm segment. The movement may be, for example, a rotation of the arm segment, a linear movement of the arm segment, or some other movement. In some instances, the motion quantity or motion rate may be measured relative to another component of the robot 1200, such as another arm segment. For example, the position of this other arm segment may be treated as a baseline position (or more generally, a reference frame) from which the motion quantity or motion rate of the moving arm segment is measured. In some instances, the motion quantity may be represented by a position or displacement of the moving arm segment, which may be relative to the baseline position discussed above, for example. When the movement involves a rotation of one arm segment relative to the baseline position, the position or displacement may also be referred to as a rotational position, rotational displacement, or angular displacement, and may be measured in degrees or radians. In some instances, a positive value for the rotational position may indicate that the moving arm segment has rotated in one direction past the baseline position (e.g., a counterclockwise direction), while a negative value for the rotational position may indicate that the moving arm segment has rotated in the opposite direction past the baseline position (e.g., a clockwise direction).

[0037] In an embodiment, the one or more sensor sets 1220 may include a first sensor set 12221, 12222, ... 1222 for generating operational data, as shown in FIG. 1C. n , and a second set of sensors 12241, 12242, ... 1224 for generating operational data. n In some implementations, the first set of sensors 12221-1222 n Arm segments 12121 to 1212 n Similarly, the second sensor set 12241 to 12244 may be arranged in or otherwise coincide with the first sensor set 12241 to 12244. n Also, arm segments 12121 to 1212 n In this example, the first sensor set 12221-1222 nEach of the Number of arm segments 12121~1212 n Further, the second sensor set 12241-12244 may generate respective actuation data sets indicative of the force or torque at each arm segment. n Each of the arm segments 12121 to 1212 n In some implementations, a respective motion data set may be generated that indicates the amount or rate of motion of each arm segment of the arm segments 12121-1212. n Actuators 12301 to 1230 n or otherwise actuated by a first set of sensors 12221 to 1222 n Each sensor is connected to multiple actuators 12301 to 1230 n The sensors 12221 to 1222 may be torque sensors or current sensors corresponding to the respective actuators. n When each of the actuators 12301 to 1230 is a current sensor, the sensor is n The sensors 12221-1222 may be configured to measure the amount of current passing through each of the sensors, which may be substantially equal to the amount of current passing through each of the actuators. The amount of current passing through the actuators may be used to calculate or otherwise determine the amount of total force or torque experienced by the corresponding arm segment. This calculation may be performed by the computing system 1100 or by the sensors 12221-1222. n It may also be done by the

[0038] 2A provides a block diagram illustrating an embodiment of a computing system 1100. The computing system 1100 includes at least one processing circuit 1110 and a non-transitory computer-readable medium(s) 1120. In an embodiment, the processing circuit 1110 includes one or more processors, one or more processing cores, a programmable logic controller (“PLC”), an application specific integrated circuit (“ASIC”), a programmable gate array (“PGA”), a field programmable gate array (“FPGA”), any combination thereof, or any other processing circuit. In embodiments, the non-transitory computer-readable medium 1120 may be a storage device such as an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof, such as a computer diskette, a hard disk drive (HDD), a solid-state drive (SSD), a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, any combination thereof, or any other storage device. In some instances, the non-transitory computer-readable medium 1120 may include multiple storage devices. The non-transitory computer-readable medium 1120 may alternatively or additionally store computer-readable program instructions that, when executed by the processing circuit 1110, cause the processing circuit 1110 to perform one or more methods described herein, such as the operations described with respect to method 4000 shown in FIG. 4 .

[0039] FIG. 2B depicts an embodiment of computing system 1100, computing system 1100A, including a communications interface 1130. Communications interface 1130 may be configured to provide a wired or wireless communications path between computing system 1100A and robot 1200, such as with sensors (e.g., 1220) and / or actuators (e.g., 1230) discussed above. By way of example, communications circuitry may include an RS-232 port controller, a USB controller, an Ethernet controller, a Bluetooth® controller, a PCI bus controller, a network controller, any other communications circuitry, or a combination thereof. If computing system 1100A generates one or more motion commands, communications interface 1130 may be configured to transmit the one or more motion commands to set of actuators 1230. Additionally, if set of sensors 1220 generates sensor data, communications interface 1130 may be configured to receive sensor data (e.g., motion data and actuation data) from set of sensors 1220. Thus, In such a situation, the processing circuit 1110 of the computing system 1100 may be configured to receive the sensor data directly or indirectly via the communication interface 1130.

[0040] In an embodiment, the processing circuit 1110 may be programmed by one or more computer-readable program instructions stored on a non-transitory computer-readable medium 1120. For example, FIG. 2C illustrates a computing system 1100B, an embodiment of computing system 1100 / 1100A, in which the processing circuit 1110 is programmed by one or more modules, including a robot calibration module 1122, which may include computer-readable program instructions for performing robot calibration and / or evaluating the accuracy and / or reliability of the results of the robot calibration. For example, the robot calibration module 1122 may be configured to determine an error parameter value for a CoM estimate or friction parameter estimate for a CoM estimate associated with a particular arm segment or a friction parameter estimate associated with a particular joint between arm segments, where the error parameter value may be the value of the error parameter discussed above. If the robot calibration module 1122 determines multiple CoM estimates or multiple friction parameter estimates, the module 1122 may determine multiple respective error parameter values for the multiple estimates. In various embodiments, the terms "computer-readable instructions" and "computer-readable program instructions" are used to describe software instructions or computer code configured to perform various tasks and operations. In various embodiments, the term "module" refers broadly to a collection of software instructions or code configured to cause the processing circuitry 1110 to perform one or more functional tasks. The modules and computer-readable instructions may be described as causing a processing circuitry or other hardware component to perform various operations or tasks when executing the module or computer-readable instructions.

[0041] In an embodiment, as shown in FIG. 2C , the non-transitory computer-readable medium 1120 may store or otherwise include sensor data 1124 that can be used by the processing circuit 1110 to perform robot calibration. The sensor data 1124 may include, for example, the actuation data and motion data described above. For example, FIG. 2D depicts an example in which the sensor data 1124 includes actuation data 1127 and actuation data 1128. In some instances, the actuation data 1127 and actuation data 1128 may each include multiple data sets, each describing a movement associated with a respective arm segment or describing the overall force or torque at a respective arm segment or at a respective joint connecting an arm segment to another arm segment. In some scenarios, the sensor data 1124 may have been generated by the set of sensors 1220 of FIG. 1B or received via the communication interface 1130 of FIG. 2B . When performing a robot calibration operation using the stored sensor data 1124, the non-transitory computer-readable medium 1120 may further store information 1126 (also referred to as robot calibration information 1126) determined as a result of the robot calibration operation. The robot calibration information 1126 may describe one or more physical characteristics of the robot (e.g., 1200). For example, the robot calibration information may include respective estimates (also referred to as estimated values) for various parameters describing one or more physical characteristics of the robot. In some instances, the robot calibration information may describe a torque model, a force model, and / or a friction model. In embodiments, the robot calibration information 1126 may include error parameter values indicating the reliability and / or accuracy of each of the aforementioned estimates and / or the reliability or quality of the sensor data used to generate each estimate.

[0042] 3A-3D illustrate an exemplary environment in which robot calibration may be performed according to various embodiments. Those skilled in the art will recognize that FIGS. 3A-3D illustrate one example of an environment for performing robot calibration, and that existing components shown in FIGS. 3A-3D may be removed and / or additional components may be added to the environment. FIG. 3A presents a side view of robot 3200, which may be an embodiment of robot 1200. Robot 3200 may include a robot arm 3210 coupled to a base 3202. In the example of FIG. 3A, robot arm 3210 may include multiple arm segments 32121, 32122, 32123, 32124, 32125, and 32126 (also referred to as links), which may be coupled at multiple joints 32141, 32142, 32143, 32144, and 32145. 3A, arm segments 32121-32126 may be connected as a series of arm segments that may extend in a downstream direction, which may be a direction away from base 3202. In this example, arm segment 32126, which is furthest downstream along robot arm 3210, may be an end effector device (e.g., a robot gripper) and may form the distal end of robot arm 3210. That is, arm segment 32126 may be the most distal arm segment of robot arm 3210 relative to robot base 3202.

[0043] In embodiments, joints 32141-32145 may directly connect respective pairs of immediately adjacent arm segments. For example, arm segment 32121 connects to arm segment 32122 at joint 32141. In this example, arm segment 32121 and arm segment 32122 may be considered immediately adjacent to one another because they are directly connected to one another via joint 32141. Joint 32141 may enable relative movement between the pair of arm segments 32121, 32122. In one example, joint 32141 may be an external rotation joint (or more generally, a pivot point) that enables relative rotation between the pair of arm segments 32121, 32122, or more specifically, that allows arm segment 32122 to rotate relative to arm segment 32121. In this example, the other joints 32142-32145 may each be external rotation joints that directly connect respective pairs of immediately adjacent arm segments and enable relative rotation between the pair of arm segments. For example, joint 32145 may directly connect arm segment 32125 and arm segment 32126, allowing arm segment 32126 to rotate relative to arm segment 32125. In another example, robotic arm 3210 may additionally or alternatively have a prismatic joint that allows relative translational movement (also referred to as relative lateral movement) between a pair of immediately adjacent arm segments.

[0044] As described above, arm segments 32121-32126 may be connected as a series of arm segments that may extend downstream from arm segment 32121 to arm segment 32126. Arm segment 32121 may be closest (also referred to as proximal-most) to robot base 3202, while arm segment 32126 may be furthest (i.e., distal-most) from robot base 3202. The series of arm segments 32121-32126 may form a kinematic chain in which movement of one arm segment (e.g., 32123) moves downstream arm segments (e.g., 32124, 32125, 32126). The serial connection of arm segments 32121-32126 may further define a proximal end or proximal direction and a distal end or distal direction. For example, each of arm segments 32121-32126 can have a respective proximal end and a respective distal end. The proximal end can be closer to robot base 3202, while the distal end can be further downstream, further from robot base 3202. As an example, arm segment 32123 can have a proximal end that connects directly to arm segment 32122 and a distal end that connects directly to arm segment 32124. Furthermore, arm segments (e.g., 32124, 32126) can have a proximal end that connects directly to arm segment 32122 and a distal end that connects directly to arm segment 32124. If an arm segment (e.g., 32124, 32125, or 32126) connects directly or indirectly to the distal end of another arm segment (e.g., 32123), the former arm segment (e.g., 32124, 32125, or 32126) may be considered distal to the latter arm segment (e.g., 32123). Conversely, if an arm segment (e.g., 32123, 32124, 32125) connects directly or indirectly to the proximal end of another arm segment (e.g., 32126), the former arm segment (e.g., 32123, 32124, 32125) may be considered proximal to the latter arm segment (e.g., 32126). As another example, arm segment 32123 may be considered a distal arm segment relative to arm segment 32122 and relative to arm segment 32121, while arm segments 32121 and 32122 may be considered proximal arm segments relative to arm segment 32123.

[0045] In an embodiment, as shown in FIG. 3B , the robot 3200 uses a plurality of actuators 33301, 33302, 33303, 33304, and 33305 (actuators 12301 through 12306) to operate each arm segment 32122 through 32126, or more specifically, to cause relative movement between each pair of immediately adjacent arm segments. nIn some instances, multiple actuators 33301-33305 may be positioned at or near joints 32141-32145, respectively. In some implementations, actuators 33301-33305 may be motors positioned about joints 32141-32145 and may output torques or forces at joints 32141-32145. Actuators 33301-33305 may each output a respective force or torque to move a respective one of arm segments 32122-32126 relative to an adjacent arm segment (or relative to some other reference frame). As an example, actuator 33303 may be positioned at or near joint 32143 directly connecting a pair of arm segments 32123, 32124. Actuator 33303 may output a torque at joint 32143 that may cause relative rotation between the pair of arm segments 32123, 32124. More specifically, the torque may cause the more distal arm segment 32124 of the pair of arm segments 32123, 32124 to rotate relative to the more proximal arm segment 32123 of the pair. Additionally, the arm segment 32124 may rotate about the joint 32143. In embodiments, the actuators 33301-33305 may include motors (e.g., electric motors and / or magnetic motors), pumps (e.g., hydraulic or pneumatic pumps), some other actuator, or a combination thereof.

[0046] In an embodiment, the robot 3200 may include a sensor set for generating sensor data that can be used in performing robot calibration. For example, as shown in FIG. 3C , the robot 3200 may include a first sensor set 32221, 32222, 32223, 32224, and 32225 for generating actuation data, and a second sensor set 32241, 32242, 32243, 32244, and 32245 for generating motion data. More specifically, the first sensor set 32221-32225 (sensors 12221-12225) may include a first sensor set 32222, 32223, 32224, and 32225 for generating motion data. n Each of the sensor elements (which may be embodiments of the sensor elements) may be configured to generate a respective actuation data set relating to the actuation of a respective arm segment of the plurality of arm segments 32122-32126. More specifically, the actuation data set for a particular arm segment may measure a parameter indicative of the force or torque applied to or experienced by the arm segment. For example, sensor 32221 may generate a first actuation data set corresponding to the actuation of arm segment 32122 relative to arm segment 32121 (or vice versa), while sensor 32222 may generate a second actuation data set corresponding to the actuation of arm segment 32122 relative to arm segment 32122 (or vice versa). As another example, sensor 32223 may generate a third actuation data set corresponding to actuation of arm segment 32124 relative to arm segment 32123 (or vice versa), while sensor 32224 may generate a fourth actuation data set corresponding to actuation of arm segment 32125 relative to arm segment 32124 (or vice versa).

[0047] In embodiments, sensors 32221-32225 may be or include force or torque sensors each configured to directly measure the total force or torque at joints 32141-32145, i.e., more specifically, the total force or torque on arm segments 32122-32126 connecting at those joints. In embodiments, sensors 32221-32225 may include current or voltage sensors configured to measure current or voltage. In one example, sensors 32221-32225 may be current sensors configured to measure the respective amount of current flowing through actuators 33301-33305. In this example, each of sensors 32221-32225 may be electrically connected in series with a respective actuator (e.g., motor) of actuators 33301-33305. The sensor may measure the amount of current flowing through it, which may be equal to or substantially equal to the amount of current provided to, drawn by, or otherwise flowing through each actuator. The amount of current flowing through an actuator may indicate the total force or torque at the corresponding joint where the actuator is located. In some instances, a joint, i.e., an arm segment of a joint, may act as a mechanical load driven by an actuator, and the amount of current flowing through the actuator may depend on how much voltage is provided to activate the actuator and on the characteristics of the mechanical load, such as whether the load is subjected to torque other than that provided by the actuator (e.g., torque due to gravity) and / or whether another torque (e.g., resistance torque due to friction) resists the movement of the load. As an example, sensor 32224 may measure the total force or torque at joint 32144, i.e., more specifically, the force or torque at arm segment 32125 or arm segment 3212. -4 The overall force above or The amount of current flowing through the actuator 33304 can be measured, which can indicate the total torque (to rotate the arm segment 32125 and / or 32124 relative to the pivot point provided by the joint 32144).

[0048] In some instances, the actuation data generated by the sensors 32221-32225 may have a value equal to the amount of current flowing through the corresponding actuators 33301-33305. In such instances, the computing system 1100 may be configured to calculate or otherwise determine a total torque or total force value based on the current value represented by the actuation data. In some instances, the sensors 32221-32225 may themselves be configured to calculate or otherwise determine the total torque or total force value and provide the torque or force value as part of the actuation data. The calculation may be based on a predetermined relationship (e.g., a predefined relationship) between the current and the total torque or total force, such as, for example, a relationship in which the total torque is equal to or based on a predetermined constant (which may be referred to as a torque constant) multiplied by the current. Thus, the computing system 1100 may be configured to perform the above calculation of total torque by multiplying the torque constant by the value of the current measured by the sensors 32221-32225. In some implementations, the computing system 1100 (and / or the sensors 32221-32225) may access stored actuator information that may provide a value for the torque constant. For example, the torque constant may be a value stored in the non-transitory computer-readable medium 1120.

[0049] As described above, the second set of sensors 32241-32245 of FIG. 3C may generate respective motion data sets. In some implementations, the second set of sensors 32241-32245 may be positioned at or near joints 32141-32145, respectively. The respective motion data sets generated by sensors 32141-32145 may measure or otherwise describe the motion of arm segments 32122-32126, respectively, i.e., more specifically, describe the relative motion between respective pairs of arm segments connected by joints 32141-32145. For example, sensor 32245 may measure or otherwise describe the motion of arm segment 32126 with respect to joint 32145 and with respect to arm segment 32125, i.e., more specifically, describe the relative motion between a pair of immediately adjacent arm segments 32126, 32125 that are directly connected by joint 32145. In the above example, arm segment 32126 may be the more distal arm segment of the pair, while arm segment 32125 may be the more proximal arm segment of the pair. As another example, sensor 32244 may measure or otherwise describe the movement of arm segment 32125 relative to joint 32144 and relative to arm segment 32124.

[0050] In embodiments, the motion data may measure or otherwise describe the amount or velocity of motion of an arm segment. The amount or velocity of motion may be measured relative to a baseline position, such as the position of the joint to which the arm segment connects, the position of the arm segment before it begins to move, the position of a proximal arm segment immediately adjacent to the moving arm segment, or some other baseline position (also referred to as a reference position). In some instances, the amount of motion may refer to the position of the arm segment relative to the baseline position. If the motion involves rotation of the arm segment, the amount of motion (i.e., more specifically, the amount of rotation) may, in some instances, refer to the rotational position (also referred to as angular position, rotational displacement, or angular displacement) of the arm segment. The rotational position of the arm segment may be measured relative to the baseline position. As an example, FIG. 3D shows arm segment 32125 rotating relative to joint 32144 and relative to arm segment 32124 about rotation axis A extending through joint 32144, which may directly connect the two arm segments. In this example, the rotational position of the arm segment 32125 may be indicated by angle θ, which measures how much the arm segment 32125 has rotated relative to a baseline position. As described above, various positions may be used as the baseline position. In one example, as shown in the simplified diagram of arm segments 32124 and 32125 in FIG. 3E , the baseline position may be position 3510 of the arm segment 32125 (e.g., the orientation of the arm segment) when at rest relative to joint 32144 and relative to arm segment 32124, such that the angle θ of the rotational position may be measured from position 3510. In FIG. 3E , baseline position 3510 may form an angle α (e.g., a non-zero angle) with a horizontal position. More specifically, the orientation associated with baseline position 3510 may form angle α with a horizontal orientation, which may be an orientation perpendicular to gravity. Angle α is discussed in more detail below.

[0051] In embodiments, the motion data may measure or otherwise describe the speed at which an arm segment (e.g., 32125) is rotating or otherwise moving. Motion speed may be measured relative to the baseline position discussed above. In some instances, the motion speed of one arm segment about a joint (e.g., 32144) may be measured relative to that joint or relative to an immediately adjacent arm segment (e.g., 32124). In some implementations, motion speed may refer to speed, velocity, or acceleration (e.g., rotational speed, rotational velocity, or rotational acceleration). In this example, rotational speed may refer to the magnitude of the rotational velocity, while rotational velocity may further describe the direction of rotation (e.g., clockwise or counterclockwise). In an embodiment, the computing system 110 ... The second set of sensors 32241-32245 may be configured to determine additional motion data based on the motion data generated by sensors 32241-32245. For example, if sensors 32241-32245 directly measure rotational position and provide that measurement in the motion data, computing system 1100 may be configured to determine rotational velocity and / or rotational acceleration based on the rotational position (e.g., as a time-based derivative of the rotational position). In an embodiment, second set of sensors 32241-32245 may include angular displacement sensors, linear displacement sensors, other sensors configured to generate motion data, or a combination thereof.

[0052] As mentioned above, one aspect of the present disclosure relates to assessing the accuracy, quality, or reliability of a robot calibration, and more specifically, of models and / or sensor data used to perform the robot calibration and / or of estimates determined from the robot calibration (e.g., friction parameter estimates, CoM estimates, or estimates of some other physical property). In some instances, as discussed in more detail below, the assessment may be made based on an error parameter indicating the deviation between predicted operational data values and test operational data values. FIG. 4 shows a flow diagram of an example method 4000 for determining the value of such an error parameter (the value may also be referred to as an error parameter value). In some scenarios, method 4000 may be performed as part of a robot calibration operation. Those skilled in the art will understand that FIG. 4 illustrates one example of a method for determining the value of an error parameter, and more generally, for performing the assessment described above, and that other example methods for performing this assessment may have fewer, more, and / or different steps than method 4000. In an embodiment, method 4000 may be performed by at least the processing circuitry 1110 of computing system 1100, i.e., more specifically, by the processing circuitry 1110, such as when executing instructions stored on non-transitory computer-readable medium 1120 (e.g., instructions for robot calibration module 1122).

[0053] In embodiments, some or all of the steps of method 4000 may be performed multiple times, where multiple times may correspond to multiple iterations. While the following discussion of the steps of method 4000 may refer to a single iteration of those steps, additional iterations may be performed. Each iteration may be used to determine a respective error parameter value for a particular component, such as an arm segment or joint, on which robot calibration is performed, or a particular set of estimates or other information determined from robot calibration. For example, one iteration or series of iterations may be performed during one time period to determine a respective error parameter value for a CoM estimate and a friction parameter estimate associated with a particular arm segment, a particular joint, or a particular pair of adjacent arm segments connected by a joint, while a next iteration or series of iterations may be performed during another time period to determine a respective error parameter value for a CoM estimate and a friction parameter estimate associated with another arm segment, a different joint, or a different pair of arm segments connected by this other joint. In embodiments, the steps of method 4000 may be performed during one time period to determine one error parameter value, and some or all of the steps may be repeated during another time period to determine another error parameter value.

[0054] In an embodiment, method 4000 may begin with or include step 4002, in which computing system 1100 splits sensor data, such as sensor data 1124 of FIG. 2C, into training and test data. In some instances, the sensor data (e.g., 1124) may be stored on computing system 1100, such as on non-transitory computer-readable medium 1120, or may be stored elsewhere. The stored sensor data (e.g., 1124) may include, for example, stored operational data (e.g., 1127) and stored actuation data (e.g., 1128). The sensor data may be stored in the sensor data of FIGS. 1C and 3C. Sensor 12221~1222 nor 32221~32225 and sensors 12241~1224 n or 32241-32245. For example, if method 4000 includes an iteration for determining error parameter values associated with performing robot calibration on arm segment 32125 or joint 32124 thereof to estimate its physical properties, the sensor data in that iteration may include, for example, an actuation data set generated by sensor 32224, and may include, for example, a motion data set generated by sensor 32244. If method 4000 includes another iteration for determining error parameter values associated with performing robot calibration on another arm segment or arm segment on another joint, such as arm segment 32124 or joint 32143, the sensor data in that iteration may include, for example, an actuation data set generated by sensor 32223, and may include, for example, a motion data set generated by sensor 32243.

[0055] In some implementations, method 4000 may include one or more steps, which may be performed by computing system 1100 before step 4002, to acquire or otherwise receive sensor data. For example, these one or more steps may involve computing system 1100 generating a set of one or more motion commands to cause relative motion between a first arm segment (e.g., 32125) and a second arm segment (e.g., 32124) via a joint directly connecting the two arm segments (e.g., via 32144), which may be immediately adjacent arm segments. In some instances, the one or more motion commands may be used to activate a first actuator (e.g., 33304) of the multiple actuators and may be output or otherwise communicated by computing system 1100 to the first actuator (e.g., 33304) via communication interface 1130 of FIG. 2B . For example, if the first actuator (e.g., 33304) is a motor, the one or more motion commands may each be a motor command to activate the motor. Movement commands are discussed in more detail in U.S. Patent Application No. 17 / 243,939 (MJ0062-US / 0077-0015US1), entitled "METHOD AND COMPUTING SYSTEM FOR ESTIMATING PARAMETER FOR ROBOT OPERATION," the entire contents of which are incorporated herein by reference. In embodiments, when an actuator (e.g., 33304) receives one or more movement commands, the actuator may output movement at a joint, or more specifically, output a force or torque to cause movement at the joint. As discussed above, movement at a joint may refer to the movement (e.g., rotation) of the joint itself, or the relative rotation between two arm segments (e.g., 32124, 32125) directly connected by a joint (e.g., 32144).

[0056] 5A and 5B show a movement involving arm segment 32125 rotating relative to arm segment 32124 via joint 32144, which directly connects the two arm segments. The movement may be caused by one or more movement commands actuating actuator 33304, which may output a torque or force that may be exerted on arm segment 32125 or on joint 32144. The movement may involve arm segment 32125 and downstream arm segment 32126 rotating in a counterclockwise direction relative to arm segment 32124, as shown in FIG. 5A, or may involve arm segment 32125 and downstream arm segment 32126 rotating in a clockwise direction relative to arm segment 32124, as shown in FIG. 5B. More specifically, arm segment 32125 in FIG. 5A may rotate counterclockwise from a start position to an intermediate position, while arm segment 32125 in FIG. 5B may rotate in the opposite direction from an intermediate position to an end position.

[0057] In embodiments, one or more sensors (e.g., sensors 32224 and 32244) may generate actuation data sets, motion data sets, and / or other sensor data during periods when movement between arm segments is occurring. In some instances, the actuation data sets may indicate forces or torques experienced by arm segments or joints involved in the movement, such as arm segment 32125 and joint 32144. As an example, FIG. 6A shows sensor 3222 and joint 32244 generating actuation data sets, motion data sets, and / or other sensor data during periods when arm segment 32125 is rotating relative to arm segment 32124 via joint 32144. 4. 32144. The actuation data in the graph may represent the total torque at joint 32144 or the total torque exerted on arm segment 32125 relative to joint 32144. The diagram further shows various points in time during which the movement is occurring, e.g., t start and t end In this example, t startt may represent the beginning of the period during which the full torque may cause the arm segment 32125 to rotate from the starting position of FIG. 5A towards the middle position of the figure. end At this point, relative rotation between immediately adjacent arm segments 32125, 32124 may cease. In the example of FIG. 6A, the actuation data may be a function of time. More specifically, the actuation data may include multiple actuation data values that may correspond to multiple different points in time. A positive actuation data value in FIG. 6A may represent total torque in a first direction (e.g., counterclockwise), and a negative actuation data value in the figure may represent total torque in a second direction (e.g., clockwise).

[0058] In embodiments, the motion data set generated by one or more sensors, such as sensor 32244, may describe relative rotation or other motion. For example, the motion data set may describe the amount or velocity of movement of the arm segment 32125 relative to the immediately adjacent upstream arm segment 32124 via joint 32124. In some implementations, the motion data may include multiple motion data values, which may include a rotational position value, a rotational velocity value, and / or a rotational acceleration value. As an example, the amount of motion may be represented by the rotational position or displacement of the arm segment 32125. More specifically, FIG. 6B shows motion data indicating the rotational position of the arm segment 32125 as a function of time. In this example, the rotational position or displacement may be measured relative to a baseline position, such as baseline position 3510. A positive value of the rotational position may refer to a position on one side of the baseline position (e.g., above the baseline position), while a negative value of the rotational position may refer to a position on the other side of the baseline position (e.g., below the baseline position).

[0059] When the motion data indicates a motion velocity, the motion velocity may be represented by a rotational speed, a rotational velocity, or a rotational acceleration. More specifically, FIG. 6C shows the rotational velocity of the arm segment 32125 relative to the baseline position 3510, relative to the arm segment 32124, or relative to some other reference frame. A positive value of the rotational velocity may indicate rotation in a first direction (e.g., counterclockwise), while a negative value of the rotational velocity may indicate rotation in a second direction (e.g., clockwise).

[0060] 6B and 6C show the time t start and t end and at an additional time t deceleration_point1 , t direction_switch , t deceleration_point2 Indicates t start At t, the arm segment 32125 can begin to accelerate in a counterclockwise direction, causing the arm segment 32125 to rotate from the start position of FIG. 5A to the intermediate position. deceleration_point1 At t, the arm segment 32125 may continue to rotate in the counterclockwise direction, but the rotational acceleration and rotational velocity in that direction may begin to decrease in magnitude. direction_switch 5B, the arm segment 32125 may pause or briefly stop before reaching the intermediate position and reversing its rotational direction to a clockwise direction. At this point, the rotational acceleration and rotational velocity begin to increase in magnitude in the clockwise direction, moving the arm segment 32125 from the intermediate position of FIG. 5B to the end position. It can be rotated towards the position. deceleration_point2 At t, the arm segment 32125 may continue to rotate in a clockwise direction, but the rotational acceleration and rotational velocity may decrease in magnitude. end At this point, the arm segment 32125 may have reached the end position of FIG. 5B and the magnitude of the rotational velocity may have decreased to zero.

[0061] In embodiments, computing system 1100 may receive actuation, motion, and / or other sensor data generated by one or more sensors and store the sensor data on non-transitory computer-readable medium 1120. FIGS. 7A-7C illustrate examples of actuation and motion data. More specifically, FIG. 7A illustrates that the motion data includes multiple values θ(t) through θ(t) that indicate the rotational position of an arm segment, such as arm segment 32125, in degrees or radians. z ) is shown. z ) are also called rotational position values, or more generally, motion data values, at the respective times t1 to t z , for example, relative to the baseline position 3510 in FIGS. 5A and 5B. As an example, the rotational position values θ(t1) to θ(t z ) may be the value represented by the graph of FIG. 6B. In such an example, t1 is t start may correspond to t z is t end It can correspond to.

[0062] Further in this example, the actuation data includes a plurality of values τ(t1) to τ(t z ) can also include these values τ(t1) to τ(t z ) are also called torque values, or more generally, operating data values, at each time point t1 to t z Therefore, the rotational position values θ(t1) to θ(t z ) are the torque values τ(t1) to τ(t z ) As mentioned above, the actuation data may indirectly indicate, in some instances, the total force or torque at an arm segment or joint. For example, FIG. 7B shows that the actuation data represents the currents c(t) through c(t) through the corresponding actuators (e.g., 33304) used to output the torque or force at the arm segment or joint. z) shows an example that is measured proportionally / directly to the value of. In such an example, the computing system 1100 measures the current values c(t1) to c(t z ) and may be configured to determine the torque values τ(t1) to τ(t z ). FIG. 7C provides another example of operational data that directly shows the value of the sensor data, or more specifically, the rotational speed [Number] ~ [Number] Another example of operational data that directly shows the value of the rotational speed, or more generally, the operational data value. These values may also be referred to as rotational speed values, or more generally, operational data values. In one embodiment, the various examples of sensor data in FIGS. 7A - 7C may be combined. For example, the operational data in FIG. 7B can be combined with the operational data in FIG. 7C.

[0063] As described above, step 4002 may involve splitting the sensor data into training data and test data. In an embodiment, the sensor data may be split as training data by selecting operational training data (also referred to as operation - related training data) and corresponding operational training data (also referred to as operation - related training data), and as test data by selecting operational test data (also referred to as operation - related test data) and corresponding operational test data (also referred to as operation - related test data). In other words, the training data may include operational training data and operational training data, and the test data may include operational test data and operational test data. For example, FIG. 8A shows an example in which the sensor data in FIG. 7A is split into training data and test data. The training data may include operational training data θ training , and operational training data τ training , while the test data may include operational test data θ test , and operational test data τ test . As shown in FIG. 8A, the operational training data θ trainingThe training may be a first subset of the motion data set (the set is the motion data values θ(t) to θ(t z )), while the operational test data may be a second subset of the operational dataset. The operational training data may be a first subset of the operational dataset (the set includes the operational data values τ(t) through τ(t z )), while the operational test data may include operational data sets τ(t1) to τ(t z ) In some implementations, the above subsets may have no overlap.

[0064] The sensor data may be divided in various ways. In one example, the computing system 1100 may select the first half of the continuous values of the operational data as operational training data and the second half of the continuous values of the operational data as test data. The operational training data and operational test data may be selected in a similar manner. In another example, the computing system 1100 may select all other values of the operational data as operational training data and the remaining values of the operational data as test data, similarly selecting the operational training data and operational test data. In another example, FIG. 8A illustrates a time series of rotational position values θ(t) to θ(t z ) is shown. In this example, the calculation system selects the motion training data including the rotational position values θ(t1) to θ(t a ) and the rotational position value θ(t b+1 )~θ(t c ) may be selected as training data, and these values may form a first subset of operational data. Similarly, the computing system 1100 may select operational training data to form a first subset of operational data, torque values τ(t) to τ(t a ) and torque value τ(t b+1 )~τ(t c ) Further, the computing system 1100 may select the operational test data to form a second subset of operational data, such as the rotational position values θ(t a+1 )~θ(t b ), and the rotational position value θ(t c+1 )~θ(tz Similarly, the computing system 1100 may select the operational test data to form a second subset of operational data, including torque values τ(t a+1 )~τ(t b ) and torque value τ(t c+1 )~τ(t z ).

[0065] In another example of dividing the sensor data, the computing system 1100 can divide the sensor data in a manner that is symmetrical with respect to the position and velocity values indicated by the operational data, or more specifically, with respect to the relationship between position and velocity. For example, the relationship may refer to the ratio between rotational velocity and rotational position. More specifically, FIG. 8B illustrates a coordinate system (e.g., a polar coordinate system) that describes rotational position and velocity values. The rotational position and velocity values may be part of the operational data or may be derived from the operational data. For example, the operational data stored in the non-transitory computer-readable medium 1120 may include rotational position values, and the computing system 1100 may determine the rotational velocity values to be equal to or based on the time-based derivatives of the rotational position values. The figure further depicts imaginary lines 801 and 803 that may divide the coordinate system into symmetric regions 812, 821, 813, 831, 814, 841, 815, and 851. In an embodiment, the virtual line 801 represents a defined ratio threshold between rotational speed and rotational position, e.g.

number

[0066] In embodiments, the computing system 1100 may select particular operational data values as training data or test data based on which region the operational data values fall within. More specifically, the operational data values may include rotational position values and / or corresponding rotational speed values. For example, the operational data values may include rotational position values, and the computing system may select the operational data values as training data or test data based on the rotational position values. The computing system 1100 may determine whether to select operational data values as training data or test data based on which region a combination of a rotational position value and a corresponding rotational speed value falls in. In some implementations, the computing system 1100 may make this determination based on the ratio between the rotational speed value and the rotational position value. For example, the imaginary line 801 may divide one quadrant of the coordinate system into a pair of mutually symmetrical regions 812, 821. The region 812 is a region where the respective ratios of the rotational speed values and the corresponding rotational position values are greater than a defined ratio threshold (e.g.,

number

[0067] As another example, the imaginary line 803 may divide another quadrant of the coordinate system into a pair of mutually symmetrical regions 813, 831. In this example, the motion data values that fall within region 831 may be selected as motion training data, while the motion data values that fall within region 813 may be selected as test data. Region 813 includes regions where the respective ratios between their rotational speed values and corresponding rotational position values are between 0 and another defined ratio threshold (e.g.,

number

[0068] Returning to FIG. 4, the method 4000, in one embodiment, includes a computing system 1100 that processes motion training data (e.g., θ training ) and operational training data (e.g., τ trainin g), at least one of (i) a friction parameter estimate related to friction between a pair of arm segments (e.g., 32125, 32124) undergoing relative motion measured by the sensor data, or (ii) an estimate of the center of gravity (CoM) associated with one of the pair of arm segments (e.g., 32125). In this embodiment, the friction parameter estimate is an estimate of the coefficient of viscous friction or an estimate of Coulomb friction.

[0069] 9A-9C illustrate how friction parameter estimates can be determined based on operational training data and motion training data. More specifically, FIG. 9A illustrates how friction parameter estimates can be determined based on operational training data τ training and (ii) the motion training data θ training The corresponding value of the rotation speed is denoted by θ training 9A is a plot of combinations of rotational position values (which may be time-based derivatives of rotational position values at t). Each combination of values may include a first value representing the total torque at a joint (e.g., 32144) at a respective time point described by the training data, and a second value representing the rotational velocity at that time point. For example, the first value may indicate the total torque on a first arm segment (e.g., 32125) relative to a second arm segment (e.g., 32124) at a particular time point, and the second value may indicate the rotational velocity between the first and second arm segments at that time point. The combinations of values plotted in FIG. 9A may correspond, for example, to the rotations shown in FIGS. 5A and 5B, and to the sensor data shown in FIGS. 6A-6C. For example, FIG. 9A illustrates a combination of rotational position values at t start From t deceleration_point1 The magnitude increases in a first direction (e.g., counterclockwise) for a time period up to t deceleration_point1 From t direction_switch The magnitude decreases during a time period up to t, then switches from the first direction to a second direction (e.g., clockwise), and direction_switch From t deceleration_point2The magnitude increases in the second direction for a period up to t deceleration_point2 From t end 1 shows motion training data representing rotational speed, which decreases in magnitude over a period of time from 0 to 1000 rpm, and actuation training data.

[0070] In embodiments, the total torque represented by the actuation training data may be based on a contribution from the inertia of the actuator between two adjacent arms (e.g., 32125 and 32124). In embodiments, the total torque may be based on a contribution from friction. More specifically, the total torque may, in some instances, be described by the following example equation: τ = contribution from actuator + contribution from gravity + contribution from friction (1)

[0071] In the above equation, τ refers to the total torque on the joint (e.g., 32144), and the actuation training data τ training In this example, the contribution from the actuator may refer to the torque or force output by the actuator (e.g., 33304). For example, this contribution from the actuator may be

number

number

[0072] In embodiments, the contribution from friction may refer to how much resistance is provided by friction due to the movement or change in movement of a first arm segment against a second arm segment or against a joint connecting the two arm segments. In some scenarios, the contribution from friction may be

number

number

[0073] In an embodiment, the computing system 1100 calculates operational training data τ trainingThe computational system 1100 may be configured to effectively extract or otherwise determine the contribution from friction, which may also be referred to as the friction component of the total torque, from the total torque. For example, FIGS. 9B and 9C show combinations of values representing the friction component of the total torque for various points in time. These values for the friction component of the total torque may be combined with values of the rotational speed. In some instances, the computational system 1100 may be configured to extract the friction component of the total torque by subtracting the actuator contribution, if those contributions are known, and the gravity contribution from the total torque indicated by the actuation training data. For example, if the computational system 1100 previously determined an estimate of r (representing moment of inertia), or r (representing CoM), The computational system 1100 may also use these estimates as well as other data provided by or derived from the operational training data.

number

number

[0074] As shown in FIG. 9C, the computational system 1100 uses the relationship between the friction component of the total torque (which may be extracted from the operational training data) and the rotational speed (which may be provided by or extracted from the operational training data) to determine the friction parameter estimate. More specifically, the friction between the two arm segments may include static friction and viscous friction. As discussed above, static friction may be expressed as a constant (s) in some instances, while viscous friction is a linear function of rotational speed.

number

number

number

[0075] As mentioned above, the computational system 1100 may be configured to effectively extract the friction component by solving a set of simultaneous equations that relate the total torque to friction. As mentioned above, the total torque τ may be based on a contribution from the actuator, a contribution from gravity, and a contribution from friction. In one example, the total torque may be based on the following more specific relationship:

number

[0076] In this example, the value for the parameter τ may be provided by or derived from operational training data.

number

number

number

number

number

number

[0077] In one embodiment, the computing system 1100 may be configured to use the above relationships to generate a set of equations that correspond to different time points represented by the training data, or more generally, to various combinations of (i) torque values from the actuation training data and (ii) position, velocity, or acceleration values from the motion training data. For example, the computing system 1100 may be configured to generate the following set of equations, which may be expressed as matrices:

number

[0078] In the above example,

number

number

number

number

number

number

number

number

number

number

number

number

number

number

number

number

number

number

[0079] In an embodiment, the computing system 1100 may be configured to solve the above set of simultaneous equations to determine respective values for s, b, I, m, r, and / or α. Solving the equations may include finding values for s, b, I, m, r, α that satisfy or approximately satisfy the above equations. and / or a. The friction parameter estimates may involve determining respective values for s or b determined from solving the equations, for example. In some implementations, the computing system 1100 may be configured to apply a least squares fitting method to determine respective values for the above parameters that minimize the amount of error between, for example, the value on the left side of the equation (e.g., Equation 4) and the value on the right side of the equation. The value on the left side of the equation may be a torque value provided by or extracted from the operational training data.

number

[0080] As mentioned above, step 4004 may involve determining at least one of a friction parameter estimate or a CoM estimate. In an embodiment, the computing system may determine the CoM estimate by solving the simultaneous equations illustrated above. In some instances, the computing system 1100 may use the above approach or some other approach to effectively extract, from the actuation training data, the component of the total torque due to the weight of the arm segment (e.g., 32125), i.e., more specifically, due to the effect of gravity on the CoM of the arm segment. In one example, this component may be expressed as mgr cos(θ+α), e.g., from the total torque, subtracting the actuator contribution (e.g.,

number

number

[0081] In embodiments, when determining an estimate of CoM for a particular arm segment based on actuation training data, the computing system 1100 may be configured to take into account the influence that downstream arm segments (e.g., more distal arm segments) may have on the actuation training data or other training data. More specifically, weight from a downstream arm segment (e.g., 32126) may contribute to the total torque at a particular arm segment (e.g., 32125) or joint (e.g., 32144). Thus, the downstream arm segment may influence the actuation or motion training data used to determine the CoM estimate for the particular arm segment (e.g., 32125). In such a situation, the computing system 1100 may determine the extent to which the actuation or motion training data is affected by the weight of the downstream arm segment to remove or compensate for that influence.

[0082] In some instances, step 4004 may include determining an estimate for the moment of inertia, I, such as by solving an equation discussed above (e.g., Equation 4). Determining CoM estimates, friction parameter estimates, and / or moment of inertia estimates is discussed in more detail in U.S. Patent Application No. 17 / 243,939, entitled "METHOD AND COMPUTING SYSTEM FOR ESTIMATING PARAMETER FOR ROBOT OPERATION" (MJ0062-US / 0077-0015US1), which is incorporated herein by reference in its entirety.

[0083] Referring again to FIG. 4, embodiment 4000 may, in one embodiment, be implemented by computing system 1100 using the θ test The method may include step 4006, determining operational prediction data based on the operational test data and at least one of (i) the friction parameter estimates or (ii) the CoM estimates, where the estimates are determined from step 4004. For example, the operational prediction data may include a set τ predictor a setting f that predicts a force value (which can also be called a force prediction value) predict , and the torque or force estimate may be an estimate indicative of the total torque or force at the joint associated with the rotation or other motion used to generate the sensor data, such as 32144. In this example, the set τ predict is τ predict_1 , τ predict_2 ,...τ predict_n In other words, a set τ predict is a set of multiple torque prediction values (also called predicted torque values) τ predict_1 , τ predict_2 ,...τ predict_n may include:

[0084] In some instances, the torque estimates or other operational estimates may correspond to different points in time during the period in which the sensor data was generated. For example, FIG. 11 shows multiple torque estimates τ corresponding to different points in time. predict_1 , τ predict_2 ,...τ predict_n , and the operational test data used to generate the torque prediction value may correspond to different points in time. For example, the operational test data θ test is a set of multiple rotational position values θ test-_1 , θ te st_2 ,...θ test_n When the operational test data is from FIG. 8A, then the rotational position value θ test-_1 , θ test_2 ,...θ test_n More specifically, the rotational position value θ(t a+1 )...θ( tb ) and θ(t c+1 )...θ( tz In such an embodiment, the operational test data includes t a+1 ...t b and t c+1 ...t zThe operation prediction data may be based on operational test data, and therefore corresponds to the time t a+1 ...t b and t c+1 ...t z This may correspond to the time point.

[0085] In embodiments, the operational prediction data may be determined based on an equation similar to Equation 2, 3, or 4 above. For example, the operational prediction data may include a plurality of torque prediction values τ predict_1 , τ predict_2 ,...τ predict_n Then, for each torque prediction value τ predict_i may be determined based on the formula:

number

[0086] In this formula,

number

[0087] Returning to FIG. 4, the method 4000, in one embodiment, is implemented by the computing system 1100 using the above-mentioned τ predict and the operation prediction data and τ in Fig. 8A test12, the residual data may include residual data values corresponding to different time points. For example, τ predict If is based on the operational test data of FIG. 8A, the operation prediction data is t a+1 ...t b and t c+1 ...t z In this example, the operational test data τ test is t a+1 ...t b and t c+1 ...t z The value τ corresponds to the time test_1 , τ test_2 ,...τ test_n may include:

[0088] In embodiments, the residual data may indicate a degree of error between the operational prediction data and the operational test data. In such embodiments, the computing system 1100 may determine the residual data by determining the difference between the operational prediction data and the operational test data. If the operational prediction data includes multiple torque prediction values and the operational test data also includes multiple torque values, the computing system 1100 may determine the residual data by subtracting the multiple torque prediction values from the multiple torque values of the operational test data (or vice versa). For example, FIG. 13A shows residual data values e1, e2, e3, ...e, where the residual data may indicate an error between the torque prediction values and torque values of the operational test data. n In this example, the calculation system 1100 calculates, for example, torque values τ test_1 , τ test_2 ,...τ test_n The torque prediction value τ of the operation prediction data predict_1 , τ predict_2 ,...τ predict_n By subtracting the residual data values e1, e2, e3, ... e n can be determined.

[0089] Returning to FIG. 4, method 4000, in one embodiment, involves computing system 1100 generating residual data values, e.g., values e1, e2, e3, . . . e of FIG. 13A. n The method includes step 4010 of determining a value for an error parameter describing the relationship between the total torque or force and the friction or CoM. In some instances, the error parameter may indicate the quality, accuracy, or reliability of a model describing the relationship between, for example, (i) the total torque or force and (ii) the friction or CoM. In some instances, the error parameter may indicate the accuracy or reliability of an estimate (e.g., a friction parameter estimate, a CoM estimate, and / or a moment of inertia estimate) determined using the model. In other words, the error parameter may indicate the confidence (or lack of confidence) in the model, the sensor data, and / or the parameter estimates.

[0090] In an embodiment, the model may have been used by the computing system 1100 to determine the friction parameter estimates and / or CoM estimates in step 4004 and / or to calculate the actuation prediction data in step 4006. The model may describe, for example, the relationship between (i) the total torque or total force at a joint (e.g., 32144) or arm segment (e.g., 32125) and (ii) the friction between the arm segments (e.g., 32125, 32124) connected by the joint, or the CoM of one of the arm segments (e.g., 32125). The model may include or be represented by an equation, such as one of Equations 2, 3, 4, 5, or 6. The equation may define the total force or torque as a function of parameters such as the coefficient of viscous friction b and static friction s between the arm segments, the CoM of one of the arm segments, the moment of inertia I of one of the arm segments, and as a function of motion data values such as rotational position, rotational velocity, and / or rotational acceleration. In some scenarios, the model equation may provide a simplified approximation of how friction, gravity, or force or torque from an actuator affects the total force or torque at a joint or arm segment. Because the model may only provide an approximation of the relationship between the total force or torque and parameters such as friction, the CoM, and the torque or force output by the actuator, the actuation prediction data based on this model may not perfectly match the actuation test data. Because the error parameter may describe the degree of deviation between the actuation test data and the actuation prediction data, the error parameter may indicate the level of accuracy of the model used to generate the actuation prediction data, i.e., more specifically, the equation(s) in the model, and may indicate whether the model is sufficiently accurate or too simple. In some instances, the error parameter may further indicate the level of accuracy of the estimates that are inputs to the equation, such as the friction parameter estimate and the CoM estimate.

[0091] As mentioned above, the error parameters, in one embodiment, may indicate the quality of the sensor data used to estimate friction, CoM, and / or moment of inertia in step 4004, or more generally, the sensor data used to perform robot calibration. For example, the sensor data may measure the motion of one or more arm segments of the robot, such as arm segment 32125 of robot 3200. In some instances, an arm segment (e.g., 32125), or other part of the robot, may experience an event, such as the robot bumping into or colliding with another object, that may unexpectedly impede or alter its motion. Such a collision may result in uneven motion of one or more arm segments of the robot, including motion characterized by sudden changes in acceleration rather than smooth motion. Uneven motion may produce sensor data, including actuation and motion data, that is particularly unreliable for robot calibration and therefore of low quality.

[0092] In embodiments, the quality of the sensor data may be reflected in the residual data values of step 4010 through frequency content. More specifically, the error parameters of this embodiment may describe or indicate frequency content in the residual data values. In some instances, the presence of low-frequency content may indicate or correspond to sensor data having low or unreliable quality, such as sensor data generated when a robot (e.g., 3200) experiences a collision with another object. More specifically, the presence of high-frequency content in the residual data values may be associated with or correspond to background noise, such as electrical noise, which may fluctuate randomly and introduce random amounts of change into the motion or actuation data generated by the sensor. In some scenarios, background noise may be a relatively small source of error compared to events such as a robot colliding with another object. In some situations, events such as a collision may also result in changes in the motion or actuation data, but the frequency of the changes may be low compared to the frequency of the background noise. Therefore, the presence of low frequency content in the residual data values may be more consistent with an event such as a collision between the robot and another object that may degrade the quality of motion data, actuation data, or other sensor data used for robot calibration.

[0093] In embodiments, the computing system 1100 may perform an averaging function on a group of residual data values. The averaging function may have the effect of frequency filtering the group of residual data values. For example, the averaging function may be weighted more heavily than high frequency content and less heavily than low frequency content. The averaging function may produce a result that weights the content (or vice versa). In some instances, the result of the averaging function may have a higher value where there is more low-frequency content. Thus, the result of the averaging function may indicate the frequency content in the group of residual data values. In some implementations, the group of residual data values may be residual data values corresponding to a time window. For example, the computing system 1100 may determine a plurality of average residual data values for a plurality of respective time windows. As an example, FIG. 13B shows a plurality of time windows 13001, 13002, 13003, 13004, which are time windows (also referred to as time slots) during which operational test data, performance test data, or other sensor data is generated for robot calibration. These time windows (e.g., 5-millisecond, 10-millisecond, or 100-millisecond time windows) may correspond to different respective subsets of residual data values. In this example, time window 13001 is a time window (t a From t a+4 The time window 13002 may cover a time range of t a+1 From t a+5 , which may correspond to a second subset of residual data values e2 through e6. a+2 From t a+6 and may correspond to a third subset of residual data values e3 to e7.

[0094] In an embodiment, the time windows (e.g., 13001-13004) may be sliding time windows. More specifically, they may represent overlapping time periods or ranges, with respective start times spaced apart by defined sliding time increments (e.g., 1 ms, 5 ms, etc.). In the example of FIG. 13B, the start times of each of the time windows 13001-13004 are t a+1 From t aThe residual data values may be spaced apart by a defined sliding time increment (e.g., a predefined increment) equal to minus 1. While Figure 13B shows time windows each having five residual data values, other embodiments may have time windows that include more residual data values (e.g., 20 residual data values, 100 residual data values), or fewer residual data values.

[0095] In an embodiment, the computing system 1100 may perform the averaging function by determining a plurality of average residual data values for a plurality of respective time windows. For example, in FIG. 13B, the plurality of average residual data values (also referred to as an array of residual data values) may be a swe_1 , a swe_2 , a swe_3 , a swe_4 , .... Each of the average residual data values may be the average of the residual data values within the corresponding sliding time window. For example, the average residual data value a swe_1 may be the average of the residual data values e1, e2, e3, e4, and e5 in the time window 13001. As another example, the average residual data value a swe_2 may be the average of residual data values e2, e3, e4, e5, and e6 in time window 13002. As described above, the multiple average residual data values may be affected by the frequency content within the residual data values contained by the corresponding time window. Thus, the multiple average residual data values may indicate the frequency content within each group of residual data values belonging to the respective time window. Also, as described above, low frequency content in the residual data values may indicate or be consistent with unreliable or low quality sensor data. Thus, computing system 1100 may determine whether sensor data involved in robot calibration has sufficient quality based on the average residual data values.

[0096] In an embodiment, the computing system 1100 may determine a value of the error parameter based on a plurality of average residual data values. As an example, the computing system 1100 may determine a value of the error parameter based on a swe_1 , a swe_2 , a swe_3, a swe_4 , .... etc. Maximum of multiple average residual data values or M aswe As mentioned above, the value of the error parameter in this embodiment, e.g., M aswe may indicate the amount of low frequency content or high frequency content in the residual data values, which may indicate the quality or reliability of the sensor data generated for robot calibration. aswe Relatively low values for error parameters such as A residual data value near zero may indicate relatively high quality sensor data, while a relatively high value for the error parameter may indicate relatively low quality sensor data.

[0097] In embodiments, computing system 1100 may determine whether the value of the error parameter exceeds a defined error threshold (e.g., a predefined error threshold) or falls below a defined confidence threshold (e.g., a predefined confidence threshold). In some instances, the confidence threshold may be, for example, the inverse of the error threshold. If the value of the error parameter exceeds a defined error threshold or falls below a defined confidence threshold, computing system 1100 may output an indication that the value of the error parameter exceeds the error threshold or falls below the confidence threshold. In some implementations, the indication may be a signal output via communications interface 1130, and the signal may be received by another computing system. In some embodiments, the indication may be a text or graphical message output on a display device (if present) of computing system 1100. In some instances, computing system 1100 may store the value of the error parameter in non-transitory computer-readable medium 1120.

[0098] In an embodiment, the defined error threshold may be, for example, a manually defined value that is received by computing system 1100 and stored in non-transitory computer-readable medium 1120. In an embodiment, the defined error threshold may be a value that is dynamically defined or otherwise determined by computing system 1100. For example, computing system 1100 may determine the error threshold based on a defined torque value (e.g., a nominal torque value), a defined speed multiplier associated with a particular robot (e.g., a pre-defined speed multiplier), and an empirically determined percentage value that may be associated with a particular robot (e.g., 3200). Thus, different robots may be associated with different error thresholds in this example.

[0099] In embodiments, if the value of the error parameter exceeds a defined error threshold or is less than a defined confidence threshold, such an indication may be used by computing system 1100, by another computing system, and / or by a user to determine whether to re-run the robot calibration, whether to modify the model used to perform the robot calibration, and / or whether to modify the method of motion planning for the robot (e.g., 3200) or robot arm (e.g., 3210). For example, the robot calibration may be re-run in an attempt to obtain new sensor data and generate new estimates for the friction parameters and / or CoM estimates. Computing system 1100 may then repeat the steps of method 4000 to determine whether the new sensor data or new estimates result in better values for the error parameters.

[0100] Additional considerations regarding various embodiments:

[0101]

[0010] Embodiment 1 relates to a computing system, a method performed by the computing system, or a non-transitory computer-readable medium having instructions for performing a method. In an embodiment, the computing system includes the non-transitory computer-readable medium and at least one processing circuit. The at least one processing circuit is configured to perform various operations when the non-transitory computer-readable medium stores sensor data including: (i) a motion dataset indicating an amount or rate of relative motion between a pair of immediately adjacent arm segments of the robot arm that is occurring or has occurred through a joint of the robot arm; and (ii) an actuation dataset indicating a total torque or total force at the joint during which the relative motion is occurring or has occurred. The various operations include (i) selecting, as training data, motion training data that is a first subset of the motion dataset and corresponding actuation training data that is a first subset of the actuation dataset; (ii) selecting, as training data, motion training data that is a first subset of the actuation dataset; and (iii) selecting, as training data, motion training data that is a first subset of the actuation dataset. and dividing the sensor data into training data and test data by selecting as the data motion test data that is a second subset of the motion dataset and corresponding actuation test data that is a second subset of the actuation dataset. The various operations may further include determining, based on the motion training data and the actuation training data, at least one of (i) a friction parameter estimate associated with friction between a pair of immediately adjacent arm segments or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments. The various operations may further include determining, based on the motion test data and at least one of (i) the friction parameter estimate or (ii) the CoM estimate, actuation prediction data, where the actuation prediction data is a prediction indicative of total torque or total force at a joint at a different time. The various operations include determining residual data including residual data values describing deviations between the operational prediction data and the operational test data corresponding to different points in time; determining a value of an error parameter describing the residual data value based on the residual data; determining whether the value of the error parameter exceeds a defined error threshold; and outputting an indication of whether the value of the error parameter exceeds the defined error threshold.

[0102] Embodiment 2 includes the computing system of embodiment 1, wherein the error parameter indicates frequency content in the residual data values.

[0103] Example 3 includes the computing system of example 1 or 2, wherein the error parameter indicates the quality of the sensor data.

[0104] Example 4 includes the computational system of any one of Examples 1-3, wherein the error parameter indicates the accuracy of a model describing the relationship between (i) total torque or total force and (ii) friction or CoM.

[0105] Example 5 includes the computing system of any one of Examples 1-4, wherein the at least one processing circuit is configured to determine a plurality of average residual data values for a plurality of respective time windows of the time period, each of the plurality of time windows corresponding to a different respective subset of the residual data values. In this embodiment, the value of the error parameter is determined based on the plurality of average residual data values.

[0106] Example 6 includes the computing system of example 5, wherein the at least one processing circuit is configured to determine a value of the error parameter based on a maximum value of the plurality of average residual data values.

[0107] Example 7 includes the computing system of Example 5 or 6, wherein the multiple time windows represent overlapping time periods having respective start times spaced apart by defined sliding time increments.

[0108] Example 8 includes the computing system of any one of Examples 1-7, wherein the motion data set includes a plurality of motion data values corresponding to different time points; and wherein the at least one processing circuit is: for each motion data value of the plurality of motion data values, determine a respective position value equal to or based on the motion data value, wherein each position value describes a position of a first arm segment of the pair relative to a second arm segment of the pair at each time point corresponding to the motion data value; determine respective velocity values equal to or based on the motion data values, wherein each velocity value describes a velocity of the first arm segment relative to the second arm segment at the each time point; and select the motion data values as training data or as training data based on a respective ratio between the respective velocity value and the respective position value. and determining whether to select the sensor data as test data.

[0109] Example 9 includes the computing system of Example 8, wherein the at least one processing circuit is configured to determine, for each operational data value of the plurality of operational data values, whether to select the operational data value as training data or test data based on whether a respective ratio between a respective velocity value and a respective position value associated with the operational data value is at least one of: (i) within a ratio range extending from 0 to a defined positive ratio threshold, or (ii) less than a defined negative ratio threshold.

[0110] Example 10 includes the computing system of Example 8 or 9, wherein the at least one processing circuit is configured to determine, for each operational data value of the plurality of operational data values, whether to select the operational data value as training data or test data based on whether a respective ratio between a respective velocity value and a respective position value associated with the operational data value is at least one of: (i) within a ratio range extending from 0 to a defined positive ratio threshold, or (ii) less than a defined negative ratio threshold.

[0111] Example 11 includes the computing system of any one of Examples 1-10, wherein the friction parameter estimate is an estimate of a coefficient of viscous friction or an estimate of Coulomb friction.

[0112] Example 12 includes the computing system of any one of Examples 1 to 11, wherein when the actuation data set measures current through an actuator to cause relative movement between a pair of immediately adjacent arm segments, the at least one processing circuit is configured to determine a total torque or force at the joint based on the current.

[0113] It will be apparent to those skilled in the relevant arts that other suitable modifications and adaptations to the methods and applications described herein may be made without departing from the scope of any of the embodiments. The embodiments described above are illustrative examples, and the present invention should not be construed as being limited to these particular embodiments. It should be understood that the various embodiments disclosed herein may be combined in combinations other than those specifically presented in the description and accompanying figures. It should also be understood that, by example, certain acts or events of any of the processes or methods described herein may be performed in a different sequence, added, combined, or omitted entirely (e.g., not all described acts or events may be required to implement a method or process). In addition, although certain features of the embodiments herein may be described for clarity as being performed by a single component, module, or unit, it should be understood that the features and functions described herein may be performed by any combination of components, modules, or units. Accordingly, various changes and modifications may occur to those skilled in the art without departing from the spirit or scope of the invention, as defined by the appended claims.

Claims

1. 1. A computing system comprising: a non-transitory computer-readable medium; at least one processing circuit; When the non-transitory computer readable medium stores sensor data including: (i) a motion dataset indicative of an amount or rate of relative motion between a pair of immediately adjacent arm segments of a robotic arm that is occurring or has occurred through a joint of the robotic arm; and (ii) an actuation dataset indicative of a total torque or total force at the joint during which the relative motion is occurring or has occurred; The at least one processing circuit determining, based on the motion data and the actuation data, at least one of (i) a friction parameter estimate associated with friction between the pair of immediately adjacent arm segments, or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments; determining actuation prediction data based on the sensor data and based on the at least one of (i) the friction parameter estimate or (ii) the CoM estimate, the actuation prediction data being a prediction indicative of the total torque or total force at the joint at different times; determining residual data including residual data values describing deviations between the operational prediction data and the sensor data corresponding to the different points in time; determining, based on the residual data, values of error parameters that describe the residual data values; configured to run the at least one processing circuit is configured to determine a plurality of average residual data values for a plurality of respective time windows of the period, the plurality of respective time windows corresponding to different respective subsets of the residual data values; The value of the error parameter is determined based on the plurality of average residual data values.

2. The computing system of claim 1 , wherein the error parameter indicates frequency content in the residual data values.

3. The computing system of claim 2 , wherein the error parameter indicates a quality of the sensor data.

4. The computing system of claim 2 , wherein the error parameter indicates the accuracy of a model describing the relationship between (i) total torque or total force and (ii) friction or CoM.

5. The computing system of claim 1 , wherein the at least one processing circuit is configured to determine the value of the error parameter based on a maximum value of the plurality of average residual data values.

6. The computing system of claim 1 , wherein the plurality of respective time windows represent overlapping time periods having respective start times spaced apart by defined sliding time increments.

7. the operational data set includes a plurality of operational data values corresponding to different points in time; the at least one processing circuit, for each operational data value of the plurality of operational data values: determining respective position values equal to or based on said motion data values, said respective position values describing a position of a first arm segment of said pair of immediately adjacent arm segments relative to a second arm segment of said pair of immediately adjacent arm segments at each time corresponding to said motion data values; determining respective velocity values equal to or based on said motion data values, said respective velocity values describing a velocity of said first arm segment relative to said second arm segment at said respective time points; determining whether to select the motion data values as training data or test data based on the respective ratios between the respective velocity values and the respective position values; 2. The computing system of claim 1, configured to split the sensor data into the training data and the test data by executing:

8. 8. The computing system of claim 7, wherein the at least one processing circuit is configured to determine, for each operational data value of the plurality of operational data values, whether to select the operational data value as the training data or the test data based on whether the respective ratio between the respective velocity value and the respective position value associated with the operational data value is at least one of: (i) within a ratio range extending from 0 to a defined positive ratio threshold, or (ii) less than a defined negative ratio threshold.

9. 8. The computing system of claim 7, wherein the at least one processing circuit is configured to determine, for each operational data value of the plurality of operational data values, whether to select the operational data value as the training data or the test data based on whether the respective ratio between the respective velocity value and the respective position value associated with the operational data value is at least one of: (i) within a ratio range extending from 0 to a defined negative ratio threshold, or (ii) greater than a defined positive ratio threshold.

10. The computing system of claim 1 , wherein the friction parameter estimate is an estimate of a coefficient of viscous friction or an estimate of Coulomb friction.

11. when the actuation data set measures current through an actuator to cause the relative movement between the pair of immediately adjacent arm segments; The computing system of claim 1 , wherein the at least one processing circuit is configured to determine the total torque or the total force at the joint based on the current.

12. A non-transitory computer-readable medium having instructions, The instructions, when executed by at least one processing circuit of a computing system, cause the at least one processing circuit to: storing sensor data on the non-transitory computer-readable medium; the sensor data includes: (i) a motion data set indicative of an amount or rate of relative motion between a pair of immediately adjacent arm segments of the robot arm that is occurring or has occurred through a joint of the robot arm; and (ii) an actuation data set indicative of a total torque or total force at the joint during the period that the relative motion is occurring or has occurred; The instructions, when executed by the at least one processing circuit, further cause the at least one processing circuit to: determining, based on the motion data and the actuation data, at least one of (i) a friction parameter estimate related to friction between the pair of immediately adjacent arm segments, or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments; determining actuation prediction data based on the sensor data and based on the at least one of (i) the friction parameter estimates or (ii) the CoM estimates, the actuation prediction data being predictions indicative of total torque or total force at the joint at different times; determining residual data including residual data values describing deviations between the operational prediction data and the sensor data corresponding to the different points in time; determining, based on the residual data, values of error parameters that describe the residual data values; Execute The instructions further cause the at least one processing circuit to determine a plurality of average residual data values for a plurality of respective time windows of the period, the plurality of respective time windows corresponding to different respective subsets of the residual data values; The non-transitory computer-readable medium, wherein the value of the error parameter is determined based on the plurality of average residual data values.

13. The non-transitory computer-readable medium of claim 12 , wherein the error parameter indicates frequency content in the residual data values.

14. The non-transitory computer-readable medium of claim 13 , wherein the error parameter indicates a quality of the sensor data.

15. 14. The non-transitory computer-readable medium of claim 13, wherein the error parameter indicates the accuracy of a model describing the relationship between (i) total torque or total force and (ii) friction or CoM.

16. 13. The non-transitory computer-readable medium of claim 12, wherein the instructions further cause the at least one processing circuit to determine the value of the error parameter based on a maximum value of the plurality of average residual data values.

17. 17. The non-transitory computer-readable medium of claim 16, wherein the plurality of respective time windows represent overlapping time periods having respective start times spaced apart by defined sliding time increments.

18. 1. A method performed by a computing system, comprising: storing the sensor data on a non-transitory computer-readable medium of the computing system; the sensor data that the non-transitory computer-readable medium is configured to store includes: (i) a motion data set indicative of an amount or rate of relative motion between a pair of immediately adjacent arm segments of the robotic arm that is occurring or has occurred through a joint of the robotic arm; and (ii) an actuation data set indicative of a total torque or total force at the joint during a period in which the relative motion is occurring or has occurred; The method further comprises: determining, based on the motion data and the actuation data, at least one of (i) a friction parameter estimate associated with friction between the pair of immediately adjacent arm segments, or (ii) a center of gravity (CoM) estimate associated with one of the pair of immediately adjacent arm segments; determining actuation prediction data based on the sensor data and based on the at least one of (i) the friction parameter estimates or (ii) the CoM estimates, the actuation prediction data being predictions indicative of total torque or total force at the joint at different times; determining residual data including residual data values describing deviations between the operational prediction data and the sensor data corresponding to the different points in time; determining, based on the residual data, values of error parameters that describe the residual data values; determining a plurality of average residual data values for a plurality of respective time windows of said period; each of the plurality of time windows corresponds to a different respective subset of the residual data values; The method, wherein the value of the error parameter is determined based on the plurality of average residual data values.

Citation Information

Patent Citations

  • Identifying method for viscous friction coefficient and coulomb's friction force

    JP1992271403A

  • Friction parameter control method for robot manipulator

    JP1998249763A

  • Method and system for adaptive compensation of dry friction

    US20170322523A1