This project is to develop a complex behavior based on multiple simpler behaviors using the behavior tree. The behavior consists of
- detect a shelf anywhere in the warehouse
- get underneath the shelf and use the elevator to pick it up
- place the shelf at a desired location
Thanks to the BT.CPP and BehaviorTree.ROS2 libraries, the complex behavior can be achieved. This project is based on ROS2 Humble middleware.
For more details about what's the project and its challenges, please check out notebook
ROS2 Humble | Ubuntu 22.04 (Jammy) | CPU Architecture: amd64
Robot Simulation
cd {simulation workspace}/src
git clone -b simulation --recurse-submodules https://github.com/ptientho/RB-1-warehouse-navigation.git
Build the package
cd {simulation workspace}
colcon build
Project source codes
cd {ros2 workspace}/src
git clone -b main --recurse-submodules https://github.com/ptientho/RB-1-warehouse-navigation.git
colcon build
Build the package
cd {ros2 workspace}
colcon build
Web application
cd {webapp workspace}
git clone -b webapp --recurse-submodules https://github.com/ptientho/RB-1-warehouse-navigation.git
Gazebo Simulation
source ~/your-simulation-workspace/install/setup.bash
ros2 launch the_construct_office_gazebo warehouse_rb1.launch.xml
Navigation Server
ros2 launch path_planner_server navigation.launch.py
Rviz
ros2 launch path_planner_server rviz.launch.py
Shelf Servers
ros2 launch rb1_autonomy shelf_servers.launch.py
Autonomy Server
ros2 launch rb1_autonomy autonomy.launch.py
Web Application
cd ~/your-webpage-workspace/RB-1-warehouse-navigation/rb1_webapp/
python3 -m http.server 7000
In a new terminal, run
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
Make sure to connect the real robot.
Navigation Server
ros2 launch path_planner_server navigation_real.launch.py
Rviz
ros2 launch path_planner_server rviz.launch.py
Shelf Servers
ros2 launch rb1_autonomy shelf_servers_real.launch.py
Autonomy Server
ros2 launch rb1_autonomy autonomy_real.launch.py
Web Application
cd ~/your-webpage-workspace/RB-1-warehouse-navigation/rb1_webapp/
python3 -m http.server 7000
In a new terminal, run
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
The robot operation is facilitated by Groot2 which turn behavior xml text into graphical and easy-to-read nodes.
Download the installer from Groot2 installer.
Open the project file inside Groot2 software and browse for a file name bt_real_project.btproj
.