## 4 Manipulability Maximization and Constraints Satisfaction
### Joint Velocity Constraints
#### 4.3.2 Joint Velocity Limits  
To satisfy joint velocity limits, the maximum magnitude of self-motion is determined such that the velocity limit for each joint is not violated [18], namely:  
\[|u_{i_{p}}(t)+\alpha\beta u_{i_{b}}(t)|\leq u_{i}^{+}, \tag{25}\]  
where \(u_{i}^{+}\) is the \(i\)th joint velocity limit with \(i\in 1,2,\ldots,\delta_{m}\). Therefore, to avoid exceeding the joint velocity limits, \(\alpha(t)\) must be selected such that it satisfies (25). The upper and lower limits of \(\alpha(t)\) can be found using this equation. For each joint, it can be shown that the maximum and minimum values of \(\alpha(t)\), denoted by \(\alpha_{i_{max}}(t)\) and \(\alpha_{i_{min}}(t)\), respectively, are given by  
\[\alpha_{i_{max}}(t)=\max\bigg{(}\frac{u_{i}^{+}-u_{i_{p}}(t)}{\beta(t)u_{i_{b }}(t)},\frac{-u_{i}^{+}-u_{i_{p}}(t)}{\beta(t)u_{i_{b}}(t)}\bigg{)}, \tag{26}\]  
\[\alpha_{i_{min}}(t)=\min\bigg{(}\frac{u_{i}^{+}-u_{i_{p}}(t)}{\beta(t)u_{i_{b }}(t)},\frac{-u_{i}^{+}-u_{i_{p}}(t)}{\beta(t)u_{i_{b}}(t)}\bigg{)}. \tag{27}\]  
Then, \(\alpha_{max}(t)\) and \(\alpha_{min}(t)\) for all the joints are:  
\[\alpha_{max}(t)=\min\big{(}\alpha_{1_{max}}(t),\alpha_{2_{max}}(t),\ldots, \alpha_{\delta_{max}}(t)\big{)}, \tag{28}\]  
\[\alpha_{min}(t)=\max\big{(}\alpha_{1_{min}}(t),\alpha_{2_{min}}(t),\ldots, \alpha_{\delta_{min}}(t)\big{)}, \tag{29}\]  
where \(\alpha_{max}(t)\) is the self-motion magnitude limit. In [18], the maximum value of \(\alpha_{max}(t)\) and minimum value of \(\alpha_{min}(t)\) are calculated for the whole trajectory, and the upper bound of \(\alpha_{max}(t)\) or lower bound of \(\alpha_{min}(t)\) is used as the step size to take advantage of the maximum admissible velocities. In our approach, a suitable initial value \(\alpha_{s}\) is selected  
Figure 3: Example shape of self-motion variation factor \(\beta\).  
through experimentation and the upper and lower limits of \(\alpha\) are calculated for each time \(t\). The value of \(\alpha\) at time \(t\) is then given by  
\[\alpha(t)=\begin{cases}a_{max}(t),&\text{if }\alpha_{s}>\alpha_{max}(t),\\ \alpha_{min}(t),&\text{if }\alpha_{s}<\alpha_{min}(t),\\ \alpha_{s},&\text{otherwise}.\end{cases} \tag{30}\]  
This technique, in contrast with using the maximum/minimum self-motion for the entire trajectory, prevents sudden joint accelerations due to the use of maximum velocities in every step. Note that for some cases \(\alpha(t)\) may be negative if \(\alpha_{max}(t)\) is negative, which means that the joint velocity limits cannot be satisfied without decreasing the manipulability of the system. The task can be executed as long as the system is still away from any singularity. The reader may have noticed that \(\beta(t)\) is in the denominator of (26) and (27), and as shown in Section 4.3.1, \(\beta(t)\) is zero at the beginning and the end of the trajectory. For these two cases, \(\alpha_{min}=-\infty\) and \(\alpha_{max}=\infty\), but this does not cause instability in the system because by following (30), the value of \(\alpha(t)\) is set to \(\alpha_{s}\).  
It is also possible to detect whether a task can be accomplished or not by using the limits of \(\alpha(t)\). If the inequality \(\alpha_{max}(t)<\alpha_{min}(t)\) is true, then a suitable value of \(\alpha(t)\) which avoids the joint velocity limits does not exist, because even the particular solution will violate them. In other words, the given task space trajectory cannot be accomplished without violating at least one of the joint velocity limits. For these situations, the task space trajectory must be replanned with a longer execution time \(t_{f}\) or with lower end-effector's maximum velocities.