The figure below depicts the toolchain developed and its actors in the RobMoSys’s Ecosystem Organization:

toolchain

The Behavior Developer implements the task-plots that encode the robotic system orchestration at runtime. The Component Supplier implements the single component and it also develops the skills that orchestrate components. The System Builder then selects such components to realize the services required by the robotic system. An Interface Definition Language (IDL) defines the component coordination interface between the task plot and skills. The Service Designer creates such IDLs, while the Behavior Developer and the Component Supplier use them.

The toolchain allows to describe a task plot only in terms of BT, using the Groot XML format, the skills only in terms of Finite State Machines (FSMs), using the W2C’s scxml format, and the communication interfaces via Thrift IDL. From these descriptions all the code is automatically generated, with the exception of the code implementing the components, which we assume are already existing. In this specific implementation, we use the YARP middleware and generate YARP specific code, however, nothing prevents to generate code for other runtime environments, provided they implement the Query communication pattern.

A user defines the BT in form of an XML file, created manually or using a Graphical User Interface (e.g. Groot or Papyrus4Robotics). The BT is then interpreted and executed by the BehaviorTree.CPP engine. The leaf nodes of the BT, that represents skills, are implemented as FSMs. The user defines them using the W2C’s scxml.

The qtscxml compiler interprets and executes the skills’ FSMs. Each FSM may send requests to different components to compute the return status to be sent to the parent node in the BT. An IDL defines the communication between BT and FSMs, and between FSMs and components. It is implemented via the YARP Thirft Remote Procedure Calls, which is synchronous and follows the RobMoSys Query communication pattern. The components, on the other hand, can communicate with each other using any of the RobMoSys’s communication patterns.