The README intstuctions and the tutorials are still under construction
Welcome to the Failure Recovery with Ontologically Generated Behaviour Trees (FROGBT) project repository! This project is part of the Master's program in Robotics at the Technical University of Delft and represents a significant step forward in the field of robotics, specifically in the domain of behaviour trees and failure recovery.
FROGBT represents a novel fusion of behaviour trees (BTs), a hierarchical task execution method, and ontological reasoning, a framework for structuring knowledge. By seamlessly integrating ontological reasoning into the process of BT generation, FROGBT aims to bridge the gap between generated BTs and robust failure recovery strategies. This integration imbues BT generation with contextual awareness, enabling robots to make informed decisions in complex and dynamic environments.
- To be able to run FROGBT tutorials you need to have a ROS noetic installation: noetic installation instructions
- You need to have the following modules installed: owlready2 and lxml
pip install owlready2
pip install lxml
- You also need the BehaviorTreeCPP package v3.8 which can be installed using the following line
sudo apt-get install ros-$ROS_DISTRO-behaviortree-cpp-v3
- Clone BehaviorTrees.ROS repo, a useful package to use actions and services of ROS in BehaviorTreesCPP package.
git clone https://github.com/BehaviorTree/BehaviorTree.ROS.git
- For visualization you will need GROOT installation instruction
- GROOT proved somewhat challenging to get working with v3.8 of BehaviorTreeCPP package, thus a fork was made with changes that made it work for my setup.
git clone --branch wisjaber-patch-1 https://github.com/wisjaber/Groot.git
Since GROOT is only for visualization, if it doesn't work you can comment out the following line in the "bt_generation_action.h" and "tutorial_bt_generation_action.h" files
PublisherZMQ publisher_zmq(tree_,200);
-
For the skills and simulated environment you need to request access to the gits from AIRLab
-
Clone the Gazebo assets repo. (don't forget to source the environment variables as it says in the github)
git clone https://github.com/tud-airlab/airlab_gazebo_assets.git
-
Clone Albert skills repo
git clone https://github.com/tud-airlab/albert_skills.git
-
Clone Albert repo
git clone https://github.com/tud-airlab/albert.git
-
Clone the msgs package
git clone https://github.com/wisjaber/FROGBT_msgs.git
- Clone the extra skills for recovery package
git clone https://github.com/wisjaber/airlab_extra_skills.git
- Clone the main repo
git clone https://github.com/wisjaber/FROGBT.git
There are three scenarios to evaluate FROGBT you can run each following the instructions below
This scenario is comparison with SkiROS2 framework in their example task found in SkiROS examples In order to run the scenario using FROGBT build your workspace and source it.
- Then in a sourced terminal
cd workspace/src/FROGBT
make setup_scenario1
make scenario1
- Immediately connect to GROOT to see the BT growing. Alternatively, you can see the tree execution in the first terminal
This scenario is preparing a list of products in the simulated environment. There are two different ways to evaluate it: Sequence List, and BT Reuse.
- To start the simulation in a sourced terminal run
cd workspace/src/FROGBT
make simulation
- sometimes the arm gets into singularity when loading the simulation. If that happened, run the following in a terminal
make arm
- Run the servers in a sourced terminal by running
make servers
- Start the server for the BT execution a sourced terminal by running
make bt_execution
- Start your GROOT and in a terminal run the following to start the list of products tree generation
make list_bt
Follow the same steps from the Sequence List instruction behalf the last one. instead run the following
make frogbt
This will run the frogbt main script to place one product, tag=1, thus generating a BT for it. After it is done to reuse that BT run the following
rosrun bt_tests bt_reuse.py place milk <tag>
Replace with the number of the product you want, in the ontology there are 4 products defined with the tags: 1,18,19,20. you can reuse it for a different product multiple times until there are no products defined in the ontology.