# Defining Feasible Joint and Geometric Workspaces Through Boundary Functions
## 3 Theoretical Framework and Methodology  
This section presents the theoretical framework and methodology for analyzing kinematic configurations and constraints in robotic manipulators. To ensure clarity in notation, vectors in \(\mathbb{R}^{3}\) will be represented as \(r\), while rotation matrices in \(\mathbb{R}^{3\times 3}\) will be denoted as \(R\). Mathematical conditions are derived to prevent internal collisions, forming the basis for defining feasible workspaces across robotic systems. In the context of kinematic chains for robotic manipulators, each link is represented as a set of points. The principal nodes \(a\) and \(b\) define the positions of the joints that connect one link to the next. Any point on the current link can be labeled as \(a+n\), where \(n\) denotes the index of the point relative to the node \(a\). Similarly, the node \(b\) connects to the subsequent link, and its points are labeled as \(b+m\). The purpose of this work is to establish the conditions under which a collision occurs between a point \(a+n\) on the current link and a point \(b+m\) on the subsequent link. An example of this kinematic configuration is illustrated in Figure 2.  
To describe the feasible workspace, we define a family of **boundary functions** denoted as \(B_{i}(\mathbf{q})=[\beta_{i,1}(\mathbf{q}),\,\beta_{i,2}(\mathbf{q}),\,\beta_{i,3} (\mathbf{q})]^{\top}\in\mathbb{R}^{3}\), where each scalar function \(\beta_{i,j}(\mathbf{q})\) evaluates the feasibility of the manipulator's configuration \(\mathbf{q}=[q_{1},q_{2},\ldots,q_{n}]^{\top}\in\mathbb{R}^{n}\) with respect to specific constraints. Each scalar component \(\beta_{i,j}(\mathbf{q})\) is interpreted as  
\[\beta_{i,j}(\mathbf{q})= \begin{cases}0,&\text{if the evaluated point lies exactly on the boundary of the feasible workspace,}\\ >0,&\text{if the configuration lies within the feasible region,}\\ <0,&\text{if the configuration lies outside the feasible region.}\end{cases}  \tag{9}\]  
In addition, each boundary function component may be bounded using a three-index notation \(\beta_{i,j,k}\), where the following are defined:  
\(i\) indicates the index of the boundary function;  
\(j\) refers to the vector component (e.g., \(x\), \(y\), or \(z\));  
\(k\in\{1,2\}\) denotes the type of bound: 1 for the upper (right) bound and 2 for the lower (left) bound. These functions encapsulate three main types of constraints:  
* **Kinematic Constraints**: These ensure that the joint variables respect their operational limits:  
\[q_{i}^{\min}\leq q_{i}\leq q_{i}^{\max},\quad\forall i\in\{1,\ldots,n\}. \tag{10}\]
* **Collision Avoidance Constraints**: These prevent intersections between links by requiring a minimum separation distance \(d_{\min}\) between key points on different bodies:  
\[\|\mathbf{r}_{a+n,b+m}\|\geq d_{\min}. \tag{11}\]
* **Geometric Constraints**: These define the external spatial boundaries of the workspace imposed by the robot's design or environment:  
\[x_{\min}\leq x\leq x_{\max},\quad y_{\min}\leq y\leq y_{\max},\quad z_{\min} \leq z\leq z_{\max}. \tag{12}\]  
To organize these constraints, we distinguish between two categories of boundary functions:  
* **Point Boundary Functions**, which evaluate spatial relationships between pairs of points (e.g., potential contact or collision points between links). These are typically defined through vector differences between transformed local positions and used to ensure separation between mechanical components. * **Geometric Boundary Functions**, which impose spatial limits on the manipulator's motion by constraining the position of specific links or end effectors relative to predefined geometric boundaries. These are often formulated using projection matrices and fixed spatial references. Using these definitions, the boundary functions serve as mathematical tools for systematically evaluating whether a given configuration \(\mathbf{q}\) satisfies the required motion constraints while remaining within a collision-free, feasible workspace.