
User Guide
Requirements
- Ubuntu 20.04 or later
- ROS2 Foxy Fitzroy
- Gazebo simulator (not required in real robot execution)
- Camunda Modeler
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 Phases
MODELING
G1 | Robots as pools | ||
G1.1 | Heterogeneous robots as single-instance pools | ||
G1.2 | Homogeneous robots as multi-instance pools | ||
G2 | Mission as a process | ||
G2.1 | Actions as activities | ||
G2.1.1 | Complex actions as call activities | ||
G2.1.2 | Simple actions as script tasks | ||
G2.2 | Event handlers as event sub-processes | ||
G2.3 | Concurrent behaviors by means of AND gateways | ||
G2.4 | Internal choices as XOR gateways | ||
G2.5 | External choices as event-based gateways | ||
G2.6 | Missions activation as start events | ||
G2.7 | Missions shutdown as end events | ||
G3 | Communication via signal events | ||
G4 | Data as data objects |
CONFIGURATION
- Data Objects
- Select a data object
- Select in the Properties Panel the Extensions one
- Add new property and assign a name and a value
- If the value depends on the system execution ${variable_name}
- Add as many properties as many variables you want to contain in the data object
- Signal Events
- Select a signal event
- Select in the Properties Panel the Extensions one
- Add a proprerty named type, with a value equal to the ROS message type, s.a., std_msgs/msg/Bool, geometry_msgs/msg/Vector3, …
- 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
- Select a script task
- Select in the Properties Panel the General one
- Add the desired programming language type in the Script Format field, s.a. JavaScript
- Write the script inside the Script box
- It is possible to access a global variable or to create a new one following the syntax: this.environment.variables.variable_name
- A script task should end with the next() function, to ensure its ending
ENACTMENT
Some results of the real-life experiment:




References
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.
A BPMN-driven framework for Multi-Robot System development. In: Robotics and Autonomous Systems, vol. 160, pp. 104322, 2022, ISSN: 0921-8890.