## 3 Existing Cobot Programming and Control Methodologies
### Task Allocation in Human-Robot Collaboration  
A vital step in the optimisation of Human-Robot Collaboration (HRC) is the assignment of tasks to individual collaborators (agents) to maximise the efficient utilisation of the cobot [49]. Within a manufacturing operation, sub-processes can be instinctively allocated to the cobot or the human, based on considerations such as suitability, capability, or human preference. To increase efficiency in a collaborative production environment, a systematic resolution process must be applied to determine which tasks should be conducted by the cobot and which tasks would be best left to a human [50; 51]. The individual skillsets of both the cobot and human involved are considered. Tasks are dynamically assigned in a skill-based HRC system, which provides a graphical programming interface and pre-programmed macros to simplify the cobot programming operation [52]. A task allocation model, which maps task characteristics to agent capability, was proposed by [53] and exploited human operators' adaptability and cognitive prowess, along with cobots' efficiency, accuracy, and consistency. Designed to manage tasks allocated to a human and two robots in a heavy part handling HRC assembly operation, a solver based on the _Genetic Algorithm_[54] is used to optimise both operation time and selection based on agent capability. Considering human contentment in HRC, a two-staged capability-based task allocation process was proposed [55]. In the first stage, task elements that align with human capabilities are identified to assess whether humans can perform these safely or are automated to preserve human safety. The remaining tasks are then allocated according to suitability in the second stage based on agent capability, time efficiency, cost, and quality outcomes. Allocation of tasks in HRC assembly operations is based on the classification of the task complexity level and assigned to humans or robots in a complexity-based task allocation method [56]. Agent skills, along with environmental aspects such as component properties, presentation and feeding, are considered in the selection process, which affects efficient handling in an assembly environment. A hierarchical HRC framework proposed by [57] separates task allocation into abstraction and allocation layers in an assembly environment. The abstraction layer defines the planning phase of the collaborative assembly, considering the specific attributes of each element, including human and robot agents and the real-time communication capabilities of each, while the allocation layer manages the skills implementation requirements for the task.  
An action scheduling framework using Artificial Intelligence (AI) contains a scheduling algorithm that generates task allocations, which was proposed by [58]. The system considers the sequence of operations, tools required, resource availability, positioning and time efficiency in its optimisation process. Within this human-centric framework, there is a focus on the safety of human operators, and operations are blocked if prerequisite operations have not been completed. Task completion time rewards motivate a _Markov game_ model developed by [59], using deep multi-agent reinforcement learning to determine the optimal cobot task allocation schedule. This model evaluates cobot and human agent availabilities and determines the optimal task scheduling policy for the operation within a chessboard structure that minimises all assembly task completion times as its objective.