FlexBE WebUI provides a user interface to FlexBE, the Flexible Behavior Engine.
The tool provides a graphical editor for designing Hierarchical Finite State Machines (HFSMs) for execution by the onboard Flexible Behavior Engine. During runtime, the UI enables the operator to supervise the execution of the onboard behavior, provide input where necessary, and take control if needed in what we term "collaborative autonomy".
This UI uses native Python and FastAPI along with a JavaScript-based browser interface to interact with the Flexible Behavior Engine.
For detailed information on FlexBE, see the documentation.
This version supersedes the 4.0.0 version of the flexbe_app interface.
The flexbe_webui has the look of the classic flexbe_app with some notable improvements:
- Ability to select and adjust the endpoints and labels of transitions.
- Improved handling of concurrent states and embedded states requiring operator feedback.
- Improved handling of exiting with unsaved changes, or exiting while a behavior is running.
- Option to save behaviors to your development
srcfolder in your workspace (in addition to theinstallfolder). - Native Python publishing and subscribing for easier UI development and debugging.
- Exported JSON-based configuration text file.
- Improved tab handling.
- Improved panning of the canvas for larger state machines using
Shift+ arrow keys, plusHomeandEnd.
Note: This version
4.1+offlexbe_webuiis designed to work with version4.1+of theflexbe_behavior_engine. If using an earlier3.x.xversion offlexbe_behavior_engine, use either theflexbe_appor the "beta-enhanced" branch offlexbe_webui. The FlexBE WebUI is not compatible withflexbe_behavior_engineversion2.x.x.
- Install dependencies and build your workspace.
- Run OCS:
ros2 launch flexbe_webui flexbe_ocs.launch.py- this default launch starts the desktop
webui_client, which requires a localPySide6/QtWebEngine install; see docs/installation.md
- (Optional) Run headless and connect client separately:
- terminal 1:
ros2 launch flexbe_webui flexbe_ocs.launch.py headless:=true - terminal 2:
ros2 run flexbe_webui webui_client
- terminal 1:
- docs/running.md
- docs/shortcuts.md
- docs/runtime-architecture.md
- docs/testing.md
- docs/security.md
- docs/diagnostics.md
- docs/package-discovery.md
Please use the following publications as references when using FlexBE and the FlexBE WebUI:
-
Philipp Schillinger, Stefan Kohlbrecher, and Oskar von Stryk, "Human-Robot Collaborative High-Level Control with Application to Rescue Robotics", IEEE International Conference on Robotics and Automation (ICRA), Stockholm, Sweden, May 2016.
-
Joshua Zutell, David C. Conner, and Philipp Schillinger, "ROS 2-Based Flexible Behavior Engine for Flexible Navigation,", IEEE SouthEastCon, April 2022.
-
Samuel Raymond, Grace Walters, Joshua Luzier, and David C. Conner, "Design and Development of the FlexBE WebUI with Introductory Tutorials", Journal of Computing Sciences in Colleges, Volume 40, Issue 3, October 2024.