# Adaptive Robust Fuzzy Impedance Control of an Electro-Hydraulic Actuator
## 3 Fuzzy Impedance Control  
From Figure 1, load force \(F_{L}\) is positively correlated with the drive velocity, which should be kept in a regular range to protect the environment or workpieces. The desired dynamic relationship between velocity and force can be acquired through fuzzy impedance control. Define a first-order impedance rule  
\[m_{c}\ddot{e}_{x}+b_{c}\dot{e}_{x}=e_{F} \tag{9}\]  
where \(m_{c}\) and \(b_{c}\) are the desired mass and damping coefficient, respectively, \(e_{F}=F_{L}-F_{Ld}\) is the force deviation, \(F_{Ld}\) is the desired load force, \(\dot{e}_{x}=\dot{x}_{d}-\dot{x}\) is the velocity correction, and \(\ddot{e}_{x}\) is its derivative.  
A number of impedance rules are required to obtain a better dynamic relationship between velocity and force, due to the variation of velocity command and load force requirement. Therefore, fuzzy logic was adopted to adjust parameters of impedance rules. The parameters were predetermined based on the velocity command and load force requirement.  
The fuzzy impedance controller was designed based on Mamdani-type fuzzy inference engine and center of gravity defuzzification. The input and output membership functions are defined as Figures 2 and 3 respectively. Five membership functions are used for input variables \(V_{c}\) and \(\bar{F}_{c}\), named as LS, S, M, B, LB in a range of [0, 1], whereas seven membership functions are used for output variables \(M\) and \(B\), named as LS, MS, S, M, B, MB, LB in a range of [0, 1]. The following are the scaling functions  
\[\begin{split}& V_{c}=\frac{1}{2}+\frac{1}{v_{\max}-v_{\min}}\Big{(}v_{c}- \frac{v_{\max}+v_{\min}}{2}\Big{)}\\ & F_{c}=\frac{1}{2}+\frac{1}{F_{L\max}-F_{L\min}}\Big{(}F_{Ln}- \frac{F_{L\min}+F_{L\min}}{2}\Big{)}\\ & m_{c}=(m_{c\max}-m_{\min})\times M+m_{\min}\\ & b_{c}=(b_{c\max}-b_{c\min})\times B+b_{c\min}\end{split} \tag{10}\]  
where \(v_{c}=\dot{x}_{d}\) is the velocity command, \(v_{\max}\) and \(v_{\min}\) are its maximum and minimum values; \(F_{Ln}\) is the nominal load force, and \(F_{L\min}\) and \(F_{L\min}\) are its maximum and minimum values. The nominal load force can be measured in advance. It is the force of the load cylinder when it moves at a desired velocity with a normal load. \(m_{\max}\) and \(m_{\min}\) are the maximum and minimum values of desired mass, and \(b_{c\max}\) and \(b_{c\min}\) are the maximum and minimum values of desired damping coefficient.  
Tables 1 and 2 show the fuzzy rules, velocity command \(V_{c}\) and nominal load force \(F_{c}\) are the input variables, whereas desired mass \(M\) and desired damping coefficient \(B\) are the output variables. The goal of fuzzy impedance control is to adjust the load force to an acceptable range and provide an expected dynamic response between velocity and load force. According to the load cylinder in the system, a larger velocity leads to a larger load force that requires a smaller \(m_{c}\) to improve the dynamics, and a larger \(b_{c}\) to ease the restriction of the load force, respectively. A larger nominal load force also demands a smaller \(m_{c}\) and a larger \(b_{c}\), because the system is much more vulnerable to disturbances, which means a small change of velocity will result in a larger change of load force.  
Figure 3: Membership functions for outputs.  
Figure 2: Membership functions for inputs.  
Considering fuzzy impedance control in the control process, the desired velocity trajectory turns into \(\dot{x}_{s}=\dot{x}_{d}-\tilde{\bar{e}}_{x}\), and the derivatives become \(\ddot{x}_{s}=\ddot{x}_{d}-\tilde{\bar{e}}_{x}\), \(\ddot{x}_{s}=\dddot{x}_{d}-\dddot{\bar{e}}_{x}\), \(\ddot{\bar{e}}_{x},\ddot{\bar{e}}_{x}\) and \(\dddot{\bar{e}}_{x}\) are the computation results of (9), which are different from \(\dot{e}_{x}\), \(\ddot{e}_{x}\) and \(\dddot{\bar{e}}_{x}\).  
**Assumption 2**.: _Based on Assumption 1 and the first-order impedance rule, \(\dot{x}_{s}\), \(\ddot{x}_{s}\), \(\dddot{\bar{x}}_{s}\) are assumed to be bounded._