Available for

FlexBE

The flexible behavior engine.

Download FlexBE

Downloading and installing FlexBE can be completed in just a few steps, assuming that you already have ROS installed. The engine itself is both available as binary installation on the ROS build server and as source code on github. You can get it in one of the following two ways:

# install as binary (recommended for users)
sudo apt install ros-$ROS_DISTRO-flexbe-behavior-engine

# or build from source
cd ~/catkin_ws/src  # or an alternative workspace source path
git clone https://github.com/team-vigir/flexbe_behavior_engine.git

FlexBE comes with an extensive user interface, providing a user-friendly drag&drop behavior editor combined with helpful runtime monitoring. This UI, the FlexBE App, builds upon the NWJS framework and can be cloned as follows. The required NWJS binaries will be automatically downloaded to the repository when being built the first time.

cd ~/catkin_ws/src
git clone https://github.com/FlexBE/flexbe_app.git

Since FlexBE encourages re-use of states and behaviors, it is recommended to also download a few already existing ones. A good starting point are the generic_flexbe_states, a collection of several multi-purpose FlexBE interfaces to commonly used ROS components. Contributions are always welcome! See the bottom part of this page for some additional recommendations.

cd ~/catkin_ws/src
git clone https://github.com/FlexBE/generic_flexbe_states.git

Now build your workspace and source its setup.bash again such that ROS will recognize the new packages.

cd ~/catkin_ws
catkin build
source devel/setup.bash

You can also create an application menu shortcut for the FlexBE App, similar to other code editors like Eclipse or PyCharm.

rosrun flexbe_app shortcut create  # or "remove" to remove it again

Congratulations, you installed FlexBE successfully! Now, follow the rest of this page to get started with the workspace setup. Then, switch to the Tutorials to learn using FlexBE and develop your first behavior. Please also consider to contact me if you faced any problems during installation or later during the use of FlexBE. Any feedback, also positive, helps the further development and direction of FlexBE and is highly appreciated.

Workspace Setup

You can create your own repository for the development of states and behaviors using the following prepared script. It is recommended to use this script, especially when this is the first time you use FlexBE. Make sure to execute it in the /src folder of your catkin workspace. As project name, choose something project specific and do not use terms such as "flexbe" or "behavior" (these will be appended automatically where reasonable).

cd ~/catkin_ws/src
rosrun flexbe_widget create_repo [your_project_name]

# since new packages are created by the above command, build and source again
cd ~/catkin_ws
catkin build
source devel/setup.bash

The script will create a new folder with a local git repository for your custom states and behaviors. After running this script, you can push the new repo to any origin of your choice, as explained in the terminal. In addition, the new repo will also contain a simple example behavior and two example states. The states have a good amount of comments in it to briefly explain the most important concepts when writing a new state and are a good entry point for starting development.

Get Additional States

States build the basis for easily composing high-level behaviors. You will most likely need to develop some yourself if you want to implement a special system. However, for standard ROS functionality, there already exist some collections of states. You can just clone the repositories you need and use the states (remember to add new packages to the state library in the app). Check back regularly if there are new states available and it would be great if you consider making states available yourself.

An overview of available states is also provided by the FlexBE State Library, a web application to explore the state documentation of multiple GitHub repositories.

generic_flexbe_states (github)
A useful collection of non-robot-specific states, e.g., for move_base, MoveIt!, PCL, OpenCV, ... Feel free to contribute!

vigir_behaviors (github)
States and behaviors of Team ViGIR used in the DARPA Robotics Challenge.

youbot_behaviors (github)
States and behaviors developed for the KUKA youBot.

flexbe_strands (github)
States and behaviors to be used along with the STRANDS project software.