Next Article in Journal
Soft Coiled Pneumatic Actuator with Integrated Length-Sensing Function for Feedback Control
Next Article in Special Issue
Cartesian Stiffness Shaping of Compliant Robots—Incremental Learning and Optimization Based on Sequential Quadratic Programming
Previous Article in Journal
Parameter Identification of Permanent Magnet Synchronous Motor with Dynamic Forgetting Factor Based on H∞ Filtering Algorithm
Previous Article in Special Issue
Hybrid Visual Servo Control of a Robotic Manipulator for Cherry Tomato Harvesting
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:

An Accurate Dynamic Model Identification Method of an Industrial Robot Based on Double-Encoder Compensation

School of Mechanical Engineering, Shanghai Jiao Tong University, Shanghai 200240, China
College of Information and Computer Engineering, Northeast Forestry University, Harbin 150036, China
Mechanical Engineering and Automation, Harbin Institute of Technology, Shenzhen 518055, China
College of Intelligent Science and Technology, National University of Defense Technology, Changsha 410073, China
Author to whom correspondence should be addressed.
Actuators 2023, 12(12), 454;
Submission received: 9 November 2023 / Revised: 27 November 2023 / Accepted: 6 December 2023 / Published: 7 December 2023
(This article belongs to the Special Issue Actuators in Robotic Control: Volume II)


Aiming at the challenges to accurately simulate complex friction models, link dynamics, and part uncertainty for high-precision robot-based manufacturing considering mechanical deformation and resonance, this study proposes a high-precision dynamic identification method with a double encoder. Considering the influence of the dynamic model of the manipulator on its control accuracy, a three-iterative global parameter identification method based on the least square method and GMM (Gaussian Mixture Model) under the optimized excitation trajectory is proposed. Firstly, a bidirectional friction model is constructed to avoid using residual torque to reduce the identification accuracy. Secondly, the condition number of the block regression matrix is used as the optimization objective. Finally, the joint torque is theoretically identified with the weighted least squares method. A nonlinear model distinguishing between high and low speeds was established to fit the nonlinear friction of the robot. By converting the position and velocity of the motor-side encoder to the linkage side using the deceleration ratio, the deformation quantity could be calculated based on the discrepancy between theoretical and actual values. The GMM algorithm is used to compensate the uncertainty torque that was caused by model inaccuracy. The effectiveness of the proposed method is verified by a simulation and experiment on a 6-DoF industrial robot. Results prove that the proposed method can enhance the online torque estimation performance by up to 20%.

1. Introduction

Traditional industrial robots are widely used in manufacturing due to their high speed and precision, such as in welding, spraying, polishing, and cutting, where stable processing trajectories are required. The performance of these tasks highly depends on accurate dynamic models, which must account for factors such as friction and unknown disturbance torques. Although the robot dynamics model can be obtained from CAD models, the parameters obtained through this method may not accurately reflect the actual dynamic parameters. Consequently, researchers have proposed various methods to decompose and analyze the robot dynamics model to improve its accuracy. Vandanjon [1] used a method that independently considers each part of the robot dynamics, identifies the inertial forces, centrifugal forces, inertial integrals, and gravity separately, and designs various exciting trajectories. While this method can enhance the model’s accuracy, excessive subdivisions will augment the model’s uncertainty and diminish the accuracy of the identification outcomes. Currently, the widely used method for robot model identification is the global identification method [2], which can comprehensively incorporate various factors in the dynamic modeling process, and collect and process data for all joints, before applying identification algorithms to calculate all dynamic parameters simultaneously. Due to its easy implementation, this has become a commonly practiced approach to robot dynamics modeling. The mainstream process is to determine the minimum identifiable parameter set and regression matrix [3]; on this basis, design the optimal exciting trajectory to fully stimulate the dynamic characteristics of the robot [4]. Solving for kinetic parameters, design the parameter identification algorithm through the data collected along the exciting trajectory. Designing the optimal exciting trajectory [5] and parameter identification algorithm is a current research hotspot. In the case of industrial robots lacking joint torque sensors, conventional identification methods [6,7,8] typically leverage proprioceptive signals, such as kinematic states and motor current. Direct access to the torques applied to the robot links is unavailable, as these values are affected by errors in friction modeling and the limited precision of torque constants. Consequently, the identification results are susceptible to disturbances. Identification methods based on current measurements depend on precise prior knowledge of joint drive gains [9]. Unfortunately, the calibration scenarios for drive gains provided by manufacturers often differ from the identification scenarios [10].
Because of the high-load joint rigidity of industrial robots, the theoretical modeling of dynamics is sufficient to approximate the real joint driving torque due to the separation design of driving and joints. However, small industrial manipulators have lightweight structures and components, such as harmonic reducers, double encoders, and torque sensors, resulting in a highly integrated servo drive and motor in a single joint. This structure reduces the rigidity of the joint. Thus, theoretical dynamics modeling can only establish the link dynamics on the load side, and the motor-side dynamics need to compensate for the flexible error. In order to address the challenges posed by flexible systems, robots often rely on torque sensors, as exemplified in study [11]. The introduction of joint torque sensors transforms the system into a passive control configuration, ensuring system stability. However, traditional industrial robots typically lack joint torque sensors, necessitating the use of flexible deformation from dual encoders for approximate torque compensation. The primary application scenario for this approach is dynamic identification, aiming to acquire more accurate models. This, in turn, facilitates applications such as drag teaching or collision detection. Spong [12] introduced a modeling approach for the flexible joints of the manipulator, equivalent to a spring model with only stiffness and damping between the motor end and the connecting-rod load end. However, because of the large stiffness of the operating arm, unless correspondingly large external forces are acting on the connecting rod, the error of the double encoder cannot fully capture the physical characteristics of the flexible joint. Therefore, researchers have proposed methods to improve the model, such as static parameter identification and neural network model fitting [13].
Linear identification methods typically model frictional forces as Coulomb and linear viscous forces. Coulomb and linear viscous forces are directly identified through the method discussed in [14]. However, some studies demonstrate a nonlinear relationship between the viscous frictional force and joint velocity [15,16]. Several identification methods have been widely used, including the least squares method [17], the weighted least squares method [18], and the maximum likelihood method [19]. The least squares method is a classic algorithm used in a linear regression analysis that is easy to understand and implement; however, it is vulnerable to noise and has poor robustness. For this reason, many scholars at home and abroad have conducted further research [20,21,22,23,24]. Recently, some researchers have utilized neural networks to establish dynamic models, but the results are unreliable due to the networks’ high sensitivity to noise and tendency to overfit. Thus, despite advancements in dynamic modeling, improving dynamic model accuracy is still an active area of research [25].
The motor and the load are not directly coupled but are essentially an elastic system. This paper presents an algorithm for the identification and compensation of dynamic model parameters for industrial robots, based on compensating for information with double encoders. This approach is exemplified using a 6-DOF industrial robot, where the minimum parameter set is derived by constructing the dynamic model and employing QR decomposition. The optimization parameters for the incentive trajectory are determined using a trajectory optimization algorithm, resulting in the acquisition of the optimized incentive trajectory. Subsequently, upon obtaining the trajectory, joint torque is identified using the iterative weighted least squares method. The nonlinear friction force of the manipulator is modeled by constructing a nonlinear model that distinguishes between high and low speeds. The WLS (weighted least squares) method is used for the identification of the dynamic parameters. Finally, the information of the nonlinear residue is fitted using a double encoder to complete the identification and compensation of dynamic parameters of the industrial manipulator. To address uncertainties in torque components that cannot be precisely modeled, the GMM (Gaussian Mixture Model) algorithm is applied for compensation. This improves the accuracy and robustness of the identification results. The entire dynamic identification process in this study is conducted in an offline mode, with only torque estimation being performed in real-time online. Figure 1 illustrates the functional flowchart of the offline identification method.
The rest of the article is arranged as follows: Section 2 introduces the linearization of the dynamic model and the identification of friction. Section 3 proposes the block regression matrix, which is used as the index to optimize the trajectory parameters for obtaining a relatively ideal exciting trajectory. Section 4 provides the identification method of the dynamic parameters based on WLS. Section 5 proposes the GMM algorithm, which is used to compensate for the uncertain torque component that cannot be accurately modeled. The simulation and experimental results are demonstrated in Section 6. At last, Section 7 concludes the article.

2. Linearization of Dynamic Model and Identification of Friction

The expression of the joint torques of a serial robot can be obtained using the Newton–Euler iterative method base on MDH [26] and can be represented as follows: “∈”.
τ m = M ( θ )   θ ¨ + C ( θ ,   θ ˙ ) + G ( θ ) + τ f + J ( θ ) T F e x t + τ u
In this equation, M ( θ ) R n × n and n represent the positive definite symmetric inertia matrix and the number of joints, respectively. C ( θ , θ ˙ ) R n × n and G ( θ ) R n × 1 represent the Coriolis and gravitational torques, respectively. θ , θ ˙ , θ ¨ are displacement, velocity, and acceleration vectors of the joint’s n × 1 vector space. τ m R n × 1 and τ f R n × 1 represent the driving torque and frictional torque of the joint in the dynamic model, respectively. F ext and J ( θ ) represent the external force acting on the robot endpoint and jacobian matrix, and τ u R n × 1 represents the unmodeled and disturbance torques of the joint. Since the external force, unmodeled part, and disturbance torque are independent of the parameters of the robot dynamic model itself, the dynamic model becomes a link dynamic model. Therefore, in this paper, Equation (1) is linearized [3] to obtain the link dynamic model. The link dynamic model is built solely on the characteristics of the link, without accounting for joint influences. On the other hand, the joint dynamic model incorporates the effects of joint parameters. The torque in this part will be studied in the following text. After rearranging the link dynamic parameters of the robot to be identified and removing and integrating the columns that do not affect the identification process, the basic dynamic parameters, namely the minimum parameters, will be obtained.
τ l i n k = [ Γ l i n k Γ f ] [ Φ l i n k Φ f ] = Γ Φ
The dynamic model becomes a dynamic model of a link without a motor. Where τ l i n k R n × 1 is link torque, Γ l i n k R n × r a n k ( Γ l i n k ) is link parameters, Φ l i n k R r a n k ( Γ l i n k ) × 1 is the link regression matrix, Γ f R n × 8 is friction parameters, and Φ f R 8 × 1 is the friction regression matrix. Γ is solely dependent on the mechanical arm’s motion state and independent of its structural parameters. The regression matrix can be obtained using the kinematic formula. Φ represents the minimum set of expressions corresponding to the dynamic structural parameters. Bidirectional torque detection is an accurate method to obtain frictional force data. It can be derived that the Coriolis/centrifugal matrix satisfies
C ( θ , θ ˙ ) (   θ ˙ ) = C ( θ ,   θ ˙ )   θ ˙
Given that a majority of industrial robots lack joint torque sensors, directly acquiring joint friction torque becomes impractical. Nevertheless, it is feasible to deduce the joint friction torque by examining the characteristics and design of the robot’s configuration and kinematic state. Industrial robots typically feature encoders on each joint’s motors, enabling the direct reading of joint velocity. Subsequently, [27] introduces a bidirectional friction estimation method for extracting joint friction torque from the overall joint torques. For simplicity, it can be assumed that the friction torque is only related to the joint velocity:
τ f (   θ ˙ ) = τ f (   θ ˙ )
Assume two industrial robot configurations θ 1 , θ 2 meet the following conditions:
θ 1 = θ 2 = q   θ ˙ 1 =   θ ˙ 2 =   q ˙   θ ¨ 1 =   θ ¨ 2 =   q ¨
Substituting Equation (5) into Equation (3), it can be obtained that
τ 1 = M ( q )   q ¨ + C ( q ,   q ˙ )   q ˙ + G ( q ) + τ e s t f (   θ ˙ ) τ 2 = M ( q ) (   q ¨ ) + C ( q ,   q ˙ ) (   q ˙ ) + G ( q ) + τ e s t f (   θ ˙ )
Substituting Equation (5) into Equation (6), it can be found that
τ 1 τ 2 = 2 M ( q )   q ¨ + 2 τ e s t f (   q ˙ )
According to Equation (7), when the robot moves slowly, friction is typically obtained under low-speed and constant-speed conditions, where joint accelerations are exceedingly small and can be approximated as negligible. This method provides a straightforward and easily implementable approach for acquiring frictional force data in robotic arm systems. The inertia force/torque M ( q ) can be ignored, and it can be obtained that
τ e s t f (   θ ˙ ) = τ 1 τ 2 2
A common approach for dynamic model identification involves assuming the friction model as Coulomb friction plus viscous friction linear to the joint velocity; this is often inadequate in practical scenarios. Recognizing the nonlinearity of friction, several advanced friction models have been proposed in relevant literature [28,29]. However, these models are typically isolated from mass-inertial parameters and identified independently using nonlinear optimization methods. In recent developments, a unified approach has been introduced for dynamic model identification that incorporates nonlinear friction. This paper adopts the following nonlinear friction model for each joint:
τ f i = { τ f c i |   θ ˙ i | < λ τ f c i + τ f v i |   θ ˙ i | λ
τ f c i = { k c i 1 tanh (   θ ˙ i e p s ) ( tanh (   θ ˙ i e p s ) + 1 ) 2   θ ˙ i 0 k c i 2 tanh (   θ ˙ i e p s ) ( 1 tanh (   θ ˙ i e p s ) ) 2   θ ˙ i < 0
τ f v i = { k v i 1 tanh (   θ ˙ i e p s ) + 1 2   θ ˙ i + k v i 1 2   θ ˙ i 2 + k v i 1 3   θ ˙ i 3   θ ˙ i 0 k v i 2 1 tanh (   θ ˙ i e p s ) 2   θ ˙ i + k v i 2 2   θ ˙ i 2 + k v i 2 3   θ ˙ i 3   θ ˙ i < 0
Coulomb and viscous friction models are adopted in this paper, where kci1 and kvi1 represent the friction coefficients during forward motion, and kci2 and kvi2 represent the friction coefficients during backward motion. However, accurately defining static and low-speed friction poses a significant challenge. A suitable threshold λ is set with Equation (9) to make the joint’s low-speed and high-speed movements smoother, and friction model accuracy is ensured by considering the joint velocity squared and velocity cubed in the calculations. tanh(·) is the hyperbolic tangent function, and eps is the transition accuracy typically set to 0.0001. This method overcomes the discontinuity problem of the sign(·) function near the switching point at 0 and avoids the estimation errors in friction force caused by identification errors or switching the direction of movement. τ e s t f i is the friction torque of the i-th joint determined through measuring torque and inner-layer identification, while τ f i is the estimated friction torque of the i-th joint obtained through the friction model.
arg ( λ , k c i 1 , k c i 2 , k v i 1 , k v i 2 ) min ( i = 1 6 τ e s t f i τ f i )

3. Optimization Index Based on the Condition Number of Block Regression Matrix

Matrix calculation sensitivity to errors can be reflected by a matrix’s condition number. A smaller condition number of the regression matrix, viewed physically by a robot, results in an exciting trajectory, allowing higher velocity and acceleration over the entire workspace, thereby collecting more information for parameter identification. The dynamic model used in this paper suggests that a smaller condition number of the regression matrix results in higher joint acceleration, stimulating the robot’s inertia tensor matrix. Higher joint velocities better stimulate the centrifugal force and Coriolis force terms. Significant joint position changes create larger torque differences, thus better stimulating the gravitational force term. Thus, the condition number cond ( Γ ) can be used as an index for the regression matrix’s influence on inertial parameter identification. The condition number of the regression matrix Γ generally serves as the optimization index for the exciting trajectory. However, research indicates that optimizing only the condition number of the regression matrix fails to meet accurate dynamic model requirements. Therefore, optimizing the condition number of submatrices is also necessary during the optimization process to constrain the internal structure of the regression matrix Γ . The text introduces the weight matrix based on the least squares method and converts the optimization objective to a weighted regression matrix Γ * following [24].
cond ( Γ * ) = cond ( Ω 1 2 Γ ) cond ( Ω 1 2 ) cond ( Γ )
The constant matrix in the formula is denoted by Ω . The matrix is calculated by measuring noise throughout this paper. The matrix is utilized to optimize the condition number of Γ * throughout the paper. It serves as a prerequisite for obtaining a more accurate dynamic model. The observation matrix of frictional force contains many zeros since the exciting trajectory of each joint is independent, which could increase the condition number. Therefore, this paper uses an observation matrix for exciting trajectory that does not have the frictional force part. Optimizing the condition number of Γ * alone as the optimization objective does not achieve the desired results, as per experimental observations. We also optimize the condition number of the submatrix of Γ * to constrain its internal structure. The Γ * matrix is decomposed into sub-regression matrices including the acceleration term Γ α * and velocity term Γ β * and joint position term Γ γ * . The impact of each sub-regression matrix on the total regression matrix varies. As such, assigning varying weights to different sub-regression matrices is necessary. Ω α , ω β , and ω γ , respectively, represent the respective weights of sub-regression matrices. In order to optimize the internal structure more effectively, parts with larger condition numbers are given heavier weights and those with smaller condition numbers are given lighter weights. The weight values are computed by finding the variance of the corresponding columns of the regression matrix. The values show that indicators with greater differences in variation are assigned larger weights, while those with smaller differences are given smaller weights. The larger the weight, the more significant the respective target. To summarize, the optimization objective of the paper is
co Γ = ( ω α + ω β + ω γ ) cond ( Γ * ) + ω α cond ( Γ α ) + ω β cond ( Γ β ) + ω γ cond ( Γ γ )
This paper uses a limited Fourier series trajectory as the identification exciting trajectory.
{ θ i ( t ) = l = 1 N a l , i w f l sin ( w f l t ) b l , i w f l cos ( w f l t ) + θ i 0   θ ˙ i ( t ) = l = 1 N a l , i cos ( w f l t ) + b l , i sin ( w f l t )   θ ¨ i ( t ) = w f l = 1 N a l , i l sin ( w f l t ) + b l , i l cos ( w f l t )
where N is the number of terms in the Fourier series trajectory, the sampling frequency of the trajectory is ff, and the fundamental frequency is wf = 2 π ff; al,i and bl,i are the amplitudes of the trigonometric functions. Considering joint limits, velocity, and acceleration limits, the following objectives and constraints are given, where ts and te are the start and end times of the sampling time:
    min c o Γ subject   to :   { | θ i ( t ) | θ i , max | θ ˙ i ( t ) | θ ˙ i , max | θ ¨ i ( t ) | θ ¨ i , max θ i ( t s ) = θ i ( t e ) = 0 θ ˙ i ( t s ) = θ ˙ i ( t e ) = 0 θ ¨ i ( t s ) = θ ¨ i ( t e ) = 0
To perform optimization and solve the problem, it is necessary to process Equation (16) above and convert it to
{ | θ i ( t ) | = | l = 1 N a l , i ω f l sin ( ω f l t ) b l , i ω f l cos ( ω f l t ) + θ i 0 | l = 1 N 1 ω f l a l , i 2 + b l , i 2 + | θ i 0 | θ i , max | θ ˙ i ( t ) | = | l = 1 N a l , i cos ( ω f l t ) + b l , i sin ( ω f l t ) | l = 1 N a l , i 2 + b l , i 2 θ ˙ i , max | θ ¨ i ( t ) | = | ω f l = 1 N b l , i cos ( ω f l t ) a l , i l sin ( ω f l t ) | ω f l = 1 N l a l , i 2 + b l , i 2 θ ¨ i , max
{ θ i ( t s ) = θ i ( t e ) = l = 1 N b l ω f l θ i 0 = 0 θ ˙ i ( t s ) = θ ˙ i ( t e ) = l = 1 N a l = 0 θ ¨ i ( t s ) = θ ¨ i ( t e ) = l = 1 N ω f l b l = 0
At the beginning of each iteration, a starting point is randomly selected. During optimization, if the objective function decreases in the current process, the present outcome will be upheld, and the regression matrix will be amplified. Otherwise, a new starting point will be randomly selected, and the regression matrix will remain unchanged. If the objective function value does not decrease after k attempts, the global optimal solution is considered to have been reached, and the search process stops.

4. Dynamic Model Identification of Link Based on WLS

Currently, we have identified the required exciting trajectory coefficients and performed dynamic identification to obtain parameter sets. We must note that the collected torque belongs to the joint driving torque, and we need to identify the link kinematics after excluding the friction torque. Consequently, Equation (2) can be modified to
τ m = Γ l i n k Φ l i n k + δ
where δ is the torque error and noise error. The cause of these errors is that the collected joint torque does not possess a complete equal relationship with the identified link kinematics. Torque is collected from each joint at different sampling time units, where it is concatenated and combined into the final collected torque set. Furthermore, the torque error collected from each joint has different standard deviation. To mitigate the impact of collected data errors on the accuracy of the identification, we followed the approaches presented in reference [24]. Consequently, errors are defined with the following attributes:
E ( δ T δ ) = ο δ 2 e
E(·) represents mathematical expectation, and ο δ 2 represents the variance of δ . Assuming that each joint’s noise error is independent of each other, e is a unit diagonal matrix. ο δ 2 e represents the variance of the noise error of the driving torque of the six joints. Directly using the traditional standard LS (least squares) method for identification can only minimize the 2-norm of the error between the collected torque and the estimated torque of the linear part, without minimizing the 2-norm error δ . This leads to suboptimal optimization of the minimum parameter set variance during identification. To overcome this limitation, we recommend using the WLS (weighted least square) method. First, calculate the torque error, define the collected torque as τ s a m p l e , the data number is 6 m, and estimate the torque through LS as τ L S .
E = τ s a m p l e Γ s a m p l e Φ L S
{ Σ = [ Σ 11 Σ 22 Σ n n ] Σ i i = var ( E i )
Φ W L S = ( Γ T Σ 6 m 1 Γ ) 1 Γ T Σ 6 m 1 τ
E R 6 m x 1 , ε i E , var(·) represents the calculation of variance, and 6 m - 1 R 6 m × 6 m is a block diagonal matrix consisting of m identical blocks of . There is no unique method to determine the weighting coefficients. Due to the assumption that the joint noise is mutually independent, σ δ 2 e can be a diagonal matrix. However, in reality, the joint noise is correlated. Hence, the weight can be calculated by computing the non-diagonal covariance matrix.
Ω = E E T m r a n k ( Γ l i n k m i n )
Φ W L S = ( Γ T Ω 6 m 1 Γ ) 1 Γ T Ω 6 m 1 τ

5. Nonlinear Joint Dynamics Compensation

This study proposes a three-stage iterative identification method for dynamic model identification. In the first stage, theoretical identification is conducted for the link dynamics. The second stage focuses on identifying friction. The third stage involves compensating for uncertain components based on flexible error. The sections and functional modules in the paper are as shown in Figure 2. The three-ring identification algorithm proposed in this paper is included in it.
In the absence of considering factors such as joint vibration and flexibility, the servo motor and the load end are regarded as rigid bodies to improve the basic identification accuracy as much as possible. However, in actual situations, the motor and the load end are not directly coupled, but rather form an elastic system, and the joint bearings and outer frame are not completely rigid. Under the action of motor drive torque, mechanical deformation occurs. Mechanical resonance has a certain effect on the dynamic performance of the system, mainly due to harmonic reducers, and the joint physical model is shown in Figure 3. Therefore, for joint systems that have requirements for accuracy and speed, elastic deformation cannot be ignored. This principle can be used to estimate the torque component during mechanical resonance in reverse. Another significant torque component can be estimated directly through current, while compensating for frictional forces, which will result in a better effect.
The servo drive section is located on the right; the link end is located on the left, with the harmonic reducer transmission device being in the center. The servo motor drives the entire executing mechanism, and its position is measured with an incremental encoder. The position of the link end is measured with an absolute value encoder. The position and velocity of the motor-side encoder are converted to the link side through the reduction ratio. Thus, the theoretical and actual errors can be calculated to determine the deformation. The joint module is driven by a coupled drive, which results in the servo system becoming a highly coupled and multi-inertia system. For ease of study, the system can be simplified into a flexible connected servo system with two inertias. τ w represents the harmonic resonance torque component caused by the harmonic reducer, and τ m is generally directly obtained from the motor without taking this into account. Jm and Jl refer to the rotational inertia of the motor and the link, respectively. Kw is the transmission coupling stiffness coefficient while Dw is the transmission shaft damping coefficient. θ m and θ l are, respectively, the theoretical angle calculated to the link side and the actual angle of the link side. Due to the challenging friction modeling and accurate modeling of the harmonic link and torque transmission error, errors occur. Also, the acceleration is measured inaccurately prone to fluctuations, and filtering causes errors. Therefore, the torque generated by Jm θ ¨ m is not taken into account, and the following text will incorporate it into the error. Based on the traditional dynamic model, this paper calculates the difference between the model torque and the actual torque, and analyzes it using an error model and data model analysis. To utilize dynamic compensation, the torque τ w is no longer used, and the torque τ u is defined.
τ m = τ f + τ u + τ l i n k
An effective and relatively fast method, which is designed as a unified three-loop iterative scheme [21], is proposed to acquire an accurate dynamic model, but does not compensate for unmodeled torque or harmonics. This paper proposes an improved version of the three-loop method. The first loop identifies the friction force, the second loop identifies the τ l i n k of the link dynamic, and the third loop compensates for uncertain components using flexible error to improve accuracy. If the torque component τ u cannot be accurately modeled, direct application of the learning method will lead to over-reliance on data. Furthermore, the linear modeling method suggested in [6] shows poor accuracy in some states, and estimation is impossible without flexible deformation. This paper proposes a method based on double-encoder information for identifying the residual torque. This method is designed to enable nonlinear approximation and smoothing of the residual torque, effectively solving the problems mentioned above. For the nonlinear f(·) part, it is inspired by the methods similar to DMP (Dynamic Movement Primitives) and RBF (radial basis function) in [30] to fit the nonlinear part. The radial basis function is
ψ j ( u ) = exp ( 1 2 σ j 2 ( u c j ) 2 ) ,   j = 1 , 2 , , N
σ represents the width of the radial basis function, c represents its center position, and the number of basis functions is N. Since offline identification is used to obtain weight coefficients, it is hoped that the fitting parameters have high compatibility, and the error limit of θ m θ l is defined as θ m a x , θ m i n ; then, the calculation method of σ i and ci is
{ c j = Δ θ min + ( j 1 ) ( Δ θ max Δ θ min N 1 ) σ j = 1 ( 0.5 ( c j + 1 c j ) ) 2
In the same way, operating on θ ˙ m θ ˙ l , σ j only needs to expand one data value at the end to satisfy data synchronization, so that the values of c j and σ j can be determined. Ensure that the Gaussian function covers the entire flexible error space of the industrial robot, and has an effective mapping for the input u of the RBF network. If the traditional RBF network is used to fit the data, it is necessary to update the center position, width, and weight of the radial basis function. However, increasing the amount of program also modifies the coverage interval of the radial basis function, which is unfavorable for dynamic identification, so [ θ m θ l , θ ˙ m θ ˙ l ] needs to be identified uniformly, so as to reflect the uncertain torque components under different joint states. Assume that the number of radial basis functions is N, and the data have M groups:
f ( u ) = i = 1 N w r j ψ j ( u ) j = 1 N ψ j ( u )
It is necessary to identify all the data at one time, and the expected fitting data are ftarget = [ftarget(1), ftarget(2),…ftarget(M)]; then, the weight identification is
[ ψ 1 ( 1 ) ψ 1 ( 2 ) ψ N ( M ) ψ 2 ( 1 ) ψ 2 ( 2 ) ψ N ( M ) ψ N ( 1 ) ψ N ( 2 ) ψ N ( M ) ] [ f t a r g e t ( 1 ) f t a r g e t ( 2 ) f t a r g e t ( m ) ] = [ w r 1 j = 1 M ψ 1 ( i ) w r 2 j = 1 M ψ 2 ( i ) w r N j = 1 M ψ N ( i ) ]
Directly calculate the network weight Wr = [wr1, wr2, …, wrN]; the actual process needs to [ θ m θ l , θ ˙ m θ ˙ l ] as the input data, and torque τ u as the expected training.
Due to the multi-degree-of-freedom serial structure of robotic manipulators, employing a single neural network alone cannot adequately capture the coupling between joints. Therefore, a GMM (Gaussian Mixture Model) is employed to model each joint of the multi-degree-of-freedom robotic manipulator. Subsequently, GMR (Gaussian Mixture Regression) is applied to fit the data for each joint individually. This approach is essential for accurately characterizing the intricate interdependencies among the joints in multi-degree-of-freedom robotic arms.
GMM (Gaussian Mixture Model) assumes that data are composed of multiple Gaussian distributions, each referred to as a component, and a data point may originate from any one of these components. Model parameters include the mean, covariance matrix, and weight for each component. These parameters are estimated using the EM (Expectation–Maximization) algorithm, where the E-step calculates the probability of each data point belonging to each component, and the M-step updates the model parameters. The EM algorithm is an iterative optimization algorithm used to estimate parameters in models with latent variables. It comprises two steps: the Expectation step and Maximization step. The E-step computes the expectation of latent variables for observed data given the current parameters. The M-step maximizes the expectation calculated in the E-step, updating model parameters. GMR (Gaussian Mixture Regression) is a regression model that uses GMM to model the conditional probability distribution, capturing the relationship between input and output. GMM parameters are estimated using the EM algorithm. Given input data, conditional probability distribution is computed using GMM, followed by the calculation of the expected value and variance of the output. This is commonly used for modeling complex nonlinear relationships. In summary, the fundamental idea of the GMM EM GMR algorithm is to model data using GMM, iteratively optimize model parameters with the EM algorithm, and then apply these parameters in GMR to establish the relationship between input and output for predictive purposes.
The modeling and regression process for the i-th joint is as follows: In the first step, data from joint i are ξ i = u i , f ( u i ) , with ξ i R 3 × m , u i R 2 × m comprising an input vector consisting of joint position and velocity, where f ( u i ) R m represents the output vector composed of joint torque residuals, and m represents the number of sampled points in the dataset. The second step involves modeling the dataset ξ using a GMM consisting of K Gaussian components. The joint probability density of the GMM is defined as follows:
p ( ξ i ) = k = 1 K π k N ( ξ i ; μ k , k )
In the equation, π 1 , , π K represents the mixture coefficient for the k-th Gaussian component, subject to the constraints   π k > 0 and k = 1 K π k = 1 . μ 1 , , μ K denotes the mean of the k-th Gaussian component, and Σ 1 , , Σ K is the covariance matrix associated with it. N ( μ 1 , Σ k ) represents the Gaussian component defined by mean μ k and covariance Σ k . Specifically, the k-th Gaussian component is defined as follows:
p ( ξ i | μ k , k ) = 1 2 π | k | e 1 2 ( ( ξ i μ k ) T k 1 ( ξ i μ k ) )
The third step involves utilizing the EM algorithm to compute the parameters π k , μ k , and Σ k for each Gaussian component.
In the fourth step, after obtaining the GMM parameters, GMR is employed to fit the expected function f ( ) . For each Gaussian component, given the input data u i , the conditional probability f ( u i ) satisfies a Gaussian distribution.
p ( f ( u i ) | u i , k ) = N ( f ( u i ) ; f ^ ( u i ) , ^ f ( u i ) , k )
f ^ k ( u i ) = μ f ( u i ) , k + f ( u i ) u i , k ( u i , k ) 1 ( u i μ u i , k )
^ f ( u i ) , k = f ( u i ) , k f ( u i ) u i , k ( u i , k ) 1 u i f ( u i ) , k
p ( f ( u i ) | u i ) = k = 1 K h k ( u i ) N ( f ( u i ) ; f ^ k ( u i ) , ^ f ( u i ) , k )
h k ( u i ) = p ( k ) p ( u i | k ) i = 1 K p ( i ) p ( u i | i ) = π k N ( u i ; μ u i , k , u i , k ) i = 1 K π i N ( u i ; μ u i , k , u i , k )
The estimation of the conditional expectation f ( u i ) given u i under the Gaussian distribution is defined using the linearity property. The parameters of the Gaussian distribution are defined as
f ^ ( u i ) = k = 1 K h k ( u i ) f ^ k ( u i )
^ f ( u ) = k = 1 K h k 2 ( u ) ^ f ( u ) , k
The above equation represents the torque residual f ^ ( u i ) fitted under joint position and joint velocity u i for the i-th joint.

6. Simulation and Experiment

To illustrate the proposed method, several experiments were undertaken on the 6-DoF industrial robot. The experiment system is shown in Figure 4, and the controller’s hardware platform is equipped with a SpeedGoat RCP (The SpeedGoat, Bern, Switzerland) real-time simulation platform [31] that has a computation cycle of 1 ms. The control system is developed with the MDH model, utilizing the real-time function of MATLAB Simulink (The MathWorks, Natick, USA). The computer in use is equipped with a CPU: I7-11800H-2.30 GHz, 64 G-3200 MHZ memory, and the MATLAB version is 2022b.
In this paper, the fifth-order Fourier series is used to design the exciting trajectory. The exciting frequency of the trajectory is f s = 0.02   Hz , and the cycle is 20 s. The displacement, velocity, and acceleration of each joint are calculated using the Fourier series, to obtain 200 discrete points every 0.1 s. The constraint limits of the joint displacements, velocities, and accelerations of the industrial robots used in the experiment are shown in Table 1.
Comparing the condition number of the regression matrix obtained with the optimization index method based on the block regression matrix condition number and the least squares method used in this paper, the results are shown in Table 2 below:
It can be seen from Table 2 that the condition number of the regression matrix obtained with the method used in this paper is the smallest. At the same time, the method used in this paper optimizes the sub-matrix of the regression matrix and adjusts the internal structure of the regression matrix, so it can better stimulate the characteristics of the dynamic parameters. Because there are six joints, the number of variable coefficients for the total trajectory optimization solution is 66. According to the constraint parameters provided in Table 1, the coefficients of the exciting trajectory are calculated through the pattern search optimization function provided using Matlab, as shown in Table 3. The total system runtime is determined by the maximum integer time. Loop1 corresponds to the friction identification module, taking 1 s to complete. Loop2 represents the dynamics identification module, where the trajectory optimization and execution take 30 s, and the dynamic parameter identification process requires 5 s. Loop3 corresponds to the dynamics compensation module based on dual-encoder deformation. The GMM algorithm within this module has a relatively longer runtime, contributing to the total module time of 2 s.
The actual running period of the industrial robot is set to 20 s, and the displacement, velocity, and acceleration of each joint exciting trajectory are shown in Figure 5.
The rotation axis of Joint 1 is orthogonal to that of Joint 2, with minimal gravitational impact on Joint 1 and maximal gravitational impact on Joint 2. Consequently, selecting the friction between Joint 1 and Joint 2 as the test parameter for the algorithm is a compelling choice. Figure 6 illustrates the ultimate results of Joint 1 and Joint 2 friction estimation along with the fitting parameters. The nonlinear parameters prove to be highly effective in capturing the friction characteristics under conditions close to zero. Tailoring to specific requirements, more sophisticated friction models can be seamlessly integrated into the proposed framework.
Directly use the traditional WLS method to identify the dynamic model and friction of the link. Observing the results in Figure 7, it can be found that the effect is not ideal, and even when the joint moves smoothly in one direction, a large error occurs. As long as the joints are in motion, there will be joint deformations. At this time, only the encoder on the link side is used for dynamic identification, and there will be errors. When the joints return to the zero position, the industrial robot is in a vertical state at this time, and there is almost no motion deformation in each joint, so the residual torque is almost zero. Finally, we compensate for the residual torque based on the double-encoder information, and Figure 8 shows the results of the identification method proposed in this paper.
Given that the identification framework in this paper is also based on an iterative strategy, our proposed method exhibits a notable improvement in torque estimation, particularly in turning and local positions compared to the WLS method. The collection of torque and joint state data introduces high-frequency noise, originating from joint and mechanical vibrations, as well as friction forces that cannot be precisely estimated. To address this, we introduce low-pass filtering for effective noise reduction, ensuring a more accurate representation of torque information without compromising the signal.
In Figure 7 and Figure 8, it can be seen that the dynamic model identified with the method used in this paper is more accurate, and the measured torque basically agrees with the predicted torque current. The calculated RMSE (root mean square error) between the predicted torque and the actual measured torque of each joint is shown in Table 4. The results show that the three-loop dynamics identification scheme based on double-encoder information compensation proposed in this paper has a significant improvement compared with the WLS, and the RMSE of the residual torque is reduced by more than 20%, which proves the superiority of the method in this paper compared with the traditional method.

7. Conclusions

The method proposed in this paper firstly identifies the friction force through two directional moments, and then conducts a theoretical identification on the dynamics of the link, in which the block matrix condition number is used as the optimization index for the exciting trajectory. Finally, the deformation moments that cannot be accurately modeled are estimated using double-encoder information, which can reflect the influence of unmodeled parts such as harmonic reducers. The dynamic parameter identification of an industrial robot has been enhanced in two aspects. Firstly, a nonlinear friction force model, distinguishing between high and low speeds, is employed to better fit the dynamic friction effects of the robotic arm. Secondly, the GMM algorithm is introduced into dynamic parameter identification to compensate for the uncertain torque residue arising from nonlinear fitting. However, through an intuitive analysis of the residual torque, it can be found that the accuracy of the torque estimation will decrease in the place where the speed switches direction, and the error will be large. This is also due to the difficulty in estimating the friction force when the movement switches directions. This approach reduces the root mean square of identification residuals by 20%, signifying a significant improvement in the precision of model parameter identification.

Author Contributions

X.L. contributed the central idea and wrote the initial draft of the paper. Y.X., X.S., T.W., L.Z. and Y.Z. contributed to refining the ideas and revised this paper. All authors have read and agreed to the published version of the manuscript.


This work was supported by the National Key Research and Development Program for Robotics Serialized Harmonic Reducer Fatigue Performance Analysis and Prediction and Life Enhancement Technology Research, Grant No. 2017YFB1300603.

Data Availability Statement

All data generated or analyzed during this study are included in this paper or are available from the corresponding authors on reasonable request.

Conflicts of Interest

The authors declare no conflict of interest.


  1. Vandanjon, P.; Gautier, M.; Desbats, P. Identification of robot inertial parameters by means of spectrum analysis. In Proceedings of the 1995 IEEE International Conference on Robotics and Automation (ICRA), Nagoya, Japan, 21–27 May 1995; pp. 3033–3038. [Google Scholar]
  2. Wu, J.; Wang, J.; You, Z. An overview of dynamic parameter identification of robots. Robot. Comput. Integr. Manuf. 2010, 26, 414–419. [Google Scholar] [CrossRef]
  3. Gautier, M.; Khalil, W. Direct calculation of minimum set of inertial parameters of serial robots. IEEE Trans. Robot. Autom. 1990, 6, 368–373. [Google Scholar] [CrossRef]
  4. Swevers, J.; Verdonck, W.; De Schutter, J. Dynamic model identification for industrial robots. IEEE Control Syst. Mag. 2007, 27, 58–71. [Google Scholar]
  5. Venture, G.; Ayusawa, K.; Nakamura, Y. A numerical method for choosing motions with optimal excitation properties for identification of biped dynamics-An application to human. In Proceedings of the 2009 IEEE International Conference on Robotics and Automation, Kobe, Japan, 12–17 May 2009; pp. 1226–1231. [Google Scholar]
  6. Huang, Y.; Ke, J.; Zhang, X.; Ota, J. Dynamic parameter identification of serial robots using a hybrid approach. IEEE Trans. Robot. 2023, 39, 1607–1621. [Google Scholar] [CrossRef]
  7. Zhuang, C.; Yao, Y.; Shen, Y.; Xiong, Z. A convolution neural network based semi-parametric dynamic model for industrial robot. J. Mech. Eng. Sci. 2022, 236, 3683–3700. [Google Scholar] [CrossRef]
  8. Huang, S.; Chen, J.; Zhang, J.; Zhu, Z.; Zhou, H.; Li, F.; Zhou, X. Robust estimation for an extended dynamic parameter set of serial manipulators and unmodeled dynamics compensation. IEEE/ASME Trans. Mechatron. 2022, 27, 962–973. [Google Scholar] [CrossRef]
  9. Gautier, M.; Briot, S. New method for global identification of the joint drive gains of robots using a known payload mass. In Proceedings of the 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems, San Francisco, CA, USA, 25–30 September 2011; pp. 3728–3733. [Google Scholar]
  10. Briot, S.; Gautier, M. Global identification of joint drive gains and dynamic parameters of parallel robots. Multibody Syst. Dyn. 2015, 33, 3–26. [Google Scholar] [CrossRef]
  11. Albu Schäffer, A.; Ott, C.; Hirzinger, G. A unified passivity-based control framework for position, torque and impedance control of flexible joint robots. Int. J. Robot. Res. 2007, 26, 23–39. [Google Scholar] [CrossRef]
  12. Spong, M.W. Modeling and control of elastic joint robots. J. Dyn. Sys. Meas. Control 1987, 109, 310–319. [Google Scholar] [CrossRef]
  13. Han, Y.; Wu, J.; Liu, C.; Xiong, Z. Static model analysis and identification for serial articulated manipulators. Robot. Comput. Integr. Manuf. 2019, 57, 155–165. [Google Scholar] [CrossRef]
  14. Gautier, M. Dynamic identification of robots with power model. In Proceedings of the International Conference on Robotics and Automation, Albuquerque, NM, USA, 25 April 1997; pp. 1922–1927. [Google Scholar]
  15. Wolf, S.; Iskandar, M. Extending a dynamic friction model with nonlinear viscous and thermal dependency for a motor and harmonic drive gear. In Proceedings of the 2018 IEEE International Conference on Robotics and Automation (ICRA), Brisbane, QLD, Australia, 21–25 May 2018; pp. 783–790. [Google Scholar]
  16. Iskandar, M.; Wolf, S. Dynamic friction model with thermal and load dependency: Modeling, compensation, and external force estimation. In Proceedings of the 2019 International Conference on Robotics and Automation (ICRA), Montreal, QC, Canada, 20–24 May 2019; pp. 7367–7373. [Google Scholar]
  17. Ji, Y.; Jiang, X.; Wan, L. Hierarchical least squares parameter estimation algorithm for two-input Hammerstein finite impulse response systems. J. Frankl. Inst. 2020, 357, 5019–5032. [Google Scholar] [CrossRef]
  18. Kammerer, N.; Garrec, P. Dry friction modeling in dynamic identification for robot manipulators: Theory and experiments. In Proceedings of the 2013 IEEE International Conference on Mechatronics (ICM), Vicenza, Italy, 27 February–1 March 2013; pp. 422–429. [Google Scholar]
  19. Swevers, J.; Verdonck, W.; Naumer, B.; Pieters, S.; Biber, E. An experimental robot load identification method for industrial application. Int. J. Robot. Res. 2002, 21, 701–712. [Google Scholar] [CrossRef]
  20. Zhang, L.; Wang, J.; Chen, J.; Chen, K.; Lin, B.; Xu, F. Dynamic modeling for a 6-DOF robot manipulator based on a centrosymmetric static friction model and whale genetic optimization algorithm. Adv. Eng. Softw. 2019, 135, 102684. [Google Scholar] [CrossRef]
  21. Deng, J.; Shang, W.; Zhang, B.; Zhen, S.; Cong, S. Dynamic Model Identification of Collaborative Robots Using a Three-Loop Iterative Method. In Proceedings of the 2021 6th IEEE International Conference on Advanced Robotics and Mechatronics (ICARM), Chongqing, China, 3–5 July 2021; pp. 937–942. [Google Scholar]
  22. Shi, X.; Han, Y.; Wu, J.; Xiong, Z. Servo system identification based on curve fitting to phase-plane trajectory. J. Dyn. Sys. Meas. Control 2020, 142, 031001. [Google Scholar] [CrossRef]
  23. Shi, X.; Han, Y.; Wu, J.; Xiong, Z. An FFT-based method for analysis, modeling and identification of kinematic error in Harmonic Drives. In Proceedings of the International Conference on Intelligent Robotics and Applications (ICIRA), Shenyang, China, 8–11 August 2019; pp. 191–202. [Google Scholar]
  24. Han, Y.; Wu, J.; Liu, C.; Xiong, Z. An Iterative Approach for Accurate Dynamic Model Identification of Industrial Robots. IEEE Trans. Robot. 2020, 36, 1577–1594. [Google Scholar] [CrossRef]
  25. Herzog, A.; Righetti, L.; Grimminger, F.; Pastor, P.; Schaal, S. Momentum-based balance control for torque-controlled humanoids. Comput. Res. Repos. 2013, 1, 1–7. [Google Scholar]
  26. Niku, S.B. Introduction to Robotics: Analysis, Systems, Applications; Prentice Hall: Upper Saddle River, NJ, USA, 2001. [Google Scholar]
  27. Lu, Y.; Shen, Y.; Zhuang, C. External force estimation for industrial robots using configuration optimization. Automatika 2023, 64, 365–388. [Google Scholar] [CrossRef]
  28. Hamon, P.; Gautier, M.; Garrec, P.; Janot, A. Dynamic modeling and identification of joint drive with load-dependent friction model. In Proceedings of the 2010 IEEE/ASME International Conference on Advanced Intelligent Mechatronics, Montreal, QC, Canada, 6–9 July 2010; pp. 902–907. [Google Scholar]
  29. Hamon, P.; Gautier, M.; Garrec, P. New dry friction model with load and velocity-dependence and dynamic identification of multi-DoF robots. In Proceedings of the 2011 IEEE International Conference on Robotics and Automation (ICRA), Shanghai, China, 9–13 May 2011; pp. 1077–1084. [Google Scholar]
  30. Ijspeert, A.J.; Nakanishi, J.; Hoffmann, H.; Pastor, P.; Schaal, S. Dynamical Movement Primitives: Learning Attractor Models for Motor Behaviors. Neural Comput. 2013, 25, 328–373. [Google Scholar] [CrossRef] [PubMed]
  31. Performance Real-Time Test System. Available online: (accessed on 2 November 2022).
Figure 1. Flowchart of the offline identification method.
Figure 1. Flowchart of the offline identification method.
Actuators 12 00454 g001
Figure 2. The flowcharts of three-loop dynamic identification.
Figure 2. The flowcharts of three-loop dynamic identification.
Actuators 12 00454 g002
Figure 3. Physical model of joints.
Figure 3. Physical model of joints.
Actuators 12 00454 g003
Figure 4. The experimental robotic system: (a) 6-DoF industrial robot; (b) SpeedGoat simulation platform.
Figure 4. The experimental robotic system: (a) 6-DoF industrial robot; (b) SpeedGoat simulation platform.
Actuators 12 00454 g004
Figure 5. Exciting trajectories: (a) Joint position; (b) Joint velocity; (c) Joint acceleration.
Figure 5. Exciting trajectories: (a) Joint position; (b) Joint velocity; (c) Joint acceleration.
Actuators 12 00454 g005
Figure 6. Nonlinear friction torque estimation of robot Joint 1 and Joint 2.
Figure 6. Nonlinear friction torque estimation of robot Joint 1 and Joint 2.
Actuators 12 00454 g006
Figure 7. The result of traditional identification method WLS.
Figure 7. The result of traditional identification method WLS.
Actuators 12 00454 g007
Figure 8. The result of identification method in this paper.
Figure 8. The result of identification method in this paper.
Actuators 12 00454 g008
Table 1. The parameters of exciting trajectory limits.
Table 1. The parameters of exciting trajectory limits.
LimitsJoint 1Joint 2Joint 3Joint 4Joint 5Joint 6
Joint limit θ I , m a x (deg)Max1209060120120120
Joint velocity limit θ ˙ I , m a x (deg/s)Max1006060808080
Joint acceleration limit θ ¨ I , m a x (deg/s2)Max120120120120120120
Table 2. Comparison table of condition number optimization results of different methods.
Table 2. Comparison table of condition number optimization results of different methods.
Optimization MethodCondition Number
Table 3. Coefficient results of exciting trajectories.
Table 3. Coefficient results of exciting trajectories.
Optimization ParametersJoint 1Joint 2Joint 3Joint 4Joint 5Joint 6
θ i 0 ( rad ) 0.3361−0.2762−0.0112−0.23690.19760.4777
Table 4. Result of RMSE.
Table 4. Result of RMSE.
Identification MethodJoint 1Joint 2Joint 3Joint 4Joint 5Joint 6
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Liu, X.; Xu, Y.; Song, X.; Wu, T.; Zhang, L.; Zhao, Y. An Accurate Dynamic Model Identification Method of an Industrial Robot Based on Double-Encoder Compensation. Actuators 2023, 12, 454.

AMA Style

Liu X, Xu Y, Song X, Wu T, Zhang L, Zhao Y. An Accurate Dynamic Model Identification Method of an Industrial Robot Based on Double-Encoder Compensation. Actuators. 2023; 12(12):454.

Chicago/Turabian Style

Liu, Xun, Yan Xu, Xiaogang Song, Tuochang Wu, Lin Zhang, and Yanzheng Zhao. 2023. "An Accurate Dynamic Model Identification Method of an Industrial Robot Based on Double-Encoder Compensation" Actuators 12, no. 12: 454.

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop