# Stiffness Modeling of Robotic-Manipulators Under Auxiliary Loadings

Alexandr Klimchik, Anatol Pashkevich, Stéphane Caro, Damien Chablat

► To cite this version:

Alexandr Klimchik, Anatol Pashkevich, Stéphane Caro, Damien Chablat. Stiffness Modeling of Robotic-Manipulators Under Auxiliary Loadings. ASME International Design Engineering Technical Conferences (IDETC) and Computers and Information in Engineering Conference (CIE), Aug 2012, Chicago, United States. 10.1115/DETC2012-70457. [hal-00693154](https://hal.science/hal-00693154)

HAL Id: hal-00693154

https://hal.science/hal-00693154

Submitted on 2 May 2012

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# STIFFNESS MODELING OF ROBOTIC-MANIPULATORS
UNDER AUXILIARY LOADINGS

Alexandr Klimchik$^{a,b}$, Anatol Pashkevich$^{a,b}$, Stéphane Caro$^b$, Damien Chablat$^b$

## KEYWORDS

Stiffness analysis, passive joints, auxiliary loading, static equilibrium, non-linear stiffness model.

## ABSTRACT

The paper focuses on the extension of the virtual-joint-based stiffness modeling technique for the case of different types of loadings applied both to the robot end-effector and to manipulator intermediate points (auxiliary loading). It is assumed that the manipulator can be presented as a set of compliant links separated by passive or active joints. It proposes a computationally efficient procedure that is able to obtain a non-linear force-deflection relation taking into account the internal and external loadings. It also produces the Cartesian stiffness matrix. This allows to extend the classical stiffness mapping equation for the case of manipulators with auxiliary loading. The results are illustrated by numerical examples.

## 1. INTRODUCTION

Manipulator stiffness modeling under internal and external loading is a relatively new research area that is important both for serial and parallel robots. In general case, these loadings may be of different nature and applied to different points/surfaces. For the stiffness modeling of robotic manipulator, it is reasonable to distinguish three main types of loading such as external loading applied to end-point, preloading in the joints and auxiliary loading applied to the intermediate points.

The *external loading* is caused mainly by an interaction between the robot end-effector and the workpiece, which is

processed or transported in the considered technological process [1]. In most of robotic research works this loading is considered as a unique one [2] [3], however existence and effect of other types have not been discussed yet.

The *internal loading* in some joints may be introduced by the designer. For instance, to eliminate backlash, the joints may include preloaded springs, which generate the force or torque even in standard "mechanical zero" configuration [4]. Though the internal forces/torques do not influence on the global equilibrium equations, they may change the equilibrium configuration and also influence on the manipulator stiffness properties. For this reason, internal preloading is used sometimes for the purpose of improving the manipulator elastic-static properties, especially in the vicinity of kinematic singularities. Another case where the internal loading exists by default, is related over-constrained manipulators that are subject of the so-called antagonistic actuating [5]. Here, redundant actuators generate internal forces and torques that are equilibrated in the frame of closed loops.

The term *auxiliary loading*, in this paper, is used to denote external loading applied to any intermediate point (surface, etc.) of the manipulator different from the end-effector. Typical example of such type of loading is the gravity that is non-negligible for heavy manipulators employed in machining applications [6]. Besides, to compensate in certain degree the gravity influence, some manipulators include special mechanisms generating external forces/torques in the opposite direction (gravity compensators). In addition, some additional forces/torques may be generated by other sources (geometrical constrains, for instance). It should be noted that the external loading caused by gravity has obvious distributed nature, but usually it can be approximated by lumped forces that applied to one or several intermediate points.

<footnote>$^a$Ecole des Mines de Nantes, 4 rue Alfred-Kastler, 44307 Nantes, France</footnote>

<footnote>$^b$Institut de Recherches en Communications et Cybernétique de Nantes, UMR CNRS 6597, France</footnote>
From point of view of stiffness analysis, the external and internal forces/torques directly influence on the manipulator equilibrium configuration and, accordingly, may modify the stiffness properties. So, they must be undoubtedly be taken into account while developing the stiffness model. However, in most of the related works the Cartesian stiffness matrix has been computed for the nominal configuration, which does not take into account influence of external/internal loading. Such approach is suitable for the case of small deflections only. For the opposite case, the most important results have been obtained in [7-10], which deal with the stiffness analysis of serial and parallel manipulators under the end-point loading. Besides, some types of the internal preloading have been in the focus of [11], [12]. However, influence of the auxiliary loading has not been studied in details yet.

To our knowledge, the most advanced stiffness model for robotic manipulator has been proposed in [6], where numerous factors have been taken into account (conventional external loading, gravity forces, antagonistic redundant actuation, etc.). However, proposed approach is hard from computational point of view. Besides, in this work the Jacobians and all their derivatives were computed not in a "true" equilibrium configuration. For this reason, since the equilibrium obviously depends on the loading magnitude, some essential issues have been omitted.

The goal of this work is to generalize the non-linear stiffness modeling technique for the case of three types of loadings: (i) the external loading applied to the end-effector, (ii) preloading in the joints and (iii) auxiliary loading applied to the intermediate node-points. The developed model is based on the VJM-technique proposed in [13], which is able to obtain the force-deflection relation and the manipulator Cartesian stiffness matrix assuming that the external loading is applied to the end-effector only.

## 2 PROBLEM STATEMENT

For stiffness modeling of serial kinematic chain with the loading applied to end-point, preloading in the joints and auxiliary loading applied to intermediate points let us use the VJM model that is presented in Fig.1. The serial chain under study consists of flexible links separated by passive and/or actuated joints. Its geometry (end-point location) is described by the vector function

$$t = g(q, \theta) \qquad (1)$$

where the vector t defines the end-point location (position and orientation (Euler angles)); the vectors $q = (q_1, q_2, ..., q_{n_1})^T$ and $\theta = (\theta_1, \theta_2, ..., \theta_{n_\theta})^T$ collect all passive and virtual joints coordinates respectively; $n_q, n_\theta$ are the sizes of q and \theta, respectively.

<figure><img src="image_2.png" /><figcaption>**Figure 1** General structure of kinematic chain with auxiliary loading and its VJM model</figcaption></figure>

Stiffness modeling for the manipulators with end-point loading and preloading in the joints have been already published in [13], However other types of loadings (here they are aggregated in the auxiliary loading) applied to intermediate points did not receive adequate attention in robotics. In practice, these loadings can be caused by gravity forces (generally they are distributed, but in practice they can be approximated by localized ones) and/or gravity compensators. These forces will be denoted as $G_j$, where $j = 1,...,n$ is the node number in the serial chain starting from the fix base (here, $j = n$ corresponds to the end-point). It should be noted that for computational convenience, it is assumed that the end point loading consists of two components $G_n$ and $F$ of different nature.

It is evident that in general the auxiliary forces $G_j$ depend on the manipulator configuration. So, let us assume that they are described by the functions

$$G_j = G_j(q, \theta), \qquad (2)$$

In contrast, for the external force $F$, it is assumed that there is no direct relation with manipulator configuration.

For the serial chains with auxiliary loadings it is also required to extend the geometrical model. In particular, in addition to equation (1) defining the end-point location, it is necessary to introduce additional functions

$$t_j = g_j(q, \theta), \quad j = 1, ..., n \qquad (3)$$

defining locations of the nodes. It worth mentioning that for the serial chain, the position $t_j$ depends on a sub-set of the joint coordinates (corresponding to the passive and virtual joints located between the base and the j-th node), but for the purpose of analytical simplicity let us use the whole set of the joint coordinates $(q, \theta)$ as the arguments of the functions $g_j(...)$.
Using these assumptions and using results from our previous works [13][14], the problem of the manipulator stiffness modeling with auxiliary loadings can be split into several steps that are sequentially considered in the following sections.

## 3 STATIC EQUILIBRIUM EQUATIONS

To obtain a desired stiffness model, it is required to derive the static equilibrium equations that differ from the one used for the end-point loaded manipulator only due to influence of auxiliary loadings $G_j$. Let us apply the principle of the virtual work and assume that the kinematic chain under external loadings $F$ and $G = [G_1...G_n]$ has the configuration $(q, \theta)$ and the locations of the end-point and the nodes are $t = g(q, \theta)$ and $t_j = g_j(q, \theta)$, $j = 1, n$ respectively.

Following the principle of virtual work, the work of external forces $G$, $F$ is equal to the work of internal forces $\tau_\theta$ caused by displacement of the virtual springs $\delta\theta$

$$ \sum_{j=1}^{n} (\mathbf{G}_j^T \cdot \delta\mathbf{t}_j) + \mathbf{F}^T \cdot \delta\mathbf{t} = \boldsymbol{\tau}_\theta^T \cdot \delta\boldsymbol{\theta} \quad (4) $$

where the virtual displacements $\delta\mathbf{t}_j$ can be computed from the linearized geometrical model derived from (3)

$$ \delta \mathbf{t}_j = \mathbf{J}_{\theta}^{(j)} \cdot \delta \mathbf{\theta} + \mathbf{J}_{q}^{(j)} \cdot \delta \mathbf{q}, \quad j = 1..n, \quad (5) $$

which includes the Jacobian matrices

$$ \mathbf{J}_{\theta}^{(j)} = \frac{\partial}{\partial \boldsymbol{\theta}} \mathbf{g}_j(\mathbf{q}, \boldsymbol{\theta}); \quad \mathbf{J}_{q}^{(j)} = \frac{\partial}{\partial \mathbf{q}} \mathbf{g}_j(\mathbf{q}, \boldsymbol{\theta}) \quad (6) $$

with respect to the virtual and passive joint coordinates respectively.

Substituting (5) to (4) we can get the equation

$$ \sum_{j=1}^{n} (\mathbf{G}_j^T \cdot \mathbf{J}_{\theta}^{(j)} \cdot \delta\mathbf{\theta} + \mathbf{G}_j^T \cdot \mathbf{J}_{q}^{(j)} \cdot \delta\mathbf{q}) + (\mathbf{F}^T \cdot \mathbf{J}_{\theta}^{(n)} \cdot \delta\mathbf{\theta} + \mathbf{F}^T \cdot \mathbf{J}_{q}^{(n)} \cdot \delta\mathbf{q}) = \boldsymbol{\tau}_{\theta}^T \cdot \delta\mathbf{\theta} \quad (7) $$

which has to be satisfied for any variation of $\delta\theta$, $\delta q$. It means that the terms regrouping the variables $\delta\theta$, $\delta q$ have the coefficients equal to zero, hence the force-balance equations can be written as

$$ \boldsymbol{\tau}_\theta = \sum_{j=1}^{n} \mathbf{J}_{\theta}^{(j)T} \cdot \mathbf{G}_j + \mathbf{J}_{\theta}^{(n)T} \cdot \mathbf{F}; \quad \boldsymbol{\theta} = \sum_{j=1}^{n} \mathbf{J}_{q}^{(j)T} \cdot \mathbf{G}_j + \mathbf{J}_{q}^{(n)T} \cdot \mathbf{F} \quad (8) $$

These equations can be re-written in block-matrix form as

$$ \boldsymbol{\tau}_\theta = \mathbf{J}_\theta^{(G)T} \cdot \mathbf{G} + \mathbf{J}_\theta^{(F)T} \cdot \mathbf{F}; \quad \boldsymbol{\theta} = \mathbf{J}_q^{(G)T} \cdot \mathbf{G} + \mathbf{J}_q^{(F)T} \cdot \mathbf{F} \quad (9) $$

where

$$ \begin{align} \mathbf{J}_{\theta}^{(F)} &= \mathbf{J}_{\theta}^{(n)}; \quad \mathbf{J}_{q}^{(F)} = \mathbf{J}_{q}^{(n)}; \quad \mathbf{J}_{\theta}^{(G)} = [\mathbf{J}_{\theta}^{(1)T} \dots \mathbf{J}_{\theta}^{(n)T}]^T; \tag{10} \\ \mathbf{J}_{q}^{(G)} &= [\mathbf{J}_{q}^{(1)T} \dots \mathbf{J}_{q}^{(n)T}]^T; \quad \mathbf{G} = [\mathbf{G}_1^T \dots \mathbf{G}_n^T]^T \nonumber \end{align} $$

Finally, taking into account the virtual spring reaction $\boldsymbol{\tau}_\theta = \mathbf{K}_\theta \cdot (\mathbf{\theta} - \mathbf{\theta}^0)$, where $\mathbf{K}_\theta = \text{diag}(\mathbf{K}_1, \dots, \mathbf{K}_n)$, the desired static equilibrium equations can be presented as

$$ \begin{align} \mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F} &= \mathbf{K}_{\theta} \cdot (\mathbf{\theta} - \mathbf{\theta}^0) \tag{11} \\ \mathbf{J}_{q}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{q}^{(F)T} \cdot \mathbf{F} &= \mathbf{0} \nonumber \end{align} $$

Further, these equations will be used for computing the static equilibrium configuration and corresponding Cartesian stiffness matrix.

## 4 STATIC EQUILIBRIUM CONFIGURATION

To obtain a relation between the external loading $F$ and internal coordinates of the kinematic chain $(q, \theta)$ corresponding to the static equilibrium, equations (11) should be solved either for different given values of $F$ or for different given values of $t$. In [13] these problems were referred to as the original and the dual ones respectively, but the dual problem was discovered to be the most convenient from computational point of view. Hence, let us solve static equilibrium equations with respect to manipulator configuration $(q, \theta)$ and external loading $F$ for given end-effector position $t = g(q, \theta)$ and function of auxiliary-loadings $G(q, \theta)$

$$ \begin{align} \mathbf{K}_{\theta} \cdot (\mathbf{\theta} - \mathbf{\theta}^0) &= \mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F}; \tag{12} \\ \mathbf{J}_{q}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{q}^{(F)T} \cdot \mathbf{F} &= \mathbf{0} \nonumber \\ \mathbf{t} &= \mathbf{g}(\mathbf{q}, \mathbf{\theta}); \nonumber \\ \mathbf{G} &= \mathbf{G}(\mathbf{q}, \mathbf{\theta}) \nonumber \end{align} $$

where the unknown variables are $(q, \theta, F)$.

Since usually this system has no analytical solution, iterative numerical technique can be applied. So, the kinematic equations may be linearized in the neighborhood of the current configuration $(q_i, \theta_i)$

$$ \mathbf{t}_{i+1} = \mathbf{g}(\mathbf{q}_i, \mathbf{\theta}_i) + \mathbf{J}_{\theta}^{(F)}(\mathbf{q}_i, \mathbf{\theta}_i) \cdot (\mathbf{\theta}_{i+1} - \mathbf{\theta}_i) + \mathbf{J}_{q}^{(F)}(\mathbf{q}_i, \mathbf{\theta}_i) \cdot (\mathbf{q}_{i+1} - \mathbf{q}_i); \quad (13) $$

where the subscript 'i' indicates the iteration number and the changes in Jacobians $\mathbf{J}_{\theta}^{(G)}$, $\mathbf{J}_{\theta}^{(F)}$, $\mathbf{J}_{q}^{(G)}$, $\mathbf{J}_{q}^{(F)}$ and the auxiliary
loadings $G(q, \theta)$ are assumed to be negligible from one iteration to another. Correspondingly, the static equilibrium equations in the neighborhood of $(q_i, \theta_i)$ may be rewritten as

$$ 
\begin{aligned}
\mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F}_{i+1} &= \mathbf{K}_{\theta} \cdot (\mathbf{\theta}_{i+1} - \mathbf{\theta}^{0}) \\
\mathbf{J}_{q}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{q}^{(F)T} \cdot \mathbf{F}_{i+1} &= \mathbf{0}
\end{aligned}
\quad (14) $$

Thus, combining (13) and (14), the iterative algorithm for computing of static equilibrium configuration for given end-effector location can be presented as

$$ 
\begin{gathered}
\begin{bmatrix} \mathbf{F}_{i+1} \\ \mathbf{q}_{i+1} \\ \mathbf{\theta}_{i+1} \end{bmatrix} = \begin{bmatrix} \mathbf{0} & \mathbf{J}_{\theta}^{(F)} & \mathbf{J}_{\theta}^{(F)} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{0} & \mathbf{0} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{0} & -\mathbf{K}_{\theta} \end{bmatrix}^{-1} \begin{bmatrix} \varepsilon \\ -\mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G}_{i} \\ -\mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G}_{i} - \mathbf{K}_{\theta} \cdot \mathbf{\theta}^{0} \end{bmatrix} \\
\varepsilon = \mathbf{t}_{i+1} - \mathbf{g}(\mathbf{q}_{i}, \mathbf{\theta}_{i}) + \mathbf{J}_{\theta}^{(F)} \cdot \mathbf{\theta}_{i} + \mathbf{J}_{q}^{(F)} \cdot \mathbf{q}_{i}
\end{gathered}
\quad (15) $$

where $G_{i+1} = G(q_{i+1}, \theta_{i+1})$.

To reduce the size of a matrix to be inverted, the above system can be slightly simplified. In particular, based on analytical expression for $\theta = K_{\theta}^{-1}(\mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F}) + \mathbf{\theta}^{0}$, the unknown variables can be separated in two groups ($\mathbf{F}$, $\mathbf{q}$) and $\mathbf{\theta}$. This yields the iterative scheme

$$ 
\begin{gathered}
\begin{bmatrix} \mathbf{F}_{i+1} \\ \mathbf{q}_{i+1} \end{bmatrix} = \begin{bmatrix} \mathbf{J}_{\theta}^{(F)} \cdot \mathbf{K}_{\theta}^{-1} \cdot \mathbf{J}_{\theta}^{(F)T} & \mathbf{J}_{q}^{(F)} \\ \mathbf{J}_{q}^{(F)T} & \mathbf{0} \end{bmatrix}^{-1} \begin{bmatrix} \varepsilon \\ -\mathbf{J}_{q}^{(G)T} \cdot \mathbf{G}_{i} \end{bmatrix} \\
\mathbf{\theta}_{i+1} = \mathbf{K}_{\theta}^{-1} (\mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G}_{i} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F}_{i+1}) + \mathbf{\theta}^{0} \\
\varepsilon = \mathbf{t}_{i+1} - \mathbf{g}(\mathbf{q}_{i}, \mathbf{\theta}_{i}) + \mathbf{J}_{\theta}^{(F)} \mathbf{\theta}_{i} + \mathbf{J}_{q}^{(F)} \mathbf{q}_{i} - \mathbf{J}_{\theta}^{(F)} \mathbf{K}_{\theta}^{-1} \mathbf{J}_{\theta}^{(G)T} \mathbf{G}_{i}
\end{gathered}
\quad (16) $$

that requires matrix inversion of essentially lower order (for example, for 3-link manipulator with two passive joints and two actuated joints, the size of matrix inversion reduces from 34 to 14). It should be mentioned that $K_{\theta}^{-1}$ is computed only once, outside of the iterative loop. The proposed algorithm allows us to compute static equilibrium configuration for the serial chains with passive joints and all types of loadings (internal preloading, external loadings applied to any point of the manipulator and loading from the technological process).

## 5 STIFFNESS MATRIX

Previous Section allows us to obtain the non-linear relation between elastic deflections $\Delta t$ and external loading $\mathbf{F}$. In order to obtain the Cartesian stiffness matrix, let us linearize the force-deflection relation in the neighborhood of the equilibrium. Following this approach, two equilibriums that correspond to the manipulator state variables $(\mathbf{F}, \mathbf{q}, \mathbf{\theta}, \mathbf{t})$ and $(\mathbf{F} + \delta \mathbf{F}, \mathbf{q} + \delta \mathbf{q}, \mathbf{\theta} + \delta \mathbf{\theta}, \mathbf{t} + \delta \mathbf{t})$ should be considered simultaneously. Here $\delta \mathbf{F}$, $\delta \mathbf{t}$ define small increments in the external loading and relevant displacement of the-end-point.

Using this notation, the static equilibrium equations may be written as

$$ 
\begin{aligned}
\mathbf{t} &= \mathbf{g}(\mathbf{q}, \mathbf{\theta}) \\
\mathbf{K}_{\theta} \cdot (\mathbf{\theta} - \mathbf{\theta}^{0}) &= \mathbf{J}_{\theta}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(F)T} \cdot \mathbf{F} \\
\mathbf{J}_{q}^{(G)T} \cdot \mathbf{G} + \mathbf{J}_{q}^{(F)T} \cdot \mathbf{F} &= \mathbf{0}
\end{aligned}
\quad (17) $$

and

$$ 
\begin{aligned}
\mathbf{t} + \delta\mathbf{t} &= \mathbf{g}(\mathbf{q} + \delta\mathbf{q}, \mathbf{\theta} + \delta\mathbf{\theta}) \\
\mathbf{K}_{\theta} \cdot (\mathbf{\theta} + \delta\mathbf{\theta} - \mathbf{\theta}^{0}) &= (\mathbf{J}_{\theta}^{(G)} + \delta\mathbf{J}_{\theta}^{(G)})^{\mathrm{T}} \cdot (\mathbf{G} + \delta\mathbf{G}) \\
&\quad + (\mathbf{J}_{\theta}^{(F)} + \delta\mathbf{J}_{\theta}^{(F)})^{\mathrm{T}} \cdot (\mathbf{F} + \delta\mathbf{F}) \\
(\mathbf{J}_{q}^{(G)} + \delta\mathbf{J}_{q}^{(G)})^{\mathrm{T}} \cdot (\mathbf{G} + \delta\mathbf{G}) + (\mathbf{J}_{q}^{(F)} + \delta\mathbf{J}_{q}^{(F)})^{\mathrm{T}} \cdot (\mathbf{F} + \delta\mathbf{F}) &= \mathbf{0}
\end{aligned}
\quad (18) $$

where $\mathbf{t}$, $\mathbf{F}$, $\mathbf{G}$, $\mathbf{K}_{\theta}$, $\mathbf{q}$, $\mathbf{\theta}$, $\mathbf{\theta}^{0}$ are assumed to be known.

After linearization of the function $g(\mathbf{q}, \mathbf{\theta})$ in the neighborhood of loaded equilibrium, the system (17), (18) is reduced to three equations

$$ 
\begin{aligned}
\delta\mathbf{t} &= \mathbf{J}_{\theta}^{(F)} \cdot \delta\mathbf{\theta} + \mathbf{J}_{q}^{(F)} \cdot \delta\mathbf{q} \\
\mathbf{K}_{\theta} \cdot \delta\mathbf{\theta} &= \delta\mathbf{J}_{\theta}^{(G)} \cdot \mathbf{G} + \mathbf{J}_{\theta}^{(G)} \cdot \delta\mathbf{G} + \delta\mathbf{J}_{\theta}^{(F)} \cdot \mathbf{F} + \mathbf{J}_{\theta}^{(F)} \cdot \delta\mathbf{F} \\
\delta\mathbf{J}_{q}^{(G)} \cdot \mathbf{G} + \mathbf{J}_{q}^{(G)} \cdot \delta\mathbf{G} + \delta\mathbf{J}_{q}^{(F)} \cdot \mathbf{F} + \mathbf{J}_{q}^{(F)} \cdot \delta\mathbf{F} &= \mathbf{0}
\end{aligned}
\quad (19) $$

which define the desired linear relations between $\delta \mathbf{t}$ and $\delta \mathbf{F}$, $\delta \mathbf{q}$, $\delta \mathbf{\theta}$ that are expressed via the stiffness matrices $\mathbf{K}_{\mathrm{C}}$, $\mathbf{K}_{\mathrm{Cq}}$, $\mathbf{K}_{\mathrm{C\theta}}$. In this system, small variations of Jacobians may be expressed via the second order derivatives

$$ 
\begin{aligned}
\delta \mathbf{J}_{q}^{(F)} &= \mathbf{H}_{q\theta}^{(F)} \cdot \delta \mathbf{\theta} + \mathbf{H}_{qq}^{(F)} \cdot \delta \mathbf{q}; & \delta \mathbf{J}_{\theta}^{(F)} &= \mathbf{H}_{\theta\theta}^{(F)} \cdot \delta \mathbf{\theta} + \mathbf{H}_{\theta q}^{(F)} \cdot \delta \mathbf{q}; \\
\delta \mathbf{J}_{q}^{(G)} &= \mathbf{H}_{q\theta}^{(G)} \cdot \delta \mathbf{\theta} + \mathbf{H}_{qq}^{(G)} \cdot \delta \mathbf{q}; & \delta \mathbf{J}_{\theta}^{(G)} &= \mathbf{H}_{\theta\theta}^{(G)} \cdot \delta \mathbf{\theta} + \mathbf{H}_{\theta q}^{(G)} \cdot \delta \mathbf{q};
\end{aligned}
\quad (20) $$

where

$$ 
\begin{aligned}
\mathbf{H}_{\theta\theta}^{(G)} &= \sum_{j=1}^{n} \frac{\partial^2}{\partial \mathbf{\theta}^2} (\mathbf{g}_j^T (\mathbf{q}, \mathbf{\theta}) \mathbf{G}_j); & \mathbf{H}_{\theta\theta}^{(F)} &= \frac{\partial^2}{\partial \mathbf{\theta}^2} (\mathbf{g}^T (\mathbf{q}, \mathbf{\theta}) \mathbf{F}) \\
\mathbf{H}_{qq}^{(G)} &= \sum_{j=1}^{n} \frac{\partial^2}{\partial \mathbf{q}^2} (\mathbf{g}_j^T (\mathbf{q}, \mathbf{\theta}) \mathbf{G}_j); & \mathbf{H}_{qq}^{(F)} &= \frac{\partial^2}{\partial \mathbf{q}^2} (\mathbf{g}^T (\mathbf{q}, \mathbf{\theta}) \mathbf{F})
\end{aligned}
\quad (21) $$

$$ 
\begin{aligned}
\mathbf{H}_{\theta q}^{(G)} &= \sum_{j=1}^{n} \frac{\partial^2}{\partial \mathbf{\theta} \partial \mathbf{q}} (\mathbf{g}_j^T (\mathbf{q}, \mathbf{\theta}) \mathbf{G}_j); & \mathbf{H}_{\theta q}^{(F)} &= \frac{\partial^2}{\partial \mathbf{\theta} \partial \mathbf{q}} (\mathbf{g}^T (\mathbf{q}, \mathbf{\theta}) \mathbf{F}) \\
\mathbf{H}_{q \theta}^{(G)} &= \sum_{j=1}^{n} \frac{\partial^2}{\partial \mathbf{q} \partial \mathbf{\theta}} (\mathbf{g}_j^T (\mathbf{q}, \mathbf{\theta}) \mathbf{G}_j); & \mathbf{H}_{q \theta}^{(F)} &= \frac{\partial^2}{\partial \mathbf{q} \partial \mathbf{\theta}} (\mathbf{g}^T (\mathbf{q}, \mathbf{\theta}) \mathbf{F})
\end{aligned}
$$

Also, the auxiliary loading $\mathbf{G}$ may be computed via the first order derivatives as

$$ \delta \mathbf{G} = \partial \mathbf{G} / \partial \mathbf{\theta} \cdot \delta \mathbf{\theta} + \partial \mathbf{G} / \partial \mathbf{q} \cdot \delta \mathbf{q} \quad (22) $$
Further, let us introduce additional notations

$$
\begin{align}
\mathbf{H}_{\theta\theta} &= \mathbf{H}_{\theta\theta}^{(F)} + \mathbf{H}_{\theta\theta}^{(G)} + \mathbf{J}_{\theta}^{(G)T} \cdot \frac{\partial}{\partial \theta} \mathbf{G}; \nonumber \\
\mathbf{H}_{\theta q} &= \mathbf{H}_{\theta q}^{(G)} + \mathbf{H}_{\theta q}^{(F)} + \mathbf{J}_{\theta}^{(G)T} \cdot \frac{\partial}{\partial \mathbf{q}} \mathbf{G}; \nonumber \\
\mathbf{H}_{q\theta} &= \mathbf{H}_{q\theta}^{(G)} + \mathbf{H}_{q\theta}^{(F)} + \mathbf{J}_{q}^{(G)T} \cdot \frac{\partial}{\partial \theta} \mathbf{G}; \nonumber \\
\mathbf{H}_{qq} &= \mathbf{H}_{qq}^{(G)} + \mathbf{H}_{qq}^{(F)} + \mathbf{J}_{q}^{(G)T} \cdot \frac{\partial}{\partial \mathbf{q}} \mathbf{G} \tag{23}
\end{align}
$$

which allows us to present system (19) in the form

$$
\begin{bmatrix} \delta \mathbf{t} \\ \mathbf{0} \\ \mathbf{0} \end{bmatrix} = \begin{bmatrix} \mathbf{0} & \mathbf{J}_{\theta}^{(F)} & \mathbf{J}_{\theta}^{(F)} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{H}_{qq} & \mathbf{H}_{q\theta} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{H}_{q\theta} & -\mathbf{K}_{\theta} + \mathbf{H}_{\theta\theta} \end{bmatrix} \cdot \begin{bmatrix} \delta \mathbf{F} \\ \delta \mathbf{q} \\ \delta \theta \end{bmatrix} \quad (24)
$$

that has the same structure as for end-point loaded manipulator [13]. Hence, similarly the desired Cartesian stiffness matrices $\mathbf{K}_c$ and stiffness matrices $\mathbf{K}_{c\theta}$ and $\mathbf{K}_{cq}$ defining linear mappings of end-point displacement $\delta t$ to internal coordinates deflections $\delta \theta$ and $\delta q$:

$$ \delta\theta = \mathbf{K}_{c\theta} \cdot \delta t; \quad \delta q = \mathbf{K}_{cq} \cdot \delta t \quad (25) $$

can be computed via either high order matrix inversion

$$
\begin{bmatrix} \mathbf{K}_c \\ \mathbf{K}_{c\theta} \\ \mathbf{K}_{cq} \end{bmatrix} \begin{bmatrix} \mathbf{*} & \mathbf{*} & \mathbf{*} \\ \mathbf{*} & \mathbf{*} & \mathbf{*} \\ \mathbf{*} & \mathbf{*} & \mathbf{*} \end{bmatrix} = \begin{bmatrix} \mathbf{0} & \mathbf{J}_{\theta}^{(F)} & \mathbf{J}_{\theta}^{(F)} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{H}_{qq} & \mathbf{H}_{q\theta} \\ \mathbf{J}_{\theta}^{(F)T} & \mathbf{H}_{q\theta} & -\mathbf{K}_{\theta} + \mathbf{H}_{\theta\theta} \end{bmatrix}^{-1} \quad (26)
$$

or lower order inversion

$$
\begin{bmatrix} \mathbf{K}_c \\ \mathbf{K}_{c\theta} \\ \mathbf{K}_{cq} \end{bmatrix} \begin{bmatrix} \mathbf{*} \\ \mathbf{*} \\ \mathbf{*} \end{bmatrix} = \begin{bmatrix} \mathbf{J}_{\theta}^{(F)} \mathbf{k}_{\theta}^{F} \mathbf{J}_{\theta}^{(F)T} & \mathbf{J}_{\theta}^{(F)} + \mathbf{J}_{\theta}^{(F)} \mathbf{k}_{\theta}^{F} \mathbf{H}_{\theta q} \\ \mathbf{J}_{\theta}^{(F)T} + \mathbf{H}_{q\theta} \mathbf{k}_{\theta}^{F} \mathbf{J}_{\theta}^{(F)T} & \mathbf{H}_{qq} + \mathbf{H}_{q\theta} \mathbf{k}_{\theta}^{F} \mathbf{H}_{\theta q} \end{bmatrix}^{-1} \quad (27)
$$

where $\mathbf{k}_{\theta}^{F} = (\mathbf{K}_{\theta} - \mathbf{H}_{\theta\theta})^{-1}$ denotes the modified joint compliance matrix. It is obvious that, using these notations, the matrices $\mathbf{K}_c, \mathbf{K}_{c\theta}, \mathbf{K}_{cq}$ can be also computed analytically using the block matrix inversion [15]

$$ \mathbf{K}_c = \mathbf{K}_c^{0(F)} - \mathbf{K}_c^{0(F)} \cdot (\mathbf{J}_q + \mathbf{J}_\theta \cdot \mathbf{k}_\theta^F \cdot \mathbf{H}_{\theta q}^F) \cdot \mathbf{K}_{c\theta} \quad (28) $$

where $\mathbf{K}_c^{0(F)} = (\mathbf{J}_\theta \cdot \mathbf{k}_\theta^F \cdot \mathbf{J}_\theta^T)^{-1}$ defines stiffness of the kinematic chain without passive joints [2], [3] and

$$
\mathbf{K}_{cq} = - (\mathbf{H}_{qq} + \mathbf{H}_{q\theta} \cdot \mathbf{k}_{\theta}^{F} \cdot \mathbf{H}_{\theta q})^{-1} \cdot (\mathbf{J}_{\theta}^{(F)} + \mathbf{H}_{q\theta} \cdot \mathbf{k}_{\theta}^{F} \cdot \mathbf{J}_{\theta}^{(F)}) \cdot (\mathbf{J}_{\theta}^{(T)} + \mathbf{H}_{q\theta} \cdot \mathbf{k}_{\theta}^{F} \cdot \mathbf{J}_{\theta}^{(T)}) \cdot \mathbf{K}_{c}^{0(F)} \quad (29)
$$

Similarly, the matrix $\mathbf{K}_{c\theta}$ can be expressed analytically as

$$ \mathbf{K}_{c\theta} = \mathbf{k}_{\theta}^{F} \cdot \mathbf{J}_{\theta}^{T} \cdot \mathbf{K}_{c} + \mathbf{k}_{\theta}^{F} \cdot \mathbf{H}_{\theta q} \cdot \mathbf{K}_{cq} \quad (30) $$

Hence, the technique presented in this Section allows us to compute Cartesian stiffness matrix $\mathbf{K}_c$ and stiffness matrices $\mathbf{K}_{c\theta}$ and $\mathbf{K}_{cq}$ defining linear mappings of end-point displacement $\delta t$ to internal coordinates deflections $\delta \theta$ and $\delta q$ for manipulators with external and internal loading applied to the intermediate nod-points (auxiliary loading). Presented approach deals with serial chains, however obtained results can be easily transferred to a parallel manipulators using aggregation technique from [13].

# 6 ILLUSTRATIVE EXAMPLES

Let us now focus on the non-linear stiffness analysis of a serial chains under auxiliary loadings applied to an intermediate node. It is assumed that the considered chain consists of two links (either rigid or flexible) separated by a flexible joint. Relevant analysis includes evaluating stiffness variation due to the loading, detecting of buckling and computing corresponding critical forces, as well as analysis of the auxiliary spring influence on the chain stiffness.

## 6.1 Serial chain with torsional springs

Let us consider first a 2-link manipulator with a compliant actuator between the links and two passive joints at both ends. It is assumed that the left passive joint is fixed, while the right one can be moved along $x$ direction (Fig.2a). Besides, here both rigid links have the same length $L$ and the actuator stiffness is $\mathbf{K}_\theta$.

<figure><img src="image_3.png" /></figure>

<figure><img src="image_4.png" /><figcaption>**Figure 2** Kinematic chains with compliant actuator between two rigid links (a) and compliant actuator between two compliant links (b)</figcaption></figure>

Let us assume that the initial configuration (i.e. for $M_\theta = 0$) of the manipulator corresponds to $\theta_0 = -\pi/6$, where $\theta = -2\alpha$ is the coordinate of the actuated joint. It is also assumed that the external loading $G$ is applied to the intermediate node (Fig.2a) and it is required to apply the external loading ($F_x, F_y$) at the end-point to compensate the auxiliary loading $G$. Since this example is quite simple, it is possible to obtain the force-deflection relation and the stiffness coefficient both analytically and numerically.

For this manipulator the force-displacement relation can be expressed in a parametric form as

$$ F_x = -\frac{G}{2} \frac{\cos \alpha}{\sin \alpha} - 2 \frac{K_\theta}{L} \frac{\alpha - \alpha_0}{\sin \alpha}; \quad F_y = -\frac{G}{2}; \quad (31) $$
and stiffness of the manipulator can be presented as

$$K_x = - \frac{G}{4L \sin^3 \alpha} - \frac{K_0}{L^2} \frac{(\alpha - \alpha_0) \cos \alpha - \sin \alpha}{\sin^3 \alpha} \quad (32)$$

where $\alpha \in (-\pi/2; \pi/2)$ is treated as a parameter and $K_y = 0$.

As follows from expression (32), the stiffness coefficient $K_x$ essentially depends on the auxiliary loading $G$. In particular, for the initial configuration, the coefficient $K_x$ can be both positive and negative or even equal to zero when the auxiliary loading is equal to its critical value $G^* = 4K_0 / L \cdot \sin \alpha_0$. It is evident that the case $G > G^*$ is very dangerous from practical point of view, since the chain configuration is unstable.

<figure><img src="image_5.png" /><figcaption>Figure 3 Force-deflections relations for different values of auxiliary loading $G$: chain with torsional spring</figcaption></figure>

$$(G^* = 4K_0 / L \cdot \sin \alpha_0, K_x = K \cdot K_0 / L^2)$$

Summarized results for this case study are presented in Fig.3 that contain the force-deflection relations and values of translational stiffness $K_x$ respectively. They show that the auxiliary loading $G$ significantly reduces the stiffness of the serial chain. For example, in initial configuration ($\Delta x = 0$), for $G = 0$ the stiffness is $14.9 \cdot K_0 / L^2$, while for $G = 0.5 \cdot G^*$ it reduces down to $8.67 \cdot K_0 / L^2$. Further increasing of the auxiliary loading up to $G = 1.5 \cdot G^*$ leads to the unstable configuration with negative stiffness $-7.46 \cdot K_0 / L^2$. Moreover, in the neighborhood of the critical value of $G \approx G^*$, the force-deflection curves have extremum points which may provoke buckling.

For this case study, similar analysis has been also performed using the developed numerical technique presented in section IV and V. It worth mentioning that the numerical technique yielded the same results as the analytical one, which confirms validity of the developed approach. Some details concerning functions and matrices used in relevant expressions are presented in Table 1, where $L_1$ and $L_2$ denote the manipulator link lengths, $q_1$ and $q_2$ are the passive joint coordinates, $\theta$ is the virtual spring coordinate and $\theta_0$ is the actuator coordinate. It is worth mentioning that the numerical

technique yielded the same results as the analytical one, which confirms validity of the developed approach.

<table><caption>**Table 1** Functions and matrices used in numerical stiffness analysis of two-link manipulator with auxiliary loading (case of rigid links and compliant intermediate joint)</caption><thead><tr><th>Intermediate point $p_a$</th><th>End-effector $p_e$</th></tr></thead><tbody><tr><td>$\mathbf{g}_a = \begin{bmatrix} L_1 \cos q_1 \\ L_1 \sin q_1 \\ q_1 \end{bmatrix}$</td><td>$\mathbf{y}_e = \begin{bmatrix} x_e \\ y_e \\ \varphi_e \end{bmatrix} = \begin{bmatrix} L_1 \cos q_1 + L_2 \cos(q_1 + \theta) \\ L_1 \sin q_1 + L_2 \sin(q_1 + \theta) \\ q_1 + \theta + q_2 \end{bmatrix}$</td></tr><tr><td>$\mathbf{J}_\theta^{(G)} = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}$</td><td>$\mathbf{J}_\theta^{(F)} = \begin{pmatrix} -L_2 \sin(q_1 + \theta) \\ -L_2 \cos(q_1 + \theta) \\ 1 \end{pmatrix}$</td></tr><tr><td>$\mathbf{J}_q^{(G)} = \begin{pmatrix} -L_1 \sin q_1 & 0 \\ L_1 \cos q_1 & 0 \\ 1 & 1 \end{pmatrix}$</td><td>$\mathbf{J}_q^{(F)} = \begin{pmatrix} -L_1 \sin q_1 - L_2 \sin(q_1 + \theta) & 0 \\ L_1 \cos q_1 + L_2 \cos(q_1 + \theta) & 0 \\ 1 & 1 \end{pmatrix}$</td></tr><tr><td>$\mathbf{H}_{\theta\theta}^{(G)} = [0]$</td><td>$\mathbf{H}_{\theta\theta}^{(F)} = [h_2]$</td></tr><tr><td>$\mathbf{H}_{\theta q}^{(G)} = [0 \quad 0]$</td><td>$\mathbf{H}_{\theta q}^{(F)} = [h_2 \quad 0]$</td></tr><tr><td>$\mathbf{H}_{q\theta}^{(G)} = [0 \quad 0]^T$</td><td>$\mathbf{H}_{q\theta}^{(F)} = [h_2 \quad 0]^T$</td></tr><tr><td>$\mathbf{H}_{qq}^{(G)} = \begin{bmatrix} h_1 & 0 \\ 0 & 0 \end{bmatrix}$</td><td>$\mathbf{H}_{qq}^{(F)} = \begin{bmatrix} h_3 & 0 \\ 0 & 0 \end{bmatrix}$</td></tr></tbody></table><p>$h_1 = -L_1 \sin q_1 G_y, \quad h_2 = -L_2 \cos(q_1 + \theta) F_x - L_2 \sin(q_1 + \theta) F_y,$</p><p>$h_3 = -(L_1 \cos q_1 + L_2 \cos(q_1 + \theta)) F_x - (L_1 \sin q_1 + L_2 \sin(q_1 + \theta)) F_y$</p>

Hence, the presented case study demonstrates rather interesting features of stiffness behavior for kinematic chains under auxiliary loading that where not studied before (negative stiffness, non-monotonic force-deflection curves, etc.). This motivates considering more sophisticated examples, with more complicated compliant elements.

## 6.2 Serial chains with torsional and translational springs

In the second example, it is assumed that there are three compliant elements: an actuated joint with torsional stiffness parameter $K_0$ and two non-rigid links with translational stiffness $K_L$ (Fig.2b). Intuitively, it is expected that such system should demonstrate more complicated stiffness behavior under the loadings compared to the previous one.

The force-deflection relations corresponding to serial chain with compliant links are presented in Fig.4. These curves have been obtained using functions and matrices presented in Table 2. Compared to the previous case, here for $G = 0...G^*$ there is
only quantitative difference (i.e. the shape of the examined curves remains almost the same). However, for $G > G^*$ the chain may be not only unstable with respect to end-effector loading $F_x$, but also the chain configuration may become unstable. Geometrically, the latter qualitative difference is observed similar to buckling in vertically loaded arch. Summary of different chain configurations and their stiffness behavior is presented in Figure 5.

<figure><img src="image_6.png" /><figcaption>**Figure 4** Force-deflections relations for different values of auxiliary loading $G$: chain with torsional and translational springs ($G^* = 4K_0 / L \cdot \sin \alpha_0$, $K_L = K \cdot K_0 / L^2$)</figcaption></figure>

Summarizing Section 6, it should be concluded that auxiliary loading essentially influences on the stiffness behavior of robotic manipulators, may reduce the stiffness coefficient and also provoke undesirable phenomena (such as buckling) that must be taken into account by designers. This justifies results of this paper and gives perspectives for practical applications.

## 7 CONCLUSION

The paper presents generalization of the non-linear stiffness modeling technique for manipulators under internal and external loadings. The developed technique includes computing of the static equilibrium configuration corresponding to the loadings. It is able to obtain the non-linear force-deflection relation, the Cartesian stiffness matrix for the loaded mode as well as the matrices defining linear mappings from the end-point displacement into the deflections in passive and virtual joints. The obtained results allow us to extend the classical notion of "conservative congruence transformation" for the case of manipulators with auxiliary loading.

The advantages and use of the developed technique are illustrated by numerical examples that deal with a stiffness analysis of serial chains with different assumptions on the link flexibility. For the considered cases, functions and matrices that are used in numerical stiffness analyses are given. The presented results also illustrate the ability of this technique to detect some nonlinear effects in the manipulator stiffness behavior (such as buckling).

<table><caption>**Table 2** Functions and matrices used in numerical stiffness analysis of two-link manipulator with auxiliary loading (case of rigid links and compliant intermediate joint)</caption><thead><tr><th>Intermediate point p<sub>a</sub></th><th>End-effector p<sub>e</sub></th></tr></thead><tbody><tr><td><b>g</b><sub>a</sub> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>(L<sub>1</sub> + θ<sub>1</sub>) cos q</td></tr><tr><td>(L<sub>1</sub> + θ<sub>1</sub>) sin q<sub>1</sub></td></tr><tr><td>q<sub>1</sub></td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>(L<sub>1</sub> + θ<sub>1</sub>) cos q<sub>1</sub> + (L<sub>2</sub> + θ<sub>3</sub>) cos (q<sub>1</sub> + θ<sub>2</sub>)</td></tr><tr><td>(L<sub>1</sub> + θ<sub>1</sub>) sin q<sub>1</sub> + (L<sub>2</sub> + θ<sub>3</sub>) sin (q<sub>1</sub> + θ<sub>2</sub>)</td></tr><tr><td>q<sub>1</sub> + θ<sub>2</sub> + q<sub>2</sub></td></tr></tbody></table></td><td><b>J</b><sub>θ</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>1</sub></td></tr><tr><td>j<sub>2</sub></td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>1</sub></td></tr><tr><td>j<sub>2</sub></td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub></td></tr><tr><td>j<sub>4</sub></td></tr><tr><td>1</td></tr></tbody></table></td><td><b>J</b><sub>θ</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>1</sub></td></tr><tr><td>j<sub>2</sub></td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>1</sub></td></tr><tr><td>j<sub>6</sub></td></tr><tr><td>1</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub></td></tr><tr><td>j<sub>4</sub></td></tr><tr><td>1</td></tr></tbody></table></td><td><b>J</b><sub>q</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub></td></tr><tr><td>j<sub>4</sub></td></tr><tr><td>1</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub></td></tr><tr><td>j<sub>4</sub></td></tr><tr><td>1</td></tr></tbody></table></td><td><b>J</b><sub>q</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub> + j<sub>5</sub></td></tr><tr><td>j<sub>4</sub> + j<sub>6</sub></td></tr><tr><td>1</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>j<sub>3</sub> + j<sub>5</sub></td></tr><tr><td>j<sub>4</sub> + j<sub>6</sub></td></tr><tr><td>1</td></tr></tbody></table></td><td><b>H</b><sub>θθ</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>θθ</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>h<sub>3</sub></td></tr><tr><td>h<sub>4</sub></td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>h<sub>4</sub></td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>θq</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>1</sub></td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>θq</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>5</sub></td></tr><tr><td>h<sub>3</sub></td></tr><tr><td>h<sub>4</sub></td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>5</sub></td></tr><tr><td>h<sub>3</sub></td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>qθ</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>1</sub></td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>qθ</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>5</sub></td></tr><tr><td>h<sub>3</sub></td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>5</sub></td></tr><tr><td>h<sub>4</sub></td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>qq</sub><sup>(G)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>2</sub></td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table></td><td><b>H</b><sub>qq</sub><sup>(F)</sup> = <span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>h<sub>6</sub></td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table><span style="font-size: 2.5em; vertical-align: middle;">]</span><span style="font-size: 2.5em; vertical-align: middle;">[</span><table style="display: inline-table; vertical-align: middle; text-align: center;"><tbody><tr><td>0</td></tr><tr><td>0</td></tr><tr><td>0</td></tr></tbody></table></td></tr></tbody></table>

$$j_1 = \cos q_1, \quad j_2 = \sin q_1, \quad j_3 = -(L_1 + \theta_1) \sin q_1, \\ j_4 = (L_1 + \theta_1) \cos q_1, \quad j_5 = -(L_2 + \theta_3) \sin (q_1 + \theta_2),$$

$$j_6 = (L_2 + \theta_3) \cos(q_1 + \theta_2), \quad j_7 = \cos(q_1 + \theta_2),$$

$$j_8 = \sin(q_1 + \theta_2) \quad h_1 = -G_x \sin q_1 + G_y \cos q_1,$$

$$h_2 = -G_x (L_1 + \theta_1) \cos q_1 - G_y (L_1 + \theta_1) \sin q_1,$$

$$h_3 = -F_x (L_2 + \theta_3) \cos(q_1 + \theta_2) - F_y (L_2 + \theta_3) \sin(q_1 + \theta),$$

$$h_4 = -F_x \sin(q_1 + \theta_2) + F_y \cos(q_1 + \theta),$$

$$h_5 = -F_x \sin q_1 + F_y \cos q_1,$$

$$h_6 = h_3 - F_x (L_1 + \theta_1) \cos q_1 - F_y (L_1 + \theta_1) \sin q_1$$

In future, it is reasonable to develop an extension of the proposed technique that can be applied to the parallel manipulators with internal loops. Besides, it is useful to consider the manipulators with several end-points (or end effectors). The main difficulty for both cases is related to the introducing of additional geometrical constraints that are defined by another compliant mechanism.
<figure><img src="image_7.png" /><figcaption>**Figure 1** Configuration of kinematic chain with auxiliary loading: case of torsional and translational springs

($G^* = 4K_0 / L \cdot \sin \alpha_0$, $K_L = 2 \cdot 10^2 \cdot K_0 / L^2$)</figcaption></figure>

## ACKNOWLEDGMENT

The work presented in this paper was partially funded by the Region "Pays de la Loire" (France) and by the ANR, France (Project ANR-2010-SEGI-003-02-COROUSSO).

## REFERENCES

[1] "Springer handbook of mechanical engineering", Ed. K-H Grote and E. Antonsson, Springer, New York 2009

[2] G. Alici, B. Shirinzadeh, "Enhanced stiffness modeling, identification and characterization for robot manipulators", Proceedings of IEEE Transactions on Robotics vol. 21(4). pp. 554–564, 2005.

[3] S. Chen, I. Kao, "Conservative Congruence Transformation for Joint and Cartesian Stiffness Matrices of Robotic Hands and Fingers", The International Journal of Robotics Research, vol. 19(9), pp. 835–847, 2000.

[4] M. Griffis, "Preloading compliant couplings and the applicability of superposition", Mechanism and Machine Theory, Vol. 41, Issue 7, pp. 845-862, 2006

[5] N. Vitiello, T. Lenzi, S. M. M. De Rossi, S. Roccella, M. C. Carrozza "A sensorless torque control for Antagonistic Driven Compliant Joints," Mechatronics, Vol. 20, Issue 3, pp. 355-367, 2010

[6] B.-J. Yi, R.A. Freeman, "Geometric analysis antagonistic stiffness redundantly actuated parallel mechanism", Journal of Robotic Systems vol. 10(5), pp. 581-603, 1993.

[7] Y. Li 1, Sh.-F. Chen, I. Kao, "Stiffness control and transformation for robotic systems with coordinate and non-coordinate bases", In: Proceedings of ICRA 2002, pp 550-555, 2002.

[8] C.Quennouelle, C. M. Gosselin, "Stiffness Matrix of Compliant Parallel Mechanisms", In Springer Advances in Robot Kinematics: Analysis and Design, pp. 331-341, 2008.

[9] I. Tyapin, G. Hovland, Kinematic and elastostatic design optimization of the 3-DOF Gantry-Tau parallel kinematic manipulator, Modelling, Identification and Control, 30(2) (2009) 39-56

[10] J. Kövecses, J. Angeles, "The stiffness matrix in elastically articulated rigid-body systems," Multibody System Dynamics (2007) pp. 169–184, 2007.

[11] W. Wei, N. Simaan, "Design of planar parallel robots with preloaded flexures for guaranteed backlash prevention", Journal of Mechanisms and Robotics vol. 2(1), 10 pages, 2010.

[12] D. Chakarov, "Study of antagonistic stiffness of parallel manipulators with actuation redundancy", Mechanism and Machine Theory, vol. 39, pp. 583–601, 2004.

[13] A. Pashkevich, A. Klimchik, D. Chablat, "Enhanced stiffness modeling of manipulators with passive joints", Mechanism and Machine Theory, vol. 46(5), pp. 662-679, 2011.

[14] A.Pashkevich, D. Chablat, P.Wenger, "Stiffness analysis of overconstrained parallel manipulators", Mechanism and Machine Theory, vol. 44, pp. 966-982, 2008.

[15] G.H. Golub, C.F. van Loan, "Matrix computations", JHU Press, 1996