2024-08-01T15:00:00Z
In the field of process modeling, workflow diagrams (a.k.a. flowcharts) are an intuitive way to describe how a process evolves from its initial state to being complete. In the fields of discrete event systems and distributed systems, there is a well-studied state machine formulation of workflow diagrams called workflow nets which are a specialization of Petri nets. Workflow nets are particularly good at representing processes with a distinct beginning, distinct finish, and which may involve asynchronous events, cycles, simultaneous parallel actions, and synchronization between multiple independent agents.
While behavior trees are a popular way to express finite state machines in robotics, their tree structure encumbers them with limitations that make it difficult–sometimes impossible–to express workflows that involve arbitrary process branching, arbitrary synchronization, or arbitrary cycles. While behavior trees can do all of these operations to a limited extent, each operation must always somehow fit within a rigid hierarchy. In contrast, workflows do not have that limitation and can support any structure of branching, syncing, and cycling. Put simply, every behavior tree can be converted into an equivalent workflow, but not every workflow can be represented as a behavior tree.
The Open-RMF project has a long history of developing systems where one program needs to juggle attention for many agents, and each agent has multiple sub-processes that need to be run simultaneously and synchronized safely. Developing and maintaining these systems has historically been a very taxing burden for the project since we couldn’t find a framework for process modeling and control that met all our requirements around flexibility, performance, safety, expressiveness, and openness.
To build the “next generation” of the Open-RMF project, we are rolling out bevy_impulse
which implements arbitrary workflow building and execution on top of the Bevy game engine. This will serve as a crucial foundation for many aspects of next gen Open-RMF:
- Synchronization between robot state updates, multi-agent planners, and robot platform APIs
- Defining and executing complex tasks, especially multi-agent tasks
- Defining and executing modular behaviors / skills for robots
- Synchronization between multiple devices, e.g. defining custom workflows for how an AMR interacts with a door or elevator
At this session of the Interoperability Special Interest group, we will discuss the current capabilities of bevy_impulse
as we get ready to fire off its first release. We’ll go over the key concepts that are driving its design, discuss its API, and show some usage examples.