ReBeT applied a to a Turtlebot
- Create a workspace folder, preferrably in your home folder:
mkdir -p ~/rebet_ws/src- Clone this repository. For example:
git clone https://github.com/EGAlberts/rebet_frog.gitKeep in mind if you are using a specific branch or commit version that should be reflected in the clone, or remedied after cloning the default branch.
- Clone the dependencies using VCS:
cd ~/rebet_ws
vcs import --input src/rebet_frog/frog.rosinstall src- Source your ROS2 Humble installation, install dependencies using rosdep
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src -r -y- To be sure, you should manually install ultralytics
pip install ultralyticsas well as masced_bandits
pip install masced_bandits- Build everything
colcon build --symlink-installThere are myriad launch files which need to be executed. No matter which configuration of rebet_frog you want to use the following launch files should be used:
Make sure you always have the workspace sourced when running these commands (source ~/rebet_ws/install/setup.bash).
Note: you may need to source this first for your gazebo classic to work bash source /usr/share/gazebo/setup.bash.
ros2 launch rebet_frog spawn_tb3.launch.py gui:=true myseed:=1For launching the simulation and spawning the turtlebot3 waffle into the world.
ros2 launch rebet_frog arborist_config_launch.pyFor managing the behavior trees.
ros2 run aal adaptation_layerFor providing architectural adaptations of ROS2 Nodes.
ros2 run rebet_frog system_reflection.pyFor collecting and storing system information in the BT's knowledge.
Depending on whether you plan to perform SLAM or use a pre-made map can be specified through the use_map launch argument. When use_map is false, slam_toolbox is launched to create a map.
For SLAM:
ros2 launch rebet_frog navigation_launch.py use_map:=falseand for the pre-made map:
ros2 launch rebet_frog navigation_launch.py use_map:=trueIf you are choosing to perform SLAM, you can automate the process with frontier exploration:
ros2 launch wavefront_frontier frontier_launch.py Some of the missions expect YOLO to be running for object detection.
ros2 launch rebet_frog yolo_self_start_launch.py Ultimately, to start the mission you need to use the following command:
ros2 run rebet_frog tree_action_client.py BT_NAMEwhere BT_NAME matches the name of a behavior tree defined in the trees folder. Right now, SLAMandCharge, FROG_BASELINE, FROG_AAL_EXTERNAL, FROG_AAL_INTERNAL are provided. The latter four referring to the evaluation of the ACSOS2024 paper about ReBeT. Please note that these trees expect varying combinations of the above listed launch files to be used.