<!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>CommonLang: a DSL for defining robot tasks</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Adrian Rutle</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jonas Backer</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kolbein Foldøy</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robin T. Bye</string-name>
          <email>robin.t.bye@ntnu.no</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Cyber-Physical Systems Laboratory, NTNU-Norwegian University of Science and Technology</institution>
          ,
          <addr-line>Ålesund</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Western Norway University of Applied Sciences</institution>
          ,
          <addr-line>Bergen</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>ed and represented in models while robot-specific code is generated from these models using code generation. With a robot modelling framework, we can work on a higher abstraction level making the task of programming complex heterogeneous robots more efficient. In this paper, we present such a modelling framework and evaluate its flexibility by extending it with wireless communication functionalities.</p>
      </abstract>
      <kwd-group>
        <kwd>Robot programming Robot modelling framework Modeldriven software engineering Robot communication protocol</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Robots come in a variety of sizes and shapes and with different purposes and
abilities. In today’s society robots have revolutionized the efficiency and
productivity in many fields. The use of robots in the field of manufacturing cars has
increased the capacity and quality of the cars, in addition to protecting
workers from performing extremely dangerous tasks. In agriculture, drones are being
used to analyze soil and plant seeds and choosing the best moment to harvest.
Whether robots are used for bomb disposal or vacuum cleaning, their operation
depends on both their hardware and the software they are running [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Current robot programming frameworks require both a steep learning curve
and specific hardware and software environments. A large number of robotic
software exist but interoperation across robots is difficult, with dependencies on
specific hardware or software platforms that are hard-wired into the robot code
[
        <xref ref-type="bibr" rid="ref6 ref7">6,7</xref>
        ]. Addressing recent challenges in robotics [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] has led to various conference
and workshop series focusing on robotics software and design [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Specifically,
using model-driven software engineering (MDSE) methodologies and
technologies to raise the abstraction level of robotic software development, enable
simulation and verification, and tackle complexity challenges, are common research
goals at events such as MORSE, SIMPAR, ICRA, ROSE, etc.
      </p>
      <p>
        In this paper, we present a prototype framework CommonLang (CoL) which
uses MDSE-techniques [
        <xref ref-type="bibr" rid="ref2 ref3">2,3</xref>
        ] to abstract away from underlying technologies and
create executable code for various different robot platforms using code generation
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The framework comes with a text-based domain-specific language (DSL) that
enables users to write scripts through abstracted metamethods ; i.e., function
abstractions providing a higher-level language.
      </p>
      <p>Given a number of heterogeneous robots, each with its own programming
language, the main feature of CoL is its ability to parse a common set of robot
instructions into multiple tailor-made scripts to yield identical behaviour for the
robots. The layout of the output scripts is dependent on XML configuration files
that contain the implementation of the metamethods and specify what language
they should be parsed to (e.g., C, Python, Java, etc.). In this paper, we
demonstrate behavioural programming of two robots that use C/C++ and Python,
respectively, as well as providing an evaluation of CoL’s ability to avoid increased
complexity—keeping usability and ease of access at an acceptable level—when
adding WiFi communication functionality by utilizing metamethods.
2</p>
    </sec>
    <sec id="sec-2">
      <title>CommonLang</title>
      <p>
        CommonLang (CoL)—which was first described in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]—is a DSL created
specifically for writing code for a set of various robots using different programming
languages. It is an imperative and structured language, and in many ways
similar to Java, which is one of the languages CoL can be parsed to. CoL includes
various control flow constructs found in most other programming languages, e.g.,
for, if, and while statements.
      </p>
      <p>
        The aim of CoL is to enable reusable behavior for different robots with similar
abilities. To accomplish this goal, a textual DSL was defined using Xtext in
Eclipse [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. The solution builds on the concept of metamethods that declare
the common abilities of target systems for a behavioral script. Fig. 1 illustrates
how the functionality of three different robot platforms can be used to create a
common set of abilities, consisting of the metamethods that can be used in scripts
targeted to these platforms. These commonalities are not enforced, meaning that
robots which do not naturally exhibit common functionalities will not be sharing
behavior. However, in the CoL script it is possible to use metamethods that are
not present in all target platforms. The invocation of these will be ignored on
unsupported platforms. In this way, a script can define tasks for a heterogeneous
environment of interacting robots.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Defining behavior with CoL scripts</title>
        <p>Defining behavior in CoL consists of two steps: writing a CoL script and listing
the collection of metamethods. The script is declared by the script keyword, the
script name, then the target keyword, and finally the platforms to be targeted
(see Fig. 2). The script is written in a file with the extension name .commonlang
and consists of two main blocks. The first part contains the script definition,
name of the script (MyScript), and a set of what robots the script will be
generated for (LegoMindstormsEV3 and ArduinoShieldBot), in the form of
configuration file names for each robot. Target platforms must include a specific
configuration for each platform as many robot platforms allow the hardware to
be configured differently as needed. Scripts may consist of variables, metamethod
invocations, and some common control statements such as if, else, and while.
The program code will be written inside a method called loop contained in
the script block, and consists of user methods and metamethods. The output
code, here parsed to Arduino (C/C++) and Python, will continuously iterate this
method, hence it does not allow for storing states, like integers and booleans.</p>
        <p>The second block is called metamethodcollection, which is a set of
predefined methods that every robot with a different programming language is able to
run and has its own implementation of. Each metamethod declaration consists
of the reserved keyword meta, followed by a return type, name and its
corresponding parameters. For example, the metamethod MoveForward may for some
robots make two of the wheels spin forward, whereas for other robots may make
four wheels spin at different speeds. Some robots may even be flying, meaning
they will have rotors spinning in different directions to be able to fly forward.</p>
        <p>
          For CoL to generate code for a robot’s native language, we need to declare
two XML files (see Fig. 3). The first XML file is generic for all robots of its
kind and contains various types of data, such as the file format for the language
files (e.g., .py or .c indicating Python or C files, respectively), global variables,
declarations and method calls for the setup method of the final script. It also
contains which metamethods the robot can execute. In this XML file, the
metamethods have a simple code segment, either calling its corresponding method
from the other XML file where it is implemented, or returning a value from
global variables or forwarding the return value from the method it is calling [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
        </p>
        <p>The other XML file is specific for the robot configuration and contains the
implementation of the methods in the robots’ own language, for instance, setting
a motor to run for the duration specified in the parameters or reading the value
of a digital pin and returning it. These methods with their implementations are
then automatically added without changes to the final output script which is
already in the target language. Additionally, this XML file contains a tag called
assignments for setting up robot sensors to the right pin values, since this
configuration is robot-dependent.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Code generation from CoL scripts</title>
        <p>
          As mentioned, the CoL grammar is defined in Xtext [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. The details of Xtext
and how it works is out of the scope of this paper, but in short, Xtext facilitates
the definition of DSLs using a powerful grammar language and as a result we can
get a full DSL-infrastructure, including parser, linker, typechecker, compiler as
well as a language editor with syntax-highlighting in Eclipse. CoL relies on
codegeneration functionalities provided by Xtext. These functionalities are defined
as templates in the language Xtend—a flexible and expressive dialect of Java
which compiles into readable Java 8 compatible source code. To understand how
this code-generation step works, we include an excerpt of the CoL grammar
in Listing 1.1. Xtend creates a Java class for each language construct in the
grammar, e.g. Script.java, MetaMethods.java, Block.java, etc. In addition
to these classes, we have implemented a class BotMethods.java which parses
the two XML files for each robot in the targets block. Following the Xtext
methodology, we have also implemented a customized code-generator class for
each target language; in this case one for Python and one for C.
        </p>
        <p>Once a valid CoL script (according to the grammar) is saved, all these classes
gets instantiated automatically by the Xtext language-infrastructure. In
addition, a code generator (which is a simple Java program as shown in Fig. 3) will
be generated automatically for each CoL script. Running this Java program will
create the final robot scripts for the target platforms.
10 CAPITALFIRST ) ’) ’ (’,’ ’(’ robottypes +=( LOWERFIRST | CAPITALFIRST ) ’,’
robotconfigs +=( LOWERFIRST | CAPITALFIRST )
11 ’) ’)* ’{ ’( methods += UserMethod *) ’}’;
12 MetaMethods :
13 { MetaMethods } ’ metamethodscollection ’ ’{’( methods += MetaMethod )* ’} ’;
14 Block :
15 { Block } ’{’ (( exs += SimpleExpression ’;’ | exs += StructureExpression ))*
’}’;
16 SimpleExpression :
17 Crement | Call | Assignment | Return ;
18 StructureExpression :
19 Block | If | For | While ;
20 Expression :
21 SimpleExpression | StructureExpression ;
22 // ...
23 Method :
24 ( UserMethod | MetaMethod );
25 MetaMethod :
26 ’meta ’ type = Methodtype name = CAPITALFIRST ’(’ parameters += Declaration ?
(’,’+ parameters += Declaration )* ’) ’ ’; ’;
27 UserMethod :
28 type = Methodtype name = LOWERFIRST ’(’ parameters += Declaration ? (’,’+
parameters += Declaration )* ’) ’ bl = Block ;</p>
        <p>Using the standard Xtext methodology, code-generation is divided into two
steps. Firstly, an object model will be created for the parsed CoL script, then,
target scripts in the native languages of the robots will be created using the
customized code-generators. The complexity of these code generation steps depends
on the complexity of the CoL script and the number of robot kinds which are
defined in the targets block. These steps are hidden from the CoL script and
metamethod developers.</p>
        <p>Extending CoL with support for generating code to new target platforms
require some knowledge of Java and Xtext. This consists of implementing a
Java class for each new target language (however, C and Python covered all
the robots which we have had in hand, e.g. Arduino robot, Lego Mindstorm,
CrazyFlie mini-drones and Land-rovers with Raspberry PI 3). In the envisioned
scenario, this activity is hidden from CoL script developers and delegated to
DSL-infrastructure experts.</p>
        <p>Configuring and developing metamethods are done in the XML files. Our
optimal goal is to ship the DSL with a number of most-used metamethods for
various commonly available robots. However, we see this activity as a
community effort and envisage that the future of the DSL will be depending on the
availability of this infrastructure. We have currently not defined any scheme or
convention for the definition of these metamethods due to their simplicity,
however, in future work we plan to define a guideline and a metamodel in form of
an XML Schema Definition (XSD) for the configuration XML files.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Extension with Wireless Communication</title>
      <p>
        In order to evaluate the DSL, we have extended its functionality by adding
features for WiFi communication using Message Queuing Telemetry Transport
(MQTT) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] as a sample communication protocol. This functionality is not
hard-coded and can be replaced by other protocols if needed.
      </p>
      <p>
        MQTT is a lightweight messaging protocol that allows the robots to
subscribe to topics. They can also publish messages to the topics, so that clients
subscribed to a particular topic will receive the messages. A broker is required
for this setup to work. It keeps track of available topics and clients connected
to the server, forwarding incoming messages to all the clients subscribing the
respective topics. For a client to subscribe to a topic it needs only to know the
IP address of the broker. We have used the Eclipse Mosquitto [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]
implementation of MQTT, which grants the ability to set up a broker and enter commands
such as subscribing and publishing messages to desired topics into the command
prompt window.
      </p>
      <p>An important decision had to be made regarding whether the communication
should be integrated as part of the CoL grammar or as additional metamethods
through the XML files. Editing the grammar of the language results in fewer
unnecessary lines of code in the XML files. However, modifying the CoL grammar
is more complex than making metamethods for it: the DSL is designed for
handling metamethods specified in the robots’ XML files. It creates an environment
for general purpose robot programming which could be compromised by adding
grammar specifically for MQTT communication since with further development
of the language other communication protocols may be desirable. By refraining
from doing grammatical adjustments, it becomes quite manageable to add or
edit already existing metamethods for communication.</p>
      <p>A crucial part of integrating communication through metamethods is making
the code intuitive and user-friendly, and at the same time not limiting what the
end user is able to do. Various approaches to how the syntax and methods
should look like have been considered. One of the approaches was to let the
end user create a method surrounding a selection of metamethods. This user
method would then be connected to a message string through a metamethod
called OnMessage. This is how it would look like:</p>
      <p>Listing 1.2. OnMessage metamethod
1 OnMessage (" go " , forwardAndLightsOn );
2
3 void forwardAndLightsOn () {
4 MoveForward () ;
5 LightsOn () ;
6 }</p>
      <p>This approach would result in more code to write. It would also require a
change in the language’s grammar, allowing it to take a method as a parameter.
After considering variations of similar syntax, we settled on utilizing the
simplicity of metamethods combined with if statements, which are already part of the
Commonlang grammar. The metamethod is called ReceiveMessage and takes a
single string parameter, returning a boolean value. Here is an example:</p>
      <p>Listing 1.3. ReceiveMessage metamethod
1 if ( ReceivedMessage (" go ")) {
2 MoveForward () ;
3 LightsOn () ;
4 }</p>
      <p>The method is checking whether the robot has received a specific
message. When the robots receive messages, the method triggers a callback called
on_message that will put the messages in a list. This is because the callback
method is hardcoded in the XML files and cannot be dynamically changed.
Instead, this ReceivedMessage method was created to scan through the message
list to check for the string from its parameter. If it finds it, a single instance of
the message will be removed from the list and it will return true; otherwise false.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Related Work</title>
      <p>
        Robots can be programmed in different ways: from writing robot-specific code
directly to using frameworks with varying functionality. Some of these
frameworks, such as Papyrus-RT [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and RobotML [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], utilize MDSE techniques [
        <xref ref-type="bibr" rid="ref2 ref3">2,3</xref>
        ]
to deal with software complexity. Others, such as the Robot Operating System
(ROS) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and RoboDK [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], use programming frameworks which are tailored
for specific kinds of robots. Below we shortly introduce these frameworks,
keeping in mind that the main distinctive characteristic of CoL is its support for
writing behavior for a heterogeneous environment of various kinds of robots.
      </p>
      <p>
        ROS is an open source project consisting of a collection of tools, libraries and
conventions that aims to simplify programming robust and complex behaviour
of robots of all shapes and sizes across a wide variety of platforms, whereas
Papyrus-RT is another framework for real-time programming of robots which
generates C++ code from models defined in the UML-RT modeling language.
RobotML is a DSL that aims at solving several central problems with robot
programming today [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] such as costs and difficulty of development and reusability
issues because of low level details being hard-wired into the code at early stages
in the development. Interaction modelling [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Deep modeling [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], and
Multirobot systems [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] also use DSLs for modeling robotic software but they do not
have the same maturity as RobotML and Papyrus-RT. The robot instructions
written in these languages can be simulated and visualized in 3D as well as
exported to the native languages of each of the robots. Unfortunately, RoboDK
currently only supports industrial robots.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion and Future Work</title>
      <p>We have presented CoL, a DSL for robot task specification which enables
compilation of tasks to heterogeneous robot platforms. With CoL, one can do the
time-consuming work of writing functions and setup once, then use these
functions to define tasks for robot teams. The functions are developed as
metamethods which extend what the users can express with CoL scripts. Since one
could make any kind of metamethods, the functionality can vary greatly from a
simpler move-forward function to highly abstract functions such as “water field”
or “defuse bomb.” The defined functionality is contained within XML
configuration files that are included in CoL scripts. This means one could make these
robot-specific files beforehand and make documentation for them so that the CoL
scripts can be written by less technical domain-experts to define heterogeneous
robot behavior in various domains. These domains could be anything as long as
the tasks in the CoL script can be achieved by robots for which the
appropriate metamethods are implemented. The usability and extendability of CoL was
demonstrated by adding support for wireless communication. The work done to
add communications functionality to CoL was implemented through
configuration files and metamethods; i.e., the DSL itself is not modified. This proved the
potentials to add functionality to CoL with a library-like approach.</p>
      <p>
        Future work would includes (i) expanding the available library of metamethods
to offer greater flexibility in how the user would like to use the DSL, possibly
dividing the metamethods into different collections with solid documentation.
This includes also guidelines and conventions for developing and documenting
metamethods. Testing and calibrating the robots was time consuming,
connecting via USB or SSH; transferring the script and then running the script when
the robot was in a semi-suitable location was not ideal. (ii) Implementing a
simulator could cut down on testing time, as well as being a solid tool for
evaluation. Moreover, (iii) implementing a modeling and reasoning functionality on
top of CoL to describe intended behavior of a team of robots—in the direction
of [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], which uses hierarchies of finite state machines to structure the behavior
of the team—would make CoL scripts more robust and allow for formal
reasoning about the collective behavior of the robot team. Features for dynamically
assigning roles to robots (based on their capabilities) and robots to roles (based
on the situation) would be included in such an extension which should also
consider planning and verification of achievement of the desired goals of a mission.
Finally, retrieving a concrete execution plan from a general and abstract goal
or mission description and verifying that the robots would act accordingly to
reach the goal would be a valuable addition to CoL. As also described in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], (iv)
implementing self-adaptation and dynamic recalculation of plans for missions
which are defined as CoL scripts would increase its usefulness and robustness to
unforeseen situations at runtime. To make CoL more accessible for laypersons,
(v) a graphical syntax will be defined for the language using guidelines from [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
and Sirius [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. This step should be possible due to the compatibility between
Xtext and Eclipse Modeling Framework (EMF) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Atkinson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerbig</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Markert</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zrianina</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Egurnov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kajzar</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Towards a deep, domain specific modeling framework for robot applications</article-title>
          . In: Assmann,
          <string-name>
            <given-names>U.</given-names>
            ,
            <surname>Wagner</surname>
          </string-name>
          ,
          <string-name>
            <surname>G</surname>
          </string-name>
          . (eds.) MORSE. pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          . No. 1319
          <source>in CEUR Workshop Proc</source>
          . (
          <year>2014</year>
          ), http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1319</volume>
          /#morse14_paper_
          <fpage>01</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Model-Driven Software Engineering in Practice, Second Edition</article-title>
          . SLSE, Morgan &amp; Claypool Publishers (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Brugali</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Model-driven software engineering in robotics</article-title>
          .
          <source>IEEE Robotics &amp; Automation Magazine</source>
          <volume>22</volume>
          (
          <issue>3</issue>
          ),
          <fpage>155</fpage>
          -
          <lpage>166</lpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Cho</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Syriani</surname>
          </string-name>
          , E.:
          <article-title>Syntax map: A modeling language for capturing requirements of graphical dsml</article-title>
          .
          <source>In: 2012 19th Asia-Pacific Software Engineering Conference</source>
          . vol.
          <volume>1</volume>
          , pp.
          <fpage>705</fpage>
          -
          <lpage>708</lpage>
          (
          <year>Dec 2012</year>
          ). https://doi.org/10.1109/APSEC.
          <year>2012</year>
          .20
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Cornelius</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hochgeschwender</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voos</surname>
          </string-name>
          , H.:
          <article-title>Model-driven interaction design for social robots</article-title>
          . In: Seidl,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Zschaler</surname>
          </string-name>
          , S. (eds.)
          <source>Software Technologies: Applications and Foundations - STAF. LNCS</source>
          , vol.
          <volume>10748</volume>
          , pp.
          <fpage>219</fpage>
          -
          <lpage>224</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Dhouib</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kchir</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stinckwich</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ziadi</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ziane</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Robotml, a domainspecific language to design, simulate and deploy robotic applications</article-title>
          . In: Noda,
          <string-name>
            <given-names>I.</given-names>
            ,
            <surname>Ando</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Brugali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Kuffner</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.J</surname>
          </string-name>
          . (eds.) SIMPAR. pp.
          <fpage>149</fpage>
          -
          <lpage>160</lpage>
          . Springer Berlin Heidelberg (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dragule</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meyers</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pelliccione</surname>
            ,
            <given-names>P.:</given-names>
          </string-name>
          <article-title>A generated property specification language for resilient multirobot missions</article-title>
          . In: Romanovsky,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Troubitsyna</surname>
          </string-name>
          , E.A. (eds.)
          <article-title>Software Engineering for Resilient Systems</article-title>
          . pp.
          <fpage>45</fpage>
          -
          <lpage>61</lpage>
          . Springer International Publishing,
          <string-name>
            <surname>Cham</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Modeling</surname>
          </string-name>
          <article-title>Framework (EMF): Web site</article-title>
          . http://www.eclipse.org/modeling/ emf (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Gya</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solhaug</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Common programming interface for multiple types of robots (2017), bachelor thesis</article-title>
          , Western Norway University of Applied Sciences (available at http://ict.hvl.no
          <article-title>/commonlang-a-dsml-for-robot-task-definition/)</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Mazur</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wiśniewski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McMillan</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Clarity from above: PwC global report on the commercial applications of drone technology</article-title>
          (May
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. MQTT.
          <article-title>org: Machine queuing telemetry transport protocol</article-title>
          . http://mqtt.org (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Ruscio</surname>
            ,
            <given-names>D.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malavolta</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pelliccione</surname>
            ,
            <given-names>P.:</given-names>
          </string-name>
          <article-title>A family of domain-specific languages for specifying civilian missions of multi-robot systems</article-title>
          . In: Assmann,
          <string-name>
            <given-names>U.</given-names>
            ,
            <surname>Wagner</surname>
          </string-name>
          ,
          <string-name>
            <surname>G</surname>
          </string-name>
          . (eds.) MORSE. pp.
          <fpage>13</fpage>
          -
          <lpage>26</lpage>
          . No. 1319
          <source>in CEUR Workshop Proc</source>
          . (
          <year>2014</year>
          ), http: //ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1319</volume>
          /#morse14_paper_
          <fpage>02</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <article-title>Simulation and OLP for Robots: RoboDK</article-title>
          . https://robodk.com/ (
          <year>2018</year>
          ),
          <source>accessed on 2018-07-13</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Sirius:
          <article-title>Web site</article-title>
          . http://www.eclipse.org/sirius/ (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Skubch</surname>
          </string-name>
          , H.:
          <article-title>Modelling and controlling of behaviour for autonomous mobile robots</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Kassel (
          <year>2013</year>
          ), http://d-nb.
          <source>info/1026180120</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. The Eclipse Foundation:
          <article-title>Eclipse mosquitto</article-title>
          . https://projects.eclipse.org/projects/ technology.mosquitto (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. The Eclipse Foundation: PapyrusRT. https://www.eclipse.org/papyrus-rt/ (
          <year>2018</year>
          ),
          <source>accessed on 2018-07-13</source>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <article-title>The Robot Operating System (ROS): Web site</article-title>
          . http://www.ros.org (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. The Robotics Summit &amp;
          <article-title>Expo: Design and development track</article-title>
          . https://www. roboticssummit.com/tracks/#design (
          <year>2018</year>
          ),
          <source>accessed on 2018-07-13</source>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. Xtext:
          <article-title>Web site</article-title>
          . https://www.eclipse.org/Xtext/ (
          <year>2018</year>
          ),
          <source>accessed on 2018-08-20</source>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Yang</surname>
            ,
            <given-names>G.Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bellingham</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , E. Dupont,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Fischer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Floridi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Full</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Jacobstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Kumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            ,
            <surname>McNutt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Merrifield</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Nelson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Scassellati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Taddeo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Taylor</surname>
          </string-name>
          , R.,
          <string-name>
            <surname>Veloso</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Lin</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            ,
            <surname>Wood</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.:</surname>
          </string-name>
          <article-title>The grand challenges of science robotics</article-title>
          .
          <source>Science Robotics</source>
          <volume>3</volume>
          ,
          <issue>eaar7650</issue>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>