1 Introduction

Toward the realization of carbon neutrality, thorough energy conservation measures are being considered in various fields. Since many robots used in factories also consume a huge amount of energy every day, their energy saving is an important issue. Therefore, research on energy saving of robots has been actively conducted so far [1, 2]. The authors have studied an energy-saving control method for robots using passive storage elements such as springs [3]. In the proposed method, the energy consumption is reduced by adding springs to the joints of the manipulator and using the eigenfrequency and eigenmode of the link system. However, when the mass of the system changes due to the grasping of the object, or when the boundary conditions at the start and end points are changed, it is necessary to readjust the eigenfrequency and eigenmode of the system. Therefore, in this paper, we propose a simple variable stiffness mechanism that can be installed at the joint of the manipulator. Using the method of multibody dynamics, we derive the spring constant conversion formula and formulate the stiffness adjustment rule based on it. In addition, a planar 2DOF manipulator equipped with the proposed variable stiffness mechanism is actually manufactured, and the validity of the derived theoretical formula is verified. Finally, we confirm that it becomes possible to flexibly change the boundary conditions by using the proposed variable stiffness mechanism.

2 Design and Control of Energy-Saving Manipulator

Figure 1 shows the configuration of the proposed energy-saving manipulator. In the proposed method, the joints must be able to rotate freely in order to use the natural vibration of the system, and motors cannot be installed in the joints like a normal manipulator. Therefore, the joints are free joints, and the torque is applied from the reaction wheels installed at the appropriate positions of the links. In addition, a mechanism consisting of two tension springs and a special spring holder (see Chap. 3 for details) is installed in the joint to give rotational stiffness. The equations of motion for the link and the reaction wheel can be expressed as follows.

$$\begin{aligned} {} & {} \boldsymbol{M}_{\theta \theta }\ddot{\boldsymbol{\theta }}+\boldsymbol{M}_{\phi \theta }^T\ddot{\boldsymbol{\phi }}+\boldsymbol{h} =-\boldsymbol{K}(\boldsymbol{\theta }-\boldsymbol{\theta }_n) \end{aligned}$$
(1)
$$\begin{aligned} {} & {} \boldsymbol{M}_{\phi \theta }\ddot{\boldsymbol{\theta }}+\boldsymbol{M}_{\phi \phi }\ddot{\boldsymbol{\phi }}=\boldsymbol{\tau } \end{aligned}$$
(2)

where \(\boldsymbol{\theta }=[\theta _1,\theta _2\cdots ,\theta _N]^T\) is the vector of joint variables, \(\boldsymbol{\phi }=[\phi _1,\phi _2\cdots ,\phi _N]^T\) is the vector of rotation angles of reaction wheels, \(\boldsymbol{M}_{\theta \theta }\), \(\boldsymbol{M}_{\phi \theta }\), \(\boldsymbol{M}_{\phi \phi }\) are the inertia matrices, \(\boldsymbol{h}\) is the vector of centrifugal and Coriolis forces, \(\boldsymbol{\tau }=[\tau _1,\tau _2\cdots ,\tau _N]^T\) is the vector of driving torques of reaction wheels, \(\boldsymbol{K}=\text{ diag }[k_1,k_2,\dots ,k_N]\) is the stiffness matrix (\(k_i\) is the equivalent spring constant obtained by converting the stiffness of the two tension springs into the rotational stiffness around the joint axis), \(\boldsymbol{\theta }_n\) is the vector representing the mounting angle at which the spring has a natural length.

Eliminating \(\boldsymbol{\phi }\) from Eqs. (1) and (2) yields the following equations of motion

$$\begin{aligned} \boldsymbol{M}(\boldsymbol{\theta })\ddot{\boldsymbol{\theta }} +\boldsymbol{h}(\boldsymbol{\theta },\dot{\boldsymbol{\theta }}) = -\boldsymbol{K}(\boldsymbol{\theta }-\boldsymbol{\theta }_n) +\boldsymbol{u} \end{aligned}$$
(3)

where \(\boldsymbol{M}\equiv \boldsymbol{M}_{\theta \theta }-\boldsymbol{M}_{\phi \theta }^T \boldsymbol{M}_{\phi \phi }^{-1}\boldsymbol{M}_{\phi \theta }\), \(\boldsymbol{u}\equiv -\boldsymbol{M}_{\phi \theta }^T\boldsymbol{M}_{\phi \phi }^{-1}\boldsymbol{\tau }\).

Here, we consider a motion that stops at \(\boldsymbol{\theta }(0) = \boldsymbol{\theta }_0\) and stops again at \(\boldsymbol{\theta }(t_f) = \boldsymbol{\theta }_f\). Energy consumption is evaluated using the following cost function.

$$\begin{aligned} J=\int _0^{t_f}f_0(\boldsymbol{x},\boldsymbol{u})dt,\ f_0(\boldsymbol{x},\boldsymbol{u})=\frac{1}{2}\boldsymbol{u}^T\boldsymbol{W}\boldsymbol{u} \end{aligned}$$
(4)

where \(\boldsymbol{W}\in R^{N\times N}\) is a positive definite symmetric matrix. An energy-saving effect can be obtained by appropriately selecting the spring parameters and motion trajectory. In the following, the control input \(\boldsymbol{u}(t)\), trajectory \(\boldsymbol{\theta }(t)\), spring constant \(\boldsymbol{k}=[k_1,k_2,\cdots ,k_{N}]^T\), and spring mounting angle \(\boldsymbol{\theta }_n\) that minimize the cost function (4) will be explained.

Fig. 1.
figure 1

Structure of proposed energy saving manipulator

Since Eq. (3) is nonlinear and it is difficult to obtain an analytical solution, here we linearize the equations of motion to obtain an approximate solution and analyze the basic characteristics of the optimal solution. First, the coordinate reference point is shifted to the middle point between the initial state and the final state in order to make the boundary conditions symmetrical. That is, define \(\boldsymbol{\theta }_m = \frac{1}{2}(\boldsymbol{\theta }_f+\boldsymbol{\theta }_0)\), \(\boldsymbol{\theta }_e = \frac{1}{2}(\boldsymbol{\theta }_f-\boldsymbol{\theta }_0)\) and transform the coordinates as \(\tilde{\boldsymbol{\theta }}(t)=\boldsymbol{\theta }(t)-\boldsymbol{\theta }_m\), \(\tilde{\boldsymbol{\theta }}_n=\boldsymbol{\theta }_n-\boldsymbol{\theta }_m\). Then, approximate the inertia matrix at the midpoint \(\tilde{\boldsymbol{\theta }}=\boldsymbol{0}\) (\(\boldsymbol{\theta }=\boldsymbol{\theta }_m\)) as \(\boldsymbol{M}(\boldsymbol{\theta }_m)=\hat{\boldsymbol{M}}\), and neglect the centrifugal and Coriolis forces \(\boldsymbol{h}\), the equations of motion are linearized as follows.

$$\begin{aligned} \hat{\boldsymbol{M}} \ddot{\tilde{\boldsymbol{\theta }}} +\boldsymbol{K} \tilde{\boldsymbol{\theta }} = \boldsymbol{u} +\boldsymbol{K} \tilde{\boldsymbol{\theta }}_n \end{aligned}$$
(5)

Let us consider the free vibration system and calculate the modal matrix \(\boldsymbol{\varPhi }\in R^{N\times N}\) that satisfies \(\boldsymbol{\varPhi }^T\hat{\boldsymbol{M}}\boldsymbol{\varPhi }=\boldsymbol{I}\), \(\boldsymbol{\varPhi }^T\boldsymbol{K}\boldsymbol{\varPhi }=\boldsymbol{\varOmega }^2\), \(\boldsymbol{\varOmega }=\text{ diag }[\omega _1,\omega _2,\cdots ,\) \(\omega _N]\), where \(\boldsymbol{I}\) is the identity matrix and \(\omega _i\) is the i-th natural frequency. We make the coordinate transformation \(\boldsymbol{q}=\boldsymbol{\varPhi }^{-1}\tilde{\boldsymbol{\theta }}\) (\(\boldsymbol{q}_n=\boldsymbol{\varPhi }^{-1}\tilde{\boldsymbol{\theta }}_n\)) and define the state vectors \(\boldsymbol{x}=[\boldsymbol{x}_1^T, \boldsymbol{x}_2^T]^T=[\boldsymbol{q}^T, \dot{\boldsymbol{q}}^T]^T\). Then, the following state equations are found.

$$\begin{aligned} \dot{\boldsymbol{x}}_1 = & {} \boldsymbol{x}_2\ (\equiv \boldsymbol{f}_1(\boldsymbol{x},\boldsymbol{u})) \end{aligned}$$
(6)
$$\begin{aligned} \dot{\boldsymbol{x}}_2 = & {} -\boldsymbol{\varOmega }^2 \boldsymbol{x}_1+\boldsymbol{\varPhi }^T \boldsymbol{u}+\boldsymbol{\varOmega }^2 \boldsymbol{q}_n\ (\equiv \boldsymbol{f}_2(\boldsymbol{x},\boldsymbol{u})) \end{aligned}$$
(7)

Next, let us introduce an adjoint vector \(\boldsymbol{\psi }=[\boldsymbol{\psi }_1^T, \boldsymbol{\psi }_2^T]^T\) and define the Hamiltonian as \(H=f_0+\boldsymbol{\psi }_1^T\boldsymbol{f}_1+\boldsymbol{\psi }_2^T\boldsymbol{f}_2\). Then, the optimal control is derived from the condition \(\partial H/\partial \boldsymbol{u}=\boldsymbol{0}\) as \(\boldsymbol{u}=-\boldsymbol{W}^{-1}\boldsymbol{\varPhi }\boldsymbol{\psi }_2\). Substituting this into H, the Hamiltonian along the optimal trajectory is given by

$$\begin{aligned} H=\boldsymbol{\psi }_1^T\boldsymbol{x}_2-\boldsymbol{\psi }_2^T\boldsymbol{\varOmega }^2\boldsymbol{x}_1-\frac{1}{2}\boldsymbol{\psi }_2^T\boldsymbol{\varPhi }^T\boldsymbol{W}^{-1}\boldsymbol{\varPhi }\boldsymbol{\psi }_2+\boldsymbol{\psi }_2^T\boldsymbol{\varOmega }^2\boldsymbol{q}_n \end{aligned}$$
(8)

From Eq. (8), the canonical equations of Hamilton can be derived as follows.

$$\begin{aligned} \dot{\boldsymbol{x}} = & {} \partial H/\partial \boldsymbol{\psi }=\boldsymbol{A}\boldsymbol{x}+\boldsymbol{B}\boldsymbol{\psi }+\boldsymbol{c}_n\end{aligned}$$
(9)
$$\begin{aligned} \dot{\boldsymbol{\psi }} = & {} -\partial H/\partial \boldsymbol{x}=-\boldsymbol{A}^T\boldsymbol{\psi } \end{aligned}$$
(10)
$$ \boldsymbol{A} = \left[ \begin{array}{cc} \boldsymbol{0} &{} \boldsymbol{I}\\ -\boldsymbol{\varOmega }^2 &{} \boldsymbol{0} \end{array} \right] , \boldsymbol{B} = \left[ \begin{array}{cc} \boldsymbol{0} &{} \boldsymbol{0}\\ \boldsymbol{0} &{} -\boldsymbol{\varPhi }^T\boldsymbol{W}^{-1}\boldsymbol{\varPhi } \end{array} \right] , \boldsymbol{c}_n = \left[ \begin{array}{c} \boldsymbol{0}\\ \boldsymbol{\varOmega }^2\boldsymbol{q}_n \end{array} \right] $$

By solving the differential Eqs. (9) and (10) under the boundary conditions \(\boldsymbol{x}(0)=[-\boldsymbol{q}_e^T, \boldsymbol{0}^T]^T\) and \(\boldsymbol{x}(t_f)=[\boldsymbol{q}_e^T, \boldsymbol{0}^T]^T\) (\(\boldsymbol{q}_e=\boldsymbol{\varPhi }^{-1}\boldsymbol{\theta }_e\)), we obtain the optimal solution that minimizes the energy consumption. Choosing the weighting matrix as \(\boldsymbol{W}=\hat{\boldsymbol{M}}^{-1}\) allows to decouple the equations by the property \(\boldsymbol{\varPhi }^T\boldsymbol{W}^{-1}\boldsymbol{\varPhi }=\boldsymbol{\varPhi }^T\hat{\boldsymbol{M}}\boldsymbol{\varPhi }=\boldsymbol{I}\). In this case, we can solve the problem analytically and the main results can be summarized as follows.

The optimal spring mounting angle that minimizes J is always \(\boldsymbol{q}_n=\boldsymbol{0}\) (\(\boldsymbol{\theta }_n=\boldsymbol{\theta }_m\)). The optimal control \(\boldsymbol{u}(t)\) can be computed by

$$\begin{aligned} \boldsymbol{u}(t)= & {} -\hat{\boldsymbol{M}}\boldsymbol{\varPhi }\boldsymbol{\psi }_2(t),\ \boldsymbol{\psi }_2(t)=[\psi _{21}(t), \psi _{22}(t), \cdots , \psi _{2N}(t)]^T \nonumber \\ \psi _{2i}(t)= & {} \frac{2\omega _i^2\{\sin \omega _i(t_f-t)-\sin \omega _it\}}{\sin \omega _it_f-\omega _it_f}q_{ei} \end{aligned}$$
(11)

The optimal trajectory can be expressed as

$$\begin{aligned} \boldsymbol{\theta }(t)\!= & {} \!\boldsymbol{\theta }_m+\boldsymbol{\varPhi }\boldsymbol{q}(t),\ \boldsymbol{q}(t)=\boldsymbol{x}_1(t)=[q_{1}(t), q_{2}(t), \cdots , q_{N}(t)]^T \nonumber \\ q_{i}(t)\!= & {} \!-q_{ei} \left\{ \cos \omega _it\!+\!\frac{\omega _it\sin \omega _it\sin \omega _i t_f}{\sin \omega _it_f-\omega _it_f} \!+\!\frac{(\omega _it\cos \omega _it-\sin \omega _it)(1+\cos \omega _it_f)}{\sin \omega _it_f-\omega _it_f} \right\} \end{aligned}$$
(12)

The relationship between the minimum value of the energy consumption J and the robot cycle time \(t_f\) can be summarized as follows

$$\begin{aligned} J(t_f) = & {} \sum _{i=1}^{N}J_i(t_f),\ J_i(t_f)= \left\{ \begin{array}{ll} \frac{2\omega _i^3(1+\cos \omega _it_f)}{\omega _it_f-\sin \omega _it_f}q_{ei}^2 &{} (\text { if } \omega _i \ne 0 ) \\ \frac{24}{t_f^3}q_{ei}^2 &{} (\text { if } \omega _i=0) \end{array} \right. \end{aligned}$$
(13)

These theoretical solutions were derived based on the linearized equations of motion. However, using a special numerical calculation method for optimal control [4], we have confirmed that these approximate solutions closely approximate the basic properties of the exact solutions.

If we consider \(t_f\) as the quantity that may take any value, \(H(t_f)=0\) should be satisfied from the transversality condition. Moreover, since Eq. (8) does not contain t explicitly, \(\partial H/\partial t=0\), it holds H=const. along optimal trajectories. Hence the condition \(H(0)=0\) should be satisfied. By substituting \(\boldsymbol{x}(0)=[\boldsymbol{x}_1(0)^T, \boldsymbol{x}_2(0)^T]^T=[-\boldsymbol{q}_e^T, \boldsymbol{0}^T]^T\) and \(\boldsymbol{\psi }_2\) into Eq. (8), one can get

$$\begin{aligned} H(0) = \sum _{i=1}^N\frac{-2\omega _i^5t_f\sin \omega _it_f}{(\omega _it_f-\sin \omega _it_f)^2}q_{ei}^2 \end{aligned}$$
(14)

From Eq. (14), it follows that \(H(0)=0\) is satisfied if \(\sin \omega _it_f=0(i=1,2,\cdots ,N)\) or equivalently \(\omega _it_f=r_i\pi \ (i=1,2,\cdots ,N)\), where \(r_i\) is an integer. When the condition \(\omega _it_f=r_i\pi \) is satisfied, the cost function (13) can be expressed as

$$\begin{aligned} J = \sum _{i=1}^N J_i=\sum _{i=1}^N\frac{2\omega _i^3(1+\cos r_i\pi )}{r_i\pi }q_{ei}^2 \end{aligned}$$
(15)

From Eq. (15), it is understood that \(J_i\) takes the maximum \(4\omega _i^3q_{ei}^2/r_i\pi \) if \(r_i\) is an even number and vanishes if \(r_i\) is an odd numbers. Hence, J takes the global minimum if all \(r_i\) are odd number resulting in the minimum value of zero.

Next, we consider the problem to design the spring stiffnesses \(\boldsymbol{k}=[k_1,k_2,\cdots ,k_N]^T\) that make the consumed energy minimum for a specified time \(t_f^{*}\). Firstly, from the optimal conditions \(\omega _it_f=r_i\pi \), the natural frequencies read as \(\omega _i=r_i\pi /t_f^{*}\ (i=1,2,\cdots ,N)\), where all \(r_i\) should be selected to be odd numbers so that all \(J_i\) takes the minimum. The spring stiffnesses \(\boldsymbol{k}=[k_1,k_2,\cdots ,k_N]^T\) should be determined as they satisfy the characteristic equations \(\text{ det }[\boldsymbol{K}-\omega _i^2\hat{\boldsymbol{M}}]=0\ (i=1,2,\cdots ,N)\). Let us define the error vector \(\boldsymbol{e}=[e_1,e_2,\cdots ,e_N]^T\) where \(e_i=\text{ det }[\boldsymbol{K}-\omega _i^2\overline{\boldsymbol{M}}]\). Then, the problem here becomes to find \(\boldsymbol{k}\) that satisfies \(\boldsymbol{e}(\boldsymbol{k})=\boldsymbol{0}\). Solving this nonlinear equation, e.g., by Newton-Raphson method, we can obtain the optimal spring stiffnesses \(\boldsymbol{k}\) that minimizes the energy consumption. Finally, we can achieve the minimum energy control of planar robot manipulators by adding the springs with optimal stiffnesses to the joint at the optimal mounting angles \(\boldsymbol{\theta }_m\).

3 Variable Stiffness Mechanism

As explained in the previous chapter, the optimum spring constant \(\boldsymbol{k}=[k_1,k_2,\cdots ,k_{N}]^T\) is calculated from the characteristic equations \(\text{ det }[\boldsymbol{K}-\omega _i^2\hat{\boldsymbol{M}}]=0\ (i=1,2,\cdots ,N)\). Since \(\hat{\boldsymbol{M}}=\boldsymbol{M}(\boldsymbol{\theta }_m)\), \(\boldsymbol{\theta }_m = \frac{1}{2}(\boldsymbol{\theta }_f+\boldsymbol{\theta }_0)\), the optimum spring constant changes if the boundary conditions \(\boldsymbol{\theta }_0, \boldsymbol{\theta }_f\) are changed or if the mass included in \(\boldsymbol{M}\) changes when the manipulator grips and transports the object. Since it is not practical to replace springs every time the boundary conditions or mass change, a mechanism that can adjust the spring constant is required. Therefore, in this chapter, we propose a simple variable stiffness mechanism that can be added to the joints of the manipulator.

Figure 2 shows the proposed variable stiffness mechanism for one axis. For simplicity of notation, the subscript i that was added to indicate the joint axis number in the previous chapter is omitted. The rod-shaped part is rigidly connected to the child link on the tip side, and the T-shaped part is fixed to the parent link on the root side at the optimum mounting angle \(\theta _n\). Here, we consider changing the stiffness by sliding the mounting positions \(S_1, S_2\) of the tension springs by the amount b. In the following, we denote the distance from the rotation axis to the spring mounting points \(P_1, P_2\) as a, the spring constant of the tension spring attached between \(P_j S_j\) as \(k_t\), and the natural length as \(l_0\). \(\varSigma \) is a coordinate system in which the origin is set on the rotation axis and the y-axis is aligned with the longitudinal direction of the parent link. \(\varSigma _A\) and \(\varSigma _B\) are coordinate systems fixed to parts A and B, respectively, as shown in the Fig. 2.

Fig. 2.
figure 2

Simple Variable Stiffness Mechanism

Firstly, we calculate the torque that this mechanism produces around the point O when the child link rotates \(\theta \) with respect to the parent link. The vector \(\boldsymbol{d}_j\), which represents the vector from the point \(S_j\) to the point \(P_j\) in the \(\varSigma \) coordinate system, can be calculated as follows.

$$\begin{aligned} \boldsymbol{d}_j = \boldsymbol{r}_j^P - \boldsymbol{r}_j^S = \boldsymbol{A}\overline{\boldsymbol{u}}_j^P - \boldsymbol{B}(\overline{\boldsymbol{u}}_j^S - \overline{\boldsymbol{u}}^O) \end{aligned}$$
(16)

where, \(\overline{\boldsymbol{u}}_j^P\) is the vector from the point O to the point \(P_j\) expressed in the \(\varSigma _A\), \(\overline{\boldsymbol{u}}_j^S\) and \(\overline{\boldsymbol{u}}^O\) are the vectors from the origin of \(\varSigma _B\) to the points \(S_j\) and O expressed in the \(\varSigma _B\). Moreover, \(\boldsymbol{A}\) is the rotation matrix from \(\varSigma _A\) to \(\varSigma \), \(\boldsymbol{B}\) is the rotation matrix from \(\varSigma _B\) to \(\varSigma \), and they can be expressed as follows.

$$\begin{aligned} \boldsymbol{A} = \left[ \begin{array}{cc} \cos \theta &{} -\sin \theta \\ \sin \theta &{} \cos \theta \end{array} \right] , \boldsymbol{B} = \left[ \begin{array}{cc} \cos \theta _n &{} -\sin \theta _n \\ \sin \theta _n &{} \cos \theta _n \end{array} \right] \end{aligned}$$
(17)

Since the total length of the tension spring can be calculated by \(\Vert \boldsymbol{d}_j\Vert \), the torque \(Q_j\) produced by one tension spring around the point O can be calculated as follows.

$$\begin{aligned} Q_j(\theta ) = -k_t(\Vert \boldsymbol{d}_j \Vert - l_0 )( \boldsymbol{A}\boldsymbol{V}\overline{\boldsymbol{u}}_j^P)^T \frac{\boldsymbol{d}_j}{\Vert \boldsymbol{d}_j \Vert } \end{aligned}$$
(18)

where \(\boldsymbol{V}\) is a rotation matrix that rotates the vector counterclockwise by 90\(^{\circ }\). Then, the torque T induced around the point O by two tension springs can be calculated as

$$\begin{aligned} T(\theta )=Q_1(\theta )+Q_2(\theta ) \end{aligned}$$
(19)

Next, we derive an equation for calculating the equivalent rotational spring constant k around the joint axis from the spring constant \(k_t\) of the tension spring. As explained in Chap. 2, the optimal spring mounting angle is \(\boldsymbol{\theta }_n=\boldsymbol{\theta }_m=\frac{1}{2}(\boldsymbol{\theta }_0+\boldsymbol{ \theta }_f)\). Therefore, without loss of generality, we can assume \(\boldsymbol{\theta }_n=\boldsymbol{0}\), since the spring will expand and contract symmetrically about the equilibrium point. Hence, we can derive the spring constant conversion formula by considering the motion around \(\boldsymbol{\theta }=\boldsymbol{0}\). When \(\boldsymbol{\theta }_n=\boldsymbol{0}\), Eq. (19) can be calculated as follows.

$$\begin{aligned} T(\theta ) = & {} -k_t (1-\frac{l_0}{\Vert \boldsymbol{d}_1(\theta ) \Vert }) \{ a(a-b)\sin \theta + a h \cos \theta \} \nonumber \\ {} & {} -k_t (1-\frac{l_0}{\Vert \boldsymbol{d}_2(\theta ) \Vert }) \{ a(a-b)\sin \theta - a h \cos \theta \} \end{aligned}$$
(20)

Equation 20) is Taylor-expanded around \(\theta =0\), and after first-order approximation, it is considered to be balanced with the torque \(-k\theta \) around the point O, that is

$$\begin{aligned} T(\theta ) \cong T(0)+\frac{\partial T(0)}{\partial \theta } \theta \equiv - k \theta \end{aligned}$$
(21)

When \(\theta =0\), \(\Vert \boldsymbol{d}_1(0) \Vert = \Vert \boldsymbol{d}_2(0) \Vert = \sqrt{h^2+b^2}\), so the first term in the middle side of Eq. (21) becomes 0. Calculate the derivative \(\partial T(0)/\partial \theta \) of the second term of the middle side of Eq. (21), and compare the middle side with the right side. Then, the following conversion formula for equivalent rotational spring constant k and tension spring constant \(k_t\) is obtained.

$$\begin{aligned} k = 2 k_t \left\{ \frac{l_0 a^2\,h^2 }{(\sqrt{h^2+b^2})^3} + \left( 1-\frac{l_{0}}{\sqrt{h^2+b^2}} \right) a(a-b) \right\} \end{aligned}$$
(22)

Finally, we consider how to obtain the sliding amount b of the spring mounting point, when the desired rotational spring constant \(k^{*}\) is specified. From Eq. (22), k can be considered as a function of b, so it is expressed as k(b). Then, the problem is to find b that satisfies the nonlinear equation \(f(b)=k(b)-k^{*}=0\). To solve this problem numerically using Newton-Raphson method, the iteration formula is

$$\begin{aligned} b^{(\alpha +1)}=b^{(\alpha )} - \frac{f(b^{(\alpha )})}{f'(b^{(\alpha )})} \end{aligned}$$
(23)

where \(\alpha \) is the iteration number. When using Newton-Raphson method, it is important to select the initial value \(b^{(0)}\) appropriately. If k(b) is Taylor-expanded around \(b=0\) and first-order approximation is used, the following equation is obtained.

$$\begin{aligned} k(b) \cong k(0)+\frac{\partial k(0)}{\partial b}b = 2 k_t a^2 \left\{ 1 - \left( 1 - \frac{l_0}{h} \right) \left( \frac{b}{a} \right) \right\} \end{aligned}$$
(24)

Solving the above equation for b gives the following equation.

$$\begin{aligned} b= \frac{(2 k_t a^2 - k)h}{2 k_t a (h - l_0)} \end{aligned}$$
(25)

By substituting the desired optimum spring constant \(k^{*}\) into k on the right hand side of Eq. (25), the appropriate initial value \(b^{(0)}\) when applying the Newton-Raphson method can be calculated.

Fig. 3.
figure 3

Picture of energy saving manipulator

Fig. 4.
figure 4

Enlarged view of the joint mechanism

4 Experimental Verification

A variable stiffness mechanism proposed in Chap. 3 and an energy-saving manipulator equipped with it were prototyped. Figures 3 and 4 show the appearance of the experimental setup. A DC motor is used to drive the reaction wheel, and a rotary encoder is installed at the joint to measure the rotation angle of the link. In addition, an electromagnetic brake is installed in the joint so that the link can be stopped at any angle.

Firstly, the validity and accuracy of the spring constant conversion formula (22) derived in Chap. 3 are verified using the second link of the experimental device. Push a point on the 2nd link at a distance l away from the 2nd joint with a force gauge perpendicular to the link, and measure the force F required to tilt the 2nd link by \(\theta \). Here, this is repeated 5 times and the average value \(F_{ave}\) is obtained, and the torque T acting on the rotating axis is calculated by \(T=F_{ave}l\). As an example, when \(b=0\)[m], \(\theta \) is changed by 1[deg] from 2[deg] to 15[deg]. Figure 5 shows the result of calculating the torque T with circles. The solid line in the figure is the approximate straight line that passes through the origin using the method of least squares from the obtained data. If the equivalent rotational spring constant is k, there is a relationship of \(T=k\theta \), so \(k=0.0016\)[Nm/rad] can be obtained from the slope of the approximated straight line. Similar measurements and calculations are performed for b from 0[m] to 0.07[m] by 0.01[m]. Plotting the obtained k against b results in the circles in Fig. 6. The solid line in the figure is the result of calculation using the theoretical formula (22). Both results are in good agreement, which confirms the validity of Eq. (22).

Next, we investigate the adjustable range of k by the proposed variable stiffness mechanism. Figure 7 shows the result of calculating how much the rotational spring constant k can be changed by changing the movement amount b of the spring mounting point based on Eq. (22). For example, when using a tension spring with a spring constant of \(k_{t}=10.0\)[N/m], by changing b from 0[m] to 0.1[m], spring constant k can be changed by about 8 times. Also, it can be seen that the larger the value of \(k_{t}\), the wider the range of k that can be changed.

Finally, it is verified whether it is possible to move between specified points by adjusting the mounting points of the springs even when the boundary conditions are changed by using the proposed variable stiffness mechanism. Here, adaptive control is used for trajectory tracking control. The motion time is set to \(t_f^{*}=2\)[s], and we first consider the case where the robot stops at \({\boldsymbol{\theta }}_0 = [0,0]^T\)[deg] and then stops again at \({\boldsymbol{\theta }}_{f}= [40,40]^T\)[deg]. Obtaining the desired spring constant by the optimal spring design method explained in Chap. 2, and calculating the spring mounting point movement amount to achieve that spring constant by the method proposed in Chap. 3, result in \(\boldsymbol{b}=[b_1 , b_2]^T=[0.000,0.079]^T\)[m]. Figure 8 shows the experimental result when the spring mounting points were adjusted to this position. In the figure, the desired trajectory of the end effector’s attitude angle \(\phi \) is indicated by a dotted line, and the actual trajectory is indicated by a solid line. From this, it can be confirmed that the target of 80[deg] is reached at the final time. Next, Fig. 9 shows the experimental results when the target point is changed to \({\boldsymbol{\theta }}_{f}= [50,50]^T\)[deg] without changing the spring constant. From the figure, it can be confirmed that there is an error of about 10[deg] at the final time. Therefore, based on the changed boundary conditions, the optimal spring constant is calculated again by the method in Chap. 2, and the appropriate spring mounting point movement is calculated by the method proposed in Chap. 3, result in \(\boldsymbol{b}=[ b_1,b_2]^T=[0.006,0.069]^T\)[m]. Figure 10 shows the experimental results when the spring mounting point was adjusted to this position. From the figure, it can be confirmed that the target of 100[deg] is reached at the final time. From the above, it was confirmed that the proposed variable stiffness mechanism can flexibly cope with different boundary conditions. We have confirmed that the proposed method can reduce energy consumption by about 95% compared to conventional manipulators.

Fig. 5.
figure 5

Relationship between \(\theta \) and T.

Fig. 6.
figure 6

Relationship between b and k.

Fig. 7.
figure 7

Variable range of k

Fig. 8.
figure 8

Tip angle (\(\boldsymbol{\theta }_f=[40,40]^T\)deg)

Fig. 9.
figure 9

Tip angle (\(\boldsymbol{\theta }_f=[50,50]^T\)deg, before adjust stiffnesses)

Fig. 10.
figure 10

Tip angle (\(\boldsymbol{\theta }_f=[50,50]^T\)deg, after adjust stiffnesses)

5 Conclusions

In this study, we investigated a method of driving the manipulator with significantly less energy consumption than usual by adding springs to the joints and effectively using the elastic potential energy. We developed a simple variable stiffness mechanism that can be attached to a joint, and demonstrated that it can flexibly respond to changes in the manipulator’s mass and boundary conditions.