## 5 The Underlying Skillset
### Skills Required to Program and Control a Cobot
\begin{table}
\begin{tabular}{c c} \hline \hline
**Skill Level Designation** & **Description of Skill Level** \\ \hline
0: Unskilled & No knowledge of robotic operation or programming \\ \hline
1–3 R: Basic Robotics & Basic knowledge of robotic concepts, such as the difference between collaborative and industrial robots, the joint structure of a manipulator (robotic arm) and basic understanding of end effectors such as a gripper or suction cup \\ \hline
4–6 R: Mid Robotics & Familiar with robotic movement and functionality, including linear and non-linear joint movement, consequences of joint speed and acceleration settings (collision prevention) and coordinate frames \\ \hline
7–10 R: High Robotics & In-depth knowledge of robotics, with practical skills in cobot installation, tool configuration with respect to coordinate frames, precise joint configuration, I/O signals, sensors and configuration of safety elements such as protection zones \\ \hline
1–3 P: Basic Programming & Basic knowledge of programming concepts, such as data types, data inputs, computations and outputs \\ \hline
4–6 P: Mid Programming & Familiar with basic programming techniques involving common elements such as variables, loops and conditionals \\ \hline
7–10 P: High Programming & Competent in structured programming, using functions, different loop and conditional types, switch statements and classes \\ \hline \hline \end{tabular}
\end{table} 
Table 10: User skill levels for the programming and control of cobots. common ground between them. Following some targeted programming comparisons, it was found that some tasks of medium complexity could be programmed at the higher end of a Teach Pendant's capability, for example, or at the lower end of a script-based method, as indicated with the Venn diagram in Figure 6. The choice of method would be subject to the skill level or discretion of the person programming the task. This further complicates mapping task complexity to the corresponding required skill level for tasks within that intersecting zone. The extent of the skills and knowledge required will vary based on the complexity of the task being programmed. In addition, the broad range of approaches available to program a specific task can further complicate the job. For example, the kinematic flexibility of a cobot, while allowing great freedom in tool orientation and position, also increases the programming complexity [93]. Considering the robotics and programming skills required, Figure 7 shows a graphical representation of the skills required to program a cobot by different methods based on task complexity. From a skill requirement perspective, the transition from programming a cobot with a teach pendant to write a script-based program to do so is significant. Using the Universal Robots _URScript_ or ABB _RAPID_ programming methods as examples, a programmer must  
1. Establish a connection to the cobot controller from a remote console. Some knowledge of computer networks would be required to communicate with a host over a socket connection. 2. Compose a syntactically correct control program. At least a moderate level of skill in programming, with an understanding of program structure and syntax, would be required. For this study, _URScript_ test programs were written in _Python_, so an understanding of the relevant formal language for the client program is also necessary. 3. Choose:  
* Individual cobot joint positional coordinates and orientation parameters
* Motor speed and acceleration settings
* Tool selection
* Delay timing
* Other aspects depend on the complexity of the task being programmed. Sound knowledge of robotic functionality, particularly about coordinate frames and joint movement, would be mandatory. Figure 6: Cobot programming methods according to task complexity.