From 1bab6a0e19408aff5594bf77be042e2f13b8c659 Mon Sep 17 00:00:00 2001 From: Christian Henkel Date: Tue, 13 Aug 2024 16:23:35 +0200 Subject: [PATCH] tutorial Signed-off-by: Christian Henkel --- .../testable_tutorials/testable_tutorials.py | 171 ++++++++++++++++++ bt_view/tutorial.md | 17 ++ btlib/scripts/bt_to_fsm | 18 ++ btlib/setup.py | 5 +- btlib/src/btlib/bt_to_fsm/bt_to_fsm.py | 2 +- btlib/tutorial.md | 58 ++++++ docs/source/tutorials.rst | 13 +- imgs/fsm.png | Bin 0 -> 55912 bytes 8 files changed, 270 insertions(+), 14 deletions(-) create mode 100644 bt_tools_common/testable_tutorials/testable_tutorials.py create mode 100644 bt_view/tutorial.md create mode 100644 btlib/scripts/bt_to_fsm create mode 100644 btlib/tutorial.md create mode 100644 imgs/fsm.png diff --git a/bt_tools_common/testable_tutorials/testable_tutorials.py b/bt_tools_common/testable_tutorials/testable_tutorials.py new file mode 100644 index 0000000..80db391 --- /dev/null +++ b/bt_tools_common/testable_tutorials/testable_tutorials.py @@ -0,0 +1,171 @@ +# Copyright (c) 2024 - for information on the respective copyright owner +# see the NOTICE file + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +This takes tutorials written in markdown files and extracts the code blocks +to be tested. The code blocks are then executed and the output is compared +to the expected output. +""" + +import os +import re +import sys +import logging +import subprocess +import argparse +import select +from typing import Optional, List, Tuple + +BLOCK_DELIM = '```' + +class ROSTerminal: + """ + Class for interacting with a ROS terminal + """ + def __init__(self): + self.process = subprocess.Popen( + ['bash'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + bufsize=1) + + def execute(self, command: str) -> str: + """ + Executes a command in the terminal + """ + if not command.endswith('\n'): + command += '\n' + self.process.stdin.write(command) + self.process.stdin.flush() + self.process.stdin.flush() + + output = [] + # Read the output + while True: + # Use select to wait for data to be available on stdout + rlist, _, _ = select.select([self.process.stdout], [], [], 2.0) + + if self.process.stdout in rlist: + line = self.process.stdout.readline().strip() + print(line) + if line: + output.append(line) + else: + break + else: + break + while True: + # Use select to wait for data to be available on stdout + rlist, _, _ = select.select([self.process.stdout], [], [], 2.0) + + if self.process.stdout in rlist: + line = self.process.stdout.readline().strip() + print(line) + if line: + output.append(line) + else: + break + else: + break + + error = [] + # Read the error + while True: + # Use select to wait for data to be available on stderr + rlist, _, _ = select.select([self.process.stderr], [], [], 2.0) + + if self.process.stderr in rlist: + line = self.process.stderr.readline().strip() + print(line) + if line: + error.append(line) + else: + break + else: + break + + if error: + logging.error(f'Error: {error}') + return output + + def close(self): + """ + Closes the terminal + """ + self.process.stdin.close() + self.process.stdout.close() + self.process.stderr.close() + self.process.kill() + +def extract_code_blocks(file_path: str) -> List[Tuple[str, str]]: + """ + Extracts code blocks from a markdown file + """ + code_blocks: List[Tuple[str, str]] = [] # (language, code) + with open(file_path, 'r') as file: + code: Optional[str] = None + language: Optional[str] = None + in_code_block: bool = False + for line in file: + if line.startswith(BLOCK_DELIM): + new_language = line.strip(BLOCK_DELIM).strip() + if len(new_language) == 0: # end of code block + code_blocks.append((language, code)) + code = None + language = None + in_code_block = False + else: + language = new_language + code = '' + in_code_block = True + elif in_code_block: + if code is not None: + code += line + return code_blocks + +def run_code_blocks(code_blocks: List[Tuple[str, str]]): + """ + Runs the code blocks + """ + terminal = ROSTerminal() + terminal.execute('source /opt/ros/humble/setup.bash') + for language, code in code_blocks: + if language == 'bash': + for line in code.split('\n'): + if len(line.strip()) == 0: + continue + logging.info(f'cmd: {line}') + output = terminal.execute(line) + logging.info(f'out: {output}') + else: + logging.warning(f'Unsupported language: {language}') + terminal.close() + +def main(): + """ + Main function + """ + logging.basicConfig(level=logging.INFO) + ap = argparse.ArgumentParser() + ap.add_argument('file', help='Markdown file to extract code blocks from') + args = ap.parse_args() + code_blocks = extract_code_blocks(args.file) + print(code_blocks) + run_code_blocks(code_blocks) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/bt_view/tutorial.md b/bt_view/tutorial.md new file mode 100644 index 0000000..e789526 --- /dev/null +++ b/bt_view/tutorial.md @@ -0,0 +1,17 @@ +# How to visualize a FBL file + +## Verify installation + +To verify that the installation was successful, run the following command: + +```bash +ls +``` + +```bash +echo $ROS_DISTRO +``` + +```bash +ros2 topic list +``` \ No newline at end of file diff --git a/btlib/scripts/bt_to_fsm b/btlib/scripts/bt_to_fsm new file mode 100644 index 0000000..0351581 --- /dev/null +++ b/btlib/scripts/bt_to_fsm @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +import argparse +from btlib.bt_to_fsm import bt_to_fsm +from btlib.bts import xml_to_networkx + +def main(): + parser = argparse.ArgumentParser(description='Converts a BT to an FSM') + parser.add_argument('bt', type=str, help='The BT to convert') + args = parser.parse_args() + + bt, _ = xml_to_networkx(args.bt) + btf = bt_to_fsm.Bt2FSM(bt) + fsm = btf.convert() + btf.plot_fsm(fsm) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/btlib/setup.py b/btlib/setup.py index 07a5d76..50978c0 100644 --- a/btlib/setup.py +++ b/btlib/setup.py @@ -33,5 +33,8 @@ license='Apache-2.0', tests_require=[ 'pytest', - ] + ], + scripts=[ + 'scripts/bt_to_fsm', + ], ) diff --git a/btlib/src/btlib/bt_to_fsm/bt_to_fsm.py b/btlib/src/btlib/bt_to_fsm/bt_to_fsm.py index 3cd9dfc..e00f2f8 100644 --- a/btlib/src/btlib/bt_to_fsm/bt_to_fsm.py +++ b/btlib/src/btlib/bt_to_fsm/bt_to_fsm.py @@ -218,7 +218,7 @@ def _convert_subtree(self, node_id: int) -> nx.DiGraph: f'Category {node["category"]} not implemented.') return fsm - def _plot_fsm(self, fsm: nx.DiGraph): + def plot_fsm(self, fsm: nx.DiGraph): """Plot the Finite State Machine.""" import matplotlib.pyplot as plt fixed_pos = { diff --git a/btlib/tutorial.md b/btlib/tutorial.md new file mode 100644 index 0000000..408dc6a --- /dev/null +++ b/btlib/tutorial.md @@ -0,0 +1,58 @@ +## Transform a behavior tree into a finite state machine + +This tutorial will teach you how to use the algorithm in this package to transform a behavior tree into a functionally equivalent finite state machine. + +### Background + +This implements the algorithm described in [_Behavior Trees in Robotics and AI: An Introduction_ by Michele Colledanchise, Petter Ă–gren](https://arxiv.org/pdf/1709.00084). +Of particular interest is the section __2.2.2 Creating a FSM that works like a BTs__ (page 29). + +For our implementation, please refer to [the Bt2FSM class](https://bt-tools.readthedocs.io/en/latest/apidocs/btlib/btlib.bt_to_fsm.bt_to_fsm.html#btlib.bt_to_fsm.bt_to_fsm.Bt2FSM). + +### Prerequisites + +You need to have this package installed in your workspace. +If you don't have it, build it: + +```bash +mkdir -p ~/catkin_ws/src +cd ~/catkin_ws/src +git clone https://github.com/boschresearch/bt_tools.git +cd ~/catkin_ws +catkin build --symlink-install --packages-select btlib +source ~/catkin_ws/devel/setup.bash +``` + +### Input file + +You can pass any behavior tree in the [behaviortree.cpp](https://behaviortree.dev) format to the algorithm. +For example [simple_bt.xml](https://github.com/boschresearch/bt_tools/blob/main/btlib/test/_test_data/bt2fsm/simple_bt.xml): + +```xml + + + + + + + + + + + +``` + +### Call the algorithm + +Then pass it to the script: + +```bash +bt_to_fsm.py ~/catkin_ws/src/bt_tools/btlib/test/_test_data/bt2fsm/simple_bt.xml +``` + +### Output + +This will generate a file called `fsm.png` in your current directory. +It will look something like this: + +![FSM](imgs/fsm.png) \ No newline at end of file diff --git a/docs/source/tutorials.rst b/docs/source/tutorials.rst index d7f24c4..f98e842 100644 --- a/docs/source/tutorials.rst +++ b/docs/source/tutorials.rst @@ -1,15 +1,4 @@ Tutorials ========= -How to model check your robot ------------------------------ - -1. Install the necessary packages: -``` -sudo apt install THAT -``` - -2. Run the model checker: -``` -convince_toolchain -i model.scxml -o results.json -``` +.. mdinclude:: ../../btlib/tutorial.md \ No newline at end of file diff --git a/imgs/fsm.png b/imgs/fsm.png new file mode 100644 index 0000000000000000000000000000000000000000..082562b77f1aa05591e94b15482c0001fc85873f GIT binary patch literal 55912 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 _teR>TWb`+>aRPQQ# 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