1 Introduction

Collaborative robotics is a rapidly emerging technology, as an increasing number of industries are seeking for flexible automation systems to become competitive (Ajoudani et al. 2018). These robotic systems are envisaged to work together with their human co-workers in order to perform a wide range of tasks in a productive and flexible way, which usually involve manipulation and interaction. They must therefore contain: a robotic end-effector able to perform the manipulation (e.g.: robotic hands, grippers, suction cups) and a robotic arm driving such end-effector along the task workspace (e.g., see Fig. 1). When dealing with human-like manipulation scenarios, robotic hands are usually preferred due to their increased manipulability and dexterity. Several studies have investigated the potential of such hand-arm systems, mainly focusing on the control of the position, orientation, and force at the object or arm end-effector level (Bae et al. 2006; Nagai and Yoshikawa 1995). Still, when tackling the collaborative scenarios, safe and controlled interactions become crucial requirements of the system. To this end, impedance control frameworks have been proposed with considerable advantages when dealing with unstructured environments and in human-robot interaction scenarios (Albu-Schaffer et al. 2003).

Fig. 1
figure 1

Example of a hand-arm system performing a task with a scraper

Nevertheless, impedance controllers for hand-arm systems have been scarcely studied. In Wimbock et al. (2007), an object-level custom-built impedance control for humanoid robots with two arms and two hands was presented. This method was designed for a fully controllable body-hand-arm system and neglected the rolling effects of fingers. Similary, Nagai and Yoshikawa (1995) and Ott et al. (2006) developed impedance controllers where the overall system compliance was mainly driven by the arms, and the hands were used to provide a firm grasp of the objects. The full-controllability of the high number of degrees of freedom (DOF) of the hands used in these systems allows fine manipulation tasks to be executed. However, it implies an increasing complexity not only in the design and its related cost, but also from the control point of view. This high complexity underlies the problems to deploy these systems in real industrial and human-robot interaction environments.

To overcome this obstacle, soft and under-actuated hands embedding structural compliance are being developed which can deal with simple grasping tasks and safety needs while using a reduced number of actuators (Catalano et al. 2014; Deimel and Brock 2016). From the control point of view, coordinated movements known as postural hand synergies have been investigated as a way to tackle the problem of control redundancy (Catalano et al. 2014). Nevertheless, these under-actuated hands are being mainly used to perform full closure around the object (Ajoudani et al. 2013; Peternel and Ajoudani 2017), providing a limited control of the grasp stiffness. Therefore, when attached to an arm, the resulting behaviour between the object and the environment is mostly defined by the arm interaction parameters.

Fine manipulation tasks however, may require more complex grasps. For instance, in works such as Kim et al. (2001) and Friedman and Flash (2007), the hand grasp compliance and kinematics that are required to execute a task were studied. Indeed, when using a tool for a particular task, both the grasping points and impedance must be properly selected to obtain the desired interaction (Friedman and Flash 2007). For example, when making a hole in a surface with a punch, the system should be stiff along the punch handle direction. Instead, in a fine painting task, the grasp should be stiff on the plane parallel to the wall, while being compliant in the perpendicular direction to the surface to comply with the disturbances caused by the wall irregularities.

In this work we present a controller to regulate the object-level stiffness for manipulation tasks using fingertip grasps with a hand-arm system subject to under-actuation principles at the hand level. To illustrate a possible application scenario, we use the case of the Common-Mode-Stiffness (CMS) and Configuration-Dependent-Stiffness (CDS) under-actuated principles for the hand. Assuming an ellipsoidal representation of the grasp stiffness (Mussa-Ivaldi et al. 1985), such an ellipsoid is defined by the directions of the major axes (geometry of the ellipsoid), and its overall volume. In this framework, CMS provides a synergistic stiffening of the finger joints, i.e., only one parameter is required to modify all the joints, leading to an increase/decrease of the ellipsoid volume (Rossi et al. 2015). The axes directions can be changed in a more energy-efficient way by varying the fingers posture (CDS) (Milner and Franklin 1998). In previous works, we developed two different methods providing a large manipulability range while using the CMS/CDS bio-inspired concepts (Ruiz Garate et al. 2018b, a). The implementation of the CMS principle limits the number of required control inputs to achieve complex manipulation tasks, having control references simplified from \(2\times n\) parameters to only \(n + 1\), where n is the number of DOF of the hand. However, this under-actuation principle results in a limited range of stiffness geometries reachable by the hand while maintaining the grasp points, potentially constraining the overall behaviour of the hand-arm system.

Therefore, focusing on the limitations given by the hand, the proposed controller first finds a suitable grasp posture to best fulfil the interaction requirements in terms of object-level stiffness for a particular task. An arm Cartesian-impedance controller is then used to position the object as required to perform the task. Moreover, the impedance controller of the arm serves to regulate the obtained hand stiffness as needed for the task. Hence, the main contributions of this work can be summarized as: the formulation of a control strategy to regulate the object-level stiffness for hand-arm systems subject to under-actuation principles, and the adaptation of the grasp stiffness control in (Ruiz Garate et al. 2018a) to a new scenario with a moving hand base attached to a robotic arm.

The following Sects. 2 and 3 present the object-level hand-arm stiffness problem and the methodology proposed for the studied under-actuated case, respectively. Section 4 describes the experimental validation and Sect. 5 discuss the results and limitations of the proposed method. Finally, Sect. 6 draws the main conclusions and future work.

2 Problem definition

In a hand-arm system, both elements contribute to the overall stiffness required to perform the task. Moreover, when interacting with the environment, an appropriate positioning of the tool with respect to it is required. Hence, it is more suitable to define the grasp stiffness parameters at the object/tool frame level, rather than in the world frame. This object-level stiffness \(^{\text {obj}}\mathbf {K}\in \mathbb {R}^{6\times 6}\) can be computed from the one expressed in the world frame \(^w\mathbf {K}\in \mathbb {R}^{6\times 6}\) (Ruiz Garate et al. 2018a, b) by means of the rotation matrix from the object frame to the world frame \(^w\mathbf {R}_{\text {obj}}\) :

$$\begin{aligned} ^{\text {obj}}\mathbf {K}=\,^w\, \mathbf {Z}_{\text {obj}}^\top \; ^w\mathbf {K}\; ^w \mathbf {Z}_{\text {obj}}. \end{aligned}$$
(1)

\(^w\mathbf {Z}_{\text {obj}}= diag\{[^w\mathbf {R}_{\text {obj}}, \, ^w\mathbf {R}_{\text {obj}}]\}\)Footnote 1, where \(^{w}\mathbf {R}_{\text {obj}}\) can be extracted from the transformation matrix from the object frame to the world frame \(^{w}\mathbf {T}_{\text {obj}}\). The procedure to obtain \(^w\mathbf {T}_{\text {obj}}\) at each system configuration is described later in Sect. 3.4 (6). Using (1), the stiffness at the end-effector of the arm and the grasp stiffness provided by the hand, can be expressed in the object frame as \(^{\text {obj}}\mathbf {K}_{\text {arm}}\) and \(^{\text {obj}}\mathbf {K}_{\text {hand}} \in \mathbb {R}^{6\times 6}\), respectively. Being the inverse of stiffness the compliance, the principles of serial springs can be applied to the corresponding compliance matrices (\(^{\text {obj}}\mathbf {C}_{\text {arm}}\) and \(^{\text {obj}}\mathbf {C}_{\text {hand}} \in \mathbb {R}^{6\times 6}\)), to retrieve the overall system compliance:

$$\begin{aligned} {}^{\text {obj}}\mathbf {C}=^{\text {obj}}\mathbf {C}_{\text {arm}}+^{\text {obj}}\mathbf {C}_{\text {hand}}. \end{aligned}$$
(2)

Hence in terms of the overall system stiffness:

$$\begin{aligned} {}^{\text {obj}}\mathbf {K}=(^{\text {obj}}\mathbf {K}_{\text {arm}}^{-1}+^{\text {obj}}\mathbf {K}_{\text {hand}}^{-1})^{-1}. \end{aligned}$$
(3)

The resulting object-level stiffness \(^{\text {obj}}\mathbf {K}\) of the hand-arm system can be represented by a stiffness ellipsoid characterised by a particular geometry (defined by the ellipsoid axes orientation), and ellipsoid volume (given by the magnitude of the main ellipsoid axes). From (2), it is straightforward that the final system compliance is of the order of magnitude of the most compliant element. Thus, even if one of both element’s stiffness (hand or arm) is increased to its maximum, if the other remains compliant the overall system will behave in a compliant way.

Based on this dependency, the presented work focuses on obtaining a desired \(^{\text {obj}}\mathbf {K}\) given the under-actuation constraints imposed by the hand. These limitations are illustrated by the same CMS/CDS under-actuation control principles as in Ruiz Garate et al. (2018a, (2018b). Consequently, the maximum achievable stiffness is not only constrained by the maximum synergistic joint stiffness, but also by the range of feasible hand poses maintaining the grasp points. Thus, the resulting stiffness ellipsoid of the hand-arm system at the object-level is constrained by that of the hand. If for a particular task the system needs to be stiff in a pre-defined direction, the problem can be divided as follows:

  1. 1.

    Find the hand configuration maximizing the object-level stiffness in the required direction for the execution of the task;

  2. 2.

    Configure the arm to locate the object (and the achieved stiffness geometry) subject to the task constraints;

  3. 3.

    Adjust the arm Cartesian stiffness to tune the hand-induced object-level stiffness towards the desired one.

3 Methodology

3.1 Modelling the hand-arm system

For the following simulations and experiments the torque-controlled 7 DOF Franka-Emika GmbH robotic arm,Footnote 2 and the Allegro Hand (SimLab Co., Ltd.),Footnote 3 a 4-fingered robotic hand with 16 independent joints (Lee et al. 2017), are used. The hand is attached to the end-point of the robotic arm using a custom-made flange. Figure 2 shows an example of the real and modelled initial configuration of the hand-arm system and the main reference frames used during the development of the method.

Fig. 2
figure 2

a Simulated hand-arm system with the main frames. W, Obj, Hand, and Arm stand for the world, object, hand base, and arm end-effector frames, respectively. b Experimental set-up at the initial configuration

Fig. 3
figure 3

Control diagram. The controller has two main elements: the hand and the arm. The hand controller is based on the one presented in Ruiz Garate et al. (2018a), where the parts that are adapted to fit the new controller are displayed in blue. \(^{(1)}\)The arm Cartesian impedance controller is described in Balatti et al. (2019)

To model the hand-arm system, the Syngrasp software (Malvezzi et al. 2015) with Matlab 2017a (The MathWorks Inc.) is used. This modelling is required in order to find the hand configuration giving the highest stiffness in the desired directions at the object-level and to build a stable trajectory towards it. Using this software, the arm can be also modelled as a one finger hand, and the actual hand base location can be defined from the arm end-effector one. Note that an extra fixed link is modelled on the arm to account for the flange connecting the arm to the hand. Moreover, a constant transformation matrix \(\mathbf {T}_{r}\) is defined that connects the hand base (Hand) and the arm end-effector (Arm) frames (Fig. 2a). Hence, for each different arm configuration, the transformation matrix between the hand base and the world frames is computed as:

$$\begin{aligned} {}^w\mathbf {T}_{\text {hand}}= ^{w}\mathbf {T}_{\text {arm}} \; \mathbf {T}_{r}. \end{aligned}$$
(4)

3.2 Hand-arm object-level stiffness overview

In this work the arm is considered as fully controllable and is the one guiding the task execution. The Cartesian impedance controller developed in Balatti et al. (2019) is used to achieve a desired stiffness profile \(^w\mathbf {K}_{\text {arm}}\) with respect to the world frame. Otherwise, the hand grasp stiffness is defined in the world frame as (Bicchi 1994):

$$\begin{aligned} {}^w\mathbf {K}_{\text {hand}}=\mathbf {G}(\mathbf {C}_s+\mathbf {J}_{\text {hand}}\mathbf {K}^{-1}_q\mathbf {J}_{\text {hand}}^\top )^{-1}\mathbf {G}^\top , \end{aligned}$$
(5)

where \(\mathbf {J}_{\text {hand}} \in \mathbb {R}^{3n_c\times n_q}\) is the hand Jacobian matrix and \(n_q\), \(n_c\) the total number of finger joints in the hand and the number of contact points on the object, respectively. \(\mathbf {C}_s \in \mathbb {R}^{3n_c\times 3n_c}\) is the structural compliance matrix and \(\mathbf {G}\in \mathbb {R}^{6\times 3n_c}\) is the grasp matrix. \(\mathbf {K}_q=diag\{[\mathbf {K}_{q,f1}\ldots \mathbf {K}_{q,fn_c}]\} \in \mathbb {R}^{n_q\times n_q}\) is a diagonal matrix representing the joint stiffness, where for every finger f, \(\mathbf {K}_{q,f}=diag\{\alpha \, {{\varvec{\varGamma }}}_{f}\} \in \mathbb {R}^{nq_f\times nq_f}\) is defined. \(nq_f\) is the number of joints of the finger, \(\alpha \) is the synergistic stiffness parameter (Nm/rad), and \({{\varvec{\varGamma }}}_{f}\) is a constant normalised vector implementing the coordinated stiffening of the hand fingers (CMS) (Rossi et al. 2015). As mentioned before, the hand under-actuation principle here is based on our previous work in Ruiz Garate et al. (2018a).

Figure 3 displays the diagram of the proposed object-level stiffness controller. It receives as inputs: (i) the desired object/tool configuration (defined by the task) and given by the rotation matrix from the object to the world frame \(^w\mathbf {R}_{\text {obj},d}\), (ii) the desired object-level stiffness \(^{\text {obj}}\mathbf {K}_d\), (iii) the hand fingers workspace \(\mathbf {W}\mathbf {S}\), and (iv) the initial hand grasp.

Therefore, given the under-actuation constrains of the hand and a desired task-based stiffness at the object level, the method first attempts to find the hand configuration that maximizes the stiffness in the required directions by the task. Next, the arm is configured to locate the object and the resulting stiffness geometry in a direction that the tasks requirements call for a stiff response. Finally, the arm Cartesian stiffness controller tunes the resulting grasp stiffness (in the object coordinates) towards the pre-defined, desired profile.

The main elements of this control scheme are detailed in the following subsections. It must be noted that, for the hand controller, we follow the consideration that the encoder readings of the fingers’ joints positions are the only sensory information available. Consequently, the following assumptions are made: (i) we focus on fingertip grasps, and (ii) the object is considered to be attached to the thumb so that its location can be retrieved (Sundaralingam and Hermans 2019). Moreover, it must be noted that (5) considers the ideal contact model in Bicchi (1994), neglecting the geometric terms due to the Jacobian variations (Chen and Kao 2000). To do so, we consider a high structural stiffness (see Sect. 4.1.3), no preloading of the joints, and quasi-static conditions for the hand with sufficiently small movements (Malvezzi and Prattichizzo 2013). Moreover, this method focuses on maintaining the contact points constant, which together the quasi-static assumption allows to neglect the variations on the grasp matrix.

3.3 Stabilization of the initial grasp

The initial grasp serves first to define the contact points. These are used as constraints in the exploration to find compatible grasp configurations (CDS). Then, for the initial and subsequent grasps a hand configuration is found that squeezes the object and stabilizes it as explained in Ruiz Garate et al. (2018a). This is achieved by an optimization process where a cost function based on the index of Potential Contact Robustness (PCR) is maximized (Pozzi et al. 2017). As an overview, this optimization computes a set of internal forces such that the contact forces \({{\varvec{\lambda }}}_c= -\mathbf {G}^{\#}\mathbf {w}+ \mathbf {E}{\mathbf {y}}\) are as far as possible from their friction cone limits. \(\mathbf {w}\) stands for the external wrench applied and \(\mathbf {E}\) represents the basis of the controllable subspace of internal forces. \({\mathbf {y}}\) is a vector that parametrizes the homogeneous part of the solution of the equation \(\mathbf {w}=-\mathbf {G}{{\varvec{\lambda }}}_c\). The external wrench takes into account the weight of the object, therefore avoiding slippage due to the payload. Thus, the PCR index is based on the distance of the contact forces from the friction cone boundaries, and increases as the grasp becomes more robust: \(PCR=\underset{y}{max}\frac{d_{min}^{F_h}}{\sigma _{max}({\mathbf {G}})}\), where \(d_{min}^{F_h}\) is the minimum normal contact force and \(\sigma _{max}\) is the maximum singular value (Pozzi et al. 2017).

3.4 Search of hand compatible configurations

From the fingers workspace (Fig. 3), compatible configurations keeping similar fingertip locations as the initial ones are stored in \(\mathbf {Q}_c\). This selection is based on: (i) the hand physical constraints on the tool location, and (ii) the distance from the object center to the fingertips.

As the object is considered to be attached to the thumb (Sundaralingam and Hermans 2019), the object frame with respect to the thumb remains invariant from the initial one: \(^{\text {thumb}}\mathbf {T}_{\text {obj},0}=(^{w}\mathbf {T}_{\text {thumb},0})^{-1}\, ^{w}\mathbf {T}_{\text {obj},0}\). Thus, for each possible thumb configuration \(\mathbf {q}_{\text {thumb},i}\) in the workspace, the object is located by means of the transformation from its origin frame to the world frame \(^w\mathbf {T}_{\text {obj},i}\). Then, the fingers’ position with respect to the object \(^{\text {obj}}\mathbf {P}_{f,i}\) is retrieved:

$$\begin{aligned} \begin{aligned}&^w\mathbf {T}_{\text {obj},i}=^{w}\mathbf {T}_{\text {thumb},i} \; ^{\text {thumb}}\mathbf {T}_{\text {obj},0}, \\&^{\text {obj}}\mathbf {P}_{f,i}=(^w\mathbf {T}_{\text {obj},i})^{-1} \; ^w\mathbf {P}_{f,i}, \end{aligned} \end{aligned}$$
(6)

where the values of \(^w\mathbf {T}_{\text {thumb},i}\) and \(^w\mathbf {P}_{f,i}\) can be obtained using the D-H parameters of the hand and solving the forward kinematics.

From all these possible computed object locations, a first selection is done in which only those that result in a reasonable object location are considered. That is, if the part of the object which is going to interact with the environment is oriented towards the hand palm, it would be an inoperative configuration, and therefore it is discarded. For this, the vector obtained from the object frame (\(^w\mathbf {T}_{\text {obj},i}\)), and pointing from its center to the tool’s area of interest center operative center is analysed. The angle of this vector with respect to the main 3 hand base axes (given by its transformation matrix with respect to the world \(^w\mathbf {T}_{\text {hand}}\)) is computed (see Fig. 2a). Figure 4 shows the allowed locations in an schematic way. Additional margins are given in order to assure that no collision happens. The selected regions span from −30 and −150 deg about the hand’s x axis (in the yz plane), and between ±135 and ±180 deg about the y one (in the zx plane).

Fig. 4
figure 4

Allegro Hand and the corresponding allowed regions for the object axis with respect to the xyz hand frame

Afterwards, configurations in which \(\left\Vert ^{\text {obj}}\mathbf {P}_{f,0}-^{\text {obj}}\mathbf {P}_{f,i}\right\Vert < p_t\) mm are stored in \(\mathbf {Q}_c=\{\mathbf {q}_1,\mathbf {q}_2,\ldots ,\mathbf {q}_c\}\), where \(p_t\) is a threshold based on the fingertips dimensions to allow a certain movement around the initial contact point.

This process outputs all the possible hand configurations that hold similar contact points to the initial ones and result in a reasonable tool orientation. Thus, it provides the basis of the CDS control with the different grasp stiffness ellipsoid orientations at the object level. It must be noted that these hand configurations are found in a generic hand base location at which primarily the workspace is evaluated. We denoted the transformation matrix from the hand base frame at this general configuration with respect to the world as \(^w\mathbf {T}_{\text {hand,b}}\).

3.5 Selection of stable configurations

This step searches which of the previously found possible final configurations \(\mathbf {Q}_c\) are stable at: (i) the initial arm end-effector location, and (ii) the computed end-effector location to place the object as required by the task (\(^w\mathbf {R}_{\text {obj},d}\)). As the location of the object changes to be compatible with the task to be performed (e.g., orient object in a vertical position to do a peg-in-hole task on a table), several phases of the hand-arm system reconfiguration can be distinguished:

  • Initial Configuration is the starting configuration, the arm end-effector and the hand joints are in their initial locations and the grasp is stable (Sect. 3.3).

  • Final Hand Configuration the hand fingers’ pose change to the final one while the arm remains fixed.

  • Final Task Configuration the hand base frame with respect to the world frame \(^w\mathbf {T}_{\text {hand}}\) is reoriented by modifying the arm configuration to place the object as desired to execute the task (\(^w\mathbf {R}_{\text {obj},d}\)).

Figure 5 shows an example of these three configurations and their corresponding hand object-level stiffness. It is important to notice that the stiffness at the object level (frame) is the same in Fig. 5b, c, just the orientation of the hand varies to relocate the object as desired.

Fig. 5
figure 5

Example of hand configurations and their corresponding object-level stiffness \(^{\text {obj}}\mathbf {K}_{\text {hand}}\). a Initial Configuration: the starting hand grasp configuration at the starting arm end-effector location. b Final Hand Configuration: the final grasp configuration that maximizes the stiffness at the object level in a particular direction. c Final Task Configuration: re-orientation of the hand base frame of (b) to configure the object as required for the task

3.5.1 Stable final hand configuration

To check if the grasp is stable for a fingers’ pose \(\mathbf {q}_i \in \mathbf {Q}_c\) in the Final Hand Configuration (Fig. 5b), the object location needs to be computed. We start by finding the transformation between the thumb and the hand base frames in the general configuration: \(^{\text {hand}}\mathbf {T}_{\text {thumb},i}= \; ^w\mathbf {T}_{\text {hand,b}}^{-1} \; ^w\mathbf {T}_{\text {thumb},b,i}\), where \(^w\mathbf {T}_{\text {thumb},b,i}\) is taken from the initially stored fingers’ workspace (Fig. 3). Next, from the initial arm configuration and the corresponding transformation matrix between the initial hand and world frames \(^w\mathbf {T}_\text {hand,0}\) (4), the transformation matrix between the thumb and the world frames at the possible hand final configuration can be retrieved: \(^w\mathbf {T}_{\text {thumb},i}= \, ^w\mathbf {T}_\text {hand,0} \; ^{\text {hand}}\mathbf {T}_{\text {thumb},i}\). The object location is then obtained from its transformation matrix with respect to the world frame (6).

Once the grasp is fully defined for the Final Hand Configuration, the synergistic joint stiffness \(\alpha \) stabilizing it is found. This is done by recursively increasing the joint stiffness using steps of 0.5 Nm/rad from its minimum to its maximum value. At each step, the stability of the grasp is checked (Sect. 3.3), stopping the process when such stability is achieved and therefore, storing the minimum \(\alpha \) that renders a stable grasp in each particular configuration. If \(\alpha _{max}\) is reached and it is not possible to stabilize the grasp, the configuration is discarded.

3.5.2 Stable final task configuration

Even if for a \(\mathbf {q}_i\) the Final Hand Configuration grasp can be stabilized, as the arm pose changes from the initial hand location to the final one, the corresponding stability at the Final Task Configuration needs to be checked (Fig. 5c). To do so, the required arm end-effector location in the world frame (Arm frame in Fig. 2a) that locates the object as desired needs to be found. From the final hand pose in the initial arm configuration (Final Hand Configuration in Fig. 5b, with corresponding transformation matrix to the world frame \(^w\mathbf {T}_{\text {hand},i}\) (4)), it is possible to retrieve the transformation matrix between the object and the hand base frames: \(^{\text {hand}}\mathbf {T}_{\text {obj},i}=^w\mathbf {T}_{\text {hand},i}^{-1} \; ^w\mathbf {T}_{\text {obj},i}\). This relation remains constant between the Final Hand and Final Task configurations (Figs. 5b,c). Therefore, the desired hand base frame orientation to perform a task can be retrieved from the corresponding rotation matrix in the world frame as \(^w\mathbf {R}_{\text {hand},d}=\,{}^w\mathbf {R}_{\text {obj},d} \; ^{\text {hand}}\mathbf {R}_{\text {obj},i}^{-1}\), where \(^w\mathbf {R}_{\text {obj},d}\) is the required object orientation by the task. The hand base position is set to be the same as the initial one \(^w\mathbf {P}_{\text {hand},0}\), and so the transformation matrix between the final hand base frame and the world frame in the Final Task Configuration is defined as:

$$\begin{aligned} ^w\mathbf {T}_{\text {hand},i}= \begin{bmatrix} ^w\mathbf {R}_{\text {hand},d} &{} ^w\mathbf {P}_{\text {hand},0} \\ 0 \quad 0 \quad 0 &{} 1 \\ \end{bmatrix}. \end{aligned}$$
(7)

Once the Final Task Configuration is fully defined, as it was done before (see end of Sect. 3.5.1), the minimum joint stiffness \(\alpha \) that stabilizes the grasp is searched for.

The set of configurations found to be stable both, at the Final Hand Configuration (Fig. 5b) and the Final Task Configuration (Fig. 5c) are stored in \(\mathbf {Q}_{c,s}\) (Fig. 3). From (1) and (5), the hand grasp stiffness at the object level in these configurations \(^{\text {obj}}\mathbf {K}_{\text {hand},i}\) is computed.

3.6 Selection of the hand optimal configuration

As explained in Sect. 2, depending on the task to execute sometimes a higher stiffness profile is required in particular directions at the object level. So far we focused on the three main axis directions xyz of the object frame. So, from the previously obtained \(\mathbf {Q}_{c,s}\), the one giving a higher \(^{\text {obj}}\mathbf {K}_{\text {hand},i}\) in the desired direction is chosen as the optimal. If two directions are selected defining a stiff plane, the configuration giving the highest \(^{\text {obj}}\mathbf {K}_{\text {hand},i}\) in that plane is selected. A final check is done between the optimal found hand configuration and the initial one, as in some cases the initial one might be already giving the optimal solution. In such case, if the hand grasp is stable at the required final arm end-effector location, the following step (Sect. 3.7) is omitted.

3.7 Stable trajectory generation for the finger joints

The previous steps lead to a Final Hand Configuration that provides the higher stiffness in the desired direction. Still, a trajectory is needed to achieve the final finger joint positions (\(\mathbf {q}_f\)) from the initial ones (Fig. 3).

Similarly to Ruiz Garate et al. (2018a) and based on the work of Sundaralingam and Hermans (2019) a smooth trajectory of 50 steps with \(\varDelta t=0.05\) sec is computed. At each step, the following function is optimized:

$$\begin{aligned} \begin{aligned}&\underset{\dot{\mathbf {q}}}{\text {min}} \quad \mathrm {f}(\mathbf {q})= \sum (|\mathbf {q}_f-\mathbf {q}_i|)+ h \left\Vert \mathbf {^{\text {obj}}P}_{f,0}-\mathbf {^{\text {obj}}P}_{f,i}\right\Vert \\&\text {subject to} \quad \dot{\mathbf {q}}_{min}\le \dot{\mathbf {q}}\le \dot{\mathbf {q}}_{max} \end{aligned} \end{aligned}$$
(8)

\(\dot{\mathbf {q}}_{min}\) and \(\dot{\mathbf {q}}_{max}\) are set to −30 and 30 deg/s respectively for every joint, and the initial joint angular velocity to a random value between 0 and 30 deg/s. A high weight is given to the second term of (8) (\(h=10^2\)), to ensure that the contact points are kept.

We further develop the method to confirm that the stability criteria at every step of the trajectory is met by recursively checking \(\alpha \) such that the squeezing hand on the object stabilizes the grasp. If the trajectory results unstable, the iterations stop and the algorithm restarts with the Final Hand Configuration giving the second highest stiffness in the desired direction. The process continues until a stable trajectory is found. A final step is added to the trajectory to reach the exact desired final configuration. Though a minimum \(\alpha \) is needed that stabilizes the grasp, the maximum synergistic joint stiffness \(\alpha \) is applied from the beginning of the trajectory as the goal is to have the grasp as stiff as possible in a particular direction.

3.8 Arm end-effector location and stiffness

The optimal hand grasp configuration results in the relocation of the object (Fig. 5). Therefore, the hand base needs to be reconfigured to locate the object as required for the task (7). From this new hand base frame, the transformation matrix of the arm end-effector location with respect to the world frame is obtained (4): \(^w\mathbf {T}_{\text {arm},i}=^w\mathbf {T}_{\text {hand},i} \, \mathbf {T}_{r}^{-1}\). This location is then sent to the Cartesian impedance controller of the arm.

Finally, based on the desired object-level stiffness, and the one already achieved by the hand, the arm Cartesian stiffness can be tuned. From (3), the arm end-effector stiffness with respect to the object frame can be computed as:

$$\begin{aligned} ^{\text {obj}}\mathbf {K}_{\text {arm}}=(^{\text {obj}}\mathbf {K}^{-1}-^{\text {obj}}\mathbf {K}_{\text {hand}}^{-1})^{-1}. \end{aligned}$$
(9)

The stiffness at the arm end-effector with respect to the world frame to be commanded to the robot, can be obtained from \(^{\text {obj}}\mathbf {K}_{\text {arm}}\) by using the corresponding transformation matrices from the object to the world frame (1): \(^{\text {w}}\mathbf {K}_{\text {arm}}= \, ^w\mathbf {Z}_{\text {obj}}^{-\top } \; ^{\text {obj}}\mathbf {K}_{\text {arm}} \; ^w\mathbf {Z}_{\text {obj}}^{-1}\).

It should be noted that although the former equations close the mathematical formulation to achieve a desired \(^{\text {obj}}\mathbf {K}\), assigning a specific numerical stiffness value for a particular task is quite arbitrary. Therefore, the arm stiffness can be adjusted in a more intuitive way by tuning it to comply with the task requirements.

4 Experimental validation

The proposed algorithm is implemented in Matlab 2017a (The MathWorks Inc.) with the Syngrasp toolbox (Malvezzi et al. 2015). For the communication with the real hand-arm system, the Robotics System ToolboxTM library from Matlab is used.

4.1 Definition of the experimental tests

4.1.1 Stiffness regulation for the peg-in-hole task

Several experiments are performed to test how the overall object-level stiffness can be regulated by the hand-arm system to achieve a desired task. We choose as a proof-of-concept task the vertical peg-in-hole placement. This represents a classical benchmarking task, which requires appropriate regulation of the impedance parameters at the object level.

To properly execute the peg-in-hole task and overcome the frictional forces between the peg and the hole, the stiffness along the insertion must be set to a large value, in comparison to the orthogonal axes, that must achieve a compliant response during the insertion and alignment phases.

Indeed, (Ajoudani et al. 2012) demonstrated how, on the one hand, being compliant in all directions lead to a failure on the execution of the task. On the other hand, if the end-point stiffness was set to high constant values in all directions, the task was executed but position errors led to high forces that could damage the robot or the manipulated objects. Therefore, the system should render high stiffness along the peg axis (z direction), and be compliant in the xy plane to deal with possible misalignments between the peg and the hole. This study applied to a stand-alone robotic arm system. When translating it to our hand-arm system, due to the serial coupling of the hand and the arm, the hand should be first configured so that the stiffness at the object level is maximum in the z direction. Then, the arm stiffness should be regulated to support the stiffness in the required z direction and to provide compliance in the xy plane.

The experimental tests for the hand-arm system are chosen to demonstrate how variations in one of both parts of the system influence the overall behaviour. Accordingly, rather than aiming for a particular \(^{\text {obj}}\mathbf {K}\) value, we test several combinations of \(^{\text {obj}}\mathbf {K}_{\text {arm}}\) and \(^{\text {obj}}\mathbf {K}_{\text {hand}}\) to evaluate the influence on the resulting \(^{\text {obj}}\mathbf {K}\) and the system’s behaviour.

To choose a set of appropriate tests we follow the proposed method, and decide first on the object-level stiffness provided by the hand. Full compliance and constant high object-level stiffness in all directions are not tested, as these have already proven to not be suitable solutions for the peg-in-hole task (Ajoudani et al. 2012). Moreover, the limited stiffness that the hand can provide would not allow to reach constant high values in all directions. Afterwards, complementary arm stiffness is chosen for every case to evaluate the influence of the hand-arm system coupling in the overall object-level stiffness. The tested cases are:

  • Case 1 Hand configured to be stiffest along the object main axis (z axis). Arm configured to be stiff in the z axis and compliant in the xy plane.

  • Case 2 Hand configured to be stiffest in the object z axis. Arm tuned to be compliant in all directions.

  • Case 3 Hand configured to be stiffest in the object xy plane. Arm configured to be stiff in the z axis and compliant in the xy plane.

Based on the coupled stiffness Eq. (3) and on Ajoudani et al. (2012), we forecast that in the test Case 3, where the hand is configured to be stiffest in the xy plane, the stiffness in the z direction will be diminished, and so even if the arm provides high stiffness in the z direction, the system will not create the necessary force to overcome the friction and misalignments to drive the peg in the hole. Otherwise, once the hand has been appropriately configured to be stiff in the z direction (Cases 1 and 2), if the arm is not appropriately regulated (Case 2), the same problem will arise, whereas if the arm Cartesian stiffness is appropriately set (Case 1), the task will be successfully executed.

4.1.2 Set-up and measurements

The experimental set-up in the initial position and the different elements of the system can be visualized in Fig. 2b. A simulated version is displayed in Fig. 2a. The peg is a cylinder of 40 mm diameter at the handle and 110 mm length with a weight of 58 g, which is placed along the thumb last link. The hole is designed to fit the peg creating friction when it is displaced, and it is set on a table. The object z axis goes along the peg, meaning the direction in which it should be inserted in the hole, whereas the xy plane should be parallel to the hole surface once the object z axis is correctly aligned with the hole.

During the experiments the desired and actual end-effector positions, and the estimated external torques at the arm joints are recorded. These last ones are transformed into forces at the arm end-effector by means of the arm Jacobian matrix: \(\mathbf {f}_{\text {ee,ext}}=-\mathbf {J}_{\text {arm}}^{-T} \, {\varvec{\tau }}_{\text {ext}}\). The mean and standard deviations of these measurements/estimations for the tests of each case are computed and analysed. Direct measurements of the object-level stiffness of the hand-arm system are not feasible. Nonetheless, the desired joint stiffness and positions are commanded through torque by means of the proposed impedance control (described in the following Sect. 4.2). Torque tracking accuracy depends on the low-level control implemented by the Allegro Hand which in previous works (Ruiz Garate et al. 2018a, b) showed a good matching between the desired and attained joint positions (also by comparing the real and modelled hands).

Each experimental case described previously is repeated 5 times to impose uncertainties on the alignment between the peg and the hole.

4.1.3 Definition of parameters

For the hand grasp definition, the structural compliance is set to a generic value of \(\mathbf {C}_s=diag\{10^{-4}\}\) m/N (5), signifying stiff finger contacts. Similar to Ruiz Garate et al. (2018a, (2018b), the joint stiffness synergy is defined by \({{\varvec{\varGamma }}}_f=[0.7,\, 0.95,\, 1,\, 0.8]\) for the index, middle, and little fingers, and \({{\varvec{\varGamma }}}_f=[1,\, 0.95,\, 1,\, 0.95]\) for the thumb, while the synergistic value \(\alpha \) is constrained between 1 and 6 Nm/rad being initially of 4 Nm/rad. Also, taking into account the Allegro’s hand fingertips dimensions and previous experiments in Ruiz Garate et al. (2018a), the threshold value \(p_t\) is set to 5 mm. For the stability optimization, minimum and maximum contact forces are set to 1 and 10 N as a compromise between the need to exert high contact forces and not setting a reference position too far inside the object. For the contact stability check, the coefficient of friction is set to \(\mu =0.8\), representing the high friction between the fingertips and the silicon peg cover (Fig. 2b).

For the easiness of analysis and visualization, the desired object frame in (7) for the task is aligned with the world frame: \(^w\mathbf {R}_{\text {obj},d}=\; ^w\mathbf {R}=\mathbf {I}_{3\times 3}\). Hence, in the final configuration \(^{\text {w}}\mathbf {K}_{\text {arm}}=^{\text {obj}}\mathbf {K}_{\text {arm}}\) (9).

To have a clear comparison between the stiff and compliant arm cases, the Cartesian stiffness is empirically defined as 1700 or 100 N/m for the z axis in the stiff and compliant cases, respectively. For the x and y axes the stiffness is always 500 N/m to be compliant to possible misalignments of the peg. The task is defined as a vertical trajectory on the world \(-z\) axis of 50 mm and is consistent across all trials.

4.2 Implementation of CMS/CDS hand under-actuation

All the Allegro Hand joints are actuated and controlled in torque, being able to fully define the object position and to regulate its stiffness through an impedance controller. To do so, 32 control inputs would be needed, 16 for the joints’ positions that would result in the desired object location, and 16 for the joints’ stiffness resulting in the desired grasp stiffness. Yet, the proposed method targets under-actuated hands. Therefore, to illustrate the application of our method in the under-actuated case, we use the introduced CMS/CDS control of the hand. By the use of the synergistic stiffness (CMS), only one input is available to define the stiffness of all joints, downsizing from 32 to 17 control inputs available, and thus recreating the under-actuation at the stiffness level. To simulate these concepts on the Allegro Hand, we depart from the impedance controller implemented in Ruiz Garate et al. (2018a) which applies the desired joint positions (\(\mathbf {q}_{f}\)) and synergistic joint stiffness as:

$$\begin{aligned} {\varvec{\tau }}= \mathbf {k}_q\, \delta \mathbf {q}+ \mathbf {k}_d\, \delta \dot{\mathbf {q}} + {\varvec{\tau }}_g, \end{aligned}$$
(10)

where \(\mathbf {k}_q=diag(\mathbf {K}_q) \in \mathbb {R}^{16} \) is the vector of joint stiffness values, and \(\mathbf {k}_d\in \mathbb {R}^{16}\) contains the damping parameters: \(\mathbf {k}_d=\sqrt{\frac{\mathbf {k}_p}{\mathbf {c}_f}}\), where \(\mathbf {c}_f\) are the found coefficients stabilizing the hand. \({\varvec{\tau }}_g\) is the gravity torque vector compensating for the weight of the hand.

As the hand base frame varies depending on the desired object location (Fig. 5), the gravity compensation term \({\varvec{\tau }}_g\) based on the fingers’ joint positions needs to be adjusted. We start from the basic equation \({\varvec{\tau }}_{f_i}=\mathbf {J}_{f,i}^\top \, \mathbf {f}_{f_i}\), where \(\mathbf {f}_{f_i} \in \mathbb {R}^{6\times 4}\) is the force at the corresponding joints of finger i, and \(\mathbf {J}_{f,i} \in \mathbb {R}^{6\times 4}\) is the matching finger Jacobian matrix. Then, we can define \({\varvec{\tau }}_{f_i}=\mathbf {J}_{f,i}^\top \, \mathbf {m}_i \, \mathbf {g}\), where \(\mathbf {g}=[0,\,0,\,-9.81,\,0,\,0,\,0]^T \, m/s^2\) is the gravity vector, and \(\mathbf {m}\) is a simplified mass matrix such that for a finger \(\mathbf {m}_i=[\sum _{l=1}^{4} m_l ,\, \sum _{l=2}^{4} m_l ,\, \sum _{l=3}^{4} m_l ,\, m_4]\), being \(m_l\) the mass of a finger link starting from the one closest to the palm.

The Jacobian matrix \(\mathbf {J}_{f,i}\) depends not only on the joints’ position, but also on the location of the hand base frame with respect to the world frame (Fig. 2a). Therefore, whenever the arm configuration changes varying the end-effector location, and so the hand base frame, \(\mathbf {J}_{f,i}\) needs to be recomputed. To have a fast computation of the matrix such that the gravity compensation would be effective, \(\mathbf {J}_{f,i}\) is calculated as: \(\mathbf {J}_{f,i}=diag(\{^w\mathbf {R}_{\text {hand}_t}\}_{i=1}^{nc}) \, ^{\text {hand}}\mathbf {J}_{f,i}\), where \(^{\text {hand}}\mathbf {J}_{f,i}\) is the finger Jacobian matrix with respect to the hand base frame and its form remains invariant just depending on the joint angles. \(^w\mathbf {R}_{\text {hand}_t}\) represents the rotation matrix from the hand base frame to the world frame at each time t.

For the arm, the trajectory is generated by the Cartesian-impedance controller (Balatti et al. 2019) and continuously scanned by Matlab, being \(^w\mathbf {T}_{\text {hand}}\) updated accordingly based on the robotic arm model (Sect. 3.1).

4.3 Experimental results

In Cases 1 and 2, following the method described in Sect. 3 for the hand, a stable configuration is found such that it maximizes the stiffness in the desired object-level direction z. This process is repeated to achieve a stiff profile in the xy plane for Case 3. In all three cases, afterwards the hand needs to be reoriented by changing the arm configuration so that the peg is placed in the vertical direction (to be able to align the peg with the hole). Figure 6 shows the simulated hands and Fig. 7 displays these reconfigurations during the experimental cases as sequences of frames. Case 2 plots are not shown as the hand and arm configurations are the same as in Case 1.

Fig. 6
figure 6

Hand configuration changes for experimental Case 1 and Case 3. First column shows the hand pose to obtain the desired stiffness (Final Hand Configuration) in both cases, while the second column shows the previous grasp relocated to obtain the desired orientation for the task (Final Task Configuration)

Fig. 7
figure 7

a Cases 1 and 2. Arm reconfiguration towards the Final Task Configuration. b Case 3. Upper row: hand reconfiguration towards the Final Hand Configuration. Lower row: arm reconfiguration towards the Final Task Configuration. A red dashed-line is plotted on the peg axis in order to better visualize the changes in orientation (Color figure online)

Figure 8 shows the stiffness ellipsoids at the object level for the Initial Configuration and the three studied cases (Sect. 4.1.1). As it can be observed, in the 2 first cases, the hand is initially very stiff along the object z axis, resulting in a Final Hand Configuration equivalent to the Initial Configuration. Otherwise, in the third case the configuration changes rendering a higher stiffness in the xy plane, which results in a reduced stiffness along the object z axis. The difference between Cases 1 and 2 is that in the latest the stiffness of the arm is significantly smaller along the peg z axis, resulting in a large reduction at the object-level stiffness in that direction (93% reduction with respect to Case 1). Case 1 and 3 have the same arm stiffness, in Case 3 however, the stiffness along the object z is 32% smaller than in Case 1, while the stiffness in the x and y directions is 22 and 49% larger, respectively.

Fig. 8
figure 8

Stiffness ellipsoids at the object level for the initial configuration and the three studies cases. In each case the stiffness is shown for the hand, the arm end-effector, and the overall hand-arm system

Figure 9a, b show the peg-in-hole task execution during the experiments and the measured/estimated variables for Cases 1–3 respectively. The estimated object center position and external force at the arm end-effector are computed using the approaches in Sects. 3.4 (6) and 4.1.2, respectively, and used as a measure of the successful execution of the task. In Case 1 the mean final difference in vertical position is less than 1.5 mm for the arm end-effector and 1 mm for the estimated object position. In Case 2 the difference between the desired and final vertical position is around 42 mm for the arm and the object. Finally, for Case 3 the difference is around 2 mm for the arm end-effector and 6 mm for the estimated object position. Therefore, being the desired displacement of 50 mm (Sect. 4.1.3), it can be concluded that in Case 1 the peg is successfully inserted in the hole for all trials (maximum error of all trials of \(e_d=1.3\) mm, corresponding to a relative error of \(e_{d,r}=2.53\%\)), whereas in Case 2 the task cannot be successfully executed in any of the trials (\(e_d \in [40.8, 44.6]\) mm, corresponding to \(e_{d,r} \in [81.58, 82.26]\%\)). Though Case 3 seems to better approximate the desired trajectory (\(e_d \in [2.7, 7.1]\) mm, \(e_{d,r} \in [5.45, 14.13]\%\), we can see in Fig. 9b how there is a big increment in the end-effector force. Indeed, though the robotic arm actually follows the trajectory, the compliant hand fingers bend. This misaligns the peg which pushes against the hole walls moving the set-up. Consequently, the peg re-orients and does not get inserted in the hole, meaning that the estimated object position is no longer reliable and Case 3 is not able to successfully execute the task. This is further discussed in the following Sect. 5.

Fig. 9
figure 9

a Case 1 and Case 2. b Case 3. Pictures: Experimental set-up at the beginning (up) and end of the task execution (down). In Case 3 a red dashed-line is plotted on the peg axis to better visualize the changes in orientation. Graphs: Corresponding mean and standard deviation of the arm end-effector and estimated object vertical positions, and estimated force at the arm end-effector. Red represents desired positions and Blue measured/estimated ones (Color figure online)

5 Discussion

As expected, when the hand and the arm are both stiff in the task direction (Case 1, Fig. 9a left column), the system is able to drive the peg in the hole overcoming the friction, and thus the trajectory is well followed. However, when the arm is set to be compliant (Case 2, Fig. 9a right column), though the hand remains stiff in the task direction, due to the compliance of the arm, the overall system becomes compliant in the vertical direction (Fig. 8), and so, initially the system is not able to overcome the friction of the hole. As the difference between the desired and actual positions increases, the force raises driving the peg slightly into the hole. Yet, these small displacements are not enough to follow the trajectory. Finally, when the arm is stiff and the hand is more compliant (Case 3), the overall system reduces its stiffness in the vertical direction, and becomes stiffer in the xy plane (Fig. 8). As a result, the system tries to follow the trajectory driven by the arm (Fig. 9b), due to the compliance of the hand, any small friction causes the peg to get miss-aligned and start pushing against the hole walls. This generates an increase on the force which results in moving the set-up (hole base) instead of going inside (pictures in Fig. 9b). Due to its high stiffness, the arm end-effector continues descending and pushing, while the fingers bend due to the hand compliance and as a result, the base containing the hole moves. Thus, though it seems that the arm end-effector follows the desired trajectory, the difference on the object location is higher. In any case, due to the displacement of the whole set-up, the estimated object location is not reliable, as the peg gets misaligned with the thumb and its real location varies with respect to the estimated one (see pictures in Fig. 9b). It must be pointed out that only in Case 3 is the base containing the hole moved. In each trial where this happens, the set-up is put back to its original location to assure repeatability of the experiments.

These results demonstrate that correct adjustment of the stiffness of both elements, the hand and the arm, is needed to achieve the appropriate execution of the task, i.e., driving the peg in the hole. When one of both systems is not adjusted appropriately, the hand-arm system is not able to perform the task.

In the shown example, the computation of all possible stable configurations (207) at the Final Hand and Task locations summed up to 7.5 s, therefore being currently performed off-line. Nonetheless, it must be pointed out that once an initial grasp and tool are defined, this process needs to be executed only once, being able to use the stored data for any task variations and/or changes in the desired stiffness orientations. Once these values are available, a desired stiffness orientation is selected, taking an average of 0.0027 s to find the best matching configuration. Afterwards, the needed time to generate the hand trajectory highly depends on the suitability of the first chosen final configuration, the difference between both configurations (number of trajectory steps), and the need for high synergistic joint stiffness. In our example experiments, this takes an average of 11 s per computed trajectory. Yet, this process can be sped-up just by checking if the application of the highest stiffness would stabilize the grasp. Also, once the trajectory is found, it can be replicated with no time cost. Moreover, it must be taken into account that all these calculations are currently carried out in Matlab, and therefore the performance can be highly improved if later translated to C++.

The proposed method is generalizable to any system with a fully controllable arm and an under-actuated hand by appropriately adjusting to the limitations arising from each under-actuated case. While under-actuation at the control level has been demonstrated with the CDS/CMS example, in the case of mechanical under-actuation two different aspects should be considered. First, the number of hand compatible configurations (Sect. 3.4) would be reduced, as the fingers workspace would be more limited. This would reflect in less possible resulting hand stiffness \(^{\text {obj}}\mathbf {K}_{\text {hand}}\) due to the Jacobian influence (5). Then, the trajectory generation (Sect. 3.7) should be adapted to include a further constraint on the possible joint positions due to the under-actuation.

Nonetheless, the method presents some limitations due to the assumptions made. First, we focus only on fingertip grasps. Grasp points at other finger links could be easily added into the equations through the Jacobian \(\mathbf {J}_{\text {hand}}\) and Grasp \(\mathbf {G}\) matrices (5). This addition could help with the stabilization of the grasps, yet at the expense of going towards power-grasp models and therefore reducing the manipulability capacity of the tool and the influence of the hand in the overall stiffness. Second, we assume the object to be attached to the thumb. This assumption was a good approximation during these experiments resulting in stable grasps and has proven to work with diverse objects and hand reconfigurations in previous works (Ruiz Garate et al. 2018a). In other studies we relaxed this assumption by allowing all fingertips to rotate around the contact points (Ruiz Garate et al. 2018b). While this latter approach is more general and realistic, it comes at a higher computational cost and also cannot assure the certain location of the object. Besides, it must be noted that to compute the hand stiffness (5) we use the ideal contact model (Bicchi 1994). Therefore, in the cases where the assumptions made are no longer valid, e.g., when some preloading is present at the joints, the geometric terms of the equation should also be taken into account.

Future work foresees the use of force sensors to enhance the contact detections and stability. Moreover, further tests of the method with different hands providing diverse under-actuation principles are envisaged.

6 Conclusions

This manuscript proposed an algorithm to regulate the resulting object-level stiffness of a hand-arm system constrained by under-actuation principles and the requirement of preserving the contact points on the grasped object. The mathematical foundations were described where the under-actuation was illustrated at the level of the hand by the synergistic CMS/CDS principles. The desired stiffness for a given task was characterized as a set of directions in which to maximize the stiffness or be compliant. The method was tested by several experiments with the peg-in-hole task, where it was proven that by using the proposed method the correct tuning of the hand-arm system stiffness can be achieved to successfully perform a task.