A BPMN-driven Framework for Multi-Robot System Development

User Guide


ROS Package installation

Video Guide

Reproducing the simulation

In order to reproduce a simulated experiment, it is necessary to follow these steps:

  • Download a simulation package (s.a. ground vehicle cooperation or agriculture scenario) and the engine package
  • Build each ROS package:
    • cd <package_name>
    • colcon build
    • source install/setup.bash
  • Run the simulation launch file: ros2 launch <simulation_package_name> <launch_file_name>.py
  • Run the engine launch file: ros2 launch fame_engine <launch_file_name>.py
  • Run the splitter node: ros2 launch fame_engine splitter.launch.py

Framework Description

FaMe is a BPMN-driven framework for Multi-Robot System (MRS) development. It allows the definition of a MRS mission using BPMN Collaborations and the execution of the system exploiting the ROS2 framework. Specifically, the development phases are the modeling, the configuration, and the enactment.

  • The modeling phase consists of a disciplined use of the BPMN notation permitting to define a collaboration diagram able to represent at a high level of abstraction the MRS for what concerns the involved devices and their behaviors.
  • The configuration phase enriches the modeled collaboration with all the information needed for its execution, producing as output an executable collaboration diagram.
  • The enactment phase executes the BPMN collaboration directly on each involved robot.
FAME framework.

FaMe Phases


G1Robots as pools
G1.1Heterogeneous robots as single-instance pools
G1.2Homogeneous robots as multi-instance pools
G2Mission as a process
G2.1Actions as activities
G2.1.1Complex actions as call activities
G2.1.2Simple actions as script tasks
G2.2Event handlers as event sub-processes
G2.3Concurrent behaviors by means of AND gateways
G2.4Internal choices as XOR gateways
G2.5External choices as event-based gateways
G2.6Missions activation as start events
G2.7Missions shutdown as end events
G3Communication via signal events
G4Data as data objects
Guidelines to define a disciplined use of the BPMN elements


  • Data Objects
    1. Select a data object
    2. Select in the Properties Panel the Extensions one
    3. Add new property and assign a name and a value
      • If the value depends on the system execution ${variable_name}
    4. Add as many properties as many variables you want to contain in the data object
  • Signal Events
    1. Select a signal event
    2. Select in the Properties Panel the Extensions one
    3. Add a proprerty named type, with a value equal to the ROS message type, s.a., std_msgs/msg/Bool, ‎geometry_msgs/msg/Vector3, …
    4. If it is a throwing signal: add a property named payload, with a value equal to the data it shares, s.a., true, {x: ${x_target}, y: ${y_target}, z: ${z_target}}, …
  • Script Tasks
    1. Select a script task
    2. Select in the Properties Panel the General one
    3. Add the desired programming language type in the Script Format field, s.a. JavaScript
    4. Write the script inside the Script box
    5. It is possible to access a global variable or to create a new one following the syntax: this.environment.variables.variable_name
    6. A script task should end with the next() function, to ensure its ending


Some results of the real-life experiment:


Khalid Bourr, Flavio Corradini, Sara Pettinari, Barbara Re, Lorenzo Rossi, Francesco Tiezzi: Disciplined use of BPMN for mission modeling of Multi-Robot Systems. In: Proceedings of the Forum at Practice of Enterprise Modeling (PoEM 2021), pp. 1–10, CEUR-WS.org, 2021.