# FES Control of a Finger MP Joint with a Proxy-Based Super-Twisting Algorithm
## 3 Proposed Proxy-Based Super-Twisting Algorithm (PSTA)  
_Continuous-Time Expression of PSTA_  
To improve the accuracy of PID control while retaining the anti-windup property of PSMC [24], we propose incorporating first-order sliding mode control (SMC) with the super-twisting algorithm (STA) [33; 34], one of second-order SMC strategies. This combination exploits the set-valueness of extended SMC in the Filippov sense and is expected to enhance second-order control accuracy when saturation is inactive. It can be described as follows:  
\[\sigma =e+\kappa_{3}\int_{0}^{t}\lfloor e(\tau)\rceil^{\xi}\mathrm{d} \tau,\quad\mu^{*}=\mathrm{proj}(\mathcal{F},\mu) \tag{7a}\] \[\mu \in-F\,\mathrm{sgn}(s_{2}),\quad s_{2}=\sigma-s_{1},\] (7b) \[\mu =-\kappa_{1}\lfloor s_{1}\rceil^{1/2}+v,\quad\vartheta\in- \kappa_{2}\,\mathrm{sgn}(s_{1}), \tag{7c}\]  
where \"\(\in\)\" means that the signum function \(\mathrm{sgn}(\cdot)\) is set-valued instead of the conventional single-valued version, \(e=x-x_{d}\), \(\sigma\) is the defined sliding variable, and when \(\xi=1\), it changes to the linear one \(\sigma=e+\kappa_{3}\int_{0}^{t}e(\tau)\mathrm{d}\tau\), \(\mu\) is defined in (4) and (5), while \(\mu^{*}\) is the saturated input, \(\kappa_{3}>0\) is a parameter of determining the convergence rate of \(e\), \(s_{2}\) is an intermediate variable and can be viewed as the sliding variable of the first-order SMC, \(s_{1}\) is an another intermediate variable and can be viewed as the sliding variable of the STA, and their summation always satisfies \(s_{1}+s_{2}=\sigma\), \(F>0\) is the gain of the sliding mode control (SMC) and is also the saturation level of actuator, \(v\) is also an intermediate variable of the STA, \(\kappa_{1},\kappa_{2}>0\) are the gains of the conventional STA and its selection can refer to the work in [35], and the control input \(\mu\) is determined by the set-valued first-order SMC (7b) and the set-valued STA (7c) simultaneously. The notation \(\lfloor\cdot\rceil^{\xi}\) is defined as \(\forall x\in\mathbb{R}\), \(\lfloor x\rceil^{\xi}=\lvert x\rvert^{\xi}\mathrm{sign}(x);\forall\xi\in(0,1]\), \(\lfloor 0\rceil^{\xi}=0\); \(\lvert x\rceil^{0}=\mathrm{sign}(x)\). It should be noted that \(\mu\) appearing in both (7b) and (7c) means that it is subjected to the constrains of (7b) and (7c) simultaneously, which is possible due to the set-valued mappings of (7b) and (7c). Due to the special structure of the above controller (7), it is referred as the proxy super-twisting algorithm (PSTA) thereafter. Additionally, from (7), one has \(\mu=u^{*}\), that is, \(\mu\in\mathcal{F}=[-F,F]\) is always satisfied, which is not the case of the conventional STA. One desired property of the PSTA (7) is that, due to the saturation constraint by (7b), it has a similar property of the PSMC [24] and the conditioned STA [36], i.e., anti-windup effect with the saturation level \(F>0\), which is inherited from the PSMC. However, the differences is that, when \(\lvert\mu\rvert<F\), the control input \(\mu\) is determined by the STA (7c), which enables it to achieve a second-order asymptotical accuracy and higher than that of the PMSC with the same three number of parameters. Moreover, comparing to the conventional STA [33], it has the properties of anti-windup property and can deal with nondifferentiable and differentiable disturbances due to the combination of (7b) and (7c). Let us see the dynamics (5) interconnected by the PSTA (7), by first checking the derivative of \(s_{2}\) in (7) with \(\mu=u^{*}\), that is, \(\dot{s}_{2}=\dot{\sigma}-\dot{s}_{1}\) and:  
\[\dot{s}_{2}=f(t,x)+g(x,u)\mu^{*}-\dot{s}_{1}=\dot{e}+\kappa_{3} \lfloor e\rfloor^{\xi}-\dot{s}_{1}\] \[\in[-F_{0},F_{0}]+[g_{m},g_{M}]\mu-\dot{s}_{1}, \tag{8}\]from which one can see the closed-loop system with the control input \(\mu\) subjected to the constraints \(\mu\in-F\operatorname{sgn}(s_{2})\), \(s_{2}=\sigma-s_{1}\), and \(\mu=-\kappa_{1}\lfloor s_{1}\rceil^{1/2}+\upsilon,\upsilon\in-\kappa_{2} \operatorname{sgn}(s_{1})\).