Greenhouse models, simulation environments, and demonstration media developed for:
HARBOT: Uncertainty-Aware Multi-Robot Task Planning and Execution for Greenhouse Fruit Harvesting
The repository provides reusable greenhouse and crop assets for Gazebo Classic, Gazebo Sim, and PyBullet, together with demonstrations of the HARBOT planning–execution pipeline.
The HARBOT architecture connects empirically grounded grasp uncertainty, RDDL/PROST task planning, planner–execution middleware, and simulation or real-robot execution through a closed task-level feedback loop.
This edited demonstration shows how HARBOT converts high-level RDDL/PROST decisions into closed-loop multi-robot execution in Gazebo. It highlights:
- Independent planning and execution sessions for two robots.
- symbolic action dispatch through the planner–execution middleware.
- Path-based navigation and shared-region collision avoidance.
- RGB-D fruit detection and coordinate-frame transformation.
- Collision-aware arm motion planning with MoveIt.
- Probabilistic grasp outcomes, loading, unloading, and task-state feedback.
Watch the full simulation system overview
This video shows a complete two-robot greenhouse mission at increased playback speed. The robots execute asynchronous RDDL/PROST action streams to navigate between waypoints, harvest ripe fruit, load their onboard containers, return to unloading stations, and complete the assigned task.
Watch the accelerated full-mission run
This demonstration shows the HARBOT planning–execution pipeline operating on the physical RB-KAIROS mobile manipulator. The platform combines a Franka Emika Panda arm, an eye-in-hand RGB-D camera, and a pneumatic soft gripper to execute planner-generated navigation, grasping, loading, and unloading actions with physical outcome feedback.
Watch the full real-robot demonstration
The browser-based monitoring interface visualizes the high-level RDDL/PROST action trace and task progress, including robot locations, fruit states, bin contents, unloading trips, payload utilization, and greenhouse-level statistics.
Watch the full monitoring dashboard demo
Use this version with Gazebo Classic, for example Gazebo 11.
From the repository root, add the model directory to GAZEBO_MODEL_PATH:
export GAZEBO_MODEL_PATH="${GAZEBO_MODEL_PATH}:$(pwd)/gazebo_classic/models"Launch the greenhouse world:
gazebo gazebo_classic/greenhouse.worldIf Gazebo hangs while attempting to download external models, disable online model fetching:
export GAZEBO_MODEL_DATABASE_URI=""Note: To use the greenhouse environment in another simulation workspace, copy the
gazebo_classic/directory into the workspace. The models include the required meshes and textures.
Use this version with newer Gazebo releases, including Ignition Gazebo and Gazebo Sim distributions such as Fortress, Garden, and Harmonic.
From the repository root, configure the resource path:
export GZ_SIM_RESOURCE_PATH="${GZ_SIM_RESOURCE_PATH}:$(pwd)"Launch the greenhouse world:
gz sim gazebo_sim/greenhouse_world.sdfNote: To use the greenhouse environment in another simulation workspace, copy the
assets/andgazebo_sim/directories into the workspace.
Install PyBullet:
pip install pybulletRun the greenhouse simulation:
python pybullet/load_greenhouse.pyNote: To use the greenhouse environment in another workspace, copy the
assets/directory and use the loading script provided in thepybullet/directory.







