User Guide
Requirements
- Ubuntu 20.04 or later
- ROS2 Foxy Fitzroy or later
- Gazebo simulator (not required in real robot execution)
- NodeJS
Detailed instructions for setting up the FaMe tools can be found in the online documentation.
Video Guide
Reproducing the simulation
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 an 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 | Execution errors via error events | ||
G5 | Delays and timers via timer events | ||
G6 | Conditions via conditional events | ||
G7 | 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 property 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.