Torque estimation based on movement of robotic arm
The method combines multiple torque estimation functions with weighted selection to accurately estimate joint torque across varying momentum, improving kinesthetic teaching and control without relying on costly sensors.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- UNIVERSAL ROBOT
- Filing Date
- 2025-12-19
- Publication Date
- 2026-06-25
AI Technical Summary
Existing methods for estimating torque applied to robot joints, particularly during kinesthetic teaching, suffer from inaccuracies at low momentum and require costly force/torque sensors, which reduce payload and responsiveness.
A method that selects and combines multiple robot joint torque estimation functions, assigning weights to each based on angular information, allowing accurate torque estimation across a wide range of momentum without dedicated sensors, using a combination of disturbance observer and torsional compliance functions.
Enables accurate torque estimation over a wide range of joint velocities, enhancing kinesthetic teaching responsiveness and control precision by adapting to different momentum regimes.
Smart Images

Figure DK2025050240_25062026_PF_FP_ABST
Abstract
Description
TORQUE ESTIMATION BASED ON MOVEMENT OF ROBOTIC ARMField of the invention
[0001] The present invention relates to a method for estimating torque applied to a robot joint of a robotic arm, a method of programming a robotic arm system, a method of controlling a robotic arm system, a robotic arm system, and a computer program.Background of the invention
[0002] Robotic arms, also referred to as robot manipulators, comprising a plurality of robot joints and links where motors can rotate the joints in relation to each other are known in the field of robotics. Typically, the robotic arm comprises a robot base which serves as a mounting base for the robotic arm and a robot tool flange where to various tools can be attached. A robot controller is configured to control the robot joints to move the robot tool flange in relation to the base. For instance, in order to instruct the robotic arm to carry out a number of working instructions. The robot joints may be rotational robot joints configured to rotate parts of the robotic arm in relation to each other, prismatic or revolute joints configured to translate parts of the robotic arm in relation to each other and / or any other kind of robot joints configured to move parts of the robotic arm in relation to each other.
[0003] Typically, the robot controller is configured to control the robot joints based on a dynamic model of the robotic arm, where the dynamic model defines a relationship between the forces acting on the robotic arm and the resulting accelerations of the robot arm. Often, the dynamic model comprises a kinematic model of the robotic arm, knowledge about inertia of the robotic arm and other parameters influencing the movements of the robotic arm. The kinematic model defines a geometric relationship between the different parts of the robotic arm and may comprise information of the robotic arm such as, length, size of the joints and links and can for instance be described by Denavit-Hartenberg parameters or the like. The dynamic model makes it possible for the controller to determine which torques the joint motors shall provide in order to move the robot joints for instance at specified velocity, acceleration or in order to hold the robotic arm in a static posture.
[0004] Robotic arms need to be programmed by a user or a robot integrator defining various instructions for the robotic arm, such as predefined moving patterns and working instructions such as gripping, waiting, releasing, screwing instructions. The instructions can be based on various sensors or input signals which typically provide a triggering signal used to stop or start at a given instruction. The triggering signals can be provided by various indicators, such as safety curtains, vision systems, position indicators, etc.
[0005] Code-free robot programming is an enabler for low-volume manufacturing to meet the increasing demand for customized products. Kinesthetic teaching is a code-free robot programming approach that allows non-expert programmers to do robot programming by physically guiding a robot with a collaborative teaching interface through a desired motion with their hands. The performance of a kinesthetic teaching interface depends on the robot’s sensitivity to the user’s applied forces. Poor sensitivity may lead to inaccurate demonstrations and excessive strain on the demonstrator.
[0006] Robot kinesthetic teaching interfaces typically utilize an underlying force controller such as an impedance- or admittance controller. Such controllers require an estimate of the joint torque, either by a sensor or a sensorless approach. Typically, in the case of sensorless approaches, a generalized momentum observer is utilized. However, in many cases, when performing kinesthetic teaching, the robot is typically moving slowly, i.e., at low momentum, and in such situation the uncertainty of the joint torques estimated by the momentum observer is large.
[0007] US 9,434,073 B2 discloses a robot apparatus with a control apparatus employing a joint torque estimation unit capable of estimating joint torque using a dynamic model. The joint torque estimation unit switches between multiple friction sub-models based on the joint’s angular position and velocity.
[0008] It is an object of the present invention to provide a method for estimating torque applied to a robot joint which may provide estimates over a wide range of momentum.Summary of the invention
[0009] The inventors have identified the above-mentioned problems and challenges related to kinesthetic teaching at low momentum, and subsequently made the below-described invention which may provide torque estimations over a wide range of momentum.
[0010] The invention relates to a method for estimating torque applied to a robot j oint of a robotic arm, said method comprising the steps of:providing a robotic arm system comprising a robotic arm and a robot controller, wherein said robotic arm comprises a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, and wherein said robot controller is arranged to execute a plurality of stored robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints;providing angular information relating to an angular joint state of one robot joint of said plurality of robot joints;selecting a robot joint torque estimation function of said plurality of robot joint torque estimation functions on the basis of said angular information and a function selection criterium, wherein said step of selecting a robot joint torque estimation function comprises assigning weights to two or more robot joint torque estimation functions of said plurality of robot joint torque estimation functions;estimating, by said robot controller, a torque applied to said one robot joint using said selected robot joint torque estimation function.
[0011] Thereby is provided an advantageous method for estimating torque applied to a robot joint of a robotic arm. Estimation of torque applied to a robot joint of a robotic arm is useful for control and monitoring purposes of robotic arms, but also useful inthe context of kinesthetic teaching. Kinesthetic teaching, which is an alternative approach to typical teach programming of robotic arms, involves a direct interaction with the robotic arm. The aim in kinesthetic teaching is to demonstrate a movement to a robotic arm, for example by moving the robotic arm while trajectory data are being recorded or causing the robotic arm to exert a force using an attached tool, such as exerting a force on a surface to be polished using a polishing tool attached to the robotic arm. A problem concerning this way of teaching a robotic arm, is that the robotic arm may not be moved if it has been made stiff by a position feedback control of the robotic arm. Accordingly, to perform kinesthetic teaching of a robotic arm it may become necessary to adjust the feedback based on sensing of external forces. In order to detect such forces, specific force / torque sensors may be employed at the tool end of the robotic arm. However, such force / torque sensors can be fragile and costly in addition to reducing the maximum payload of the robotic arm. Moreover, when demonstrating a task by kinesthetic teaching, a user intuitively grabs a robotic arm in other places than an attached robot tool, such as in the body of the robotic arm, for example at robot joints or at links connecting adjacent robot joints of the robotic arm. This is an issue because a robot teaching interface is more responsive when the force / torque sensor at the tool is used for guidance. Hence, to comply with the intuition of the user, it may be necessary to make the robotic arm system more responsive to interaction with the body of the robotic arm. As the method of the present disclosure is estimating a torque applied to a robot joint using a selected robot joint torque estimation function, the method presents a pathway to determining the external forces applied to the robotic arm which does not require use of dedicated torque sensors in the robot joints, and therefore the present method is particularly suitable for carrying out kinesthetic teaching and ensuring that the robotic arm system is more responsive to interactions with the body of the robotic arm. In addition, the method is also advantageous in connection with the control of robot joints, as the method enables control of individual robot joints based on the estimated torque, for example in impedance control and admittance control.
[0012] In addition to enabling an advantageous way of carrying out kinesthetic teaching not necessarily relying on the use of additional force / torque sensors, thepresent method is also advantageous in that it may provide further improvements to torque estimations in general. The current method performs torque estimation using a robot joint torque estimation function selected among a plurality of robot joint torque estimation functions. By allowing the robot controller to execute a selected robot joint torque estimation function of a plurality of robot joint torque estimation functions, it may be possible for the robot controller to always use the most appropriate robot joint torque estimation function as the selected function for any particular movement of the robotic arm. For example, in a low-velocity domain, where a robot joint is rotating slowly, or where the robot joint is even at standstill, some robot joint torque estimation torque functions may be better suited to estimate torque applied to the robot joint than other estimation functions. In fact, it may even be the case that other estimation functions are not even capable of performing meaningful estimations in the low-velocity domain. Beyond the low-velocity domain are a velocity domain (for sake of simplicity referred to as “higher-velocity domain” herein) in which other estimation functions may be well suited to estimate torque applied to the robot joint. It therefore follows that in one velocity domain, some estimation functions may be better suited and in another velocity domain other estimation functions may be better suited. If the robot controller were only arranged to execute a single robot joint torque estimation function it could result in inferior estimations in one velocity domain, and accordingly the robot controller would not be able to provide accurate torque estimations across a wide range of robot joint velocities.
[0013] According to the invention, the step of selecting a robot joint torque estimation function comprises assigning weights to two or more robot joint torque estimation functions among the plurality of estimation functions stored in the robot controller. By assigning weights to two estimation functions is achieved that contributions from the two estimation functions may be used in the estimation of the torque applied to the robot joint. A weight may comprise any number in the range from 0 to 1. If a weight of 1 is assigned to one of the estimation functions, obviously the second estimation has to be assigned the weight of 0 in order for the sum of weights to be 1 (i.e., 100 %). If an estimation function is assigned the weight 1, then the output of that estimation function becomes the estimate of the torque applied to the one robotjoint. In the same way, if an estimation function is assigned the weight 0, then that estimation function is disregarded (or at least the output of that estimation function) is disregarded for the estimation of the torque applied to the one robot joint. The individual weights assigned to the estimation functions may also take on values in between 0 and 1, whereby the estimate of the torque applied to the one robot joint becomes a result of a mixing of outputs from two estimation functions.
[0014] Thereby is achieved a method which is not only capable of performing torque estimations using two estimation functions, but there is also achieved an advantageous method which may perform estimations using contributions from both estimation models, which is particularly useful in situations where a robot joint is transitioning between a low momentum regime (e.g., standstill or very low angular speed) and a higher momentum regime.
[0015] The plurality of torque estimation functions may also comprise more than two torque estimation functions, such as three torque estimation functions, such as four torque estimation functions, such as 5 or more torque estimation functions. Including further torque estimation functions may be advantageous in that more robot joint behaviours may be modelled.
[0016] As the present method proposes use of multiple robot joint torque estimation functions, the method enables a robot controller to utilize one robot joint torque estimation function in the low-velocity domain and another robot joint torque estimation function in the higher-velocity domain. Thereby the robot controller may use the most appropriate robot joint torque estimation function at any time, and thereby achieve an accurate estimation of torque applied to a robot joint over a wide range of joint velocities. Since the method may provide accurate estimation of torque over a wide range of joint velocities, the method is particularly suitable in kinesthetic teaching which often involve a user moving a robotic arm between different positions. Such movements may obviously involve an angular acceleration of robot joints from a standstill, movement of robot joints at non-zero angular velocities, and deceleration of robotic arm joints to a standstill. Over the course of such a movement, a robot joint may be operated both in a low-velocity domain and in a higher-velocity domain.
[0017] A torque applied to a robot joint may be the result of a directly applied twisting force on a robot joint or the result of a force exerted on the robotic arm which indirectly applies a twisting force in a robot joint.
[0018] In the context of the present disclosure, a “robot joint torque estimation function” may be understood as a computer-implemented function capable of providing an estimate of a torque applied to a robot joint on the basis of a model describing the behaviour of a robotic arm or at least of parts of the robotic arm. A robot arm or a part of a robot arm may be described by a model which may take into account the kinematics and / or dynamics of the system being modelled. Such models forming basis of robot joint torque estimation functions may for example include dynamic models and gear models concerning robot joints.
[0019] Examples of robot joint torque estimation functions comprise disturbance observer functions such as generalized momentum observer functions and joint velocity observer functions, torsional compliance functions, as well as functions capable of modelling lost motion. A disturbance observer function is a function which utilizes a dynamic model of a robot joint to estimate the torque applied to the robot joint. An example of such a function is a generalized momentum observer function. An example of a torsional compliance function is a function which may utilize robot joint torsion and joint gear stiffness to estimate torque applied to a robot joint. Such torsion may be provided based on measurements, such as measurements provided using one or more encoders of the joint gear.
[0020] Although a robot joint torque estimation function in itself is capable of estimating torque applied to a robot joint, this does not take away from the fact that a robot joint torque estimation function may be used as part of a robot joint torque estimation model alongside one or more other robot joint torque estimation functions. In fact, a robot joint torque estimation model may be based on two different robot joint torque estimation functions merged into a combined model. Such a model may be referred to as a merged robot joint torque estimation model throughout the present disclosure. The merged robot joint torque estimation model may allow for the assigning of different weights to outputs to the different robot joint torque estimationfunctions of the merged model, whereby the contribution of each robot joint torque estimation function may be changed according to the dynamic circumstances of the robot joint for which torque is to be estimated.
[0021] Throughout the present disclosure, a robot joint torque estimation function may also be abbreviated “estimation function”. Thus, whenever an “estimation function” is mentioned in the present disclosure, the estimation function is understood as a function capable of estimating a torque applied to a robot joint.
[0022] In the context of the present disclosure, a “robot controller” may be understood as any kind of data processing arrangement communicatively associated with a robotic arm and arranged to execute control-, monitoring-, or evaluation operations. The robot controller may be a dedicated data processing unit or may be a distributed data processing system. For example, a robot controller in the present disclosure may refer to an individual controller, such as a joint controller responsible for control of a single robot joint or a dedicated robot controller arranged to execute a robot control program and thereby control operation of the entire robotic arm, or a robot controller may refer to the collection of the dedicated robot controller and the joint controllers of all the robot joints of the robotic arm. The robot controller may comprise one or more data processors and one or more digital memories. The robot controller according to the present disclosure may store the plurality of robot joint torques estimation functions.
[0023] In the context of the present disclosure, “angular information relating to an angular joint state” may be understood as data reflecting an angular state of a robot joint. Such angular information may comprise any of angular position of a robot joint, angular velocity of a robot joint, or angular acceleration of a joint. The angular information relating to an angular joint state may be provided using one or more sensors, such as one or more sensors arranged in the robotic arm, for example arranged in robot joints of the robotic arm. Alternatively, the angular information relating to an angular joint state may be provided using external sensors, such cameras detecting movement of the robotic arm and thereby angular states of individual robot joints.
[0024] In the context of the present disclosure, the step of “selecting a robot joint torque estimation function” may involve a selection of a first robot joint torque estimation function in a situation where no estimation torque has previously been selected, a switching from a first estimation function to a second estimation function, or the assignment of weight to at least two estimation functions forming parts of a robot joint torques estimation model. In the context of the present aspect where selection involves assignment of weights, a selected robot joint torque estimation function may be regarded as a merged robot joint torque estimation function in the sense that the selected robot joint torque estimation function comprises a weighted mix of two or more robot joint torque estimation functions of the plurality of robot joint torque estimation functions. With respect to the assigning of weights to respective estimation functions, it should be noted that a weight of 1 (or 100 %) may be assigned to one estimation function. This implies that the output of the one estimation function is the sole contribution to the estimated torque applied to the robot joint. The one estimation function may also be assigned a weight of 0 (or 0 %) which implied that the estimation function does not contribute to the estimation of the torque applied to the robot joint. More interestingly though are the assignment of weights in between these two endpoints, namely weights between 0 and 1. In such situations, one estimation function contributes partly to the estimation of the torque applied to the robotic joint together with at least one other estimation function also assigned a weight in between 0 and 1. This naturally implies that the step of estimating the torque applied to the robot joint comprises estimation using multiple estimation functions. As will be made clear in the following, these assigned weights may also change depending on dynamic conditions of the robotic arm.
[0025] In the context of the present disclosure, a “function selection criterium” may be understood as a criterium for the selection of a robot joint torque estimation function. Such a function selection criterium may relate to various conditional statements, such as conditional statements involving a comparison of different numerical values. For example, a function selection criterium may be that if a value reflected in the provided angular information is above (or below) a certain threshold value, then a particular estimation function (e.g. merged robot joint torque estimationfunction) is selected. Also, for example, a function selection criterium may be that if a value reflected in the provided angular information is within a particular range of values, then one particular estimation function is selected. The function selection criterium may not be restricted to the comparison of two numerical values, or the comparison of a numerical value and one or more numeric ranges, the function selection criterium may also involve comparisons of a set of values reflected in the provided angular information and a set of threshold values or threshold ranges.
[0026] Since it has been already established that the step of selecting a robot joint torque estimation function may also involve the application of weights to robot joint torque estimation functions, the function selection criterium may also be understood as a criterium for use in determining the application of such weights. Such criterium may involve use of mathematical functions such as logic functions.
[0027] According to an embodiment, said assigning weights to two or more robot joint torque estimation functions comprises assigning nonzero weights to at least two robot joint torque estimation functions.
[0028] The assigning of weights to two or more robot joint torque estimation functions may comprise nonzero weights to at least two robot joint torque estimation functions. Examples of nonzero weights include 0.12, 0.50, 0.61, 0.98, however it should be understood that any positive number greater than zero and up to a maximum of 1 is considered a nonzero weight in the present context. In practice however, when two nonzero weights are assigned to respective estimation functions, none of these weights can be an integer of 1 (one) as that would leave the other weight to have a value of 0 (zero). Accordingly, in the present embodiment, the nonzero weight is any positive number greater than zero and less than one.
[0029] Assigning weights of nonzero values is advantageous in that a mixing / or merging of robot joint torque estimation functions occur. As stated throughout the present disclosure, such mixing may ensure that transitional domains between typical working domains (e.g. momentum domains) may be modelled better than if modelled using a single estimation function.
[0030] According to an embodiment, said plurality of robot joint torque estimation functions comprises a disturbance observer function.
[0031] The plurality of robot joint torque estimation functions that are selectable for the purpose of estimating a torque applied to a robot joint may comprise a disturbance observer function. In loose terms a system is an object in which variables of different kinds interact and produce observable signals. The observable signals of interest are called outputs. The system may also be affected by external stimuli. External stimuli being manipulated by an observer of the system are called inputs whereas external stimuli not manipulated by the observer are called disturbances. A disturbance observer function may be understood as an estimator that estimates such disturbances. In the context of the present disclosure, the system may refer to the robotic arm, the output may refer to a torque applied to a robot joint, the inputs may refer to known quantities of the robot system, such as motor torques generated by joint motors of robot joints, and the disturbance may refer to an externally applied force / torque which may be present if, for example, the robotic arm is being moved by a user during a kinesthetic teaching command, or if the robotic arm is colliding with an object. Examples of disturbance observer functions include generalized momentum observer functions and joint velocity observer functions. Including a disturbance observer function as a robot joint torque estimation function among the plurality of robot joint torques estimation functions is advantageous in that a disturbance observer function may provide good estimates of torque even with the use of a simple dynamic model of a robot joint. Furthermore, a disturbance observer function is advantageous in that it may provide good estimates of torque in situations where a robotic arm is moving, i.e., when the robotic arm has non-zero momentum, which is often the case in many teaching scenarios.
[0032] According to an embodiment, said disturbance observer function is a generalized momentum observer function.
[0033] The disturbance observer function may be a generalized momentum observer function. The generalized momentum observer function is a function which is arranged to estimate torque based on a dynamic model of a robot joint.
[0034] A generalized momentum observer function is advantageous in that it does not need to rely on the robot joint’s acceleration to perform estimations, and such angular information is typically not available from measurements. Throughout the present disclosure, a generalized momentum observer function may simply be referred to as a generalized momentum observer.
[0035] In the following is given a non-limiting example of a generalized momentum observer function which is usable for understanding embodiments of the invention utilizing a generalized momentum observer. It should be noted that the specific generalized momentum observer function of this example is based on a joint gear model assuming that the joint gear of the robot joint is a rigid strain wave gear. The strain wave gear in this example is supported by a cross roller bearing and two support bearings, and a joint motor mounted on the gear shaft. The robot joint is equipped with an encoder measuring the input-side position 0; an encoder measuring the output-side position q; and an ammeter measuring the input current to the joint motor. For simplicity, it is assumed that the joint motor dynamics are known and, thus, that the motor torque Tmcan be obtained. The gear ratio N is given by the following equation:N = zf / (zc- zf)where zfand zcare the number of flexspline teeth and circular spline teeth, respectively. The gear ration N may typically be known from e.g., a datasheet provided by a manufacturer of the gear. The gear is configured with the wave generator as the input, the circular spline as the output, and the flexspline mounted to the joint house, i.e., the acceleration of the flexspline is zero, which gives an effective gear ratio Ñ of:Ñ = N + 1Assuming that the joint gear is rigid, it may be stated that:= θcÑτω= (τc+ τfric) / ÑT“=^r~where τfric∈ ℝ is aggregated friction torque; θω, τω∈ ℝ and θc, τc∈ ℝ is the position and torque at the wave generator- and circular spline side of the joint gear respectively. Furthermore, it is assumed that the gear rotor is cylindrical with its center of mass aligned with the shaft axis, i.e., the gravitational potential energies of the robot joint is independent of the rotor position. The dynamic model of a robot joint may be formulated as:Jq̈ + C(q, q̇)q̇ + τfric(q̇) + g(q) = τmÑ - τl- τdwhere J ∈ ℝ is the robot joint inertia; C ∈ ℝ contains the Coriolis and centrifugal terms of the dynamic model; g ∈ ℝ is the torque resulting from gravity; τm∈ ℝ is the motor torques; τl∈ ℝ is the known load torque at the output flange; and τd∈ ℝ is the unknown disturbance torques.The above dynamic model (or joint dynamic equation) is utilized to design a generalized momentum observer. The generalized momentum of a mechanical system is:p = Jq̇The mechanical system is a rotating mechanical system as q defines an angle of rotation. Comparing the predicted generalized momentum with the measured generalized momentum, a disturbance torque can be estimated. To design the generalized momentum observer, the time-derivative of the generalized momentum is determined:p = Jq̇ +JqInserting the dynamic model in the above equation describing the time-derivative of the generalized momentum, the following is obtained:ṗ = J̇q̇ + τmÑ - τl- τd- C(q, q̇)q̇ - τfric(q̇) - g(q)Since J̇ = C(q, q̇) + CT(q, q̇), the following is obtained:p= τmÑ - τl+ CT(q, q̇)q̇ - τfric(q̇) - g(q) - τdBy substitution τ̄ = τmÑ — τl+ CT(q, q̇)q̇ — τfric(q̇) — g(q), the observer for the generalized momentum may be obtained:ṗ̂ = τ̄ + L(p — p̂)where L is the observer gain which is a tuneable parameter which may be chosen to obtain a desired rate of convergence. Finally, assuming that the disturbance torque τdis the torque applied by the user, the external torque can be estimated as:τ̂e= —L(p — p̂) (eq. A)
[0036] Again, it should be noted that the above example of a generalized momentum observer function is merely a non-limiting example of a generalized momentum observer function, and that the skilled person will readily appreciate that the generalized momentum observer function may take on different forms depending on the joint gear model and dynamic model being used. Generalized momentum observer function in the above has been formulated on the basis of a robot joint comprising a joint gear with an effective gear ratio Ñ = N + 1, however a skilled person will readily appreciate that joint gears having different effective gear ratios may also be used in robot joints of the robotic arm. For example, a strain wave gear may be arranged in such a way that instead of having the flex spline fixed (as presumed in the above derivation of the external torque), it is the circular spline which is fixed and the flex spline defines the output of the gear. In such a situation the effective gear ratio may be different.
[0037] According to an embodiment, said plurality of robot joint torque estimation functions comprises a torsional compliance function.
[0038] The plurality of robot joint torque estimation functions that are selectable for the purpose of estimating a torque applied to a robot joint may comprise a torsional compliance function. A torsional compliance function is a function that is capable of estimating torque and / or force in a system based on determined torsion across compliant components of the system. In the present context, the system comprises a joint gear of a robot joint, whereby the torsion refers to torsion of components of a joint gear. Compared to a disturbance observer function like the generalized momentum observer function, a torsional compliance model is better suited at producing valid torque estimates when the robotic arm has low, or zero, momentum. This is due to the underlying dynamic models of the disturbance observer functions having higher uncertainty at zero velocity due to friction.
[0039] Below is described an example of a torsional compliance function suitable for estimating torque applied to a robot joint comprising a strain wave gear. Accordingly, the described function may be utilized in embodiments of the invention where a robot joint comprises a strain wave gear. The torsional compliance function being described is advantageous in that several of its parameters can be estimated from a datasheet of the strain wave gear. The function assumes that the gear consists of two compliant components: the wave generator and the teeth meshing zone.
[0040] To derive the estimation function, the torsion across the wave generator Δθwand the torsion across the teeth meshing zone Δθmare first defined:Δθm= θc- θciwhere θwiand θciare internal gear positions that cannot be measured, and θwand θcrespectively denotes the positions of the wave generator and the circular spline of the strain wave gear. The internal gear positions θwiand θcimay better be understood by modelling each component of the strain wave gear as a spring. To understand compression or tension of the spring, both attachment points of the spring needs to be known. In the same way to understand torsion in a gear component, the gearcomponents needs to be considered from its outside as well as from its inside where the gear component meshes with other gear components. Taking the wave generator as an example, the angular position θwrepresents a measurable angular position (for example measurable by an encoder connected to the output of the gear), however, due to torsion over the gear, there is a different effective angular position within the gear, which may be represented by θwiwhich is not practically measurable. The joint torsion Δθ, however, can be measured:Δθ = qÑ - θ = θcÑ - θwwhere θ and q are the angular position on the input-side and the output-side of the gear, respectively. There is a kinematic constraint across the gear:0θciÑ = θwi+ θerrorwhere θerroris a kinematic error. By adding and subtracting θwiand θciÑ in the equation for the joint torsion Δθ, the following relation between the joint torsion measurement, the kinematic error, and the deflection of the wave generator and the teeth meshing zone can be obtained:Δθ = (θwi— θw) + (θc- θci)Ñ + (θciÑ — θwi)Δθ = Δθw+ ΔθmÑ + θerrorTo use the above equation for estimating externally applied torque, a relation between the deflection and the torque needs to be provided. The deflection of the teeth meshing zone can be related to the circular spline torque as:Δθm= atan(cmτc) / (cmKm0)The deflection of the wave generator can be related to the motor torque τmas:Δθw= sgn(τm) / (cwKw0) · (1 - e-c_w|τ_m|)where Km0, cm, Kw0, and cware constants that may be estimated on the basis of manufacturer specifications for the joint gear, such as represented by a stiffness and hysteresis curve of the joint gear. The external torque can be estimated as:Te cwhere τlis the load torque, and τcis computed as:τc= tan(ΔθmcmKm0) / cm(eq. B)cm
[0041] According to an embodiment, said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function based on a first model type and a second robot joint torque estimation function based on a second model type, and wherein said first model type and said second model type are different model types.
[0042] The plurality of robot joint torque estimation functions may comprise functions that are based on different model types. By different types of robot joint torque estimation functions may be understood estimation functions that are fundamentally distinct in their modelling approach, physical basis, mathematical structure, or in the underlying model assumptions.
[0043] According to an embodiment, said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function and a second robot joint torque estimation function that do not form part of the same joint torque model.
[0044] The first and second robot joint torque estimation functions may not form part of the same joint torque model, i.e., first and second robot joint torque estimation functions belong to or constitute two different joint torque models. As an example, a dynamic model, as described herein, is a well-known joint torque model, and as described it comprises multiple terms, for example a term relating to friction, a term relating to Coriolis force and centrifugal force, etc. In the context of the present embodiment, each of such terms is considered as forming part of the same joint torquemodel, i.e., the dynamic model in this example. Furthermore, each of the terms of the dynamic model may be modelled differently using different functions, and in the context of the present embodiment, these different functions are also considered as forming part of the same joint torque model, i.e., the dynamic model in this example. The point being that the first robot joint torque estimation function and the second robot joint torque estimation function may be completely unrelated from a model perspective, and sticking with the example of a dynamic model, the first and second robot joint torque estimation functions are not to be regarded as merely different terms within the dynamic model, or different variations of the same term of the dynamic model. In fact, the first and second robot joint torque estimation functions relates to different models that are modelling system behaviours using entirely different modelling principles. As an example, one robot joint torque estimation function may be a torsional compliance function, and another robot joint torque estimation function may be a generalized momentum observer function - as described herein these two functions are modelling joint torque in completely different ways using different modelling principles.
[0045] According to an embodiment, said selected robot joint torque estimation function is a second robot joint torque estimation function, and wherein said step of selecting a robot joint torque estimation function comprises switching from a first robot joint torque estimation function to said second robot joint torque estimation function.
[0046] According to an embodiment, said method comprises a step of estimating, by said robot controller, torque applied to said one robot joint using said first robot joint torque estimation function, and wherein said step is carried out prior to said switching from said first robot joint torque estimation function to said second robot joint torque estimation function.
[0047] According to an embodiment, said method comprises a step of estimating, by said robot controller, torque applied to said one robot joint using said second robot joint torque estimation function, and wherein said step is carried out after saidswitching from said first robot joint torque estimation function to said second robot joint torque estimation function.
[0048] The plurality of robot joint torque estimation functions may comprise a first robot joint torque estimation function and a second robot joint torque estimation function. The first estimation function and the second estimation function may be different estimation functions, for example being different merged estimation functions employing different weightings of a torsional compliance estimation function and a generalized momentum observer estimation function. The robot controller may already be executing a first estimation function prior to the switching to the second estimation function taking place. The robot controller may also be executing the second estimation function after switching to the second estimation function takes place.
[0049] By switching between estimation functions is realized an advantageous embodiment where the torque estimations may dynamically change between different estimation functions thereby making the method robust to estimating torque when changes occur in the movement pattern of the robotic arm and suddenly one estimation function becomes better suited at performing torque estimations than the other estimation function.
[0050] According to an embodiment, said switching from said first robot joint torque estimation function to said second robot joint torque estimation function comprises switching from a first set of weights to a second set of weights, said second set of weights being different from said first set of weights.
[0051] The first robot joint torque estimation function may be a merged estimation function assigning a first weighting to one estimation function, for example a torsional compliance function, and a second weighting to another estimation function, for example a generalized momentum observer function. For example, the weighting of the one estimation function may be 0.16 whereas the weighting of the other estimation function may be 0.84. These weights may represent a first set of weights, however the numbers provided are merely exemplary and any numbers in the range 0-1 may beemployed as weights in the first set of weights. The switch to the second robot joint torque estimation function (also a merged estimation function) may involve change from the first set of weights to another set of weights - continuing the example, for example to weights of 0.43 and 0.57 respectively. In this example, the second robot joint torque estimation also merges the torsional compliance function and the generalised momentum observer function, however it does not necessarily have to be the same set of functions that are merged when going from the first (merged) robot joint torque estimation function to the second (merged) robot joint torque estimation function.
[0052] According to an embodiment, said weights are assigned using a transition function defining said function selection criterium, wherein said transition function is arranged to return a weight on the basis of an input argument provided on the basis of said provided angular information.
[0053] The assigning of weights to individual estimation functions may be performed using a transition function. The transition function may be any mathematical function capable of performing a smooth transition between weights of 0 and 1. The transition function may take an input argument, for example an input argument in the form of a measured value concerning the movement of the one robot joint. In a sense, the transition function defines the selection criterium, as it may determine, on the basis of an input argument based on said provided angular information, a weight to be assigned to an estimation function.
[0054] Examples of transition functions comprise logistic functions such as standard logistic functions (or sigmoid functions) and hyperbolic tangent functions.
[0055] According to an embodiment, said transition function is a sigmoid function. Below is a general sigmoid function:1f(x) =1 + e~x
[0056] According to yet another embodiment, the plurality of estimation functions comprises a torsional compliance function and a generalized momentum observer function, and a selection of estimation function is performed by assigning weights to these two estimation functions. When switching between the outputs of these two estimation functions, it may be necessary to make a smooth transition between the outputs to guarantee a reliable output of the estimation method of the present disclosure. To do so, a convex combination of the outputs of the two estimation functions may be used in the transition:^e.m = W) • ^e.o + (1 “ X<?)) ’ ^e.c (eq. C)where te ois the torque estimated by the generalized momentum observer function, fe cis the torque estimated by the torsional compliance function, fe mis the merging signal (merged output of the two estimation functions), and (q) ∈ [0,1] is the transition function. The transition function is given by:Z(q) =1 + ea0<jl Qtrans) (®^1’ D)where q̇transis an angular velocity of the output side of the joint gear of the one robot joint at which the contributions between the two estimation functions should be equally mixed, and a is a real number determining the steepness of the transition slope. The value of q̇transmay be empirically determined. The combination of the two estimation functions may thus be regarded as a specific IMM (interacting multiple model) algorithm.
[0057] According to an embodiment, said plurality of robot joint torque estimation functions comprises a disturbance observer function and a torsional compliance function, and wherein said selected robot joint torque estimation function is any of said disturbance observer function and said torsional compliance function.
[0058] The inventor has realized that a combination of a torsional compliance function and a disturbance observer function, in particular the generalized momentum observer function, are an advantageous combination of estimation functions, as thesetwo estimation functions supplement each other over the full range of momentum starting from zero momentum (where the torsional compliance function may yield valid torque estimates, and the generalized momentum observer may not), to higher momenta where the generalized momentum observer yields valid torque estimates.
[0059] According to an embodiment, said plurality of robot joint torque estimation functions comprises a disturbance observer function and a torsional compliance function, and wherein said selected robot joint torque estimation function is a weighting of said disturbance observer function and said torsional compliance function
[0060] Thereby is achieved a particularly advantageous embodiment. As already described above, the inventor has realized that the combination of a torsional compliance function and a disturbance observer function, in particular the generalized momentum observer function, is an advantageous combination of estimation functions. In addition, by assigning weights to these two estimation functions may be realized an advantageous method for estimating torque applied to a robot joint of a robotic arm which method is particularly suitable at bridging the gap between these two estimation functions by being able to generate torque estimates in the transition between domains in which the estimation functions yield valid torque estimates, respectively. Thus, the method according to this embodiment may provide valid torque estimations over a full range of angular velocities of the one robot joint.
[0061] According to an embodiment, said step of selecting a robot joint torque estimation function is carried out by said robot controller.
[0062] The step of selecting a robot joint torque estimation function may advantageously be carried out by the robot controller. By the controller performing the step of selecting a robot joint torque estimation function may be achieved an automatic selection of estimation function. Moreover, if the selection involves any switching between estimation functions, it is also understood that the robot controller may perform the switching between estimation functions.
[0063] According to an embodiment, said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints is a sensor output provided by one or more sensors of said robotic arm.
[0064] The angular information may be provided as sensor output from one or more sensors arranged in (or on) the robotic arm. For example, the angular information may be provided by a sensor arranged in vicinity of the one robot joint. Examples of sensors may include encoders, hall effect sensors, potentiometers, or indeed any other kind of sensor capable of measuring angular position of a robot joint.
[0065] According to an embodiment, said sensor output is an encoder output of an encoder of said one robot joint.
[0066] Using encoder output as sensor output is advantageous in that robotic arms typically already utilize encoders for feedback control. Thereby, the need for additional sensors than what is already available in a typical robotic arm system may not be necessary for carrying out the method of the present disclosure.
[0067] According to an embodiment, said encoder output is a first encoder output of a first encoder, and wherein said method comprises providing a second encoder output of a second encoder, said first encoder being an input encoder and said second encoder being an output encoder.
[0068] In the context of the present invention, an “encoder” may be understood as a sensor capable of providing feedback on the position, speed, and direction of a robot joint. The encoder converts the mechanical motion of the robot joint into an electric signal. An encoder may be arranged on an input side of a joint gear to detect motion on the input side of the gear. In this case, the encoder may be referred to as an input encoder. Alternatively, an encoder may be arranged on an output side of a joint gear to detect motion on the output side of the gear. In this case, the encoder may be referred to as an output encoder. A robot joint may comprise any arrangement of encoders, such as only an input encoder, only an output encoder, or both an input encoder and an output encoder. In the context of the present invention, an “encoder output” may be understood as an output provided by an encoder of a robot joint, such as an inputencoder or an output encoder. The encoder output may describe a rotational position, a rotational velocity, a rotational acceleration, or any combination of these. It should be noted that, in the present context, an encoder output which has been pre-processed may still be referred to as an encoder output. For example, an encoder may output a signal describing rotational position over time. That signal may for example be smoothened, subject to time-derivation to provide a derived signal describing rotational velocity and / or rotational acceleration. Irrespective of whether this preprocessing is performed in the encoder or in any other processing device, the output of the pre-processing may still be referred to as an encoder output in the present context.
[0069] According to an embodiment, said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints comprises any of joint position, joint velocity, or joint acceleration.
[0070] The angular information relating to an angular joint state of said one robot joint of said plurality of robot joints may comprise joint positionjoint velocityjoint acceleration, or any combination thereof. Parts of the angular information may be provided on the basis of sensor output, such as encoder output, and parts of the angular information may be derived on the basis of such output. For example, an encode output may be joint position, whereas joint velocity is derived from this output.
[0071] According to an embodiment, said angular information relating to an angular joint state comprises joint velocity.
[0072] The angular information relating to an angular joint state may be a joint velocity, i.e., an angular velocity with which a robot joint rotates. Such an angular velocity may be measured on an output side of a robot joint gear, or an input side of a robot joint gear. For example, in the case that the joint velocity reflects the rotational velocity of the output-side of the robot joint gear, the joint velocity may be measured using a sensor, such as an encoder, on the output side, or the joint velocity of the output side may be determined on the basis of a measurements occurring on the input side ofthe gear, such as measured by a sensor, for example an encoder, arranged on the input side of the robot joint gear.
[0073] According to an embodiment, said joint gear of said one robot joint comprises a strain wave gear.
[0074] A strain wave gear is a type of mechanical gear system comprising a plurality of gear components including an elliptical wave generator, a flexspline, and a circular spline. Complex versions of strain wave gears may have further gear components to either shorten the overall length of the gear system or to increase the gear reduction within a smaller diameter. Irrespective of this, a strain wave gears utilize the same basic principles which is exemplified in the following. The wave generator comprises an elliptical wave generator cam inserted into an outer wave generator bearing, whereby the outer bearing conforms to the shape of the elliptical cam. The flexspline, shaped like a hollow cup, have thin walls and a more rigid bottom resulting in significant flexibility of the walls at the open end of the cup. A number of teeth are arranged radially around the outside of the flexspline. The flexspline is arranged around the wave generator, so that when the wave generator rotates, the flexspline is deformed to the shape of the rotating elliptical cam. The circular spline is a rigid ring with circumferential arranged teeth on its inside. Both the wave generator and the flexspline are arranged inside the circular spline, whereby the teeth of the flexspline and the circular spline meshes. Due to the elliptical deformation of the flexspline, the meshing only occurs in two opposite regions on opposite sides of the flexspline. Due to this arrangement of the gear components, a rotation action of the wave generator (the input rotation) may result in a much slower rotation of the flexspline in the opposite direction (output rotation). This is merely an example of a working principle of a strain wave gear. It should be noted that since a strain wave gear comprises at minimum three gear components, and one of the gear components defines the input rotation and another gear component defines an output rotation, there are multiple different arrangements of strain wave gears. For example, the wave generator may define the input rotation, the circular spline may be fixed, and the flex spline may define the output rotation. In another example, the wave generator is fixed, the circularspline defines the input rotation, and the flex spline defines the output rotation. A skilled reader will readily appreciate all the various arrangements of strain wave gears, defined by which gear components are input, fixed, or output, and will appreciate that every arrangement of the gear components is associated with its own gear ratio. A strain wave gear is advantageous in that it allows for a high reduction ratio in a compact and lightweight package while also providing zero backlash.
[0075] The one robot joint for which torque is estimated may be a strain wave gear. This, however, does not exclude the possibility that other robot joints of the robotic arm may comprise strain wave gears. Indeed, any number of robot joints, or in fact all robot joints, of the robotic arm may comprise strain wave gears.
[0076] According to an embodiment, said method is carried out for a plurality of robot joints of said robotic arm.
[0077] The method may be carried out in respect of a plurality of robot joints of the robotic arm. This is advantageous in that robotic arms are typically performing movements involving multiple robot joints. Accordingly, by estimating torque applied to multiple robot joints is advantageous in for example that complex teaching manoeuvres may be performed using kinesthetic teaching.
[0078] According to an embodiment, said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints is provided as a result of a user of said robotic arm system moving said robotic arm.
[0079] The angular information may be provided as a consequence of a user of the robotic arm system performing a movement of the robotic arm, such as by the used grabbing onto the robotic arm in a robot link connecting two adjacent robot joints and moving the robot link in space. Due to the design of the robotic arm, such a movement causes one or more robot joints of the robotic arm to rotate, and thus an external torque is applied in these one or more robot joints.
[0080] Another aspect of the invention relates to a method of programming a robotic arm system comprising a robotic arm and a robot controller, said robotic armcomprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, said method comprising the steps of::- performing a kinesthetic teaching command by a user of said robotic arm system applying an external force to said robotic arm;- estimating, using said robot controller, a torque applied to one robot joint of said plurality of robot joints using said method for estimating torque applied to a robot joint according to any of the preceding paragraphs;- providing said estimated torque as a programming parameter for programming of a robot control program for said robotic arm system.
[0081] Thereby is provided an advantageous method of programming a robotic arm system using the principles of kinesthetic teaching. As the estimation of torque is performed using the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure, the method of programming is advantageous for at least the same reasons as provided in respect of the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure.
[0082] In the context of the present disclosure, a “kinesthetic teaching command” may be understood as any kind of movement of the robotic arm or any kind of action to be performed by the robotic arm which is demonstratable by a user exerting forces / torques on a robotic arm. Examples of kinesthetic teaching commands may include simple movements of a robotic arm such as movement of a tool flange from one point in space to another point in space, more complicated movements of the robotic arm involving rotations of specific robot joints, and tasks to be performed by the robotic arm such as a polishing task involving the robotic arm exerting a force onto a surface to be polished using a polishing tool attached as end effector to the robotic arm.
[0083] According to an embodiment, said method of programming a robotic arm system comprises estimating torques applied to a plurality of robot joints, and whereinsaid plurality of torques are provided as programming parameters for said programming of said robot control program.
[0084] Estimating multiple torques in respect of multiple robot j oints is advantageous in that more complicated kinesthetic teaching commands may be performed.
[0085] Another aspect of the invention relates to a method of controlling a robotic arm system comprising a robotic arm and a robot controller, said robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, wherein said method comprises the step of generating a motor control signal for a robot joint of said plurality of robot joints based on a torque applied to one robot joint of said plurality of robot joints, wherein said torque is obtained by performing the method for estimating torque applied to a robot joint according to any of the preceding paragraphs.
[0086] Thereby is provided an advantageous method of controlling a robotic arm system. A prerequisite for the carrying out of the method is that an estimation of a torque applied to a robot joint is performed. That estimation is carried out according to the method of estimating a torque applied to a robot joint according to any of the preceding paragraphs. Accordingly, the present method of controlling a robotic arm system is advantageous for at least the same reasons provided in relation to the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure.
[0087] Specifically, by utilizing torque estimations as provided in the present method of controlling a robotic arm, a method suitable for carrying out impedance control and / or admittance control may be realized.
[0088] Another aspect of the invention relates to a robotic arm system comprising:a robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear;a robot controller storing thereon a plurality of robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints, wherein said robot controller is arranged to execute said plurality of stored robot joint torque estimation functions; andone or more sensors arranged to provide angular information relating to an angular joint state of a robot joint;wherein said robot controller is arranged to perform the following:selecting a robot joint torque estimation function of said plurality of robot joint estimation functions on the basis of said angular information and a function selection criterium, wherein said selecting a robot joint torque estimation function comprises assigning weights to two or more robot joint torque estimation functions of said plurality of robot joint torque estimation functions; andestimating a torque applied to said robot joint using said selected robot joint torque estimation function.
[0089] Thereby is provided an advantageous robotic arm system. The robotic arm system is essentially arranged to carry out the method for estimating torque applied to a robot joint of a robotic arm, and accordingly the robotic arm system is advantageous for the same reasons as provided in relation to the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure.
[0090] According to an embodiment, said robotic arm system is arranged to carry out the method according to any of the preceding paragraphs.
[0091] Another aspect of the invention relates to a computer program comprising instructions which, when executed by a robot controller of a robotic arm system, causes the robot controller to carry out the method of any of the paragraphs
[0009] -
[0079] ,
[0092] Thereby is provided an advantageous computer program. The computer program is essentially arranged to carry out the method for estimating torque applied to a robot joint of a robotic arm, and accordingly the computer program is advantageous for the same reasons as provided in relation to the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure.
[0093] Yet another aspect of the invention relates to a computer program comprising instructions which, when executed by a robot controller of a robotic arm system, causes the robot controller to carry out the method of any of the paragraphs
[0080] -
[0084] ,
[0094] Thereby is provided an advantageous computer program. The computer program is essentially arranged to utilize the method for estimating torque applied to a robot joint of a robotic arm, and accordingly the computer program is advantageous for the same reasons as provided in relation to the method for estimating torque applied to a robot joint of a robotic arm according to the present disclosure.
[0095] Yet another aspect of the invention relates to a computer program comprising instructions, which when executed by a robot controller of a robotic arm system, causes the robot controller to carry out the method of controlling a robotic arm system according to any of the paragraphs
[0085] -
[0087] .
[0096] Thus, provisions are provided for a computer program comprising instructions, which when executed by a robot controller of a robotic arm system, causes the robot controller to carry out any of the methods disclosed in any of the paragraphs
[0009] -
[0087] ,
[0097] According to an embodiment, said robotic arm system referred to in paragraphs
[0091] -
[0096] is a robotic arm system according to any of the paragraphs
[0088] -
[0090] ,
[0098] Yet another aspect of the invention relates to a method for estimating torque applied to a robot joint of a robotic arm, said method comprising the steps of::providing a robotic arm system comprising a robotic arm and a robot controller, wherein said robotic arm comprises a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, and wherein said robot controller is arranged to execute a plurality of stored robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints, wherein said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function based on a first model type and a second robot joint torque estimation function based on a second model type, and wherein said first model type and said second model type are different model types;providing angular information relating to an angular joint state of one robot joint of said plurality of robot joints;selecting a robot joint torque estimation function of said plurality of robot joint torque estimation functions on the basis of said angular information and a function selection criterium;estimating, by said robot controller, a torque applied to said one robot joint using said selected robot joint torque estimation function.
[0099] The method may additionally comprise any method steps described in any of the preceding paragraphs
[0009] -
[0079] .
[0100] Yet another aspect of the invention relates to a method of programming a robotic arm system comprising a robotic arm and a robot controller, said robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, said method comprising the steps of::- performing a kinesthetic teaching command by a user of said robotic arm system applying an external force to said robotic arm;- estimating, using said robot controller, a torque applied to one robot joint of said plurality of robot joints using said method for estimating torque applied to a robot joint according to any of the paragraphs
[0098] -
[0099] ;- providing said estimated torque as a programming parameter for programming of a robot control program for said robotic arm system.
[0101] Yet another aspect of the invention relates to a computer program comprising instructions which, when executed by a robot controller of a robotic arm system, causes the robot controller to carry out the method of any of the paragraphs
[0098] -
[0100] ,
[0102] Yet another aspect of the invention relates to robotic arm system comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear;a robot controller storing thereon a plurality of robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints, wherein said robot controller is arranged to execute said plurality of stored robot joint torque estimation functions, wherein said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function based on a first model type and a second robot joint torque estimation function based on a second model type, and wherein said first model type and said second model type are different model types; andone or more sensors arranged to provide angular information relating to an angular joint state of a robot joint;wherein said robot controller is arranged to perform the following:selecting a robot joint torque estimation function of said plurality of robot joint estimation functions on the basis of said angular information and a function selection criterium; andestimating a torque applied to said robot joint using said selected robot joint torque estimation function.
[0103] The robotic arm system may comprise any additional system -related features disclosed throughout any of the paragraphs
[0009] -
[0090] .The drawings
[0104] For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. The drawings illustrate embodiments of the invention and elements of different drawings can be combined within the scope of the invention:fig. 1 illustrates a illustrates a robot system 100 as known in the prior art,fig. 2 illustrates a schematic cross-sectional view of a robot joint;fig. 3 illustrates a structural diagram of a robot arm;fig. 4 illustrates a method of estimating torque applied to a robot joint according to an embodiment of the invention;fig. 5 illustrates a method of estimating torque applied to a robot joint according to another embodiment of the invention;fig. 6 illustrates a way of switching between robot joint torque estimation functions according to an embodiment of the invention;fig. 7 illustrates a way of switching between robot joint torque estimation functions according to another embodiment of the invention;figs. 8a-d illustrate a subset of a validation dataset useful for ascertaining the efficacy of estimation methods according to embodiments of the invention;fig. 9 illustrates RMSE-values for various velocity bins; andfigs. 10a-b illustrate estimates of torque applied to a robot joint according to various torque estimation functions, and the corresponding errors compared to experimentally provided torque estimates.Detailed description
[0105] The present invention is described in view of exemplary embodiments only intended to illustrate the principles and implementation of the present invention. The skilled person will be able to provide several embodiments within the scope of the claims which may not be directly illustrated in the figures or directly described below.
[0106] Fig. 1 illustrates a robotic arm system 100 as known in the prior art. The robot system comprises at least one robotic arm 101 and at least one robot controller 106 configured to control the robotic arm. The robotic arm 101 comprises a plurality of robot joints 102a, 102b, 102c, 102d, 102e, 102f connecting a robot base 103 and a robot tool flange 104. A base joint 102a is configured to rotate the robotic arm around a base axis 105a (illustrated by a dashed dotted line); a shoulder joint 102b is configured to rotate the robotic arm around a shoulder axis 105b (illustrated by a dashed dotted line); an elbow joint 102c is configured to rotate the robotic arm around an elbow axis 105c (illustrated by a dashed dotted line); a first wrist joint 102d is configured to rotate the robotic arm around a first wrist axis 105d (illustrated by a dashed dotted line) and a second wrist joint 102e is configured to rotate the robotic arm around a second wrist axis 105e (illustrated by a dashed dotted line). Robot joint 102f is a robot tool joint comprising the robot tool flange 104, which is rotatable around a tool axis 105f (illustrated by a dashed dotted line). The illustrated robotic arm is thus a six-axis robotic arm with six degrees of freedom with six rotational robot joints, however it is noticed that the present invention can be utilized in robotic arms comprising less or more robot joints and that some of the robot joints may be provided as prismatic robot joint translating two or more robot parts in relation to each other.
[0107] The robot j oints comprise a robot j oint housing and an output flange rotatable or translatable in relation to the robot joint housing and the output flange is connected to a neighbour robot joint either directly or via an arm section as known in the art. The robot joint comprises a joint motor configured to rotate or translate the output flange in relation to the robot joint housing, for instance via a gearing or directly connected to the motor shaft. The robot joint housing can for instance be formed as a joint housing and the joint motor can be arranged inside the joint housing and the output flange canextend out of the joint housing. Additionally, the robot joints can comprise at least one joint sensor providing a sensor signal for instance indicative of at least one of the following parameters: an angular and / or linear position of the output flange, an angular and / or linear position of the motor shaft of the joint motor, a motor current of the joint motor or an external force and / or torque trying to rotate the output flange or motor shaft. For instance, the angular position of the output flange can be indicated by an output encoder such as optical encoders, magnetic encoders which can indicate the angular position of the output flange in relation to the robot joint. Similarly, the angular position of the joint motor shaft can be provided by an input encoder such as optical encoders, magnetic encoders which can indicate the angular position of the motor shaft in relation to the robot joint. It is noted that both output encoders indicating the angular position of the output flange and input encoders indicating the angular position of the motor shaft can be provided, which in embodiments where a gearing have been provided makes it possible to determine a relationship between the input and output side of the gearing.
[0108] The robot system may also comprise an end effector. That is, the pivot of the robotic arm, on which a robot tool may be attached (not illustrated). It is to be understood that the robot tool can be any kind of end effectors such as grippers, vacuum grippers, magnetic grippers, screwing machines, welding equipment, gluing equipment, dispensing systems, painting equipment, visual systems, cameras etc.
[0109] The robot system comprises at least one robot controller 106 configured to control the robotic arm 101. The robot controller is configured to control the motions of the parts of the robotic arm and the robot joints for instance by controlling the motor torque or current provided to the joint motors based on a dynamic model of the robotic arm, the direction of gravity acting and the joint sensor signals. The controller can be provided as an external device as illustrated in fig. 1 or as a device integrated into the robotic arm or as a combination thereof. External devices may also include conveyer systems, welding systems, safety systems, etc. having individual controllers and sensors that may communicate with the robot controller.
[0110] The robot system can be controlled by a robot controller according to a robot program, where the robot program specifies a number of robot tasks and an order of execution of the robot tasks where the robot tasks define a number of actions that the robot system shall perform.
[0111] The robot controller can comprise an interface device 107 enabling a user to control and program the robot system. The interface device can for instance be provided as a teach pendant as known from the field of industrial robots which can communicate with the controller via wired or wireless communication protocols. The interface device can for instanced comprise a display 108 and a number of input devices 109 such as buttons, sliders, touchpads, joysticks, track balls, gesture recognition devices, keyboards, microphones etc. The display may be provided as a touch screen acting both as display and input device. The interface device can also be provided as an external device configured to communicate with the robot controller, for instance in form of smart phones, tablets, PCs, laptops etc.
[0112] Fig. 2 illustrates a schematic cross-sectional view of a robot joint 203. The schematic robot joint 203 can reflect any of the robot joints 102a-102f of the robotic arm 101 of fig. 1. The robot joint 203 comprises a joint motor 209 having a motor axle 225. The motor axle 225 is configured to rotate an output axle 227 via a robot joint gear 229. The output axle 227 rotates around an axis of rotation 211 (illustrated by a dot-dash line) and can be connected to a neighbor part (not shown) of the robot. Consequently, the neighbor part of the robot can rotate in relation to the robot joint 203 around the axis of rotation 211 as illustrated by rotation arrow 213. In the illustrated embodiment the robot joint comprises an output flange 231 connected to the output axle and the output flange can be connected to a neighbor robot joint or an arm section of the robotic arm. However, the output axle can be directly connected to the neighbor part of the robot or by any other way enabling rotation of the neighbor part of the robot by the output axle.
[0113] The joint motor is configured to rotate the motor axle by applying a motor torque to the motor axle as known in the art of motor control, for instance based on a motor control signal 233 indicating the torque, Tcontrol, motor, applied by said motor axle.
[0114] The robot joint gear 229 forms a transmission system configured to transmit the torque provided by the motor axle to the output axle for instance to provide a gear ratio between the motor axle and the output axle. The robot joint gear can for instance be provided as spur gears, planetary gears, bevel gears, worm gears, strain wave gears or other kind of transmission systems.
[0115] The robot joint comprises at least one joint sensor providing a sensor signal indicative of at least the angular position, q, of the output axle and an angular position, 0, of the motor axle. For instance, the angular position of the output axle can be indicated by an output encoder 235, which provide an output encoder signal 236 indicating the angular position of the output axle in relation to the robot joint. Similarly, the angular position of the motor axle can be provided by an input encoder 237 providing an input encoder signal 238 indicating the angular position of the motor axle in relation to the robot joint. The output encoder 235 and the input encoder 237 can be any encoder capable of indicating the angular position, velocity and / or acceleration of respectively the output axle and the motor axle. The output / input encoders can for instance be configured to obtain the position of the respective axle based on the position of an encoder wheel 239 arranged on the respective axle. The encoder wheels can for instance be optical or magnetic encoder wheels as known in the art of rotary encoders. The output encoder indicating the angular position of the output axle and the input encoder indicating the angular position of the motor axle makes it possible to determine a relationship between the input side (motor axle) and the output side (output axle) of the robot joint gear.
[0116] The robot joints may optionally comprise one or more motor torque sensors 241 providing a motor torque signal 242 indicating the torque provided by the motor axle. For instance, the motor torque sensor can be provided as current sensors obtaining the current through the coils of the joint motor whereby the motor torque can be determined as known in the art of motor control. For instance, in connection with a multiphase motor, a plurality of current sensors can be provided in order to obtain the current through each of the phases of the multiphase motor and the motor torque can then be obtained based on the quadrature current obtained from the phasecurrents through a Park Transformation. Alternatively, the motor torque can be obtained using other kind of sensors for instance force-torque sensors, strain gauges etc.
[0117] Fig. 3 illustrates a simplified structural diagram of a robotic arm comprising a plurality of n number of robot joints 303i, 303i+l...,303n. The robotic arm can for instance be embodied like the robotic arm illustrated in fig. 1 with a plurality of interconnected robot joints. It is to be understood that some of the robot joints and robot links between the robot joints have been omitted for sake of simplicity. The robot controller is connected to an interface device comprising a display 119 and a number of input devices 121, as described in connection with fig.l. The robot controller 315 comprises a processor 343, a memory 345 and at least one input and / or output port enabling communication with at least one peripheral device.
[0118] The robot controller is configured to control the joint motors of the robot joints by providing motor control signals to the joint motors. The motor control signals 333i, 333i+1....333n are indicative of the motor torque Tcontrol, motor, i, Tcontrol, motor, i+i, and Tcontrol, motor, n, that each joint motor shall provide by the motor axles. The motor control signals can indicate the desired motor torque, the desired torque provided by the output axle, the currents provided by the motor coils or any other signal from which the motor torque can be obtained. The motor torque signals can be sent to a motor control driver (not shown) configured to drive the motor joint with the motor current resulting in the desired motor torque. The robot controller is configured to determine the motor torque based on a dynamic model of the robotic arm as known in the prior art. The dynamic model makes it possible for the controller to calculate which torque the joint motors shall provide to each of the joint motors to make the robotic arm perform a desired movement and / or be arranged in a static posture. The dynamic model of the robotic arm can be stored in the memory 345.
[0119] The robot joints comprise an output encoder providing output encoder signals 336i, 336i+1..,336n indicating the angular position q,i, q,i+1...q,nof the output axle in relation to the respective robot joint; an input encoder providing an input encoder signal 338i, 338i+1..,338n indicating the angular position of the motor axle 0,i,0,i+i...0,n in relation to the respective robot joint and a motor torque sensor providing a motor torque signal 342i,342i+1..,342n indicating the torque τactually, motor,i, τactually, motor, i+1...τactually, motor, n, provided by the motor axle of the respective robot joint. The controller is configured to receive the output encoder signal 336i, 336i+1..,336n, the input encoder signal 338i, 338i+1..,338n and the motor torque signals 342i,342i+1...342n.
[0120] As disclosed in relation to fig. 1, the robotic arm system 100 may be programmed using an interface device like a teach pendent. However, such a way of programming a robotic arm system requires at least some programming skill. An alternative approach to such programming involves a concept called kinesthetic teaching. In kinesthetic teaching, a user of the robotic arm system may program the robotic arm to perform movements or tasks by directly showing the movement or task to the robotic arm by e.g., gripping onto parts of the robotic arm and moving these around in space. To successfully perform such kinesthetic teaching, it may be necessary to adjust the feedback based on sensing of the external forces applied by the used. The external forces applied by the user may due to the design of the robotic arm be manifested as torques applied to the robot joints 102a-f. Thus, kinesthetic teaching is one reason why it is interesting to detect torques applied to a robot joint of a robotic arm. Other reasons worth mentioning may relate to general feedback-based control of the robotic arm and more complex control schemes such as impedance control and admittance control. In the following are described ways of estimating a torque applied to a robot joint of a robotic arm.
[0121] Fig. 4 illustrates a method for estimating a torque applied to a robot joint according to an embodiment of the present invention. The method is carried out using a robotic arm system, for example robotic arm system 100 shown in fig. 1. It should be noted that although the method may be carried out on a robotic arm system 100 as shown in fig. 1, the method may also be carried out using other robotic arm systems as long as the robotic arm comprises a plurality of robot joints 102a-f, where each robot joint comprises a robot joint motor 209 and a robot joint gear 229. The robot joint motor 209 may also be referred to as “joint motor” in the present disclosure, andthe robot joint gear may also be referred to as “joint gear” in the present disclosure. The method of the present embodiment comprises four method steps S1-S4.
[0122] In a first step SI of the method, a robotic arm system 100 is provided. In this example, the robotic arm system 100 is the robotic arm system seen in fig. 1, however other robotic arm systems may also be provided according to other embodiments. As seen in fig. 1, the robotic arm system 100 comprises a robotic arm 101 having a plurality of robot joints 102a-f, and each of these robot joints comprises a joint motor 209 configured to drive a joint gear 229 as shown in fig. 2. The robotic arm 101 is controlled by a robot controller 106 (see also reference 315 in fig. 3). The robot controller is configured to execute a plurality of robot joint torque estimation functions 401a-b, which are functions stored in the robot controller. In this embodiment, the functions are stored in a memory 345 of the robot controller and executed on the processor 343 of the robot controller, however, in other embodiments, the functions may be stored elsewhere, such as in a joint controller. The robot joint torque estimation functions of the present embodiment comprises a torsional compliance function 401a and a generalized momentum observer function 402a. These robot joint torque estimation functions are based on respective different model types in the sense that the torsional compliance function is based on a modelling of a compliant system whereas the generalized momentum observer function is based on a dynamic model of a robot joint. Thus, the underlying principles or assumptions in the models is different. The torsional compliance function 401a of the present embodiment is a function which is capable of estimating a torque applied to a robot joint using equation B of the present disclosure. The generalized momentum observer function is a function which is capable of estimating a torque applied to a robot joint using equation A of the present disclosure.
[0123] In a second step S2 of the method, angular information 402 relating an angular joint state of a robot joint is provided. The angular information 402 of the present embodiment is information concerning the angular velocity of the output axle of the robot joint gear 229 of the robot joint 102a-f of concern. The angular velocity is provided by calculating the time derivative of the output encoder signal 236. In otherembodiments the angular information 402 may be provided differently. For example, the angular velocity may also be provided by calculating the time derivative of the input encoder signal 238.
[0124] In a third step S3 of the method, a selection of a torque estimation function 401a-b is performed on the basis of the provided angular information 402 and a function selection criterium 403. Specifically, in this embodiment, the angular velocity of the output axle is compared to a velocity threshold. If the angular velocity is below the velocity threshold, then the torsional compliance function 401a is selected as the function for the purpose of estimating torque applied to the robot joint in question. If, on the other hand, the angular velocity reached the velocity threshold, or higher, then it is the generalized momentum observer function 401b which is selected as the function for the purpose of estimating torque applied to the robot joint in question. In this example, the angular velocity is below the velocity threshold, and therefore it is the torsional compliance function 401a which is used as the function for providing the estimated torque.
[0125] In a fourth step S4 of the method, an estimated torque 404 is provided using the torque estimation function selected in the previous step S3. In this example, the estimated torque 404a is provided using the torsional compliance function 401a, however, were the angular velocity to reach, or exceed, the threshold then the other torque estimation function 401b would be selected and the final step S4 of estimating the torque 404b would be performed using torque estimation function 401b.
[0126] Fig. 5 illustrates another method for estimating a torque applied to a robot joint according to a preferred embodiment of the present invention. The method is based on use of the same robot joint torque estimation functions as described in relation to fig. 4. The method of the present embodiment also comprises four method steps Sl- S4.
[0127] In a first step Slof the method, a robotic arm system 100 is provided. The provided robotic arm system is the same robotic arm system as provided in step SI of the method disclosed in relation to fig. 4.
[0128] In a second step S2 of the method, angular information 402 relating to an angular joint state of a robot joint is provided. The angular information 402 provided is the same angular information provided in step S2 of the method as disclosed in relation to fig. 4.
[0129] The third step S3 of the method differs from the method shown in relation to fig. 4. In this step, the selection of a robot joint torque estimation function involves assigning weights to outputs provided by the two robot joint torque estimation functions 401a-b. In the previous example of fig. 4, the selection of the torsional compliance function 401a corresponds to assigning 100 % weight to the output of the torsional compliance function and 0 % weight to the output of the generalized momentum observer function 401b, in as much as the selection of the generalized momentum observer function 401b amounts to assigning 100 % weight to the output of the generalized momentum observer function 401b and 0 % weight to the output of the torsional compliance function 401a. In the method of the present embodiment however, the weights assigned to the two robot joint torque estimation functions 401a-b may differ from 0 % and 100 % and represent any value between 0 % and 100 %.
[0130] The assigning of weights 405 and 406 to the output of the two respective robot joint torque estimation functions 401a-b is performed on the basis of the provided angular information 402 and a function selection criterium 403 which is based on a transition function. The transition function used in the present embodiment is the transition function of equation D of the present disclosure. In the present embodiment, the values of the model parameters a and qtranshave been selected on an empirical basis as those values yielding the lowest RMSE (Root Mean Square Error) value on the estimated torque on a training dataset. It should be noted that values of the model parameters are selected in respect of each robot joint of the robotic arm, and thus a dedicated training dataset is used in respect of each robot joint. As an example of values of model parameters for one particular robot joint are the values of a = 500 and qtrans= 0.001 rad / s. Thus, if the angular information 402 reflects an angular velocity of a robot joint of 0.001 rad / s then the transition function returns a value of 0.5, which indicates that the two robot joint torque estimation functions 401a-b shouldbe assigned equal weights. Obviously, if the angular information 402, which is the input for the transition function, takes on a smaller value than 0.001 rad / s the transition function returns a smaller value than 0.5, or if the angular information 402, takes on a higher value than 0.001 rad / s the transition function returns a greater value than 0.5. The coupling of the transition function to the assignment of weights to the output of the robot joint torque estimation functions is seen in equation C of the present disclosure. The output of the transition function is a value noted, and this value is the weight assigned to the generalized momentum observer function 401b. Consequently, the weight assigned to the torsional compliance function is given by 1 —. Mathematically speaking, the weights 405 and 406 assigned to the two robot joint torque estimation functions 401a-b are the following weights, where W401adenotes the weight 405 assigned to the torsional compliance function 401a, and W401b, denotes the weight 406 assigned to the generalized momentum observer function 401b.W401a= 1 — λ(Q)W401b= λ(Q)
[0131] From the above weighting functions, it is clear that for low values of angular velocity, i.e., a low momentum regime, most weight is assigned to the torsional compliance function 401a, whereas at high angular velocities, i.e., a high momentum regime, most weight is assigned to the generalized momentum observer function 401b.
[0132] In a fourth step S4 of the present method estimation of the torque applied to the robot joint is performed on the basis of the selection, i.e., assignment of weights, carried out in the third step S3. The estimation is performed using equation C of the present disclosure. This estimation involves merging the output 404a of the torsional compliance function 401a with the output 404b of the generalized momentum observer function 401b by assigning the weights determined in the previous step S3. Thus, the weight W401ais applied to the estimated torque 404a estimated by the torsional compliance function 401a, and the weight W401b, is applied to the estimated torque 404b estimated by the generalized momentum observer function 401b, and the twoweighted contributions are added together (see equation C if the present disclosure), to provide the final estimated torque 404c.
[0133] The methods of figs. 4 and 5 are carried out using the robotic arm system 100 as disclosed in relation to fig. 1, however, these methods may also be carried out using different robotic arm systems. Since the methods of figs. 4 and 5 are carried out using the robotic arm system 100 of fig. 1, steps of the methods, including steps S3 and S4, are carried out using any of the robot controllers 106 and 315, however, the methods may also be carried out using different controller arrangements according to other embodiments of the invention.
[0134] The method described in relation to fig. 4, describes an overall method architecture. In many robotic applications, the kinematics of the robotic arm 101 changes over time, and so does the angular information 402 provided by encoders of one or more of the robot joint 102a-f. Therefore, the selected robot joint torque estimation function 401a-b selected in step S3 may change over time between the plurality of robot joint torque estimation functions 401a-b. Or put in other words, over time switching may occur between the torsional compliance function 401a and the generalized momentum observer function, and vice versa.
[0135] Fig. 6 illustrates a way of switching between robot joint torque estimation functions according to an embodiment of the invention. The figure shows graph with time t progressing along the horizontal axis and values 601 of the provided angular information along the vertical axis. Units have been omitted on both of the axes, as the figure is merely illustrative. The values of the provided angular information 601 may be referred to simply as values 601 in the following. The angular information used in the present example is the angular information 402 provided in fig. 4 of the present disclosure. At time t = tO, the value 601 is greater than a threshold value 602 (same threshold value referred to in fig. 4), and the value 601 remains above the threshold until time t = tl. In this timespan, the estimation of torque is performed using the generalized momentum observer function 401b. At time t = tl, the value 601 crosses the threshold value 602 (indicated by the horizontal dotted line). At this point in time, a switching 603 occurs between torque estimation functions, and in the subsequenttime period from t = tl to t = t2, the values 601 remains below the threshold value 602. Accordingly, in the time period from t = tl to t = t2, it is the torsional compliance function 401a which is used to provide torque estimates. As seen in the figure, further switches 603 occur at times t = t3 and t = t4.
[0136] As seen in the figure, switching between torque estimation functions may occur over time and ensure that for any value 601 there is chosen a suitable torque estimation function for carrying out torque estimations.
[0137] A skilled person will readily appreciate that the switches 603 seen in fig. 6 occurs abruptly, and according to a preferred embodiment of the invention as seen in fig. 7, more smooth transitions between torque estimation functions may be performed by continuously assigning weights to output of the two estimation functions and adapt the weights depending on the values 601 of the provided angular information 402.
[0138] Figure 7 shows graph with time t progressing along the horizontal axis and values 601 of the provided angular information along the vertical axis. Units have been omitted on both of the axes, as the figure is merely illustrative. As seen in the figure, a horizontal dotted line is plotted in the graph. This line represents a model parameter 701, which in this example is the model parameter qtransdescribed in relation to equation D of the present disclosure. As this model parameter 701 represents a value 601 at which contributions from both torque estimation functions are mixed equally, it may be understood that at intersections of the value 601 with the model parameter 701, the weights assigned to the robot joint torque estimation functions both take on the values of 0.5. This is exemplified at intersection points at times t = tl and t = t4 where the weight 405 assigned to the torsional compliance function is illustrated as a half-filled bar and where the weight 406 assigned to the generalized momentum observer function is also illustrated as a half-filled bar. However, looking at the time interval between times t = tl and t = t2, where the value 601 is below the value of the model parameter 701, there is a shift in the weighting towards the torsional compliance function, and the weight 405 assigned to the torsional compliance function is much closer to the value of 100 %, whereas the weight 406 assigned to the generalized momentum observer function is much closer to the value of 0 %. On theother hand, looking at the time interval between times t = t2 and t = t3, where the value 601 overshoots the value of the model parameter 701, it is seen that there is an opposite shift in the weighting towards the generalized momentum observer function, and the weight 405 assigned to the torsional compliance function is much closer to the value of 0 %, whereas the weight 406 assigned to the generalized momentum observer function is much closer to the value of 100 %.
[0139] As seen in the figure, the value 601 is a smooth continuous function over time in this example, and accordingly the changes in the respective weights 405 and 406 also changes smoothly with the progression of time.
[0140] In the above discussion concerning figs. 4-7 of the present disclosure, it has been assumed that the two robot joint torque estimation functions that are selectable (selectable by assigning e.g., weights of 0 % or 100 % as demonstrated in figs. 4 and 6, or selectable by assigning weights taking on any percentage as demonstrated in figs.5 and 7) are a torsional compliance function and a generalized momentum function. However, other torque estimation functions may also be used according to other embodiments of the invention. Furthermore, in the embodiments presented in figs. 4- 7, there have been two torque estimation functions available to select between, however, according to other embodiments of the invention, there may be a greater number of torque estimation functions to select between. Even further, in other embodiments of the invention, the assigning of weights may also comprise assigning weights to more than two robot joint torque estimation functions.
[0141] In order to validate the efficacy of the methods for evaluating a torque applied to a robot joint according to the embodiments of figs. 4-7, the methods have been compared against measurements of torque. Effectively, this has been done by providing a test setup comprising an actual robot joint of a robotic arm, a control box with custom-built firmware that enables direct control of the joint motor current and input-side velocity. A pulley system was mounted on the output flange of the robot joint to facilitate application of known external torques to the robot joint. The motor torque Tm, external torque Te, and the raw input- and output-side positions 0 and q, have been sampled by a custom-built data interface to guarantee data alignment, andall measurements have been resampled to 500 Hz. A dataset was recorded with an external torque manually applied to a pulley disc of the attached pulley system while the motor current was commanded to zero. The external torque was applied in the following two ways:1) Motion: The external torque is large and backdrives the joint.2) No motion: The external torque is small and does not backdrive the joint, but a joint deflection is observed.
[0142] A subset of the recorded validation dataset is illustrated in figs. 8a-d. All of figures 8a-d illustrates a graph with time t progressing along the horizontal axis (in units of seconds), and values of specific parameters on the corresponding vertical axis. The values of time illustrated on the horizontal axis of fig. 8d are common values for the horizontal axes of all figures 8a-d. Fig. 8a illustrates the measured external torque Te(in units of Nm) as a function of time (reis referred to as “tau (estimate)” in the figure), fig. 8b illustrates measured torsion A0 (in radians) as a function of time (A0 is referred to as “Delta position” in the figure), fig. 8c illustrates output-side velocity q (in units of radians / second) as a function of time (q is referred to as “joint velocity” in the figure), and fig. 8d illustrates motor torque Tm(in units of Nm) as a function of time (rmis referred to as “tau (motor)” in the figure). The solid line in the figures represents the transition function (q) scaled to the displayed signal amplitude: 0 indicate no motion and a high value indicate motion.
[0143] Next, the efficacy of three torque estimation functions is assessed. The torque estimation functions are the torsional compliance function 401a, the generalized momentum observer function 401b, and a merged torque estimation function 1001, which is merged in the sense that it utilizes both the torsional compliance function 401a and the generalized momentum observer function 401b by assigning appropriate weights to these functions. The values of the model parameters a and qtrans(see equation D of the present disclosure) are selected to give the lowest RMSE (Root Mean Square Error) value on the estimated torque on the training dataset as seen in fig. 8.
[0144] Fig. 9 illustrates the error (RMSE) for different velocity bins. The horizontal axis of the graph in fig. 9 illustrates the various velocity bins (in units of rad / second), and the vertical axis of the graph illustrates the RMSE values. For every velocity bin is shown two columns: the right column represents the torsional compliance function 401a, and the left column represents the generalized momentum observer function 401b. The model parameters are selected as a = 500 and qtrans=0.001. As seen in fig. 9 for velocity bin 0.01, the RMSE-values are identical for both the torsional compliance function 401a and the generalized momentum observer function 401b.
[0145] Figs. lOa-b illustrate graphs representing time (in units of seconds) on the horizontal axis (the values provided on the horizontal axis in fig. 10b are common values for both fig. 10a and 10b). The vertical axis in fig. 10a represents estimated torques in units of Nm (referred to as “tau (estimates)” in the figure), and the vertical axis fig. 10b represents the error, i.e., the difference between estimated torque provided according to embodiments of the present disclosure and estimated torque provided experimentally, also in units of Nm (the error is referred to as “tau (error)” in the figure.
[0146] Fig. 10a shows several torque estimates, where the line represented by reference numeral 401a is the estimated torque applied to a robot joint provided by the torsional compliance function, the line represented by reference numeral 401b is the estimated torque applied to a robot joint provided by the generalized momentum observer function, the line represented by reference numeral 1001 is the estimated torque applied to a robot joint provided by merged torque estimation function, and the line represented by reference numeral 1002 is the estimated torque applied to a robot joint which is experimentally provided. In fig. 10b the error between the torque estimations provided by torque estimation functions 401a, 401b and 1001 and the experimentally provided torque is illustrated. The results of validation of these torque estimation functions are summarized in the below table 1:Function Full Motion No motion401a 2.24 (4.99) 3.24 (10.44) 1.09 (1.19)401b 1.69 (2.85) 1.01 (0.99) 2.03 (4.10)1001 1.03 (1.06) 1.01 (0.98) 1.04 (1.07)1001* 0.87 (0.75) 1.02 (1.05) 0.74 (0.55)Table 1: RMSE-values and (Error variance) of various torque estimation functions.
[0147] Table 1 shows RMSE-value and the corresponding error variance (in parenthesis) for four torque estimation functions: the torsional compliance function 401a, the generalized momentum observer function 401b, the merged torque estimation function 1001 as discussed until now, and a further merged torque estimation 1001. The function 1001 and the function 1001* differs in the values of various parameters of these functions, and these differences are reflected in the value of qtransand in a stiffness parameter in the torsional compliance function which forms part of the merged function. The RMSE-values (and variances) are shown for the case of no motion and motion, as well as the no motion and motion considered together (Full).
[0148] It is seen from table 1, that the RMSE-values for the torsional compliance function are lower than the RMSE-value of the generalized momentum observer function when the system has zero momentum and vice versa. Therefore, an improved full-range RMSE-value is also seen for the merged functions 1001 and 1001*; 39 % and 49 % respectively.
[0149] Thereby, it is concluded that a merging of a torsional compliance function 401a and a generalized momentum observer function 401b, where a weighting is applied to these two functions in order to finally provide a torque estimate, as disclosed in the preceding disclosure, may yield satisfactory torque estimates across a wide range of robot joint velocities.
[0150] Although the preceding disclosure may have referred to only a single robot joints, it should be noted that according to embodiments of the invention, the methodsof estimating a torque applied to a robot joint of a robotic arm may be carried out for a plurality of robot joints, such as all robot joints 102a-f as seen in fig. 1.
[0151] List of reference signs:100 Robotic arm system 101 Robotic arm102a-f Robot joint103 Robot base104 Robot tool flange 105a-f Robot axis106, 315 Robot controller107 Interface device108, 119 Display109, 121 Input devices203 Robot joint209 Robot joint motor 211 Axis of rotation213 Rotation arrow225 Motor axle227 Output axle229 Robot joint gear231 Output flange233 Motor control signal 235 Output encoder236 Output encoder signal 237 Input encoder238 Input encoder signal 239 Encoder wheel241 Torque sensor242 Motor torque signal 303i-n Robotjoints333i-n Motor control signals 336i -n Output encoder signals 338i-n Input encoder signals342i-n Motor torque signals343 Processor of robot controller345 Memory of robot controller401a-b Robot joint torque estimation function402 Angular information relating to an angular joint state 403 Function selection criterium404a-c Estimated torque applied to a robot joint405 Weight assigned to torsional compliance function406 Weight assigned to generalized momentum observer function 601 Values of provided angular information602 Threshold value603 Switching between robot joint torque estimation functions 701 Model parameter qtrans1001 Merged torque estimation function1002 Estimated torque based on experimental measurements t, tl-t4 TimeS1-S4 Method steps
Claims
Claims1. A method for estimating torque applied to a robot joint of a robotic arm, said method comprising the steps of::providing a robotic arm system comprising a robotic arm and a robot controller, wherein said robotic arm comprises a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, and wherein said robot controller is arranged to execute a plurality of stored robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints;providing angular information relating to an angular joint state of one robot joint of said plurality of robot joints;selecting a robot joint torque estimation function of said plurality of robot joint torque estimation functions on the basis of said angular information and a function selection criterium, wherein said step of selecting a robot joint torque estimation function comprises assigning weights to two or more robot joint torque estimation functions of said plurality of robot joint torque estimation functions;estimating, by said robot controller, a torque applied to said one robot joint using said selected robot joint torque estimation function.
2. The method for estimating torque applied to a robot joint of a robotic arm according to claim 1, wherein said assigning weights to two or more robot joint torque estimation functions comprises assigning nonzero weights to at least two robot joint torque estimation functions.
3. The method for estimating torque applied to a robot joint of a robotic arm according to claim 1, wherein said plurality of robot joint torque estimation functions comprises a disturbance observer function.
4. The method for estimating torque applied to a robot joint of a robotic arm according to claim 3, wherein said disturbance observer function is a generalized momentum observer function.
5. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-4, wherein said plurality of robot joint torque estimation functions comprises a torsional compliance function.
6. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-5, wherein said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function based on a first model type and a second robot joint torque estimation function based on a second model type, and wherein said first model type and said second model type are different model types.
7. The method for estimating torque applied to a robot joint of a robot arm according to any of claims 1-6, wherein said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function and a second robot joint torque estimation function that do not form part of the same joint torque model.
8. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-7, wherein said selected robot joint torque estimation function is a second robot joint torque estimation function, and wherein said step of selecting a robot joint torque estimation function comprises switching from a first robot joint torque estimation function to said second robot joint torque estimation function.
9. The method for estimating torque applied to a robot joint of a robotic arm according to claim 8, wherein said method comprises a step of estimating, by said robot controller, torque applied to said one robot joint using said first robot joint torque estimation function, and wherein said step is carried out prior to said switching from said first robot joint torque estimation function to said second robot joint torque estimation function.
10. The method for estimating torque applied to a robot joint of a robotic arm according to claim 8 or 9, wherein said method comprises a step of estimating, by said robotcontroller, torque applied to said one robot joint using said second robot joint torque estimation function, and wherein said step is carried out after said switching from said first robot joint torque estimation function to said second robot joint torque estimation function.
11. The method for estimating torque applied to a robot joint of a robotic arm according to any of the claims 1-10, wherein said weights are assigned using a transition function defining said function selection criterium, wherein said transition function is arranged to return a weight on the basis of an input argument provided on the basis of said provided angular information.
12. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-11, wherein said plurality of robot joint torque estimation functions comprises a disturbance observer function and a torsional compliance function, and wherein said selected robot joint torque estimation function is any of said disturbance observer function and said torsional compliance function.
13. The method for estimating torque applied to a robot j oint of a robotic arm according to any of claims 1-12, wherein said plurality of robot joint torque estimation functions comprises a disturbance observer function and a torsional compliance function, and wherein said selected robot joint torque estimation function is a weighting of said disturbance observer function and said torsional compliance function14. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-13, wherein said step of selecting a robot joint torque estimation function is carried out by said robot controller.
15. The method for estimating torque applied to a robot j oint of a robotic arm according to any of claims 1-14, wherein said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints is a sensor output provided by one or more sensors of said robotic arm.
16. The method for estimating torque applied to a robot joint of a robotic arm according to claim 15, wherein said sensor output is an encoder output of an encoder of said one robot joint.
17. The method for estimating torque applied to a robot joint of a robotic arm according to claim 16, wherein said encoder output is a first encoder output of a first encoder, and wherein said method comprises providing a second encoder output of a second encoder, said first encoder being an input encoder and said second encoder being an output encoder.
18. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-17, wherein said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints comprises any of joint position, joint velocity, or joint acceleration.
19. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-18, wherein said angular information relating to an angular joint state comprises joint velocity.
20. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-19, wherein said joint gear of said one robot joint comprises a strain wave gear.
21. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-20, wherein said method is carried out for a plurality of robot joints of said robotic arm.
22. The method for estimating torque applied to a robot joint of a robotic arm according to any of claims 1-21, wherein said angular information relating to an angular joint state of said one robot joint of said plurality of robot joints is provided as a result of a user of said robotic arm system moving said robotic arm.
23. A method of programming a robotic arm system comprising a robotic arm and a robot controller, said robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, saidjoint motor being configured to drive said joint gear, said method comprising the steps of::- performing a kinesthetic teaching command by a user of said robotic arm system applying an external force to said robotic arm;- estimating, using said robot controller, a torque applied to one robot joint of said plurality of robot joints using said method for estimating torque applied to a robot joint according to any of claims 1-22;- providing said estimated torque as a programming parameter for programming of a robot control program for said robotic arm system.
24. The method of programming a robotic arm system according to claim 23, wherein said method of programming a robotic arm system comprises estimating torques applied to a plurality of robot joints, and wherein said plurality of torques are provided as programming parameters for said programming of said robot control program.
25. A method of controlling a robotic arm system comprising a robotic arm and a robot controller, said robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear, wherein said method comprises the step of generating a motor control signal for a robot joint of said plurality of robot joints based on a torque applied to one robot joint of said plurality of robot joints, wherein said torque is obtained by performing the method for estimating torque applied to a robot joint according to any of claims 1-22.
26. A robotic arm system comprising:a robotic arm comprising a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, said joint motor being configured to drive said joint gear;a robot controller storing thereon a plurality of robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torqueestimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints, wherein said robot controller is arranged to execute said plurality of stored robot joint torque estimation functions; andone or more sensors arranged to provide angular information relating to an angular joint state of a robot joint;wherein said robot controller is arranged to perform the following:selecting a robot joint torque estimation function of said plurality of robot joint estimation functions on the basis of said angular information and a function selection criterium, wherein said selecting a robot joint torque estimation function comprises assigning weights to two or more robot joint torque estimation functions of said plurality of robot joint torque estimation functions; andestimating a torque applied to said robot joint using said selected robot joint torque estimation function.
27. The robotic arm system according to claim 26, wherein said robotic arm system is arranged to carry out the method according to any of the claims 1-25.
28. A computer program comprising instructions which, when executed by a robot controller of a robotic arm system, causes the robot controller to carry out the method of any of the claims 1-25.
29. The computer program according to claim 28, wherein said robotic arm system is a robotic arm system according to claim 26 or 27.
30. A method for estimating torque applied to a robot joint of a robotic arm, said method comprising the steps of::providing a robotic arm system comprising a robotic arm and a robot controller, wherein said robotic arm comprises a plurality of robot joints, each robot joint of said plurality of robot joints comprising a joint motor and a joint gear, saidjoint motor being configured to drive said joint gear, and wherein said robot controller is arranged to execute a plurality of stored robot joint torque estimation functions, each robot joint torque estimation function of said plurality of robot joint torque estimation functions being arranged to estimate a torque applied to a robot joint of said plurality of robot joints, wherein said plurality of robot joint torque estimation functions comprises a first robot joint torque estimation function based on a first model type and a second robot joint torque estimation function based on a second model type, and wherein said first model type and said second model type are different model types;providing angular information relating to an angular joint state of one robot joint of said plurality of robot joints;selecting a robot joint torque estimation function of said plurality of robot joint torque estimation functions on the basis of said angular information and a function selection criterium;estimating, by said robot controller, a torque applied to said one robot joint using said selected robot joint torque estimation function.