Introduction

Hybrid robots composed of a 3-DOF parallel mechanism and a 2-DOF A/C wrist (a wrist with A-axis and C-axis) show desirable performance in workspace, modularity, stiffness, accuracy and dynamic characteristics, which is especially suitable for machining large and complex parts1. Tricept2 and Exechon3 robots are typical successful application cases of this kind of robot, which have been widely used in aircraft floor beam milling, skin machining, wing drilling and riveting. The two robots have become important technical solutions for Boeing, Airbus and other large aircraft manufacturers.

As the main driving mechanism of hybrid robots, the parallel mechanism is a nonlinear time-varying system, because the load inertia of actuated joints changes with the robot configuration. In view of the impact of this variation on the robot design and control performance, lots of researches have been carried out on dynamic performance analysis4, motor selection5, control strategy6, and controller parameter tuning7. In terms of dynamic performance analysis, the local and global inertia indices were proposed to evaluate the dynamic performance and analyse the coupling characteristics between joints for guiding the optimal design8,9,10,11. The inertia matrix was established for the decoupling control12 and servo motor selection5,13. It can be seen that the accurate knowledge of the variation of the load inertia is of great significance in analyzing the design performance and control of the robot. Inertia identification divides roughly into two categories: model-based methods and data-driven methods. In model-based methods, the dynamics model is established first to calculate the joint driving torque14, and then the least square method15, the Kalman filtering method16 or particle filtering method17 is employed to identify parameters. The effectiveness of inertia in design or control is highly dependent upon the degree of dynamic complexity and practical accuracy of the parameter identification18. In data-driven methods, neural networks19, genetic algorithm20, or extended Kalman filter21 can be used to replace the dynamic model in constructing input–output relationships for parameter identification. A large amount of data support and complex fitting algorithms are required to ensure the identification accuracy though the heavy workload of math modeling is avoided. Unlike the offline identification methods mentioned above, the online identification methods calculate inertia parameters by using the input and output data of the system in real-time, and update the control model by using these calculation results to improve control quality22,23. This idea is suitable for robots with dynamic characteristics, but it requires minimizing the complexity of the algorithm to meet the computational capacity limitations of motion controllers in limited memory space24.

Currently, the commonly used on-line process for inertia estimation is implemented in three steps: (1) Establish the rigid body dynamic model. (2) Measure the dynamic parameters of the virtual prototype or identify those by the physical prototype experiments. (3) Calculate each element of the inertia matrix based on the dynamic model. However, this method needs to establish a complex dynamic model and identify many dynamic parameters by experiments to improve the calculation accuracy. The inertia matrix is obtained through the calculation of the Jacobian matrix and the inertia parameters of the components. This process involves a large number of complex matrix and vector operations. The algorithm complexity increases the real-time computational burden of the motion controller, leading to difficulties and costs in the application of the robot control system. Therefore, it is a valuable attempt to construct a simple algorithm that can calculate the inertia value in the whole workspace by only using the inertia information at a limited number of configurations, which can quickly estimate the load inertia of each actuated joint of the robot at any configuration, or other control variables affected by the inertia (PID controller parameters, acceleration feedforward parameters, friction compensation amplitude, etc.).

Motivated by the practical needs arising from the above-mentioned issues, this paper investigates the dynamic formulation and fast inertia estimation of a hybrid robot. The remainder of the paper is organized as follow: Having reviewed the methods for inertia identification methods in Section “Introduction”, kinematics and inverse dynamics analysis of the robot is carried out in Section “Kinematics and inverse dynamics analysis”, which is used for the inertia variation analysis and evaluation requires. In Section “Inertia fast estimation”, two inertia estimation algorithms are proposed based on circular and elliptical membership functions, respectively. In Section “Verification”, both simulations and experiments are carried out to verify the effectiveness of the proposed method on the accuracy of inertia calculation before conclusions are drawn in Section “Conclusions”.

Kinematics and inverse dynamics analysis

System description

Figure 1 shows the CAD model of the hybrid robot named TriMule, which is composed of a 3-DOF parallel mechanism and a 2-DOF wrist. The parallel mechanism comprises an actuated UPS limb plus a 1T1R planar linkage containing two actuated RPS limbs and a passive RP limb. The base link of the planar parallel mechanism is connected by a pair of R joints with the machine frame. Here, R, P, U, and S denote revolute, prismatic, universal, and spherical joints, and the underlined P denotes an actuated prismatic joint.

Figure 1
figure 1

CAD model of the TriMule robot.

Figure 2 shows a schematic diagram of the TriMule robot. For the convenience of description, the UPS limb and two RPS limbs are numbered as limb 1, 2 and 3 respectively. The RP limb plus the A/C wrist is numbered as limb 4, which is composed of five joints and six components numbered 0–5. The five joints include the R joint of the base link, the two joints of the RP limb and the two joints of the A/C wrist, which do not include the spindle. Joint \(j\left( {j = 1 \ldots 5} \right)\) connects the component \(j - 1\) and \(j\). \(P\) represents the intersection of the two rotating axes of the A/C wrist, and \(C\) represents the tool tip point.

Figure 2
figure 2

Schematic diagram of the TriMule robot.

In order to effectively describe the position and attitude of each component, the reference coordinate system \(\left\{ {R_{0} } \right\}\) is established at the point \(B_{4}\). The \(x_{0}\) axis coincides with the axis of the base link. The \(z_{0}\) axis is perpendicular to the plane determined by \(B_{i} \left( {i = 1,2,3} \right)\). Figures 3 and 4 show the body-fixed frame \(\left\{ {R_{j,i} } \right\}\) of the j-th component in the i-th limb and the tool frame \(\left\{ {R_{5,4} } \right\}\) established by the D-H method.

Figure 3
figure 3

Body-fixed frames of limb \(i\left( {i = 1,2,3} \right)\).

Figure 4
figure 4

Body-fixed frames of limb 4.

Then the orientation matrix of \(\left\{ {R_{5,4} } \right\}\) with respect to \(\left\{ {R_{0} } \right\}\) can be expressed by

$$^{0} {\mathbf{R}}_{5,4} = \, ^{0} {\mathbf{R}}_{3,4}^{3,4} {\mathbf{R}}_{5,4} = \left[ {\begin{array}{*{20}c} {\mathbf{u}} & {\mathbf{v}} & {\mathbf{w}} \\ \end{array} } \right] $$
(1)

where \({}^{0}{\mathbf{R}}_{3,4} = \left[ {\begin{array}{*{20}c} {{\mathbf{s}}_{2,4} \times {\mathbf{s}}_{3,4} } & {{\mathbf{s}}_{2,4} } & {{\mathbf{s}}_{3,4} } \\ \end{array} } \right]\) is the orientation matrix of \(\left\{ {R_{3,4} } \right\}\) with respect to \(\left\{ {R_{0} } \right\}\), \({}^{3,4}{\mathbf{R}}_{5,4}\) is the orientation matrix of \(\left\{ {R_{5,4} } \right\}\) with respect to \(\left\{ {R_{3,4} } \right\}\) respectively. Here, \({\mathbf{s}}_{2,4} \times {\mathbf{s}}_{3,4}\), \({\mathbf{s}}_{2,4}\) and \({\mathbf{s}}_{3,4}\) represent the unit vectors of three coordinate axes of \(\left\{ {R_{3,4} } \right\}\). \({\mathbf{u}}\), \({\mathbf{v}}\) and \({\mathbf{w}}\) represent that of three coordinate axes of \(\left\{ {R_{5,4} } \right\}\). \(\theta_{j,4} (j = 1,2,4,5)\) is the angle of rotation about the \(z_{j - 1,4}\) axis.

Kinematic analysis

Inverse displacement analysis

The inverse displacement analysis is to solve the two rotation angles of the A/C wrist and the length of three actuated limbs of the parallel mechanism by the known dimensional parameters, tool tip position vector and tool axis vector.

The position vector of P fixed on the platform can be expressed as

$$ {\mathbf{r}}_{P} = {\mathbf{r}}_{C} - d_{w} {\mathbf{w}} - d_{v} {\mathbf{v}} $$
(2)
$$ {\mathbf{r}}_{P} = \left( {q_{3,4} + e} \right){\mathbf{s}}_{3,4} $$
(3)

where

$$ {\mathbf{v}} = {\mathbf{w}} \times {\mathbf{u}},{\mathbf{u}} = \frac{{{\mathbf{n}} \times {\mathbf{w}}}}{{\left\| {{\mathbf{n}} \times {\mathbf{w}}} \right\|}},{\mathbf{n}} = \frac{{{\mathbf{r}}_{Q} }}{{\left\| {{\mathbf{r}}_{Q} } \right\|}},{\mathbf{r}}_{Q} = {\mathbf{r}}_{C} - d_{w} {\mathbf{w}},e = \left\| {\overrightarrow {{A_{4} P}} } \right\| $$

Here \({\mathbf{r}}_{C}\) and \({\mathbf{w}}\) represent the tool tip vector and the tool orientation vector, \(q_{3,4}\) is the length of the RP limb, \(d_{w} = \left\| {\mathop{QC}\limits^{\rightharpoonup} } \right\|\), \(d_{v} = \left\| {\mathop{PQ}\limits^{\rightharpoonup} } \right\|\).

Taking norm on both sides of Eq. (3), leads to

$$ q_{3,4} = \left\| {{\mathbf{r}}_{P} } \right\| - e,{\mathbf{s}}_{3,4} = \frac{{{\mathbf{r}}_{P} }}{{\left\| {{\mathbf{r}}_{P} } \right\|}} = \left( {\begin{array}{*{20}c} {s_{3,4x} } \\ {s_{3,4y} } \\ {s_{3,4z} } \\ \end{array} } \right) $$
(4)

According to Eqs. (2) and (4), the rotation angles \(\theta_{1,4}\) and \(\theta_{2,4}\) of R(RP) limb can be obtained

$$ \theta_{1,4} = {\text{arctan}}\left( {\frac{{ - s_{3,4y} }}{{s_{3,4z} }}} \right),\theta_{2,4} = {\text{arcsin}}\left( {s_{3,4x} } \right) $$
(5)

Then \({}^{0}{\mathbf{R}}_{3,4}\) can be determined. Rewrite Eq. (1) as

$$ {}^{0}{\mathbf{R}}_{3,4}^{{\text{T}}} {}^{0}{\mathbf{R}}_{5,4}^{{}} = {}^{3,4}{\mathbf{R}}_{5,4} = \left[ {\begin{array}{*{20}c} {r_{11,4} } & {r_{12,4} } & {r_{13,4} } \\ {r_{21,4} } & {r_{22,4} } & {r_{23,4} } \\ {r_{31,4} } & {r_{32,4} } & {r_{33,4} } \\ \end{array} } \right] $$
(6)

Then, the rotation angles \(\theta_{4,4}\) and \(\theta_{5,4}\) of the A/C wrist can be obtained by

$$ \theta_{4,4} = {\text{arctan2}}\left( {r_{21,4} ,r_{11,4} } \right),\theta_{5,4} = {\text{arctan2}}\left( {r_{32,4} ,r_{33,4} } \right) $$
(7)

The closed-loop equation formed by \(B_{4} - B_{i} - A_{i} - A_{4} - P - B_{4}\) limb can be expressed as

$$ {\mathbf{r}}_{P} - {\mathbf{b}}_{i} - e{\mathbf{s}}_{3,4} + {\mathbf{a}}_{i} = q_{3,i} {\mathbf{s}}_{3,i} ,i = 1,2,3 $$
(8)

where \(q_{3,i}\) and \({\mathbf{s}}_{3,i}\) are the length and unit vector of the \(i - {\text{th}}\) actuated limb respectively, \({\mathbf{a}}_{i} = {}^{0}{\mathbf{R}}_{3,4} {\mathbf{a}}_{i0}\).

\(\begin{gathered} {\mathbf{a}}_{20} = a_{x} {\hat{\mathbf{x}}}, \, {\mathbf{a}}_{30} = - a_{x} {\hat{\mathbf{x}}}, \, {\mathbf{a}}_{10} = - a_{y} {\hat{\mathbf{y}}}{ ,} \hfill \\ {\mathbf{b}}_{2} = b_{x} {\hat{\mathbf{x}}}, \, {\mathbf{b}}_{3} = - b_{x} {\hat{\mathbf{x}}}, \, {\mathbf{b}}_{1} = - b_{y} {\hat{\mathbf{y}}} \hfill \\ \end{gathered}\), \(\begin{gathered} a_{x} = \left\| {\overrightarrow {{A_{4} A_{2} }} } \right\| = \left\| {\overrightarrow {{A_{4} A_{3} }} } \right\| \hfill \\ a_{y} = \left\| {\overrightarrow {{A_{4} A_{1} }} } \right\| \hfill \\ \end{gathered}\), \(\begin{gathered} b_{x} = \left\| {\overrightarrow {{B_{4} B_{2} }} } \right\| = \left\| {\overrightarrow {{B_{4} B_{3} }} } \right\| \hfill \\ b_{y} = \left\| {\overrightarrow {{B_{4} B_{1} }} } \right\| \hfill \\ \end{gathered}\), \({\hat{\mathbf{x}}} = \left( {\begin{array}{*{20}c} 1 & 0 & 0 \\ \end{array} } \right)^{{\text{T}}} \, \), \({\hat{\mathbf{y}}} = \left( {\begin{array}{*{20}c} 0 & 1 & 0 \\ \end{array} } \right)^{{\text{T}}} \, \).

Taking norm on both sides of Eq. (8), leads to

$$ q_{3,i} = \left\| {{\mathbf{r}}_{P} - {\mathbf{b}}_{i} - e{\mathbf{s}}_{3,4} + {\mathbf{a}}_{i} } \right\|,{\mathbf{s}}_{3,i} = \left( {{\mathbf{r}}_{P} - {\mathbf{b}}_{i} - e{\mathbf{s}}_{3,4} + {\mathbf{a}}_{i} } \right)/q_{3,i} ,i = 1,2,3 $$
(9)

So far, the inverse displacement solution of the TriMule robot has been solved.

Velocity and acceleration analysis

The velocity analysis is concerned with the determination of axial telescopic velocity \(\dot{q}_{3,i}\)(\(i = {1,2,3}\)) of three actuated limbs of parallel mechanism and angular velocity \(\dot{\theta }_{j,4}\)(\(j = {4,5}\)) of the A/C wrist according to linear velocity vector \({\mathbf{v}}_{C}\) of tool tip C and tool angular velocity vector \({{\varvec{\upomega}}}_{C}\).

The velocity vector \({\mathbf{v}}_{C}\) and \({{\varvec{\upomega}}}_{C}\) can be expressed as

$$ {\mathbf{v}}_{C} = {\mathbf{v}}_{P} + {{\varvec{\upomega}}}_{C} \times {\mathbf{r}}_{PC} ,{{\varvec{\upomega}}}_{C} = {{\varvec{\upomega}}}_{3,4} + {\mathbf{J}}_{w} {\dot{\mathbf{\theta }}} $$
(10)

where \({\mathbf{v}}_{P}\) represents linear velocity vector of point \(P\), \({\mathbf{r}}_{PC}\) represents the position vector from point P to point C, \({\mathbf{J}}_{w} = [\begin{array}{*{20}c} {{\mathbf{s}}_{4,4} } & {{\mathbf{s}}_{5,4} } \\ \end{array} ]\), \({\dot{\mathbf{\theta }}} = \left( {\begin{array}{*{20}c} {\dot{\theta }_{4,4} } & {\dot{\theta }_{5,4} } \\ \end{array} } \right)^{{\text{T}}}\), \({\mathbf{s}}_{4,4}\) and \({\mathbf{s}}_{5,4}\) represent the C-axis vector and A-axis vector of the wrist, \({{\varvec{\upomega}}}_{3,4}\) represents the angular velocity vector of the 3-th component in limb 4. Here, the relationship between \(\dot{q}_{3,i}\), \({{\varvec{\upomega}}}_{3,i}\)(\(i = {1,2,3,4}\)) and \({\mathbf{v}}_{P}\) can be expressed as

$$ {\dot{\mathbf{q}}} = {\mathbf{Jv}}_{P} ,{{\varvec{\upomega}}}_{3,i} = {\mathbf{J}}_{{\omega_{3,i} }} {\mathbf{v}}_{P} (i = 1,2,3),\dot{q}_{3,4} = {\mathbf{J}}_{3,4} {\mathbf{v}}_{P} ,{{\varvec{\upomega}}}_{3,4} = {\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{v}}_{P} $$
(11)

where \({\dot{\mathbf{q}}} = \left( {\begin{array}{*{20}c} {\dot{q}_{3,1} } & {\dot{q}_{3,2} } & {\dot{q}_{3,3} } \\ \end{array} } \right)^{{\text{T}}}\) and \(\dot{q}_{3,4}\) represent the velocity vector of the actuated joints and the passive joint. \({\mathbf{J}}\), \({\mathbf{J}}_{3,4}\) and \({\mathbf{J}}_{{\omega_{3,i} }}\) represent the Jacobian matrices.

Substitute Eq. (11) into Eq. (10), the mapping relationship between joint velocity and operation velocity can be constructed by

$$ \left( {\begin{array}{*{20}c} {{\dot{\mathbf{q}}}} \\ {{\dot{\mathbf{\theta }}}} \\ \end{array} } \right) = {\mathbf{J}}_{v}^{ + } \left( {\begin{array}{*{20}c} {{\mathbf{v}}_{C} } \\ {{{\varvec{\upomega}}}_{C} } \\ \end{array} } \right) $$
(12)

where \({\mathbf{J}}_{v}^{ + } = \left( {{\mathbf{J}}_{v}^{{\text{T}}} {\mathbf{J}}_{v}^{{}} } \right)^{ - 1} {\mathbf{J}}_{v}^{{\text{T}}}\), \({\mathbf{J}}_{v} = \left[ {\begin{array}{*{20}c} {{\mathbf{J}}^{ - 1} - \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{J}}^{ - 1} } & { - \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{J}}_{w} } \\ {{\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{J}}^{ - 1} } & {{\mathbf{J}}_{w} } \\ \end{array} } \right]\), \(\left[ {{\mathbf{r}}_{PC} \times } \right]\) is the skew-symmetric matrix of \({\mathbf{r}}_{PC}\).

The acceleration analysis is concerned with the determination of axial telescopic acceleration \(\ddot{q}_{3,i}\)(\(i = {1,2,3}\)) of three actuated limbs of parallel mechanism and angular acceleration \(\ddot{\theta }_{j,4}\)(\(j = {4,5}\)) of the A/C wrist according to the acceleration vector \({\mathbf{a}}_{C}\) of point \(C\) and tool angular acceleration vector \({{\varvec{\upvarepsilon}}}_{C}\).

Taking the derivatives of Eq. (10) with respect to time yields

$$ {\mathbf{a}}_{C} = {\mathbf{a}}_{P} + {{\varvec{\upvarepsilon}}}_{C} \times {\mathbf{r}}_{PC} + {{\varvec{\upomega}}}_{C} \times \left( {{{\varvec{\upomega}}}_{C} \times {\mathbf{r}}_{PC} } \right),{{\varvec{\upvarepsilon}}}_{C} = {\dot{\mathbf{\omega }}}_{3,4} + {\dot{\mathbf{J}}}_{w} {\dot{\mathbf{\theta }}} + {\mathbf{J}}_{w} {\mathbf{\ddot{\theta }}} $$
(13)

where \({\dot{\mathbf{J}}}_{w} = [\begin{array}{*{20}c} {{{\varvec{\upomega}}}_{4,4} \times {\mathbf{s}}_{4,4} } & {{{\varvec{\upomega}}}_{C} \times {\mathbf{s}}_{5,4} } \\ \end{array} ]\), \({\mathbf{\ddot{\theta }}} = \left( {\begin{array}{*{20}c} {\ddot{\theta }_{4,4} } & {\ddot{\theta }_{5,4} } \\ \end{array} } \right)^{{\text{T}}}\), \({\mathbf{a}}_{P}\) is the acceleration vector of point \(P\). Here, the relationship between \(\ddot{q}_{3,i}\), \({\dot{\mathbf{\omega }}}_{3,i}\)(\(i = {1,2,3,4}\)) and \({\mathbf{a}}_{P}\) can be expressed as

$$ {\mathbf{\ddot{q}}} = {\dot{\mathbf{J}}\mathbf{v}}_{P} + {\mathbf{Ja}}_{P} ,{\dot{\mathbf{\omega }}}_{3,i} = {\dot{\mathbf{J}}}_{{\omega_{3,i} }} {\mathbf{v}}_{P} + {\mathbf{J}}_{{\omega_{3,i} }} {\mathbf{a}}_{P} (i = {1,2,3}),\ddot{q}_{3,4} = {\dot{\mathbf{J}}}_{3,4} {\mathbf{v}}_{P} + {\mathbf{J}}_{3,4} {\mathbf{a}}_{P} ,{\dot{\mathbf{\omega }}}_{3,4} = {\dot{\mathbf{J}}}_{{\omega_{3,4} }} {\mathbf{v}}_{P} + {\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{a}}_{P} $$
(14)

where \({\mathbf{\ddot{q}}} = \left( {\begin{array}{*{20}c} {\ddot{q}_{3,1} } & {\ddot{q}_{3,2} } & {\ddot{q}_{3,3} } \\ \end{array} } \right)^{{\text{T}}}\).

Substitute Eq. (14) into Eq. (13), we have the acceleration mapping function

$$ \left( {\begin{array}{*{20}c} {{\mathbf{\ddot{q}}}} \\ {{\mathbf{\ddot{\theta }}}} \\ \end{array} } \right) = {\mathbf{J}}_{a}^{ + } \left( {\begin{array}{*{20}c} {{\mathbf{a}}_{C} - {\mathbf{K}}_{1} } \\ {{{\varvec{\upvarepsilon}}}_{C} - {\mathbf{K}}_{2} } \\ \end{array} } \right) $$
(15)

where \({\mathbf{J}}_{a}^{ + } = \left( {{\mathbf{J}}_{a}^{{\text{T}}} {\mathbf{J}}_{a}^{{}} } \right)^{ - 1} {\mathbf{J}}_{a}^{{\text{T}}}\), \({\mathbf{J}}_{a} = \left[ {\begin{array}{*{20}c} {{\mathbf{J}}^{ - 1} - \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{J}}^{ - 1} } & { - \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{J}}_{w} } \\ {{\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{J}}^{ - 1} } & {{\mathbf{J}}_{w} } \\ \end{array} } \right]\), \({\mathbf{K}}_{1} = - {\mathbf{J}}^{ - 1} {\dot{\mathbf{J}}\mathbf{v}}_{P} + {\mathbf{K}}_{{\mathbf{2}}} \times {\mathbf{r}}_{PC} + {{\varvec{\upomega}}}_{C} \times \left( {{{\varvec{\upomega}}}_{C} \times {\mathbf{r}}_{PC} } \right)\), \({\mathbf{K}}_{2} = {\dot{\mathbf{J}}}_{{\omega_{3,4} }} {\mathbf{v}}_{P} - {\mathbf{J}}_{{\omega_{3,4} }} {\mathbf{J}}^{ - 1} {\dot{\mathbf{J}}\mathbf{v}}_{P} + {\dot{\mathbf{J}}}_{w} {\dot{\mathbf{\theta }}}\).

Inverse dynamic formulation

The inverse dynamic analysis is concerned with the determination of the driving torque required for achieving a given motion according to the inertia parameters of the moving components, which provides a theoretical basis for analyzing the variation of load inertia of the actuated joints in the whole workspace25,26.

Motion analysis of component centroid

Considering that the mass and inertia of spherical joints, Hooke joints and the connecting frame rotating pair are small, these components are ignored. Therefore, the inertia force and torque in the TriMule robot system are generated by the following components: component 2 (limb outer tube) and component 3 (push rod) in limb \(i\)(\(i = {1,2,3}\)); component 1 (base link), component 2 (outer ring), component 3 (platform assembly), component 4 (C-axis assembly) and component 5 (A-axis assembly and Spindle) in limb 4; the driven assembly of actuated joints (lead screw assembly, A/C wrist driven assembly).

The position vector of the centroid of component \(j\) in limb \(i\) can be expressed as

$$ {\mathbf{r}}_{{C_{{j{,}i}} }} = {}^{0}{\mathbf{R}}_{{j{,}i}} {}^{{j{,}i}}{\mathbf{r}}_{{C_{{j{,}i}} }} + {\mathbf{r}}_{{j{,}i}} $$
(16)

where \({}^{{j{,}i}}{\mathbf{r}}_{{C_{{j{,}i}} }}\) represents the position vector of centroid \(C_{j,i}\) measured in \(\left\{ {R_{{j{,}i}} } \right\}\), \({\mathbf{r}}_{{j{,}i}}\) represents the position vector of coordinate origin of \(\left\{ {R_{{j{,}i}} } \right\}\) measured in \(\left\{ {R_{0} } \right\}\).

Taking the first and second derivatives of Eq. (16) with respect to time yields, we can get

$$ {\mathbf{v}}_{{C_{{{3,}i}} }} = {\mathbf{J}}_{{v_{{3{,}i}} }}^{{}} {\mathbf{v}}_{P} ,{\mathbf{a}}_{{C_{{{3,}i}} }} = {\mathbf{J}}_{{v_{{3{,}i}} }}^{{}} {\mathbf{a}}_{P} + {\dot{\mathbf{J}}}_{{v_{{3{,}i}} }}^{{}} {\mathbf{v}}_{P} $$
(17)

where \({\mathbf{J}}_{{v_{3,i} }}^{{}}\) is the Jacobian matrix of component centroid velocity with respect to moving platform velocity.

Inverse dynamic analysis

The virtual work principle can be used to obtain

$$ \begin{aligned} & \sum\limits_{i = 1}^{4} {\sum\limits_{{j = n_{{s1{,}i}} }}^{{n_{{e1{,}i}} }} {\left( {{\mathbf{F}}_{{C_{{j{,}i}} }}^{{\text{T}}} {\mathbf{v}}_{{C_{{j{,}i}} }} } \right)} } + \sum\limits_{i = 1}^{4} {\sum\limits_{{j = n_{{s2{,}i}} }}^{{n_{{e2{,}i}} }} {\left( {{\mathbf{T}}_{{C_{{j{,}i}} }}^{{\text{T}}} {{\varvec{\upomega}}}_{{j{,}i}} } \right)} } + \sum\limits_{i = 1}^{4} {\sum\limits_{{j = n_{{s3{,}i}} }}^{{n_{{e3{,}i}} }} {\left( {{\mathbf{F}}_{{G_{{j{,}i}} }}^{{\text{T}}} {\mathbf{v}}_{{C_{{j{,}i}} }} } \right)} } + \sum\limits_{i = 1}^{4} {\sum\limits_{{j = n_{{s4{,}i}} }}^{{n_{{e4{,}i}} }} {\left( {{\mathbf{T}}_{{G_{{j{,}i}} }}^{{\text{T}}} {{\varvec{\upomega}}}_{{j{,}i}} } \right)} } \\ & \quad + \sum\limits_{i = 1}^{3} {T_{{3{,}i}} \frac{{2{\uppi }\dot{q}_{{3{,}i}} }}{p}} + \sum\limits_{j = 4}^{5} {T_{{j{,4}}} \left( {i_{{w{,}j}}^{{}} \dot{\theta }_{{j{,}4}} } \right)} + {\mathbf{F}}_{e}^{{\text{T}}} {\mathbf{v}}_{C} + {\mathbf{T}}_{e}^{{\text{T}}} {{\varvec{\upomega}}}_{C} + \frac{{2{\uppi }}}{p}{{\varvec{\uptau}}}_{p}^{{\text{T}}} {\dot{\mathbf{q}}} + {{\varvec{\uptau}}}_{s}^{{\text{T}}} {\text{diag}}\left[ {i_{{w{,}j}} } \right]{\dot{\mathbf{\theta }}} = 0 \\ \end{aligned} $$
(18)

where \({\mathbf{F}}_{{C_{{j{,}i}} }}\) and \({\mathbf{T}}_{{C_{{j{,}i}} }}\) represent the inertia force and torque of each component \(j\) in limb \(i\)(\(i = {1,2,3,4}\)), \({\mathbf{F}}_{{G_{{j{,}i}} }}\) and \({\mathbf{T}}_{{G_{{j{,}i}} }}\) represent the gravity and gravity torque of each component \(j\) in limb \(i\), \(T_{{3{,}i}}\)(\(i = 1,2,3\)) and \(T_{j,4}\)(\(j = {4,5}\)) represent the inertia torque generated by the actuated joint assembly rotating around its own axis. \({\mathbf{F}}_{e}\) and \({\mathbf{T}}_{e}\) represent the external force and torque on the spindle, \({{\varvec{\uptau}}}_{p}^{{}} = \left( {\begin{array}{*{20}c} {\tau_{1} } & {\tau_{2} } & {\tau_{3} } \\ \end{array} } \right)^{{\text{T}}}\), \(\tau_{i}\)(\(i = {1,2,3}\)) represents the driving torque of the actuated joint in the i-th limb of the parallel mechanism, \({{\varvec{\uptau}}}_{s}^{{}} = \left( {\begin{array}{*{20}c} {\tau_{4} } & {\tau_{5} } \\ \end{array} } \right)^{{\text{T}}}\), \(\tau_{i}\)(\(i = {4,5}\)) represents the driving torque of the actuated joint in the A/C wrist, \(i_{{w{,}j}}\) is the gear ratio. \(n_{{sk{,}i}}\) and \(n_{{ek{,}i}}\)(\(k = {1,2,3,4}\)) refer to the number of components considering inertia force (torque) or gravity, as shown in Table 1.

Table 1 The number of components considering inertia force (torque) or gravity.

By rewriting Eq. (18) into matrix form, the dynamic equation of the hybrid robot can be obtained

$$ {{\varvec{\uptau}}} = \left( {\begin{array}{*{20}c} {{{\varvec{\uptau}}}_{p} } \\ {{{\varvec{\uptau}}}_{s} } \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} { - \frac{p}{{2{\uppi }}}{\mathbf{J}}^{{ - {\text{T}}}} \left( {{\mathbf{F}}_{p} + {\mathbf{F}}_{{C_{5,4} }} + {\mathbf{F}}_{{G_{5,4} }} + {\mathbf{F}}_{e} + {\mathbf{J}}_{{\omega_{3,4} }}^{{\text{T}}} \left( \begin{gathered} {\mathbf{T}}_{{C_{4,4} }}^{{}} + {\mathbf{T}}_{{C_{5,4} }} + {\mathbf{T}}_{{\omega_{4,4} }} + {\mathbf{T}}_{{\omega_{5.4} }} \hfill \\ + {\mathbf{T}}_{e} + \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{F}}_{e} \hfill \\ \end{gathered} \right)} \right) + \frac{{2{\uppi }}}{p}I_{s} {\mathbf{\ddot{q}}}} \\ { - {\text{diag}}\left[ {i_{{w{,}j}}^{ - 1} } \right]{\mathbf{J}}_{w}^{{\text{T}}} \left( \begin{gathered} {\mathbf{T}}_{{C_{5,4} }} + {\mathbf{T}}_{{\omega_{5.4} }} + {\mathbf{T}}_{e} + \left[ {{\mathbf{r}}_{PC} \times } \right]{\mathbf{F}}_{e} \hfill \\ + \left( {{\mathbf{I}}_{3} - {\mathbf{s}}_{5,4} {\mathbf{s}}_{5,4}^{{\text{T}}} } \right)\left( {{\mathbf{T}}_{{\omega_{4,4} }} + {\mathbf{T}}_{{C_{4,4} }}^{{}} } \right) \hfill \\ \end{gathered} \right) + {\text{diag}}\left[ {I_{{w{,}j}} i_{{w{,}j}}^{{}} } \right]{\mathbf{\ddot{\theta }}}} \\ \end{array} } \right) $$
(19)

where \(p\) represents lead screw pitch, \(I_{s}\) and \(I_{w,j}\) represent the inertia about their respective axes, respectively, \(i_{w,j}\) represents the transmission ratio, \({\mathbf{I}}_{3}\) is \(3 \times 3\) identity matrix, and

$$ {\mathbf{F}}_{p} = \sum\limits_{i = 1}^{4} {{\mathbf{J}}_{{\omega_{3,i} }}^{{\text{T}}} \left( {{\mathbf{T}}_{{\omega_{3,i} }} + \sum\limits_{j = 2}^{3} {{\mathbf{T}}_{{C_{j,i} }} } } \right)} + \sum\limits_{i = 1}^{3} {{\mathbf{J}}_{{\omega_{3,i} }}^{{\text{T}}} {\mathbf{T}}_{{G_{2,i} }} } + {\mathbf{J}}_{{\omega_{3,4} }}^{{\text{T}}} {\mathbf{s}}_{1,4} {\mathbf{s}}_{1,4}^{{\text{T}}} {\mathbf{T}}_{{C_{1,4} }} ,{\mathbf{T}}_{{\omega_{j,i} }} = \left( {\left[ {{\mathbf{r}}_{{\omega_{j,i} }} \times } \right] + \left[ {\left( {{}^{0}{\mathbf{R}}_{j,i} {}^{j,i}{\mathbf{r}}_{{C_{j,i} }} } \right) \times } \right]} \right)\left( {{\mathbf{F}}_{{C_{j,i} }} + {\mathbf{F}}_{{G_{j,i} }} } \right) $$
$$ {\mathbf{r}}_{{\omega_{j,i} }} = \left\{ {\begin{array}{*{20}l} {q_{3,i} {\mathbf{s}}_{3,i} } \hfill & {i = {1,2,3,4, }j = 3} \hfill \\ {\left( {q_{3,4} + e} \right){\mathbf{s}}_{4,4} } \hfill & {i = 4, \, j = 4} \hfill \\ {{\mathbf{r}}_{PC} } \hfill & {i = 4, \, j = 5} \hfill \\ \end{array} } \right. $$

It can be seen from Eq. (19) that the driving torque \({{\varvec{\uptau}}}_{p}\) of the parallel mechanism consists of two parts: (1) All external force or torque of each component of the whole system; (2) Inertia torque generated by the rotation of the lead screw around its own axis. The driving torque \({{\varvec{\uptau}}}_{s}\) of the A/C wrist consists of two parts: (1) Gravity, inertia torque and external load term of each component; (2) Inertia torque generated by the transmission mechanism of the A/C wrist. It can be seen that \({{\varvec{\uptau}}}_{s}\) has nothing to do with the gravity and inertia force of each component in the parallel mechanism.

Considering that the pose of the wrist and the load inertia around the A/C axis change little in practice7, the variation of the load inertia of each actuated joint of the parallel mechanism is the key issue that needs attention and research. The A/C wrist and the moving platform are regarded as a component, and then the rigid body dynamic equation of the parallel mechanism can be constructed according to Eqs. (16), (17) and Eq. (19) as

$$ {{\varvec{\uptau}}}_{p} = \frac{p}{{2{\uppi }}}\left( {\user2{\mathcal{M}}{\mathbf{a}}_{P} + \user2{\mathcal{H}}{\mathbf{v}}_{p} + \user2{\mathcal{G}} + \user2{\mathcal{E}}} \right) $$
(20)

where \(\user2{\mathcal{M}}\) is the inertia matrix of the parallel mechanism in the operating space; \(\user2{\mathcal{H}}\) is the Coriolis force and centrifugal force acting on the system, which is a function of the position, attitude and velocity of the moving platform; \(\user2{\mathcal{G}}\) reflects the influence of gravity; \(\user2{\mathcal{E}}\) refers to the term related to external load. For more information about the mathematical expressions of these components, please refer to26.

The above formula can also be rewritten into the general form of rigid body dynamics equation by considering friction27

$$ {{\varvec{\uptau}}}_{p} = \frac{p}{{2{\uppi }}}\left( {{\mathbf{M}}\left( {\mathbf{q}} \right){\mathbf{\ddot{q}}} + {\mathbf{H}}\left( {{\mathbf{q}}{,}{\dot{\mathbf{q}}}} \right){\dot{\mathbf{q}}} + {\mathbf{G}}\left( {\mathbf{q}} \right) + {\mathbf{E}}\left( {\mathbf{q}} \right) + {\mathbf{F}}\left( {{\dot{\mathbf{q}}}} \right)} \right) $$
(21)

where

$$ {\mathbf{M}}\left( {\mathbf{q}} \right) = \user2{\mathcal{M}}{\mathbf{J}}^{ - 1} ,{\mathbf{H}}\left( {{\mathbf{q}}{,}{\dot{\mathbf{q}}}} \right) = \left( {\user2{\mathcal{H}} - \user2{\mathcal{M}}{\mathbf{J}}^{ - 1} {\dot{\mathbf{J}}}} \right){\mathbf{J}}^{ - 1} ,{\mathbf{G}}\left( {\mathbf{q}} \right) = \user2{\mathcal{G}},{\mathbf{E}}\left( {\mathbf{q}} \right) = \user2{\mathcal{E}},{\mathbf{F}}\left( {{\dot{\mathbf{q}}}} \right) = \left( {\begin{array}{*{20}c} {F_{3,1} } & {F_{3,2} } & {F_{3,3} } \\ \end{array} } \right)^{{\text{T}}} $$
$$ F_{3,i} = f_{c} {\text{sgn}} \left( {\dot{q}_{3,i} } \right) + \left( {f_{s} - f_{c} } \right)e^{{ - \left( {{{\dot{q}_{3,i} } \mathord{\left/ {\vphantom {{\dot{q}_{3,i} } {\dot{q}_{s} }}} \right. \kern-0pt} {\dot{q}_{s} }}} \right)^{2} }} {\text{sgn}} \left( {\dot{q}_{3,i} } \right) + f_{v} \dot{q}_{3,i} ,i = 1,2,3 $$

The inertia matrix of the parallel mechanism in the joint space is only related to the joint position. Let \(M_{i}\) represents the main diagonal element of \({\mathbf{M}}\left( {\mathbf{q}} \right)\), then the load inertia can be calculated by \(I_{i} = \frac{{p^{2} }}{{4{\uppi }^{2} }}M_{i}\). Here, \(F_{3,i}\) represents the friction force of the i-th actuated joint, \(f_{s}\), \(f_{c}\) and \(f_{v}\) denote the static, Coulomb, and viscous friction parameters, respectively. It is worth noting that the static and Coulomb friction forces vary with the normal forces, leading to \(f_{s}\) and \(f_{c}\) should be identified accordingly28.

Inertia fast estimation

Analysis of inertia variation and grid estimation method

Due to the load inertia of the actuated joint changes with the configuration of the robot, the calculation of that is significant for motor selection, controller parameter tuning, model-based control method, etc. In this section, a fast estimation method is proposed to quickly and easily calculate the joint inertia of the robot at any configuration in the workspace.

Given the dimensional parameters in29 and the inertial parameters of the main components measured in the body-fixed frames extracted from the CAD model in Table 2, the variation of the joint load inertia in the whole circular workspace is calculated and shown in Fig. 5. Here, 600 × 600 uniformly distributed sample points in the circular workspace are selected, and then the load inertia of each actuated joint at these sample points is calculated by using the dynamic model. Equipped with the inertia information at hand, the contour map can be drawn as shown in Fig. 5. It can be seen from the figure that \(I_{i}\) is distributed in an approximate concentric ellipse from the center to the boundary. The gradient closer to the boundary in the direction of the minor axis of the ellipse is larger, and the fluctuation amount can reach 37%. Here, the circular workspace refers to the 2D workspace of the parallel mechanism, and the 3D workspace of that can be found in reference30. Generally, to solve this kind of fitting problem, firstly divide the workspace into grids as shown in Fig. 6, then determine the sample inertia at the grid nodes through the dynamic model and the corresponding position coordinates, and finally use the inverse distance weighting method to fit the inertia at any configuration:

$$ \hat{I}_{i} \left( {{\mathbf{r}}_{P} } \right) = {{\sum\limits_{k = 1}^{N} {\frac{{I_{k,i} }}{{d_{k}^{2} }}} } \mathord{\left/ {\vphantom {{\sum\limits_{k = 1}^{N} {\frac{{I_{k,i} }}{{d_{k}^{2} }}} } {\sum\limits_{k = 1}^{N} {\frac{1}{{d_{k}^{2} }}} }}} \right. \kern-0pt} {\sum\limits_{k = 1}^{N} {\frac{1}{{d_{k}^{2} }}} }} = \sum\limits_{k = 1}^{N} {\mu_{k} I_{k,i} } $$
(22)

where \(\hat{I}_{i} \left( {{\mathbf{r}}_{P} } \right)\) represents the estimated value of the load inertia of the i-th actuated joint at the current position \({\mathbf{r}}_{P}\), \(I_{k,i}\) represents the load inertia of the i-th actuated joint at the \(k{\text{ - th}}\)(\(k = 1,2, \ldots ,N\)) sample configuration \({\mathbf{r}}_{Pk}\), \(d_{k}^{{}} = \left\| {{\mathbf{r}}_{Pk} - {\mathbf{r}}_{P} } \right\|\). It can be seen from Eq. (22) that this method belongs to a fuzzy algorithm, which estimates inertia by the membership degree \(\mu_{k}\) of the fuzzy center \(I_{k,i}\). However, this method needs to determine the sample inertia at each grid node first, which increases a lot of workload and the burden of calculation and storage.

Table 2 Inertial parameters of the TriMule robot.
Figure 5
figure 5

Contours of inertia in the task workspace.

Figure 6
figure 6

Inverse distance weighting method.

Therefore, it is expected that the global inertia variation can be fitted using only a few sample data. Figure 7a shows the method of using 5 sample points as fuzzy centers to fit the inertia. Then, the inertia at any configuration can be estimated by using the triangle-shape grade of the membership function:

$$ \hat{I}_{i} \left( {{\mathbf{r}}_{P} } \right) = \sum\limits_{k = 1}^{5} {\mu_{k} I_{k,i} } ,\mu_{k} = \left\{ {\begin{array}{*{20}l} {\frac{{R - d_{k} }}{R}} \hfill & {d_{k} \le R} \hfill \\ 0 \hfill & {d_{k} > R} \hfill \\ \end{array} } \right.,d_{k} = \left\| {{\mathbf{r}}_{P} - {\mathbf{r}}_{Pk} } \right\| $$
(23)

where \(R\) represents the radius of the workspace, \(\mu_{k}\) represents the membership degree of the inertia at the current configuration \({\mathbf{r}}_{P}\) with respect to the inertia at the fuzzy central configuration \({\mathbf{r}}_{Pk}\). Figure 7b shows three general cases of the fuzzy estimation by taking the \(P_{1} - P_{4} - P_{5}\) region as an example. Case 1: the calculation of inertia is only affected by \(P_{1}\) and \(P_{4}\); Case 2: the calculation of inertia is affected by \(P_{1}\), \(P_{4}\) and \(P_{5}\); Case 3: the calculation of inertia is only affected by \(P_{1}\) and \(P_{5}\). It can be seen that this method makes the inertia calculation only depend on the inertia information of the surrounding 2–3 points. In order to verify the effectiveness of this method, the fitting of the inertia of \(P_{6}\) and \(P_{7}\) is analyzed as shown in Fig. 8. In the figure, \(P_{6}\) and \(P_{4}\) are on the same inertia isoline. The calculation of the inertia at \(P_{6}\) is not only affected by the inertia at \(P_{4}\), but also affected by that at \(P_{1}\). Obviously, Data at \(P_{1}\) is an interference factor. \(P_{7}\) and \(P_{5}\) are on the same inertia isoline. The calculation of the inertia at \(P_{7}\) is affected by the inertia at \(P_{5}\), \(P_{1}\) and \(P_{3}\). Here, data at \(P_{1}\) and \(P_{3}\) are the interference factors. It can be seen that when the number of points as fuzzy centers is small, the estimation of inertia is not accurate if the uniformly distributed fuzzy centers are simply selected. Therefore, the variation of inertia should be further considered when determining the fuzzy center point and constructing the membership function.

Figure 7
figure 7

Inertia fitting by fuzzy method.

Figure 8
figure 8

Analysis of the proposed method.

Circle membership function fitting

By observing the inertia distribution shown in Fig. 5, it can be seen that the inertia isoline is distributed in the shape of an approximate concentric ellipse, so it is advisable to select the fuzzy center in the direction of the minor axis of the ellipse, and then choose the triangular membership function for fitting, as shown in Fig. 9. In the figure, \(P_{1}\), \(P_{2}\), \(P_{3}\) represent the points on the isoline corresponding to the minimum value, global mean value and maximum value of inertia, respectively. Let \(P_{1}\) be fixed, \(P_{2}\) moves on the circle with \(P_{1}\) as the center and \(\left| {P_{1} P_{2} } \right|\) as the radius, and \(P_{3}\) moves on the circle with \(P_{1}\) as the center and \(\left| {P_{1} P_{3} } \right|\) as the radius, then the influence range of these points can cover the whole circular workspace. Accordingly, the algorithm of Eq. (23) is improved as follows:

$$ \hat{I}_{i} \left( {{\mathbf{r}}_{P} } \right) = \sum\limits_{k = 1}^{3} {\mu_{k} I_{k,i} } ,\mu_{k} = \left\{ {\begin{array}{*{20}l} {\frac{{R_{k} - d_{k} }}{{R_{k} }}} \hfill & {d_{k} \le R_{k} } \hfill \\ 0 \hfill & {d_{k} > R_{k} } \hfill \\ \end{array} } \right. $$
(24)

where

$$ R_{k} = \left\{ {\begin{array}{*{20}l} {r_{1} } \hfill & {k = 1} \hfill \\ {r_{2} - r_{1} } \hfill & {k = 2} \hfill \\ {r_{2} - r_{1} } \hfill & {k = 3} \hfill \\ \end{array} } \right.,d_{k} = \left\{ {\begin{array}{*{20}l} {\left\| {{\mathbf{r}}_{P} - {\mathbf{r}}_{P1} } \right\|} \hfill & {k = 1} \hfill \\ {\left| {r_{1} - \left\| {{\mathbf{r}}_{P} - {\mathbf{r}}_{P1} } \right\|} \right|} \hfill & {k = 2} \hfill \\ {\left| {r_{2} - \left\| {{\mathbf{r}}_{P} - {\mathbf{r}}_{P1} } \right\|} \right|} \hfill & {k = 3} \hfill \\ \end{array} } \right.,r_{1} = \left\| {{\mathbf{r}}_{P2} - {\mathbf{r}}_{P1} } \right\|,r_{2} = \left\| {{\mathbf{r}}_{P3} - {\mathbf{r}}_{P1} } \right\| = R $$
Figure 9
figure 9

Improved fuzzy fitting method.

Here \({\mathbf{r}}_{P1}\), \({\mathbf{r}}_{P2}\), \({\mathbf{r}}_{P3}\) represent the position vectors of \(P_{1}\), \(P_{2}\), \(P_{3}\) in frame \(\left\{ {R_{0} } \right\}\).

According to Eq. (24), the circle membership function (CMF) covering the whole workspace can be drawn, as shown in Fig. 10. Employed by the membership function and the inertia information shown in Table 3, the variation of the load inertia of each actuated joint in the whole workspace is fitted, as shown in Fig. 11. It can be seen from the figure that the fitting results are similar to the theoretical results shown in Fig. 5. However, since the membership function is constructed by scanning the entire workspace along the circular track using the triangular membership function, the fitted isoline is still quite different from the approximate elliptical isoline in Fig. 5.

Figure 10
figure 10

Circle membership function.

Table 3 Configuration information for constructing circle membership function.
Figure 11
figure 11

Fitting results of circle membership function.

Ellipse membership function fitting

The membership function is constructed by scanning the entire workspace along the elliptical track instead of the circular track, as shown in Fig. 12. In the figure, \(a_{k}\) and \(b_{k}\) represent the length of the long semi axis and the short semi axis of the ellipse, respectively. Then the ellipse membership function (EMF) can be constructed by

$$ \mu_{1} = \left\{ {\begin{array}{*{20}l} 1 \hfill & {d \le r_{1} } \hfill \\ {\frac{{r_{2} - d}}{{r_{2} - r_{1} }}} \hfill & {r_{1} \le d \le r_{2} } \hfill \\ 0 \hfill & {d \ge r_{1} } \hfill \\ \end{array} } \right.,\mu_{2} = \left\{ {\begin{array}{*{20}c} 0 & {d \le r_{1} } \\ {\frac{{d - r_{1} }}{{r_{2} - r_{1} }}} & {r_{1} \le d \le r_{2} } \\ {\frac{{r_{3} - d}}{{r_{3} - r_{2} }}} & {r_{2} \le d \le r_{3} } \\ 0 & {d \ge r_{3} } \\ \end{array} } \right.,\mu_{3} = \left\{ {\begin{array}{*{20}l} 0 \hfill & {d \le r_{2} } \hfill \\ {\frac{{d - r_{2} }}{{r_{3} - r_{2} }}} \hfill & {r_{2} \le d \le r_{3} } \hfill \\ 1 \hfill & {d \ge r_{3} } \hfill \\ \end{array} } \right. $$
(25)

where

$$ d = \left\| {{\mathbf{r}}_{P} - {\mathbf{r}}_{P0} } \right\|,r_{k} = \left\{ {\begin{array}{*{20}c} 0 & {k = 1} \\ {\sqrt {a_{k}^{2} {\text{cos}}^{2} \theta_{k} + b_{k}^{2} {\text{sin}}^{2} \theta_{k} } } & {k = 2{,}3} \\ \end{array} } \right.,\theta_{k} = {\text{arctan}}\left( {\frac{{b_{k} }}{{a_{k} }}{\text{tan}}\varphi_{k} } \right),{\text{tan}}\varphi_{k} = \frac{{\left\| {\left( {{\mathbf{r}}_{Pak} - {\mathbf{r}}_{P1} } \right) \times \left( {{\mathbf{r}}_{P} - {\mathbf{r}}_{P1} } \right)} \right\|}}{{\left( {{\mathbf{r}}_{Pak} - {\mathbf{r}}_{P1} } \right)^{{\text{T}}} \left( {{\mathbf{r}}_{P} - {\mathbf{r}}_{P1} } \right)}} $$
Figure 12
figure 12

Ellipse membership function.

Here \(\theta_{k}\) represents the parameter angle of the elliptic parametric equation, \({\mathbf{r}}_{P1}\) and \({\mathbf{r}}_{Pak}\) represent the position vectors of the ellipse center point \(P_{1}\) and the major axis vertex \(P_{ak}\), respectively. Accordingly, given the parameters shown in Table 4, the membership function covering the whole workspace is drawn, as shown in Fig. 13. The variation of the load inertia of each actuated joint in the whole workspace is fitted as shown in Fig. 14. It can be seen from the figure that the fitting results are very close to the theoretical results shown in Fig. 5.

Table 4 Configuration information for constructing ellipse membership function (m).
Figure 13
figure 13

Ellipse membership function.

Figure 14
figure 14

Fitting results of ellipse membership function.

Verification

Simulations

In this section, simulations will be carried out to verify the effectiveness of the proposed methods. The simulations are designed to examine two important issues: (1) the accuracy of calculating inertia; (2) the simplicity and fastness of the algorithms.

Figures 15 and 16 show the errors of the fitting results of Figs. 11 and 14 relative to the theoretical results of Fig. 5 respectively. The maximum values and global mean values of the errors are shown in Table 5. It can be seen that the maximum values and the global mean values of the fitting errors of the elliptic membership function are within \(0.22 \times 10^{ - 3} \,{\text{kg}}\,{\text{m}}^{2}\) and \(0.26 \times 10^{ - 4} \,{\text{kg}}\,{\text{m}}^{2}\) respectively. Compared with the fitting errors of the circle membership function, the maximum value and the global mean value of the fitting errors of joint 1 are reduced by 39.18% and 65.79%, and those of joint 2 and 3 are reduced by 51.23% and 81.25%, which proves that the ellipse membership function has better global fitting accuracy.

Figure 15
figure 15

Fitting errors of circle membership function.

Figure 16
figure 16

Fitting errors of ellipse membership function.

Table 5 Fitting errors of two membership functions (\(\times 10^{ - 3} \,{\text{kg}}\,{\text{m}}^{2}\)).

Table 6 shows the memory space occupied and computation time of the three algorithms: the dynamic model-based estimating algorithm, the grid estimating algorithm, and the fuzzy estimating algorithm with the ellipse membership function. It can be seen from the table that the memory space of the grid estimating algorithm is much larger than that of other algorithms. Here, the inertia values of 900 × 900 grid nodes occupy 10,421.06 kb and the inverse distance weighting calculation occupies only 1.41 kb, leading to a large amount of offline identification work and fewer online computing burden. The fuzzy estimating algorithm with the ellipse membership function occupies the minimum memory space, which can perform one operation within 4 ms less than the trajectory interpolation period of 10 ms.

Table 6 The memory space occupied and computation time of the three estimating algorithms.

Experiments

In this section, the proposed method for inertia fast estimation will be verified by experiments. Figure 17 shows the realized prototype of the TriMule robot and the verifying path. Equipped with an IPC + Turbo PMAC-PCI CNC system, the robot can move the platform reference point P at a maximum speed and acceleration of 60 m/min and 10 m/s2, respectively.

Figure 17
figure 17

The prototype of the TriMule robot and the verifying path.

To verify the effectiveness of the new estimation algorithm, the circular path was planned with R = 0.3 m, H = 1.2 m, h = 0.19 m by taking the values of 30 m/min and 5 m/s2 for the maximum velocity and acceleration of P along the path. The driving torque of each actuated joint is measured from the servo driver by employing the data acquisition card and Labview program. Figure 18 shows the driving torque of each actuated joint with time obtained by measurement experiments (ME), calculation using the dynamics model (CDM) and estimation using the proposed method (EPM). Here, the inertial torques are computed by CDM or EPM and the other torque components are computed by using the same dynamic model. It can be seen that three torque curves are similar and the root mean squares (RMS) of errors with CDM or EPM relative to ME listed in Table 7 are within \(0.7\,{\text{N}}\,{\text{m}}\). These deviations are caused by the fitting errors of the elliptical membership function as shown in Fig. 16, which is within an acceptable range. As compensation, the proposed method has a lower computational complexity compared to using the dynamic model, leading to the reduction of the computational memory burden.

Figure 18
figure 18

The driving torque of each actuated joint with time.

Table 7 The RMS of joint torque errors along the verifying path.

Conclusions

This paper presents the dynamic formulation and a method for inertia fast estimation of a hybrid robot. The conclusions are drawn as follows.

  1. (1)

    Based on the analysis of kinematics and rigid body dynamics, the distribution of the load inertia of each actuated joint of the parallel mechanism in the whole workspace is revealed, and the isolines of that are approximately concentric ellipses.

  2. (2)

    The method for fitting the inertia distribution, which only uses the inertia information of a few configurations, is proposed using the circle or elliptical membership function. The results show that the elliptical membership function has better global fitting accuracy in comparison with the circle membership function and the torque estimation accuracy is within an acceptable range.

  3. (3)

    The proposed method is also applicable to the off-diagonal elements of the inertia matrix (joint couplings) and the joint load inertia of other parallel mechanisms. It can be used to quickly predict other control variables (PID parameters and acceleration feedforward parameters) affected by the inertia, allowing the algorithm to be easily integrated into the robot control system.