# Finding Optimal Manipulator Arm Shapes to Avoid Collisions in a Static Environment
## 2 Kinematic Structure of the Robot  
A survey on the types of kinematic structures typically used in collaborative and industrial robots by the selected well-known manufacturers (namely ABB, Fanuc, Yaskawa, Kawasaki, Kuka, Staubli, and Universal Robots) shows ([PERSON] et al., 2018) that approximately 76% of the robot series use some minor variations of the same kinematic structure (see Figure 1). This structure has six degrees of freedom with six rotational joints in a specific sequence that allow simple calculation of inverse kinematics and a good maneuverability, while also providing an easy mechanical design of the arm. The Denavit-Hartenberg parameters ([PERSON], 2018; [PERSON] et al., 2019) uniquely describing this kinematic structure are listed in Table 1.  
of the optimization algorithm, it is necessary to choose a curve that can be fully and unambiguously described by a mathematical function--for instance, a part of a conic section (circular of elliptic arc, hyperbola, parabola), a general polynomial, or a complex spline (B-spline, T-spline, Bezier curve, etc.). Examples of some possible shapes are displayed in Figure 2. The curves have different properties, but it can be anticipated that none of the shapes will represent a generally better solution as far as collision avoidance is concerned; the best shape can be selected only when dealing with one concrete situation. For a universal solution, we will select the shape under other conditions.  
Although this stage of the research does not include physical verification of the results, it is important to ensure that it will be possible to make a physical prototype later. The circular arc and quadratic Bezier curve (see Figure 2) present a significant complication related to the mechanical construction of the joints located at the ends of the curved arm (represented by circles)--the angle of approach (tangent) differs with varying amounts of bending of the arm, which means that for each version of the arm, a different flange connecting the arm to the joint would have to be designed and manufactured. This problem is eliminated by using, for instance, a combination of two cubic Bezier curves, as in this case, the tangents at the outer control points are always pointing in the direction of the straight line connecting the joints.  
The chosen spline consists of two cubic Bezier curves connected in the middle (see Figure 3). The first curve (green) is described by the control points \(A,Q_{1},Q_{2},D\), and the second one (blue) by control points \(D,Q_{3},Q_{4},B\). The points \(A\) and \(B\) theoretically lie at the corresponding joints of the robot--\(A=P_{1}\), \(B=P_{2}\) for the lower arm, and \(A=P_{3}\), \(B=P_{4}\) for the upper arm (see also Figure 1), but there will have to be some offset given by the construction of the joint. However, in this article, we consider this offset to be zero for simplicity. Vector \(\vec{e}\) is the result of the optimization algorithm (see further) and represents the required bending amount and direction in a plane perpendicular to \(\vec{AB}\). The control points for the Bezier curves are calculated as follows:  
\[C =\frac{B+A}{2}, \tag{1}\] \[D =C+\vec{e},\] (2) \[\vec{p} =\frac{B-A}{|AB|},\] (3) \[Q_{1} =A+m\cdot\vec{p},\] (4) \[Q_{2} =D-n\cdot\vec{p},\] (5) \[Q_{3} =D+n\cdot\vec{p},\] (6) \[Q_{4} =B-m\cdot\vec{p}, \tag{7}\]  
where \(m\) and \(n\) are scalars describing the pointedness of the curve near the particular boundary control point. The values of \(m\) and \(n\) can be constant or can be changed by the optimization algorithm. Finally, the curves are described by the following parametric equations for \(0\leq t\leq 1\):  
Figure 2: Examples of several possible simple shapes for an arm link (blue and cyan show cubic Bézier curves with different pointedness near the middle point).  
\[Z(t) =(1-t)^{3}A+3(1-t)^{2}tQ_{1}+3(1-t)t^{2}Q_{2}+t^{3}D, \tag{8}\] \[Z^{\prime}(t) =(1-t)^{3}D+3(1-t)^{2}tQ_{3}+3(1-t)t^{2}Q_{4}+t^{3}B. \tag{9}\]