33FlexBE is a high-level behavior engine coordinating the capabilities of a robot in order to solve complex tasks.
44Behaviors are modeled as hierarchical state machines (HFSM) where states correspond to active actions
55and transitions describe the reaction to outcomes.
6- Main advantage over similar approaches is the good operator integration and an
7- intuitive user interface.
6+
7+ The main advantage of FlexBE over similar approaches is the good operator integration and an intuitive user interface.
88Besides executing behaviors in full autonomy, the operator can restrict execution of certain transitions or trigger them manually.
99Furthermore, FlexBE supports modifying the whole structure of a behavior during its execution without restarting it.
1010The user interface features a runtime control interface as well as a graphical editor for state machines.
@@ -17,48 +17,78 @@ You may also want to check out the quick start tutorial demonstrations at [FlexB
1717
1818Jazzy ![ ROS Build Farm] ( https://build.ros2.org/job/Jdev__flexbe_behavior_engine__ubuntu_noble_amd64/badge/icon )
1919
20+ > Note: This version 4+ breaks compatibility with the FlexBE App. You must use the FlexBE WebUI [ flexbe_webui] ( https://github.com/FlexBE/flexbe_webui.git ) now.
21+
22+
2023## Installation
2124
22- For released versions, FlexBE is available as ` apt install` package ` ros-<DISTRO>-flexbe-* `
25+ For released versions, FlexBE is available as ` apt install ` package ` ros-<DISTRO>-flexbe-* `
2326
2427To build from source, execute the following commands to install FlexBE for ROS 2 systems:
2528
26- cd "ros2_ws"/src
27- git clone https://github.com/FlexBE/flexbe_behavior_engine.git
29+ ` cd "ros2_ws"/src `
30+
31+ ` git clone https://github.com/FlexBE/flexbe_behavior_engine.git `
2832
2933Next, navigate to the "ros2_ws" top-level directory and build FlexBE:
3034
31- colcon build
35+ ` colcon build `
36+
37+ ## Creating new FlexBE Behavior packages
38+
39+ To begin, create your own repository for behavior development in the ` ${WORKSPACE_ROOT}/src ` folder:
40+
41+ ` ros2 run flexbe_widget create_repo [your_project_name] <meta_package_name> <--non-interactive> `
42+
43+ This will clone a project template (requires internet access) that contains examples and proper package definitions,
44+ and create the ROS 2 package structure and three subfolders.
3245
33- Furthermore, create your own repository for behavior development (contains examples):
46+ For example, running
3447
35- ros2 run flexbe_widget create_repo [your_project_name]
48+ ` ros2 run flexbe_widget create_repo my_project my_flexbe_project `
3649
37- This version of the flexbe_behavior_engine requires version 4.0+ of the FlexBE user interface.
50+ from the ` ${WORKSPACE_ROOT}/src ` folder will create:
51+ - ` ${WORKSPACE_ROOT}/src/my_flexbe_project `
52+ - ` ${WORKSPACE_ROOT}/src/my_flexbe_project/my_flexbe_project ` - the ROS meta package
53+ - ` ${WORKSPACE_ROOT}/src/my_flexbe_project/my_project_flexbe_behaviors `
54+ - ` ${WORKSPACE_ROOT}/src/my_flexbe_project/my_project_flexbe_states `
3855
39- It is recommended to install the FlexBE user interface by following one of these steps:
40- * https://github.com/FlexBE/flexbe_app.git - classic FlexBE App (iron or ros2-devel branches)
41- * https://github.com/FlexBE/flexbe_webui.git - new Python-based webserver version
56+ These are intended to contain your custom FlexBE state implementations and HFSM-based behaviors.
57+
58+ This release of the FlexBE Behavior Engine requires version 4.1+ of the FlexBE UI.
59+ This breaks compatibility with the older FlexBE App and now requires use of the FlexBE WebUI tool.
60+
61+ It is recommended to install the FlexBE WebUI user interface:
62+
63+ [ FlexBE WebUI] ( https://github.com/FlexBE/flexbe_webui.git ) - Python-based webserver version
4264
4365
4466## Usage
4567
4668Use the following launch file for running the onboard engine:
4769
48- ros2 launch flexbe_onboard behavior_onboard.launch.py
70+ ` ros2 launch flexbe_onboard behavior_onboard.launch.py `
4971
5072Use the following launch file for running the operator control station (requires the FlexBE App or WebUI):
5173
52- ros2 launch flexbe_webui flexbe_ocs.launch.py
74+ ` ros2 launch flexbe_webui flexbe_ocs.launch.py `
75+
76+ During testing is is recommended to start the base nodes and the UI client separately:
5377
54- > Note: replace ` flexbe_webui ` with ` flexbe_app ` to run the "classic" UI (after ` ros2 run flexbe_app nwjs_install ` ).
78+ ` ros2 launch flexbe_webui flexbe_ocs.launch.py headless:=True `
5579
56- Use the following launch file to run both of the above, e.g., for testing on a single computer:
80+ ` ros2 run flexbe_webui webui_client `
5781
58- ros2 launch flexbe_webui flexbe_full.launch.py
82+ See the ` flexbe_webui ` README for more details.
83+
84+
85+ Use the following launch file to run the entire FlexBE system, both onboard and OCS, e.g., for testing on a single computer:
86+
87+ ` ros2 launch flexbe_webui flexbe_full.launch.py `
5988
6089For running tests use:
61- ` colcon test --ctest-args --packages-select <flexbe_package> `
90+
91+ ` colcon test --ctest-args --packages-select <flexbe_package> `
6292
6393## Next Steps
6494
@@ -94,4 +124,4 @@ Let us know if you know a paper which should be added to the list.
94124## Maintainers
95125
96126- Philipp Schillinger ([ @pschillinger ] ( https://github.com/pschillinger ) , [ Contact] ( http://philserver.bplaced.net/fbe/contact.php ) )
97- - David Conner ([ @dcconner ] ( https://github.com/dcconner ) )
127+ - David Conner ([ @dcconner ] ( https://github.com/dcconner ) ) [ Contact ] ( https://flexbe.readthedocs.io/en/latest/contactinfo.html )
0 commit comments