<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Cross-Platform Communication Mechanism for ROS-Based Cyber-Physical System</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Rui Zhao</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Xu Tao</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davide Conzon</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Enrico Ferrera</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>LINKS Foundation</string-name>
          <email>name.surname@linksfoundation.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yenchia Yu</string-name>
          <email>yuyenchia@tongji.edu.cn</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>4800 Cao'</institution>
          <addr-line>an Road, Shanghai</addr-line>
          ,
          <country country="CN">China</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Tongji University</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <addr-line>via Pier Carlo Boggio 61, Turin</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>46</fpage>
      <lpage>54</lpage>
      <abstract>
        <p>-Recently, one of the main research topics in the context of application of Cyber-Physical System (CPS) in the Smart City and Industry 4.0 scenarios is the one related to the use of Robot Operating System (ROS)-based CPS. Specifically, one of the main interest is to allow a ROS-based smart robot communicating with other heterogeneous Internet of Things (IoT) applications in an intelligent environment to efficiently react to the system requirements and environment changes. However, the communication between the IoT systems will face many challenges and increase the cost and risks that lead to the requirement of a cross-platform communication for bridging the ROS-based CPS and other heterogeneous IoT applications. This paper introduces ROS Edge Node for the interoperability between Robotics domain and other IoT domains, leveraging the highly modular BRAIN-IoT federation, which allows to decentralize, compose and dynamically federate the heterogeneous IoT platforms using OSGi specification, thanks to its dynamic modularity and wide usage in IoT middlewares. Together with the flexible integration with existing IoT devices/platforms within BRAIN-IoT platform, the event-driven asynchronous communication mechanism realizes cross-platform interaction with ROSbased CPS and solves the major challenges faced. This communication mechanism allows dynamic deployment of new functionalities for enhancing/extending the behaviour of robots according to external events. In addition, some specific behaviours to new ”virgin” robots, which might be needed to extend the fleet of robots or replace damaged/low batteries ones can be dynamically deployed at the setup phase. In BRAIN-IoT platform, Edge Node behaves as IoT devices/platform adaptors which integrate the existing IoT devices/platforms. The ROS Edge Node is one type of the Edge Node, which bridges the underlying ROSbased robotics systems and BRAIN-IoT execution environment, thus communicates with various IoT systems connected to the BRAIN-IoT platform. A Service Robotic use case is developed to demonstrate the proposed solution, it shows how the ROS Edge Node enables the fast adaptivity and interoperability between heterogeneous IoT domains in a federated environment. Index Terms-Brain-IoT, Cyber-Physical System (CPS), Service Robotics, IoT Middleware, Cross-platform Communication, OSGi</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Nowadays, CPS are widely used in various aspects in our
society, including but not limiting in areas such as
manufacturing, energy, health, transportation and intelligent buildings,
causing significant socio-economic impacts. CPS are defined
as physical and engineered systems whose operations are
monitored, coordinated, controlled and integrated by a computing
and communication core. To realize such an intelligent system,
various technologies need to be involved, including sensor and
actuator technology etc. Together with IoT, Cloud computing
and Cognitive computing, they become the main technologies
of Industry 4.0 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Specially, CPS and IoT are often discussed
together, not only because they have many similarities but also
because they are the foundations of the intelligent production
environment, in another word, the smart factories, which is
one of the most important topics of Industry 4.0.
      </p>
      <p>
        The communication is an important research topic for both
of CPS and IoT. As more and more different devices will
be integrated in an intelligent production environment, the
requirement of communication between different CPSs or
between CPS and IoT devices are becoming more and more
significant. For example, in a smart factory, different CPSs
such as Autonomous Mobile Robots (AMR) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] need to
communicate with each other for cooperation, or an AMR
needs to communicate with IoT devices such as automatic
doors when it needs to cross different zones in the factory.
      </p>
      <p>However, such communication is not that easy to realize since
heterogeneity is a basic property for both CPS and IoT devices.</p>
      <p>
        On the one hand, heterogeneity exists because different
CPS and IoT devices use different technologies in hardware,
software, or communication method due to different needs. On
the other hand, it is because the manufacturers of the devices
are different. Different manufacturers will design the device
according to their own standards. Devices from different
manufacturers, even if they are using the same technologies, their
protocol will be different. According to the latest statistics [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ],
there are officially 620 IoT platform companies in the global
open market in 2019, in which 50% of the platforms focus
on industrial use. From the perspective of communication,
devices from these companies could use hundreds of different
communication protocols which makes the standardization of
communication protocol extremely difficult. In the recent years
of research, the idea of using middleware to realize
crossplatform communication is proposed.
      </p>
      <p>
        This paper presents a novel adaptor, ROS Edge Node, which
Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
implements an event-driven asynchronous cross-platform
communication mechanism for ROS-based CPS. The work is a
part of the H2020 research project BRAIN-IoT [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] that is a
federation enabling the dynamic deployment, orchestration and
monitoring of the distributed IoT applications leveraging the
OSGi [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] technology, since OSGi is a series of specifications
for Java dynamic modular system, it provides the dynamicity
for the life cycle management of software components. One
of the main functions is to make components as decoupled
as possible, and to allow components to dynamically discover
with each other, so that programmers can develop refinable,
reusable, and assistive components in accordance with these
specifications. Nowadays, OSGi is the widest used technology
to support implementations of IoT abstraction layers. For
example, Bosch ProSyst and Eurotech are two examples
of companies providing OSGi-based IoT gateways; Oracle®
Fusion Middleware [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is developed for developing Java
Enterprise Edition (EE) management applications for Oracle
WebLogic Server; SNPS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is an OSGi-based middleware
for Wireless Sensor Networks; The OSGi-based software
platform Eclipse SensiNact [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] provides support in technical
aspects (e.g. Connectivity, Interoperability, Data processing,
and Developer Tool) related to smart city platforms.
BRAINIoT platform is implemented with OSGi and it aims integrating
with generic existing IoT devices or IoT platforms or existing
IoT middlewares to allow them communicating with each
other. ROS Edge Node is one implementation of the
BRAINIoT Edge Node mainly focused on the integration of robotics
platforms in IoT domain allowing to interoperate with other
heterogeneous IoT devices by mapping the ROS services
to OSGi services, to maximize the connectivity of robots
within IoT systems. ROS Edge Node is a modular software
component of the BRAIN-Io platform. It provides four main
features: 1) Interoperability: it provides the connectivity to IoT
platforms connected to BRAIN-IoT solution. 2) Plug &amp; Play:
leveraging the OSGi specification, the component follows
an event-driven approach and it is developed as a software
module that can be deployed/undeployed at runtime without
interrupting other running services. 3) Automatic Adaptation,
it provides a code generator to automatically expose the
adhoc ROS services provided by different ROS-based CPSs and
speeds up the adaptor development process. 4) Standards
Compliant, it exploits the Web of Things (WoT) Thing Description
(TD) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] describing the services provided by the ROS-based
CPS, making it more portable to the production environment,
not restrict to the OSGi implementation.
      </p>
      <p>The rest of this paper is organized as follows. Section II
introduces the state of the art of the solutions similar to the one
proposed in this paper in multiple domains and the challenges
to be addressed typically by these software. It also outlines the
relevant technologies used to develop the proposed solution.</p>
      <p>Section III describes the architecture of the ROS Edge Node,
functionalities and development process. Section IV
implements a simple robotic application to validate the solution in
a distributed environment. Finally, the paper concludes with
the Section V to provide a summary of the cross-platform
communication mechanism for ROS-based CPS and the future
work being undertaken.</p>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND</title>
      <sec id="sec-2-1">
        <title>A. State of the Art</title>
        <p>
          One of the most popular example of CPSs is represented
by smart industrial robots. This sector is really fragmented,
in terms of hardware and software architectures, But in
recent years, more and more robots have begun adopting one
common technology, the middleware ROS. According to the
annual ROS Metrics Report for 2019 [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], there are near
150 types of documented robots available to the community
with ROS drivers, and in recent years, the total number of
papers citing “ROS: an opensource Robot Operating System”
(Quigley et al.,2009) increase at an annual rate of 20% to 30%.
More and more famous robot vendors such as Asea Brown
Boveri (ABB) Ltd., Comau Spa. and Kuka AG are starting to
support ROS in some models of their robots. ROS is the widest
used abstraction layer for robotics. However, even the robots
are using ROS middleware, the problems in communication
still exists. ROS-based CPS are often used to communicate
with other heterogeneous IoT applications to satisfy system
requirements and react physical environment changes. There
are two existing middlewares for interacting with ROS-based
CPS.
        </p>
        <p>
          The ROS–YARP Framework for Middleware
Interoperability [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]: ROS and Yet Another Robot Platform (YARP)
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] are the most popular robotics middlewares. YARP is
more used in the domain of humanoid robots and
developmental robotics, whereas ROS has higher focus on mobile
robots. They have complementary functions and many robotic
platforms may benefit from using functions from both. But
it’s not an easy task mainly due to fundamental differences
in the communication architecture. This approach generates
the “bridging gap” code from a configuration file, connecting
YARP ports and ROS topics through code-generated YARP
bottles. It supports YARP/ROS and viceversa sender/receiver
configurations. Reading from/sending to ROS topics needs an
additional conversion, which is handled by the existing
runtime YARP to ROS converter. The generator abstracts YARP
and ROS developers from dealing directly with interoperability
issues. However, this work is only focusing the interoperability
among robotics middlewares.
        </p>
        <p>
          ROBIN Middleware for CPS [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]: ROBIN is a
middleware funded by European H2020 program providing an
effective, bidirectional, reliable and structured data interchange
mechanism to address the demand for flexible robotics in
contemporary industrial environments and the necessity to
integrate robots and automation equipment in an efficient
manner. ROBIN, the robotics bridge to industrial automation,
aims to allow the interoperability between robotics and
automation systems by enabling the communication between
ROS and CODESYS [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], which is a softPLC1, a real-time
multi-task control kernel, that can run on embedded devices
1http://www.softplc.com/
and that supports a variety of fieldbuses, and other industrial
network protocols. CODESYS handles the establishment of
external communication with the equipment via a fieldbus
and communicates with ROS through the developed robotics
bridge. More specifically, since ROS implementation follows
the publisher–subscriber messaging pattern, which enables
exchanging data between ROS nodes [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], A ROS node is
basically a process that performs computation and it is an
executable program running inside the robotics application. Many
nodes can be implemented in ROS packages. The proposed
bridging mechanism allows developers to create or include
in existing ROS packages the valuable feature of connecting
with an external device via fieldbuses or industrial network
protocols promoted by the softPLC bridge. Multiple ROS
nodes can access and modify the data shared with the softPLC
application in ROS. The information to be propagated to the
external devices could be published on a ROS topic, handled
by the developed bridge, and then relayed by CODESYS to
the proper industrial network protocol or fieldbus.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Problems with State of the Art</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>ROS allows the communication between heterogeneous</title>
      <p>devices, being deployable on heterogeneous platforms. After
ROS is deployed on the device, it can use ROS as
communication method to communicate. However, it can only support
communication between devices developed based on ROS,
it cannot be used to communicate with off-the-shell devices
using different technologies. Furthermore, the messages used
in ROS are the original data sent by the device, which has
not been standardized. The receiver must know the content
of the communication in advance, otherwise it will not be
able to understand the received data. In State Of The Art
(SOTA), one of the limitations of ROS–YARP middleware is
the applicability area, which is limited to ROS and YARP
only, while CPSs are widely used in various aspects. The
robotic bridge provided by ROBIN project allows the
communication between ROS and the automation application
through the inter-node communication mechanism in ROS,
but it requires the developers to directly create or include in
existing ROS packages the valuable features for interacting
with other external devices via fieldbuses or industrial network
protocols. This requires to the developers to be expert in
ROS programming. Besides, the direct operation on existing
ROS packages may bring the risk of the damaging the basic
functionalities. Moreover, in the real production environment,
the robotics applications are significantly sophisticated and
dynamic, requiring to the bridge to be flexible enough to react
to the continuously changing production environment; to allow
this the robotic bridge needs to support the update at runtime
and the deployment on demand and this feature is not feasible
using only native ROS.</p>
      <p>Instead, ROS Edge Node bridges ROS and other IoT
platforms using OSGi specification, in such way, the robot’s
behaviours can be developed at the application level using
OSGi instead of ROS. And this allows to have all the advanced
OSGi capabilities applied in robotics scenario(i.e., start and
stop atomic behaviours at runtime, deploy new ones, import,
update and upgrade behaviours at runtime every time a new
more stable or more secure version is available).</p>
      <sec id="sec-3-1">
        <title>C. Challenges</title>
        <p>
          ROS Edge Node intends to address the gaps mentioned in
the previous section in the current State of The Art (SoTA)
and the typical challenges faced in researches on middleware
for CPS [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. More specifically, apart from supporting
the interoperability between the ROS-based CPS and other
heterogeneous IoT applications, it also supports adaptivity,
security and privacy protection and autonomous operation, as
explained in the following subsections.
        </p>
        <p>
          Abstraction and Automatic Adaptation: [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] An ideal
middleware for an intelligent environment such as the IoT
should provide abstractions at various levels such as
heterogeneous input and output hardware devices, hardware and
software interfaces, data streams, physicality and the
development process. And an Adaptive middleware is usually
motivated by the need of adapting the middleware to changes
in application’s requirements, changes of environmental
conditions, fixing middleware’s bugs or extending/improving the
middleware functionality. ROS Edge Node solution proposes
an approach to create a software component to abstract the
ROS-based CPS for communicating with other OSGi-based
IoT middlewares/applications through the distributed
BRAINIoT EventBus. The adaptor can be generated according to
different ROS platform implementations. For the simplicity,
a code generator is provided to speed up the development
process.
        </p>
        <p>
          Security and Privacy: Automatic communication of
reallife objects represents a huge challenge in terms of trust,
security and privacy. The security and privacy component is
needed to provide the integrity of the collected data (stream)
and to ensure that the user’s privacy is not violated. The
data can only be able to connect to authenticated/certified
IoT devices. The management support of security and privacy
has to be considered as a main function of the
middleware for the IoT. The ROS Edge Node adaptor will be
integrated with the BRAIN-IoT platform, which introduces
a holistic end-to-end trust framework and privacy-awareness
and control approach to address the challenge [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Currently,
the integration between ROS Edge Node and the end-to-end
framework guarantees only authenticated ROS-based CPSs can
integrate with BRAIN-IoT platform and communicate with
other authenticated IoT systems.
        </p>
        <p>Autonomous Operation: Many CPS applications are
considered complex systems which can be in a huge number of
different states at any point of time. It is generally extremely
difficult to develop code to handle all these states effectively
and in a timely manner. Having middleware that supports
autonomous operations such as self-adaptive, self-resilient, and
self-protected services can relax implementing and operating
these complex CPS applications. The ROS Edge Node
addresses this challenge supporting the development of complex
IoT solutions for monitoring and controlling physical
environments and systems. Specifically, it simplifies the operation of
application providing a an event-driven notification method,
which allow avoiding to use polling methods to query the
robot or mission status, reducing greatly the network traffics.</p>
      </sec>
      <sec id="sec-3-2">
        <title>D. Relevant Technologies</title>
        <p>
          RosJava Open Source Library2: RosJava project provides
a pure Java implementation of ROS, and it also can
interconnect to an existing ROS environment through the Internet
Protocol (IP) address. It provides a client library for ROS
communications in java that allows Java programmers to
quickly interface with ROS topics, services and parameters
through the eXtensible Markup Language (XML)-Remote
Procedure Call (RPC) [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] protocol. It provides some common
Java API allowing to create new ROS nodes, services, topics in
native ROS environment, and the corresponding ROS clients.
The library can be fully integrated in OSGi software.
        </p>
        <p>JCodeModel Open Source Library3: JCodeModel is a
Java code generation library. It provides common API to
generate Java programs using Java language.</p>
        <p>
          World Wide Web Consortium (W3C) and WoT: In recent
years, W3C organization has developed the WoT [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] standard
aiming to achieve interoperability problem between IoT
platforms and application domains. WoT provides a mechanism
for describing IoT interfaces, allowing IoT devices (physical
or virtual entity) and services to communicate with each other,
independent of their underlying implementation, and can span
multiple network protocols. In addition, WoT also provides
a standardized way to define and plan IoT behaviors. WoT
Architecture specification is centered on the scope of W3C
WoT standardization, divided into several building blocks.
The four core building blocks provided by W3C WoT are:
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Thing Description, Binding Template, Scripting Application</title>
      </sec>
      <sec id="sec-3-4">
        <title>Programming Interface (API), Security and Privacy Guide</title>
        <p>lines. More specifically, The central building block is the
WoT TD4, which can describe the metadata of the object
and the network-oriented interfaces and it’s the entry point
of a Thing. TDs are encoded in a JavaScript Object Notation
(JSON) format that also allows JSON-based Serialization for
Linked Data (JSON-LD) processing, primarily intended to
be a way to use Linked Data in Web-based programming
environments. The building blocks allow an application client
(a Consumer) to interact with Things that expose diverse
protocols through the three types of Interaction Affordances
defined by W3C WoT Interaction Model representing the
capabilities of individual Things: i) Properties (PropertyAffordance
class) can be used for sensing and controlling parameters,
such as getting the current value or setting an operation
state; ii) Actions (ActionAffordance class) model invocation of
physical (and hence time-consuming) processes, but can also
be used to abstract RPC-like calls of existing platforms. iii)
Events (EventAffordance class) are used for the push model of
communication where notifications, discrete events, or streams
2https://github.com/rosjava
3https://github.com/phax/jcodemodel
4https://w3c.github.io/wot-thing-description/
of values are sent asynchronously to the receiver. TD can be
used for flexible implementation and simulation (if required).
WoT will break the barrier of interoperability of various IoT
platforms, thereby contributing to the explosive growth of the
market. It doesn’t aim to define a new platform, but to use the
metadata to bridge existing platforms and standards.</p>
        <p>In this paper, these technologies will be used in the
following aspects. The ROS Edge Node, will be developed as OSGi
bundles, which can be remotely installed, started, stopped,
updated, and uninstalled without requiring a reboot in
BRAINIoT federation.</p>
        <p>RosJava can be considered as the bridge between ROS world
and Java world. It provides an efficient way for the ROS Edge
Node to establish a communication with ROS-based devices.
Different ROS functionalities will be mapped into different
OSGi services in the ROS Edge Node. The mapping procedure
will be done automatically through JCodeModel library with
a TD of the underlying ROS environment. Anyway, the
corresponding formatting procedure of events and integration
with BRAIN-IoT framework should be done by developers.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>III. ARCHITECTURE</title>
    </sec>
    <sec id="sec-5">
      <title>This section details the ROS Edge Node architecture along with its role in the overall BRAIN-IoT platform.</title>
      <sec id="sec-5-1">
        <title>A. Overview in BRAIN-IoT Context</title>
        <p>
          ROS Edge Node will be integrated with BRAIN-IoT Fabric
[
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] infrastructure service, which is composed with a set
of the computing resources (physical/virtual machines) and
provides a distributed OSGi execution environment allowing
the interaction between the OSGi services deployed on it
through events, thanks to the implementation of OSGi Alliance
specifications for Remote Services and Remote Service Admin
[
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. Each BRAIN-IoT Fibre is an OSGi R7 framework, and
different Brain-IoT OSGi bundles deployed on local and
remote Fibres can communicate with each other using some
specific strongly typed BRAIN-IoT events delivered in the
asynchronous BRAIN-IoT EventBus [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] according to the
BRAIN-IoT approach. The BRAIN-IoT Nodes are the Service
Fabric Fibres with different BRAIN-IoT Services deployed
on them, they can be of two types: BRAIN-IoT Processing
Nodes and BRAIN-IoT Edge Nodes. The first ones are a
sort of Service Fabric Fibres deploying IoT application logic
and controlling the CPS behaviours through their adaptors
supported by the machine learning algorithms. The latter ones
are Fabric Fibres with the installed edge components deployed
on the top of them. BRAIN-IoT Fabric allows users to label
the BRAIN-IoT nodes, thus to guide where the BRAIN-IoT
service, satifying the required capabilities, should be deployed
at runtime. The BRAIN-IoT architecture allows the dynamic
redeployment of 1) new functionalities for
enhancing/extending the behaviour of robots according to external events. 2)
specific behaviours to new ”virgin” robots, which might be
needed to extend the fleet of robots or replace demaged/low
batteries ones. Each ROS Edge node can be considered as
an access point or an adaptor to ROS-based CPS, to allow
heterogeneous IoT applications running on the processing
nodes to control the robots. In the BRAIN-IoT platform, the
authors’ contribution is to develop the ROS Edge Node as
OSGi Declarative Service, so that from the northbound it can
receive the interested BRAIN-IoT events from other different
IoT platforms in a distributed environment, then construct the
data and send to the connected ROS environment. Therefore,
any new functionalities for enhancing/extending the behaviour
of robots according to external events can be developed using
OSGi instead of ROS. From the southbound, the ROS Edge
Node is able to retrieve the information from ROS and inject
to the BRAIN-IoT Fabric as BRAIN-IoT events, which will be
received by other BRAIN-IoT services. The ROS Edge Node
aims to achieve the interoperability between heterogeneous
IoT applications integrated within BRAIN-IoT platform and
the ROS-based CPSs. It exposes the ROS functionalities as
OSGi services.
        </p>
        <p>The architecture of ROS Edge Node is shown in Fig.1. For
its development and validation, the authors have used the ROS
simulation for BRAIN-IoT service robotic use case provided
by the Robotnik Automation S.L.L. (see Section IV). The
ROS Edge Node has two main requirements: i) to expose
all the relevant ROS functionalities as OSGi services (task
done by OSGi Service Component). The objective is to make
the adaptor able to interoperate with the ROS environment
leveraging APIs provided by the open source Rosjava project,
in this way, the adaptor is able to send/receive the ROS
request/response messages from/to the ROS services and
publish/subscribe to the ROS topics between the OSGi world and
ROS world. ii) To collect and format of the BRAIN-IoT events
from different sources based on the Publish-Subscribe pattern5
(task done by BRAIN-IoT Robot Service). The adaptor receives
the events from heterogeneous platforms in the distributed
BRAIN-IoT Fabric environment and constructs them as Java
5https://en.wikipedia.org/wiki/Publishn%E2n%80n%93subscribe pattern
objects representing ROS messages, then transforms to ROS
environment through the exposed OSGi services. In contrast,
the adaptor also retrieves the ROS messages from the native
services/topics and convert to the BRAIN-IoT events, then
deliver them in the distributed EventBus. The connectivity with
ROS is configurable through the ROS environment variable
ROS MASTER URI by default whose value is configurable
on-the-fly in order to set up which machine as a ROS master
when a new ”virgin” robot join the fleet of robots.</p>
      </sec>
      <sec id="sec-5-2">
        <title>B. ROS Edge Node Approach</title>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>The ROS Edge Node adaptor is further explained in this subsection, detailing its approach, implementation steps and the addressed challenges.</title>
      <sec id="sec-6-1">
        <title>1) Abstraction of ROS environment: It aims to address the</title>
        <p>interoperability challenge when integrating other IoT devices
in BRAIN-IoT platofrm. As Fig.1 shows, the basic function of
ROS Edge Node is to map the ROS messages to BRAIN-IoT
events and vice-versa. The BRAIN-IoT services interact with
each other by leveraging the Requirements and Capabilities
metadata provided by default by all OSGi Bundles, the events
issued by a source BRAIN-IoT service contains the sufficient
information presenting the Requirements of this service, in the
meanwhile, the events also identify the Capabilities of the sink
BRAIN-IoT services that will consume them.</p>
        <p>The ROS Edge Node simply interconnects to the ROS
environment thanks to the RosJava library which provides a
simple interface enabling the ROS Edge Node to automatically
generate a set of Java object classes, which is totally compliant
with native ROS messages’ structure in the ROS environment.
The instances of the classes could be transformed to the ROS
environment. However, it’s not possible to make the
BRAINIoT events types the same as the names of the native ROS
messages. For a single robot, there could be hundreds of types
of native ROS messages in the ROS environment and their
data structures are in general very complex, direct mapping
between the ROS messages types and BRAIN-IoT events is
inefficient and will increase the complexity of the usage of the
events for other IoT applications. Also, different robots having
same functions may use completely different types of ROS
messages as commands. In such case, if directly mapping each
ROS message into an event, the difficulty to integrate different
robots in a system will be increased. Thus, some common data
types including necessary information need to be defined and
shared between diverse IoT applications. So it’s necessary for
ROS Edge Node to format the received events into the specific
Java objects that are compliant with ROS messages.</p>
        <p>The ROS Edge Node wraps also the native ROS
functionalities, exposing them to the OSGi services for heterogeneous IoT
applications’ access, by creating the corresponding ROS
services and publish/subscribe clients in OSGi bundles, through
the APIs provided by RosJava project. The exposed OSGi
services are a set of java classes containing multiple robot
operations mapped to Java methods. The BRAIN-IoT Robot
Service in Fig.1 is a wrapper of the exposed OSGi services,
with the specific Capabilities information represented by the
consumed event types. The ROS Edge Node is responsible
for communicating with other BRAIN-IoT services using
Events. When the robot service receives an event from the
EventBus, it will construct a ROS message in Java type and
perform the corresponding action by calling the exposed ROS
functionalities. Thanks to the BRAIN-IoT solution, the service
will be deployed on the BRAIN-IoT Fabric by the event-driven
mechanism. It’s completely de-coupled from the underlying
BRAIN-IoT Fabric runtime.</p>
        <p>2) The Autonomous Operation: As mentioned in
Section II-C, supporting autonomous operation is one of the
challenges for a CPS adaptor. In the ROS Edge Node, the
autonomous operation is fully supported by a feedback
mechanism: the ROS Edge Node is responsible for continuously
querying the execution status of CPS where it is installed
and then to issue an response event if the status changes.
This allows building services, which leverage the ROS Edge
Node, which are “smarter” and reducing the communication
workload on the EventBus,(see Fig.6 in Section IV).</p>
      </sec>
      <sec id="sec-6-2">
        <title>3) Automatic Adaptation and Standards Compliant: This</title>
        <p>is a usual task that needs to be supported by such type of
solutions. For ROS-based devices, this challenge is addressed
by ROS Edge Node. As mentioned above, the exposed service
components are a set of java classes containing multiple
methods for robot operations. The operations are done through
ROS services/topics clients in Java code via simple API
provided by RosJava library. Normally, when developers create
the java clients for the used native ROS functionalities, the java
clients could be grouped in one or more Java classes for better
organization.</p>
        <p>Since the services or topics and their related methods in a
component class have the same structures, the authors achieve
to automatically realize the adaption by creating a Code
Generator to automatically generate the OSGi service classes
from a predefined configuration file as the input. Since all
entities in ROS-based CPS communicate through services and
topics, the authors choose to use the W3C WoT TD, which
is a general standard for both integrating diverse devices and
interoperability of diverse applications to describe the ROS
functionalities. In the proposed solution, WoT TD describes
the interfaces for OSGi to expose the ROS services and topics.
In this way, a standard approach is used to describe the ROS
API and to generate the corresponding OSGi services, this
allows to have a solution WoT integration-ready and highly
reusable. The ROS functionalities are compliant with TD
specification: 1) the topics are as Properties Interaction
Affordances 2) the services are described as Actions Interaction</p>
      </sec>
      <sec id="sec-6-3">
        <title>Affordances.</title>
        <p>For a ROS service, the part of TD file is shown as Fig.2.
More specially, there could be a set of ROS services described
in the Actions element, and for each of them, the
information will include serviceClientName, serviceName,
service</p>
      </sec>
      <sec id="sec-6-4">
        <title>Type, serviceRequestType, serviceResponseType and Class</title>
        <p>Name, which are used by the Code Generator to create
service clients in OSGi world. The Code Generator uses the
ClassName property to generate multiple component classes</p>
        <p>Fig. 3. Expose of ROS Environment to OSGI Services Using WoT TD
for different types of robot functionalities, and each component
can contain multiple service clients and the different operations
could be done through the methods called by each client. The
values of other properties will be used as the arguments of the
generated methods. Similarly, the ROS topics will be described
in the Properties element, including the information about</p>
      </sec>
      <sec id="sec-6-5">
        <title>Role, ReferenceName, TopicName, TopicType, MessageType</title>
        <p>and ClassName. The value of the Role property could be
publisher or subscriber, so the corresponding client type
will be created with the client name equal to the value of</p>
      </sec>
      <sec id="sec-6-6">
        <title>ReferenceName.</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>To automatically expose relevant ROS functionalities and</title>
      <p>speed up the ROS Edge Node development for the ad-hoc
ROS platforms, A code generator is provided to generate the
artefacts automatically by taking the TD as a configuration
file, to describe the ROS services and topics, as shown in
Fig.3, which is demonstrated in Fig.5 in Section IV. This
approach greatly reduces the dependence for developers in the
process of adapting to different ROS-based CPSs, increasing
the development simplicity. Developers can therefore focus
more on the development of BRAIN-IoT services rather than
on adaptation work.</p>
      <p>In this section, a brief description of ROS simulation The new functionalities for enhancing/extending the behaviour
used for the Brain-IoT Service Robotic Use Case and the of robots according to external events can be dynamically
result obtained evaluating the cross-platform communication upgraded and redeployed in the BRAIN-IT architecture. Based
mechanism using it are presented. on that, the authors define the events in three types: action,
query and cancellation. The events in action type includes
A. Use Case Introduction WriteGoTo, PickCart and PlaceCart, which present the basic</p>
      <p>Smart warehouse is a popular application of Industry 4.0. functions of the robot. There are also other events defined for
The basic elements of a smart warehouse include AMR, querying the execution status of corresponding actions and for
heterogeneous IoT devices and cargo carts. To be “smart”, cancelling current actions.
these elements need to interact and cooperate with each other. In the use case, there are three services related to the
The use case aims to realize one of the basic function of smart WriteGoTo action event, a WoT TD file is defined for the
comwarehouse: the cart movement. The Fig.4 shows the warehouse munication with the robotic system, the code generator using
with three zones in 3D perspective in Gazebo simulator: a the TD as input will automatically generate the class named
docking area, a unloading area and a storage area. The last GoToComponent as shown in Fig.5 by using the open source
two zones are separated by an automatic door, which is an JCodeModel library which is a Java code generation library.
IoT device. There are three rb1 base robots (robot1, robot2 and Specifically, according to the ROS functionalities described
robot3) in the docking area responsible for moving all carts to in the TD, there are three ROS service clients (e.g. gotoRun,
the storage area. In the unloading area there are 3 carts (cart1, gotoCancel, gotoQuery) will be created in the generated class.
cart2 and cart3) and each has a different QR code attached. when the ROS Edge Node receives an event, the corresponding
The storage area is divided into three sub-zones (zone A, zone construct XXX Msg method representing the operation of the
B and zone C). The robots need to pick up these carts from client will be called to construct a Java object representing the
the unloading area, pass through the door and place them in ROS message as a ROS service request to be sent to the native
the storage area according to the received commands from the ROS environment through the call XXX method of the service
robot application. client, where the XXX stands for the name of the service client.
The Robot Behaviour Service continuously checks the
B. Robot System Design shared tables to get a task and then it controls the robots</p>
      <p>In order to demonstrate how the adaptor bridges the ROS through a sequence of BRAIN-IoT events to finish the mission.
environment and the OSGi environment, the authors imple- The events will be received by the ROS Edge Node Service
mented a simple multi-agent robot system based on OSGi to and sent to the connected robot. As an example shown in Fig.6,
control the simulated robots. after the ROS Edge Node receives a WriteGoTo event from the</p>
      <p>The system contains three system parts: a Robot Behaviour Controller Service containing the coordinates where the robot
Service, a ROS Edge Node Service and a Door Edge Node should go, with the autonomous operation of the ROS Edge
Service. There are several tables storing the coordinates of Node, only twice communications are needed between the
the carts and the storage positions will be used as the shared Controller Service and the ROS Edge Node, one for sending
resources among three robots. In the ROS simulation, the basic the action command, while the other one for receiving the
task for each robot is that starting from the docking area, it action result. When the robots detected a door on the way
needs to go to the picking area for picking up a cart, then pass to the storage area, it reports the situation and the Robot
through a door to the storage area and finally place the cart, Behaviour Service will instruct the Door Edge Node Service
the procedure is controlled by the Robot Behaviour Service. to open the door.
Fig. 6. Communication Procedure of “WriteGoTo” action for ROS Edge Node
find the pending tasks. When a cart to be moved is found in
the table, Robot Behavior will change the status of the cart
to moving and start the moving procedure. Robot behaviors
will deliver a sequence of events to the corresponding ROS
Edge Node one by one to command the robot to move to cart
position, pick up the cart, move the cart to specific position
in the storage area and finally drop the cart. When ROS Edge
Node receives an event, it extracts the information contained
in the event, constructs a ROS message in Java type, and
communicates with the robot through the exposed OSGi services.</p>
      <p>ROS Edge Node is responsible for continuously querying the
execution status from the specific ROS service/topic, when the
action of an event is finished or something wrong happened,
a feedback event will be issued to inform the Robot Behavior
to ask for the next action. During the moving procedure, if
the door is closed, it will scan the QR code of the automated
door, and return a DoorFound event to the Robot Behavior.</p>
      <p>The Robot Behaviour will send a OpenDoor event to the Door
Edge Node service to open the door.</p>
      <p>After finishing the moving procedure, the Robot Behavior
Service will change the status of the cart to moved in the table
and search for the next mission. Finally all carts are moved in
ROS simulation.</p>
      <sec id="sec-7-1">
        <title>D. Validation in Physical Environment</title>
        <p>Fig. 7. Deployment of Robot System in the distributed BRAIN-IoT Fabric</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>In the test, the robot system above is deployed on a dis</title>
      <p>
        tributed Fabric environment containing multiple Raspberry Pis
and one Linux server running the ROS simulation as
BRAINIoT nodes in a same network. The Linux server is labeled
in advance when BRAIN-IoT Fabric cluster is created and the
ROS Edge Node Service is automatically deployed on it when
the label is detected. Since there are three simulated robots,
three instances of the ROS Edge Node Service instantiated
by OSGi Configuration Admin Service Specification [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] to
connect to the robots through IP address, the interested events
will be delivered to the ROS Edge Node through the integrated
EventBus. In the multi-agent system, each Robot Behaviour
Service instance will control one robot to take a task from
the shared table, after one task is finished, it will start next V. CONCLUSION AND FUTURE WORK
iteration. In this case, the deployment of Robot Behaviour The paper has presented the ROS Edge Node, which enables
Service and the ROS Edge Node Service in the real physical the interoperability between the ROS-based CPS applications
environment can be shown as Fig.7. Meanwhile, The door and other heterogeneous IoT platforms in a sophisticated IoT
in the simulation environment is a IoT device controlled by software ecosystem, based on the available services in
BRAINthe Door Edge Node Service, which is simulated in the ROS IoT framework. This solution provides several innovative
environment. features, to ease such interaction. Firstly, it can be dynamically
deployed and flexibly scaled on demand to connect to multiple
C. Validation in Simulation Environment ROS-based CPSs at runtime whenever a new CPS joins the
To prove the feasibility of the approach proposed in the
paper, ROS Edge node has been installed on a real rb-1 base
mobile robot. Due to the difference of the simulated world
and the physical world, the autonomous robotic system is not
used in the physical environment, but authors implemented
an Orchestrator service, which provides a simple interface
for users to manually send a sequence of BRAIN-IoT events
including the coordinates to control the actions of the robots in
a physical environment. The Orchestrator is implemented as a
OSGi Declarative Service and it injects a sort of commands in
the Apache Felix Gogo 6, which is a subproject of Apache
Felix implementing a command line shell for OSGi, which could
be accessed via its web interface in a distributed BRAIN-IoT
Fabric environment. When a user enters the command in Gogo
shell, the corresponding method in the Orchestrator will issue
a specific event to EventBus. The Orchestrator service could
be installed on any BRAIN-IoT node. Finally, ROS Edge Node
is able to receive the events and the robot will move towards
to the target positions.
      </p>
    </sec>
    <sec id="sec-9">
      <title>When the multi-agent robot system is activated, each Robot Behavior Service instance will check the shared cart table to</title>
      <p>6https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html
cluster. Secondly, it provides an approach to automatically
expose the ROS functionalities as OSGi services for bridging
the ROS world and OSGi world. Thirdly, ROS Edge Node
maximizes the flexibility of the mechanism by supporting
customized autonomous operation to detect the changes of
action status and issue feedback events, thus greatly reduces
the communication load on EventBus and its dependence
on other system components. Finally, the use of WoT TD
standardizes the description of the ROS functionalities.</p>
      <p>Compared with the existing CPS middleware or IoT
middleware, the proposed solution presents several advantages, but
some further developments are still ongoing. The integration
with the BRAIN-IoT End-to-End Security Framework are
still under development. Besides, its functionalities will be
enriched more, such as the graphical monitoring of robot status
and the warehouse coordinates at runtime by integrating with
other BRAIN-IoT monitoring tools. ROS Edge Node will be
tested on the real robots with a more complex Robotics use
case and the performance will be compared with other existing
solutions, in the future work.</p>
    </sec>
    <sec id="sec-10">
      <title>ACKNOWLEDGMENT</title>
    </sec>
    <sec id="sec-11">
      <title>The work presented here was part of the project ”Brain-IoT</title>
      <p>model-Based fRamework for dependable sensing and
Actuation in iNtelligent decentralized IoT systems” and received
funding from the European Union’s Horizon 2020 research
and innovation programme under grant agreement No 780089.</p>
      <p>The simulation environment is provided by Robotnik
Automation S.L.L.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>N.</given-names>
            <surname>Boulila</surname>
          </string-name>
          , “
          <article-title>Cyber-physical systems and industry 4.0: Properties, structure, communication, and behavior</article-title>
          ,”
          <volume>04</volume>
          2019.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Barai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Kundu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Sau</surname>
          </string-name>
          , “
          <article-title>Path following of autonomous mobile robot with distance measurement using rfid tags</article-title>
          ,” in
          <source>2019 IEEE International Symposium on Measurement and Control in Robotics (ISMCR)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>A3</fpage>
          -4-1-
          <issue>A3</issue>
          -4-4.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>nud</given-names>
            <surname>Lasse</surname>
          </string-name>
          <string-name>
            <surname>Lueth</surname>
          </string-name>
          , “Iot platform companies landscape
          <year>2019</year>
          /
          <year>2020</year>
          : 620 iot platforms globally,” https://iot-analytics.
          <article-title>com/ iot-platform-companies-landscape-</article-title>
          <year>2020</year>
          /,
          <year>December 2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Conzon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. R. A.</given-names>
            <surname>Rashid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Tao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Soriano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Nicholson</surname>
          </string-name>
          , and E. Ferrera, “
          <article-title>Brain-iot: Model-based framework for dependable sensing and actuation in intelligent decentralized iot systems</article-title>
          ,
          <source>” in 2019 4th International Conference on Computing, Communications and Security (ICCCS)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>O.</given-names>
            <surname>Alliance</surname>
          </string-name>
          , “
          <article-title>Osgi core release 7,” OSGi Alliance</article-title>
          ,
          <source>Tech. Rep., Apr</source>
          .
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>[6] https://docs.oracle.com/middleware/1212/wls/WLPRG/overview.htm# WLPRG107.</mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Di Modica</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pantano</surname>
          </string-name>
          , and
          <string-name>
            <given-names>O.</given-names>
            <surname>Tomarchio</surname>
          </string-name>
          , “
          <article-title>Snps: An osgi-based middleware for wireless sensor networks</article-title>
          ,
          <source>” 09</source>
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>[8] https://projects.eclipse.org/proposals/eclipse-sensinact.</mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>[9] https://www.w3.org/TR/wot-architecture/.</mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10] “
          <article-title>Community metrics report</article-title>
          ,” http://download.ros.org/downloads/ metrics/metrics-report
          <string-name>
            <surname>-</surname>
          </string-name>
          2019-07.pdf,
          <year>July 2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Araga</surname>
          </string-name>
          <article-title>˜o, P. Moreno, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Bernardino</surname>
          </string-name>
          , “
          <article-title>Middleware interoperability for robotics: A ros-yarp framework</article-title>
          ,
          <source>” Frontiers Robotics AI</source>
          , vol.
          <volume>3</volume>
          , p.
          <fpage>64</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>G.</given-names>
            <surname>Metta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fitzpatrick</surname>
          </string-name>
          , and L. Natale, “Yarp:
          <article-title>Yet another robot platform</article-title>
          ,”
          <source>International Journal of Advanced Robotic Systems</source>
          , vol.
          <volume>3</volume>
          ,
          <issue>03</issue>
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>R.</given-names>
            <surname>Arrais</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ribeiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Domingos</surname>
          </string-name>
          , and G. Veiga, “
          <article-title>Robin: An open-source middleware for plug'n'produce of cyber-physical systems</article-title>
          ,”
          <source>International Journal of Advanced Robotic Systems</source>
          , vol.
          <volume>17</volume>
          , no.
          <issue>3</issue>
          , p.
          <fpage>1729881420910316</fpage>
          ,
          <year>2020</year>
          . [Online]. Available: https: //doi.org/10.1177/1729881420910316
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pletsch</surname>
          </string-name>
          , “
          <article-title>Codesys eases programming for multiple controls hardware</article-title>
          ,” vol.
          <volume>50</volume>
          , pp.
          <fpage>34</fpage>
          -
          <lpage>35</lpage>
          ,
          <year>06 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>A.</given-names>
            <surname>Santos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cunha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Macedo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Arrais</surname>
          </string-name>
          , and
          <string-name>
            <surname>F. N.</surname>
          </string-name>
          <article-title>dos Santos, “Mining the usage patterns of ros primitives</article-title>
          ,” in
          <source>2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>3855</fpage>
          -
          <lpage>3860</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>N.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Al-Jaroodi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lazarova-Molnar</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Jawhar</surname>
          </string-name>
          , “
          <article-title>Middleware challenges for cyber-physical systems</article-title>
          ,
          <source>” Scalable Computing. Practice and Experience</source>
          , vol.
          <volume>18</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>331</fpage>
          -
          <lpage>346</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Chaqfeh</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          , “
          <article-title>Challenges in middleware solutions for the internet of things</article-title>
          ,” pp.
          <fpage>21</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>N.</given-names>
            <surname>Rosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cavalcanti</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Campos, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Silva</surname>
          </string-name>
          , “
          <article-title>Adaptive middleware in go - a software architecture-based approach</article-title>
          ,”
          <source>J Internet Serv Appl 11</source>
          ,
          <issue>3</issue>
          (
          <year>2020</year>
          ),
          <year>05 2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Tomlinson</surname>
          </string-name>
          and
          <string-name>
            <surname>J. VanDyk</surname>
          </string-name>
          , “Xml-rpc,”
          <volume>01</volume>
          2010.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nicholson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ward</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Baum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Tao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Conzon</surname>
          </string-name>
          , and E.Ferrera, “
          <article-title>Dynamic fog computing platform for event-driven deployment and orchestration of distributed internet of things applications</article-title>
          ,” pp.
          <fpage>239</fpage>
          -
          <lpage>246</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>