1 Introduction

Riveting is one of the major methods applied in aircraft assembly [1]. Nowadays, aircraft component assembly is mainly accomplished by riveting, and the quality of riveting immediately impacts the performance and safety of the aircraft [2]. Traditionally, aircraft assembly mainly relies on manual drilling and riveting. The efficiency of manual drilling and riveting is very low. Generally, an aircraft includes plenty of panels. Their assembly is complex, difficult and time consuming [3].

Compared to manual riveting, robot riveting can improve the quality and efficiency for aircraft assembly. Robotic automatic drilling and riveting system has now become a tendency in place of traditional hand operations in aircraft industry around the world [4, 5].

For percussive robotic riveting, the end-effector is subject to significant vibrations resulting from the percussive rivet gun, and the vibration in turn seriously influences the riveting accuracy and quality. For industrial robots, joint shafts are usually considered flexible, while links are deemed as rigid. Therefore, the main source of the robot vibration lies in robot joints.

The development of a percussive robotic riveting system requires dynamic modeling of percussive riveting process for robot motion planning and vibration analysis [6]. To improve the dynamic performance and ensure system stability, it is necessary to establish a dynamic model. Over the last two decades, a great deal of research has been done on the dynamic modeling of flexible joint robots. The common method is to combine rigid link dynamics with flexible joint vibration analysis [711].

Analysis of the riveting process is highly complex due to nonlinear behavior resulting from different conditions. There are numerous riveting points on a large-size aircraft panel, according to a standard rivet pattern. It is essential to plan a riveting sequence appropriately to ensure the efficiency and accuracy of robotic drilling and riveting [3]. However, most of the published papers on riveting focus on the analysis of riveted joint life and load distribution in and around the rivet hole. Our research is conducted to examine how the robot behaves when it is constantly subject to impact forces. Thus it is important to find out the suitable regions for riveting. In this paper, a method is presented for modeling and simulation, and an appropriate trajectory can be obtained.

2 Experimental setup

A testbed is developed for robotic drilling and percussive riveting. This system includes four robots, a piece of sheet metal, and a set of tooling including drill, rivet gun and supports. As shown in Fig. 1, a Fanuc M-20iA robot is used to hold and drive the percussive rivet gun. Two Kawasaki JS010G-A robots perform the role of holding and fastening the sheet metal, and an ABB IRB 2600 robot is used to support the sheet metal from behind.

Fig. 1
figure 1

Robotic riveting test bed system

This system is aimed at stimulating actual drilling and riveting process to replace manual operation. In the test, the Fanuc robot moves the rivet gun along a pre-planned path and the ABB moves in synchronization with the Fanuc robot to provide the support. The sheet metal is used to simulate the component that requires riveting for aircraft assembly.

Figure 2 shows the actual drilling and riveting process carried out on the testbed. The rivet gun shown in Fig. 3 is mounted on the end-effector of the Fanuc robot shown in Fig. 4. This is a 6 degree of freedoms (DOFs) robot and the first 3 joints from the base are selected for the study of robot vibration under gun percussion.

Fig. 2
figure 2

Robot riveting tests

Fig. 3
figure 3

Changeable unit

Fig. 4
figure 4

Rivet robot

The remaining paper is organized as follows. A rigid link dynamic model is presented in Sect. 3 to compute the driving torque for each joint. Joint vibration responses are analyzed under impact in Sect. 4.

3 Rigid link dynamic modeling

The dynamic equation of a rigid link robot can be written in the joint space as

$$ {\varvec{M}}(\theta )\mathop {\ddot{\theta}} +\, {\varvec{H}}(\theta ,\mathop {\dot{\theta}} ) + {\varvec{G}}(\theta ) + {\varvec{J}}^{\text{T}} {\varvec{F}} = {\varvec{\tau}} ,$$
(1)

where \( {\varvec{M}}(\theta ) \) is an n × n positive definite symmetric mass matrix; the n × 1 vector \( {\varvec{H}}(\theta ,\mathop {\dot{\theta}}) \)contains all the nonlinear (Coriolis and centrifugal) forces; \( {\varvec{G}}(\theta ) \) is an n × 1 gravity vector; \( {\varvec{J}} \) is a 3 × n Jacobian matrix; \( {\varvec{F}} \) is a 3 × 1 vector representing the external forces acting on the end effector; \( {\varvec{\tau}} \) is the joint driving torque and \( {\varvec{M}} (\theta )\mathop {\ddot{\theta}}\) is an inertial force. The diagonal elements in mass matrix \( {\varvec{M}} \) represent the effective inertia for each link, and the non-diagonal elements represent the inertia coupling between links. \( {\varvec{H}}(\theta ,\mathop {\dot{\theta}}) \) includes two parts. One is proportional to the square of joint velocity, i.e., the centrifugal force produced by joint angular velocity. The other is proportional to the product of the velocity of adjacent joints, known as the Coriolis force.

In the modeling, the impact force from the rivet gun is not treated as an external force for rigid link dynamics. It will be included as an excitation for joint vibration. Hence, the driving torques of the robot joints only change with the joint angle θ, joint velocity \( \dot{\theta } \) and joint acceleration \( \ddot{\theta } \).

For a rigid link, the inertia tensor \( {\varvec{I}} \) is defined as a 3 ×3 symmetric matrix

$$ {\varvec{I}} = \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {} \\ \end{array} I_{xx} } & { - I_{xy} } & { - I_{xz} } \\ { - I_{xy} } & {\begin{array}{*{20}c} {} \\ \end{array} I_{yy} } & { - I_{yz} } \\ { - I_{xz} } & { - I_{yz} } & {I_{zz} } \\ \end{array} } \right]. $$
(2)

The diagonal elements of \( {\varvec{I}} \) represent the inertia mass around three axes of x, y, z of the link local the coordinate system. If three axes are line with the principle axes of \( {\varvec{I}} \), the non-diagonal elements will become zero.

To solve dynamics, different coordinate systems should be analyzed. Here, \( {\varvec{p}}_{i} \) represents the tip position of the i-th link in the global coordinate system; \( {\varvec{c}}_{i} \) represents the centroid position of the i-th link in the local coordinate system, and \( {\varvec{r}}_{i} \) represents the centroid position of the i-th link in the global coordinate system. They can be expressed as [12]

$$ {\varvec{p}}_{1} = \left[ {\begin{array}{*{20}c} 0 \\ 0 \\ 0 \\ \end{array} } \right],\,{\varvec{p}}_{2} = \left[ {\begin{array}{*{20}c} {a_{2} c_{1} c_{2} } \\ {a_{2} s_{1} c_{2} } \\ { - a_{2} s_{2} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {p_{2x} } \\ {p_{2y} } \\ {p_{2z} } \\ \end{array} } \right],\,\,{\varvec{p}}_{3} = \left[ {\begin{array}{*{20}c} {a_{2} c_{1} c_{2} + a_{3} c_{1} c_{23} } \\ {a_{2} s_{1} c_{2} + a_{3} c_{1} c_{23} } \\ { - a_{3} s_{2} - a_{3} s_{23} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {p_{3x} } \\ {p_{3y} } \\ {p_{3z} } \\ \end{array} } \right],\,\,{\varvec{r}}_{i} = \left[ {\begin{array}{*{20}c} {r_{ix} } \\ {r_{iy} } \\ {r_{iz} } \\ \end{array} } \right],\,\,{\varvec{c}}_{i} = \left[ {\begin{array}{*{20}c} {c_{ix} } \\ {c_{iy} } \\ {c_{iz} } \\ \end{array} } \right],\, $$
(3)

where \( {\varvec{r}}_{1} = {\varvec{c}}_{1} ,{\varvec{r}}_{2} = {\varvec{c}}_{2} ,{\varvec{r}}_{i} = {\varvec{p}}_{i - 1} + {\varvec{c}}_{i} ,i = 1,2,3. \)

In general, the relation between the three coordinate systems can be seen in Fig. 5. For the Fanuc robot as shown in Fig. 4, the coordinates of the end-effector X, Y, Z can be expressed as

Fig. 5
figure 5

Base coordinate system

$$ \left[ {\begin{array}{*{20}c} X \\ Y \\ Z \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {a_{2} c_{1} c_{2} + a_{3} c_{1} c_{23} } \\ {a_{2} s_{1} c_{2} + a_{3} s_{1} c_{23} } \\ { - a_{2} s_{2} - a_{3} s_{23} } \\ \end{array} } \right] , $$
(4)

where c i  = cos θ i , s i  = sin θ i , c ij  = cos (θ i  + θ j ), s ij  = sin (θ i  + θ j ). From Eq. (4), the joint angles can be derived as

$$ \left\{ {\begin{array}{*{20}c} {\theta_{1} = { \arctan }\left( {{\raise0.7ex\hbox{$Y$} \!\mathord{\left/ {\vphantom {Y X}}\right.\kern-0pt} \!\lower0.7ex\hbox{$X$}}} \right),} \\ {\theta_{2} = \arccos \left( {\frac{{\sqrt {X^{2} + Y^{2} } }}{d}} \right) - \arccos \left( {\frac{{d^{2} + a_{2}^{2} - a_{3}^{2} }}{{2da_{2} }}} \right)} \\ {\theta_{3} = \pi - \arccos \left( {\frac{{d^{2} + a_{3}^{2} - a_{2}^{2} }}{{2da_{3} }}} \right),} \\ \end{array} } \right., $$
(5)

where d represents the distance from the end effector to the coordinate origin, and a i (i = 1, 2, 3) represent the link length.

Since the first three joints of the robot are used for positioning, the linear velocity of the end-effector is considered as

$$ \left[ {\begin{array}{*{20}c} {\mathop {\dot{X}} } \\ {\mathop {\dot{Y}} } \\ {\mathop {\dot{Z}} } \\ \end{array} } \right] = {\varvec{J}}\left[ {\begin{array}{*{20}c} {\mathop {{\dot{\theta}}_{1} } } \\ {\mathop {\dot{{\theta}}_{2} } } \\ {\mathop {{\dot{\theta}}_{3} } } \\ \end{array} } \right] . $$
(6)

The explicit relation of Eq. (6) can be derived by taking the first derivative of Eq. (4), leading to the Jacobian matrix as

$$ \begin{gathered} {\varvec{J}}_{1} = \left[ {\begin{array}{*{20}c} { - a_{2} s_{1} c_{2} - a_{3} s_{1} c_{23} } \\ {a_{2} c_{1} c_{2} + a_{3} c_{1} c_{23} } \\ 0 \\ \end{array} } \right],\,\,{\varvec{J}}_{2} = \left[ {\begin{array}{*{20}c} { - a_{2} c_{1} s_{2} - a_{3} c_{1} s_{23} } \\ { - a_{2} s_{1} s_{2} - a_{3} s_{1} s_{23} } \\ { - a_{2} c_{2} - a_{3} c_{23} } \\ \end{array} } \right],\,\,{\varvec{J}}_{3} = \left[ {\begin{array}{*{20}c} { - a_{3} c_{1} {\text{s}}_{23} } \\ { - a_{3} s_{1} s_{23} } \\ { - a_{3} c_{23} } \\ \end{array} } \right],\, \hfill \\ {\varvec{J}} = \left[ {\begin{array}{*{20}c} {{\varvec{J}}_{1} } & {{\varvec{J}}_{2} } & {{\varvec{J}}_{3} } \\ \end{array} } \right]. \hfill \\ \end{gathered}\, $$
(7)

Taking the second derivative of Eq. (6), the equation for accelerations can be obtained as

$$ \left[ {\begin{array}{*{20}c} {\mathop {\ddot{X}} }\, \\ {\mathop {\ddot{Y}} }\, \\ {\mathop {\ddot{Z}} }\, \\ \end{array} } \right] = {\varvec{J}}\left[ {\begin{array}{*{20}c} {\mathop {{\ddot{\theta}}_{1} } }\, \\ {\mathop {\ddot{{\theta}}_{2} }}\, \\ {\mathop {{\ddot{\theta}}_{3} } }\, \\ \end{array} } \right] + \mathop{{{\dot{\varvec{J}}}}} \left[ {\begin{array}{*{20}c} {\mathop {{\dot{\theta}}_{1} } }\, \\ {\mathop {{\dot{\theta}}_{2} } }\, \\ {\mathop {{\dot{\theta}}_{3} } }\, \\ \end{array} } \right] . $$
(8)

For computation, a trajectory is defined with path, velocity and acceleration of the end-effector, then the joint angles, velocities and accelerations can be computed. After computing \( {\varvec{M}} \), \( {\varvec{G}} \) and \( {\varvec{H}} \), the joint torques can be expressed as

$$ {\varvec{M}}(\theta )\mathop {\ddot{\theta}} +\, {\varvec{H}}(\theta ,\mathop {\dot{\theta}} ) + {\varvec{G}}(\theta ) = {\varvec{\tau}} . $$
(9)

It is noted that the impact force is not included. For the first three points, Eq. (9) can be expanded as

$$ \left[ {\begin{array}{*{20}c} {M_{11} } & {M_{12} } & {M_{13} } \\ {M_{21} } & {M_{22} } & {M_{23} } \\ {M_{31} } & {M_{32} } & {M_{33} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} {H_{1} } \\ {H_{2} } \\ {H_{3} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} {G_{1} } \\ {G_{2} } \\ {G_{3} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\tau_{1} } \\ {\tau_{2} } \\ {\tau_{3} } \\ \end{array} } \right] . $$
(10)

4 Flexible joint vibration responses

Vibration includes free and forced vibration. Free vibration is mainly concerned about natural frequency for the purpose of resonance avoidance. Forced vibration is concerned about vibration under external excitation.

4.1 Vibration response

As mentioned before, the main source of industrial robot vibration is joint flexibility [13]. In the vibration analysis, it is assumed that all the links are rigid, while all the joints are flexible [14]. Vibration will affect position accuracy, causing fatigue and safety issue [15]. Thus it is necessary to analyze the vibration response.

The free vibration analysis is carried out using a set of homogenous equations. The free vibration of the robot can be obtained as

$$ {\varvec{M}}\mathop {\ddot{\delta}} +\, {\varvec{K}}\delta = 0 , $$
(11)

where δ the angular amplitude of the joint vibration, \( {\varvec{M}} \) the mass matrix, \( {\varvec{K}} \) the stiffness matrix. In this study the damping is neglected.

From Eq. (11), it can be seen that natural frequency is determined by solving the following eigen value problem

$$ \det \left( {{\varvec{M}}^{ - 1} {\varvec{K}} - \omega^{2} {\varvec{I}}} \right) = 0 , $$
(12)

where ω is the natural frequency. Natural frequency depends on stiffness matrix \( {\varvec{K}} \) and mass matrix \( {\varvec{M}} \). Both are functions of the robot configuration. The robot is always moving and changing its configuration. Therefore, robot natural frequency is varying. Since robot natural frequency is always changing, it can make sense of analyzing the frequency response over the robot workspace.

Nearly all actual vibrating systems are nonlinear [16]. Under riveting, the equation of the forced vibration can be written as

$$ {\varvec{M}}\mathop {\ddot{\delta}} +\,{\varvec{K}}\delta = {\varvec{Q}} , $$
(13)

where \( {\varvec{Q}} \) is the force vector which can be determined by \( {\varvec{J}}^{\text{T}} {\varvec{F}} \). Here, \( {\varvec{J}} \) is the Jacobian matrix, and \( {\varvec{F}} \) is the impact force. Thus, Eq. (13) becomes

$$ {\varvec{M}}\mathop {\ddot{\delta}} +\, {\varvec{K}}\delta = {\varvec{J}}^{\text{T}} {\varvec{F}} . $$
(14)

To solve Eq. (14), the state space equation for the forced vibration can be written as

$$ \left[ {\begin{array}{*{20}c} {\mathop {\dot{\delta}} }\, \\ {\mathop {\ddot{\delta}} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\bf{0}} & {\varvec{I}} \\ { - {\varvec{M}}^{ - 1} {\varvec{K}}} & {\bf{0}} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} \delta \\ {\mathop {\dot{\delta}} }\, \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} {\bf{0}} \\ {{\varvec{M}}^{ - 1} {\varvec{J}}^{\text{T}} {\varvec{F}}} \\ \end{array} } \right] , $$
(15)

where δ, \( \dot{{\delta}} \) are selected as the state variations. 0 is a 3 × 3 zero matrix, and \( {\varvec{I}} \) is a unit matrix.

In the process of riveting, an impact force is applied by the rivet gun at a certain frequency. In this paper, vibration response is obtained for the defined trajectory first to validate the reliability. The reachable region for the rivet gun is also analyzed. Due to vibration, pure motion or trajectory planning is not enough, and the vibration response should be analyzed in the reachable space for path planning in order to avoid dangerous regions.

4.2 Workspace search

Only one trajectory suitable for riveting obviously is not enough. To satisfy the application and avoid the dangerous regions, the suitable region for riveting should be tested for vibration.

Theoretically, the workspace of the robot under study is a ball whose radius is the length summation of links 2 and 3. The suitable region is within the workspace. To determine suitable regions, each joint should rotate from 0° to 360°. The results of the vibration response should be examined. The regions with large vibration are deemed non-suitable regions which should be avoid riveting. The remaining regions are the suitable regions. If riveting is carried out within these regions, the robot will work properly with the minimal vibration.

5 Simulations

5.1 Rigid link dynamics

The mass, link length, inertia and stiffness are listed in Table 1. The mass and link length corresponds to the three links. The inertias are diagonal elements of the inertia matrix \( {\varvec{I}} \). \( {\varvec{K}} \) is obtained from the parameters of the robot material. The value of impact force \( {\varvec{F}} \) is defined as 1 300 N.

Table 1 Robot parameters

Figure 6 shows a trajectory for riveting for this simulation. The holes are produced through drilling. In Fig. 6, the circles can be considered as the drilling holes on the sheet metals before the riveting test. The rivet will be riveted into these holes in the riveting test. The riveting process will start from the first hole to the end, one after another.

Fig. 6
figure 6

Trajectory for riveting

In riveting process, the rivet gun moves along the defined trajectory. According to the simulated robotic dynamics, the curves of the joint torque can be obtained, such as without impact force (see Fig. 7), the gravity vector (see Fig. 8), the torque from the impact force (see Fig. 9), and the total joint torque (see Fig. 10). By comparing these curves, it can be seen that the shapes and values of the curves in Figs. 7 and 8 are approximately the same. The shapes of Figs. 9 and 10 are similar. The value gap is relatively small compared with the torque for impact force. Hence it can be concluded as following.

Fig. 7
figure 7

Joint torque without impact force

Fig. 8
figure 8

Gravity vector

Fig. 9
figure 9

Torque for impact force

Fig. 10
figure 10

Total joint torque

  1. (i)

    The gravity vector determines the joint driving torques without impact force. To reduce the joint torque, the lighter materials should be used for the links if allowed.

  2. (ii)

    The impact force determines the total torques and it can be as great as possible as long as the joint can withstand.

5.2 Joint vibration response in riveting process

The results of vibration response in the riveting trajectory can be simulated as follows. Ode45 from MATLAB is used to solve Eq. (15). Ode is designed for solving differential equations, and it is also used to solve the nonstiff ordinary differential equations. Thus the result of the vibration response can be obtained.

The result of the vibration response is the angular displacement for each joint shaft. In Fig. 11, the x axis is time (s), and the other one is the angular displacement. Figure 11 provides the vibration response for riveting at one hole position. Figure 12 provides the vibration response for all the riveting hole positions. Figure 11 is a part of Fig. 12. In the tests, the angular displacement for each shaft ranges basically in that limit shown in Fig. 11, though shapes may differ. As for joints 1 and 3, it is difficult to identify each riveting spot, while it is identifiable for joint 2. Since the vibration responses are stable within limits for the entire riveting path, the defined trajectory is suitable for riveting.

Fig. 11
figure 11

Vibration response for one point

Fig. 12
figure 12

Vibration response for the whole process

5.3 Workspace search

When searching over the workspace, the vibration responses vary significantly. Figure 13 shows the vibration with normal values. However Fig. 14 shows that vibrations become significant in some regions. Under repeated impact forces, the joint shaft may yield plastic deformation gradually, leading to damage. To control the robot to work at a relatively small elastic deformation, the suitable regions should be tested through vibration response analysis. And the maximum values for the riveting spots should be determined. A good method is to obtain the distribution of the simulation results by getting the maximum values.

Fig. 13
figure 13

Normal point

Fig. 14
figure 14

Abnormal point

To show the results distinctly in the reachable region, the sphere is divided into many planes. The joint angle θ 2 and θ 3 are defined as x axis and y axis respectively, and the joint angle θ 1 varies from 0° to 360°. The angle increment is defined as 10° for each joint to compute the result for each increment and check the maximum value. The simulation is carried out using MATLAB. Surf function is used to draw the distribution, because it can effectively show the result changes through color.

Figures 1517 show the distribution in the plane and the maximum values of the angular displacement, respectively. The angular displacement distribution displays the results in different spots. The simulation results demonstrate that there indeed exist greater values compared with others. The greater values in dark blue do not continue with others and appear at the corners.

Fig. 15
figure 15

Maximum value for riveting spot in reachable space with θ 1 = 30°

Fig. 16
figure 16

Maximum value for riveting spot in reachable space with θ 1 = 80°

Fig. 17
figure 17

Maximum value for riveting spot in reachable space with θ 1 = 90°

The simulation results also display that, for the angle value of θ 1, close to 90°, there are very few large values, as shown in Fig. 18. In other cases, there are many large values, as shown in Fig. 19.

Fig. 18
figure 18

Maximum value for riveting spot in reachable space with θ 1 = 100°

Fig. 19
figure 19

Maximum value for riveting spot in reachable space with θ 1 = 150°

6 Conclusions

Dynamic modeling of a flexible joint robot is created for the percussive riveting process. The analysis and simulation of the workspace for the riveting robot with flexible joints under percussive impact forces are presented in this paper. Though the method adopted is convensional, the joint angular dispacements can be obtained. In additon, the forced vibration response is obtained for the flexible robot. To consider the vibration response for the robot in different positions, the workspace are supposed to be studied. Thus the approapriate trajectory can be planned. Based on the simulation by the model, the following results can be found: (i) For the driving torque for joint, in the absence of impact force, gravity is dominant; (ii) The flexible joint vibration is caused by a series of impact force; (iii) The angular displacements vary with the position; (iv) The suitable regions for riveting are the regions with small vibration responses. The points with large vibration responses should be avoided riveting.