# Implementation and Evaluation of Dynamic Task Allocation for Human-Robot Collaboration in Assembly
## 4 Discussion
Further, the study was conducted with users with an academic background who, despite their prior experience, should rather be considered as novice workers in assembly. Thus, performance and subjective perception from expert users working in industrial assembly might differ. Moreover, due to the comparatively simple assembly component, occurring worker errors did not affect the overall task completion rate. Therefore, we propose to conduct a separate study on the assembly of many components one after another over a longer period to investigate if the greater variance in task execution under dynamic task allocation affects the number of worker errors. In the conducted study, some subjects already mentioned less monotonous work in the dynamic task allocation mode. With the abovementioned long-term study, a more profound evaluation of the effects of different task allocation modes on the monotony of assembly work over a longer period of time would be possible. From the results of the general investigation of the developed block-based HRC task allocation system, a positive assessment can be derived. However, various suggestions for improvement were provided by the subjects: Regarding the interaction modality, some subjects suggested an acoustic signal when assigning a new task to the human. In addition, a more intuitive form of visualization of the assembly instructions, e.g., by projection directly onto the worktop, was proposed. Furthermore, an automatic, camera-based recognition of completed steps was mentioned as desirable. In terms of collaboration with the robot, the ability of the robot to dynamically avoid crossing trajectories on the one hand and the projection of the robot's planned trajectories into the workspace on the other hand were suggested. Additional potential for further development of the presented overall system for dynamic task allocation arises with regard to the observability and stability in the event of robot malfunctions. The state transition in a function block from \"in execution\" to \"completed\" is to be regarded as a black box during execution. Only as soon as the human confirms the successful completion or the robot reports the task-completed state, the state transition to \"completed\" occurs. In this way, the overall assembly process is controlled by means of the created process graph in combination with the task allocation decision methodology as well as the operator feedback inputs, or robot state messages. Dynamics that arise within the function blocks during execution are not explicitly considered. Some of these dynamics, such as interfering trajectories of humans and robots, often result in delays of the respective function block and are therefore implicitly taken into account by the dynamic task allocation approach when assigning the next tasks. However, limitations arise in certain situations: In the implemented algorithm, currently, no handling of error states within the individual function blocks is taken into account, i.e., if the robot fails during a task execution, the function block cannot transition to the completed state, so that the overall assembly process does not terminate. The same applies to human process execution: Here, the correct confirmation of all executed process steps is relied on. Incorrect confirmations or execution of other process steps than assigned lead to incorrect assumptions of the system about the progress and the state of the overall process, resulting in the inability to assign the correct next process steps. Continuous observation of the process execution by means of a camera system in combination with appropriate algorithms for activity recognition and progress monitoring could enable the observability within the function blocks. This would allow an early reaction to emerging problems and therefore offers potential for further research activities. In this context, another planned enhancement for the system is to implement a dedicated error handling output for each function block.