Our current framework includes the Behavior Tree (BT) Executor and a system architecture builds on SmartMDSD. Environment and robot are simulated using Webots (https://github.com/cyberbotics/AROSYS).
The first step was to close a complete loop where the BT Executor drives the course of action sending skills to the ComponentSkillInterface on the SmartMDSD environment. The received skill will be updated on the knowledge base (ComponentKB), allowing the ComponentSequencer to manage its execution. The skill_result follows the reverse path, being noted in the ComponentKB by the ComponentSequencer and sent by the ComponentSkillInterface, through a ZMQ server, to the BT Executor.
The BT Executor employs the version 3.x of the BT library (https://github.com/BehaviorTree/BehaviorTree.CPP). In this new version of the BT, the implementation follows the guidelines of Model Driven Development, separating the role of the Component Developer from the Behavior Designer. Thus, working as Behavior Designer, we do not need to read nor modify the source code of a given TreeNode.
This system is built with Components from the Servicerobotics-Ulm repository (https://github.com/Servicerobotics-Ulm/ComponentRepository) and the AROSYS ITP project (https://github.com/cyberbotics/AROSYS). It is based on the SystemTiagoNavigation system, but incorporates significant changes for managing the skill within the architecture.
ComponentSkillInterface: TheSkillExecutionTask.ccmodule has been modified for capturing the skill from the ZMQ server and annotate it on theComponentKB. After updating a skill, the component will poll theComponentKBfor obtaining the associated response (i.e.skill_result).BehaviorNavigationScenario.smartTcl: Minor changes for updating a NILskillandskill_resulton theComponentKB.startUp.smartTcl: Relevant changes for polling theComponentKBand capturing the new skills and manage them, writing on theComponentKBthe resultingskill_results. Currently, only three skills are considered:ACTIVATELOCALIZATION,APPROACHLOCATION, andDEACTIVATELOCALIZATION.
ComponentTCLSequencerComponentKBSmartCdlServerSmartMapperGridMapSmartPlannerBreadthFirstSearchSmartAmcl
ComponentWebotsComponentWebotsLidarComponentWebotsTIAGo
ABR_test.xml: Example of Behavior treeSystemTiagoNavigation.skills.json: File with the whole collection of skills from theSystemTiagoNavigationenvironment on SmartMDSD
Note : Remember that only three skills are currently managed!
mkdir build
cd build
cmake ..
make


