This prokect hosts my implementation of the BehaviorTree.CPP tutorials.
This project relies on the behaviortree_cpp package through ROS2. For the same setup used here,
follow the installation instructions in
ROS2 and install the
behaviortree_cpp package:
sudo apt install ros-<distro>-behaviortree-cpp # Use your ROS2 distro
Clone the repository:
git clone git@github.com:luisluna01/bt_tutorial.gitThe code used to run the tutorials from the
BehaviorTree.CPP without integrating ROS2 can be found
under bt_tutorial/bt_tutorial. To compile and execute them, follow the instructions below:
Compile the project:
cd bt_tutorial/bt_tutorial/
mkdir build && cd build
cmake .. cmake --build . # Configure and compile the CMake project This command is an example showing how to run any executable in this directory:
./first_behavior_tree_execThe code used to run the tutorials using the BehaviorTree.ROS2 wrapper in the BehaviorTree.CPP
Integration with ROS2 page can be found under
the bt_tutorial/ros2_bt_tutorial ROS2 workspace. The tutorial examples only demonstrated how to
create Behavior Tree nodes that act as a service client and an action server. Here you will also
find examples for creating Tree nodes that act as a topic publisher and a topic subscriber. This
section assumes you have followed the
ROS2 Tutorials and have sourced the workspace used
in those tutorials. Follow the instructions below to build the project. You'll also find :
Build the project:
cd bt_tutorial/ros2_bt_tutorial_ws/
colcon build --symlink-install # Build the ROS2 workspace
source install/setup.bash # Source the workspaceService Client Behavior Example
To test an example of a behavior acting as a service client, first run this service server:
ros2 run demo_nodes_cpp add_two_ints_serverIn a separate terminal, run the executable below. This will create a ROS2 node and tick the
AddTwoIntsSample tree. The tree has a behavior which uses the ROS2 node to add ROS2 service
client and send a request:
ros2 run ros2_bt_tutorial add_two_ints_bt_executerAction Client Behavior Example
To test an example of a behavior acting as an action client, first run this service server:
ros2 run action_tutorials_cpp fibonacci_action_serverIn a separate terminal, run the executable found below. This will create a ROS2 node and tick the
FibonacciSample tree. This tree has a behavior which uses the ROS2 node to add a ROS2 action
client and send a request:
ros2 run ros2_bt_tutorial fibonacci_bt_executerTopic Publisher and Subscriber Behavior Examples
To test an example of a behavior acting as a topic publisher, run the executable below. This will
create a ROS2 node and tick the SimplePublisherSample tree. This tree has a behavior which uses
the ROS2 node to add a ROS2 topic publisher and publish a message:
ros2 run ros2_bt_tutorial simpe_publisher_bt_executerIn a separate terminal, run the executable found below to test a behavior acting as a topic
subscriber. This will create a ROS2 node and tick the SimpleSubscriberSample tree. This tree has a
behavior which uses the ROS2 node to add a ROS2 topic subscriber that subscribes to a message:
ros2 run ros2_bt_tutorial fibonacci_bt_executerBoth executables must be run simultaneously to test communication between the publisher and subscriber.