## 3 Existing Cobot Programming and Control Methodologies
### Cobot Task Complexity  
Cobots are one of the most utilised machines within manufacturing automation, capable of implementing a broad range of application tasks [11]. The level of complexity among tasks may vary according to the type of task and the object or workforce being manipulated. For example, a sanding task on an object with a flat surface may be considered less complex than if the object was of a complicated design. Similarly, screwdriving, parts insertion and assembly may be deemed complex tasks due to the fine movements and precision required. Still, the level of complexity may vary depending on the configuration, degree of precision and other specific requirements of that task. Universal Robots has defined a common range of cobot task categories [6], outlined in Table 3. Some examples of tasks for each category are also provided in the table. Cobots are expected to autonomously manage task complexity, especially as it increases beyond human capacity during collaborative operations [13]. The execution of less complex tasks is often considered an automated process, while for tasks of higher complexities, there is an expectation that they will be conducted autonomously by robots [36]. Furthermore, task complexity can be reduced by sharing the task among multiple cobots [37] or by task reduction, cooperatively solved by multiple robots [38]. For instance, some researchers have explored different ways of coordinating multiple cobots' movements and actions [39], while others have focused on developing new algorithms to improve communication and cooperation among cobots [40]. This paper focuses on the complexity of the task overall to be undertaken by a cobot or cobots with respect to the programming effort required. While multiple-robot systems (MRS) can reduce the overall complexity of a task, their need for collaboration and accurate coordination [41] can add significantly to the programming workload. Further compounding the technical complexity of MRS is the need to select a suitable task allocation strategy that is robust, scalable and can be optimised for a specific task [42]. A cluster-based approach, centred around the location of tasks relative to team members, allocates tasks by training a binary classifier to nominate one of two task allocation mechanisms through an auction bidding process [43]. Another model, using k-means clustering, works to solve the balanced multi-robot task allocation problem by minimising travel distance while optimising utilisation, which relates to task completion time [44]. Intended for use within a Cyber-Physical System such as a warehouse management system, task execution is asynchronously assigned to multiple robots in an ordering mechanism to allocate interdependent Human-Robot Collaboration (HRC) tasks [45]. The model uses mutual exclusion to allocate tasks, dynamically promoting system accuracy and robustness. A _Fuzzy Logic System_ can coordinate multiple robots to fulfil a common task. Robots, trained using a _Genetic Fuzzy System_, derive a functional strategy to jointly execute a nominated task [46]. MRS that rely on communication mechanisms, such as decentralised planning algorithms, need complex programs to manage alignment coordination between interacting agents accurately [47]. Adapted from the Universal Robots task definitions, an empirical list of task complexity levels, with associated indicative category examples, is presented in Table 4. The levels have been selected based on the amount of robotic and programming effort required to perform a typical task at the proposed complexity level rather than on the computational resources consumed by a robot during the execution of the task [38]. The degrees of effort have been determined empirically based on a range of programming tests conducted primarily with a UR5e, a cobot representative of the Universal Robots eSeries cobot range [48].