This package contains a simulator for a Turtlebot searching for a wire with an uncertain location in a house. The wire simulation was developed by Oliver Grubb.
This simulator is used to evaluate REFINE-PLAN from the paper 'Planning under Uncertainty from Behaviour Trees'.
This package has been tested in ROS 2 Humble.
First, install the following packages:
sudo apt install ros-humble-gazebo-* ros-humble-cartographer ros-humble-cartographer-ros ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-dynamixel-sdk ros-humble-turtlebot3-msgs ros-humble-turtlebot3
Note that navigation 2 won't work out of the box with the turtlebot 3 in ROS 2 Humble.
To fix it, change robot_model_type: "differential" to "nav2_amcl::DifferentialMotionModel" in /opt/ros/humble/share/turtlebot3_navigation2/param/waffle.yaml.
Additional dependencies:
- Topological Navigation
- Topological Messages
- Wire Messages
- Shapely (Tested with version 2.0.6)
- PyMongo (Tested with version 4.8.0)
- Numpy (Tested with version 1.26.4)
- REFINE-PLAN
After installing the dependencies, place this package into the src directory of your workspace and run colcon build --symlink-install to build.
To replicate the experiments in 'Planning under Uncertainty from Behaviour Trees', first set up a mongoDB instance either locally or on the cloud.
Follow the instructions here.
After installation, run sudo systemctl start mongod.
The MongoDB instance will be at localhost:27017.
Then run:
cd bringup
./run_experiments.sh <mode> <MongoDB instance address>
The <mode> can be set to:
datawhich runs 100 rounds of 100 random actions for data collection.initialwhich runs the initial BT 100 times.refinedwhich runs the refined policy 100 times.
This repository is maintained by:
| Charlie Street | @charlie1329 | c.l.street@bham.ac.uk |