This repository contains an integration of PDDLStream as a planning engine for the Unified Planning framework.
This integration has been developed to support the experimental evaluation of the following paper:
E. Tosello, A. Valentini, A. Micheli. A Meta-Engine Framework for Interleaved Task and Motion Planning using Topological Refinements. ECAI 2024
up-pddl-stream relies on PDDLStream (follow the instruction inside the pddlstream submodule) and TAMPEST.
up-pddl-stream is integrated with the Unified Planning framework. You must register the planner engines with the Unified Planning environment:
from unified_planning.shortcuts import *
# Register the engine
env = get_environment()
env.factory.add_engine("pddlstream", "up_pddl_stream.engine", "PDDLStreamEngine")
problem = ... # your task and motion planning problem
# Solve the problem
with OneshotPlanner(name="pddlstream") as planner:
result = planner.solve(problem)
print(result.plan)To reproduce the experimental results from the ECAI 2024 paper, use the following command-line interface:
python3 test.py --domain <domain-name> --dim <dim> --d <n> --c <m> --tp <task-planner-name> --mp <motion-planner>The possible domains are: doors, maze, rover.
The possible dimensions are: 2D, 3D. 3D setups are available only for maze and rover.
The possible set of benchmark options are:
-
doors:--d [1 2 4 6 8 10] --c [0 1 2 3] -
maze:--d [1 2 3 4 5 6 7 8 9 10] --c [0 1 2 3 4 5 6 7 8 9 10] -
rover:--d [2 4 6 8 10] --c [0 1 2 3 4]
The possible task planners are: incremental, binding, focused, adaptive.
The possible motion planners are: LazyRRT, RRT.
Refer to the paper for the detailed meaning of the domain parameters.
up-pddl-stream is released under the Apache-2.0 License.
See the LICENSE file for full details.
For questions, bug reports, or contributions, please open an issue on GitHub or contact the maintainers.