# An Overview of Industrial Robots Control and Programming Approaches
## 4 Innovative Control Approaches
### External Coordinator
Following the same premise, academic researchers have proposed similar solutions based on PCs, with the possibility of exploiting more programming languages. A summary of their work is reported in Table 2. for comparison. For example, [PERSON] et al. [20] proposed a proof-of-concept control layer that allows for adaptive process and motion planning. It consists of an interpreter program running on arbitrary robot controllers that translates the incoming generic commands into internal vendor-specific control commands. The interpreter was tested (with a limited set of functions) on KUKA, Comau, and Adept platforms, although its generalized structure enables its possible extension to other IRs, as also claimed by the authors. In the same direction, [PERSON] et al. [32] presented a MAT  
Figure 3: Traditional framework with multiple parallel controllers vs. approach adopting a centralized PLC coordinator to control the production plant. LAB toolbox for programming KUKA and Kawasaki IRs. The data exchanged between the MATLAB program and the interpreter on the robot controller is performed through data links (i.e., serial or TCP/IP). A solution that incorporates event-based logic based on Python, specifically developed to efficiently use Adept robots in distributed environments, is discussed in [33]. The communication is via TCP/IP, and commands are communicated as string data. As a part of the open-source ROS initiative, a project named ROS-industrial provides interfaces and libraries for controlling IRs from different vendors from an external PC adopting a TCP/IP communication [34; 35]. However, as clearly documented on their official website ([[https://rosindustrial.org/](https://rosindustrial.org/)]([https://rosindustrial.org/](https://rosindustrial.org/))), many of these solutions are still under development and do not cover all the safety conditions that may be required to control an IR. Adopting a different approach (i.e., not based on instruction streaming), the open-source tool JOpenShowVar presented in [36] enables the user to read and write all the native variables in a KUKA controller without the need for complementary proprietary packages. The system has a client/server architecture, with JOpenShowVar as a client in a remote PC and KUKAVARPROXY as a server in the robot controller. The communication between the client and server is via TCP/IP; therefore, real-time access to the robot's data is not guaranteed, and the system cannot be used to stream point-to-point trajectories. This can be done with the KUKA Control Toolbox (KCT) presented in [37], which includes a set of MATLAB functions for kinematics calculation, motion planning, visualization, and diagnostics of KUKA robots. Compared with the previous coordinators, the KCT preserves the aim to control an IR from a remote PC, although this tool is based on point streaming rather than instruction streaming, as in the case of the real-time trajectory generators described in Section 4.3. The main differences between industrial and academic products can be rapidly identified in Table 2. Indeed, while scientists always try to gain as much control over the robot as possible, fully industrial solutions seek safe, robust, and easy operational interfaces. Overall, the recalled frameworks raise the level of abstraction in robot programming since the program is created and executed using an external controller (i.e., coordinator) without losing the reliability and safety normally offered by IR controllers. In contrast, they are intrinsically linked to specific manufacturers, as also notable from Table 2. Furthermore, in many of them, there is little interaction with the robot as it is only possible to access and manipulate specific commands or datasets. Another important open issue, scarcely addressed in the referenced academic works, is error management. For a more effective and robust robot control, errors must be detected during communication, interpretation, and execution of commands in the IR controller.