# TalkRoBots: A Middleware for Robotic Systems in Industry 4.0 +
## 3 TalkRoBots Middleware Presentation
### Architecture  
The proposed _TalkRoBots Middleware_ architecture is organized in several layers that interact between them, as depicted in Figure 1. They include the Robotic Applicative layer and the Robotic Framework layer, such as ROS, ABB, ARIA, ASEBA, etc. The former interacts with remote monitoring and supervision applications. The latter controls directly the hardware of the heterogeneous robots. Moreover, since TalkRoBots is designed to allow an easy integration of heterogeneous robots in the same fleet, a package, named \"TalkRoBots Package\", is integrated in the Robotic Framework in order to allow communication between the native robot's programming language and the first level of the Middleware TalkRoBots by defining how to receive, send and handle messages. The other layers are detailed below:  
* TalkRoBots Layer 1: This layer is designed as a gateway that handles the messages exchanged between the \"TalkRoBots Package\" and either ConnectToBots or the TalkRoBots Layer 2. On the one hand, it allows transparent and homogeneous communication between the heterogeneous robots and the external devices of the fleet. On the other hand, it handles the exchange between the Robotic Framework by using the \"TalkRoBots Package\" and the second level of Middleware TalkRoBots through ConnectToBots.
* ConnectToBots Layer: This layer acts as a communication bus that monitors the different connection ports of the embedded PC (USB, Serial port, etc.), which is connected to the robot. Then, it allows the identification and recognition of the plugged devices, including external sensors and actuators (temperature sensor, camera, RFID tag, etc.). Therefore, it allows adding new capacities to the concerned robots related to the plugged devices and makes them available to all those in the fleet.
* TalkRoBots Layer 2: It includes all services that are developed by the operator, such as the \"Collaboration\" and \"Election\" services. It is responsible for sharing data between the Cloud and the robotic fleet.  
\begin{table}
\begin{tabular}{c c c c c c c c c c} \hline \hline  & & & & & & & & & & \\ \hline ROS & Python, C++ & ✓ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & ✓ & \(\times\) \\ Player & C++, Tel, Java, Python & ✓ & \(\times\) & ✓ & \(\times\) & \(\times\) & ✓ & \(\times\) & \(\times\) \\ ARIA & C++, Python, Java & ✓ & \(\times\) & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ ASEBA & Aseba & ✓ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ Carmen & C++ & ✓ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & ✓ & \(\times\) \\ OpenRDK & C++ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ Orca & C++ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ Orocos & C++ & ✓ & ✓ & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ Urbi & C++ like & ✓ & \(\times\) & ✓ & \(\times\) & \(\times\) & \(\times\) & \(\times\) & \(\times\) \\ TalkRoBots & Python & ✓ & ✓ & ✓ & ✓ & ✓ & ✓ & ✓ & ✓ \\ \hline \hline \end{tabular}
\end{table}
Table 1: Frameworks/middleware comparison (\(\times\) not implemented/designed for; ✓ fulfilled).  
For more details about the architecture of TalkRoBots Middleware, the reader is refereed to Patent [5].