Code for Domain-Conditioned Scene Graphs for State-Grounded Task Planning (IROS 2025)
conda create -n dcsgg python=3.13
conda activate dcsgg
pip install -e .
cd src/dcsgg- ➡️ Case 1: For evaluation there is
scripts/state_eval.pyandscripts/planning_eval.py. - ➡️ Case 2: For execution there is
part1...pypart2...pypart3...py. - For basic usage, the two main arguments to pass are
domainandresult_folder. - Advanced configuration can be edited in
conf/config.yaml.
Presumes result files exist in a subdirectory of results/, e.g. results/reported_results.
Evaluate State Grounding:
python scripts/state_eval.py +domain=blocksworld result_folder=reported_results
>>> Precision | Recall: (0.98 | 1.00)Evaluate Task Planning:
python scripts/planning_eval.py +domain=blocksworld result_folder=reported_results
>>> r_problem = 1.00 # The ratio of valid problems
>>> r_plan = 0.97 # The ratio of valid plans
>>> r_success = 0.86 # The ratio of plans that reach the goal when executed on the ground truth init state- Choose a name for the new subdirectory of
results/where your results will go, e.g.my_results. - Set your API key for the LLM call during goal parsing:
export API_KEY=sk....
Run State Grounding:
# goal parsing and object detection
python part1_goal_parsing_object_detection.py +domain=cooking result_folder=my_results
# initial state generation
python part2_spatial_semantic_mapping.py +domain=cooking result_folder=my_resultsYou can measure results with python scripts/state_eval.py +domain=cooking result_folder=my_results.
Run Task Planning:
python part3_planning.py +domain=cooking result_folder=my_resultsYou can measure results with python scripts/planning_eval.py +domain=cooking result_folder=my_results.
results
└── reported_results
├── blocksworld
│ ├── dinox-det # The object detections with class prompts, pre-extracted using DINO-X API
│ ├── objdet # The referring expression (REC) object detections, from Grounding DINO
│ ├── object_stubs # A stub of a PDDL problem containing only (:objects
│ ├── init_stubs # A stub of a PDDL problem containing only (:init
│ ├── goal_stubs # A stub of a PDDL problem containing only (:goal
│ ├── pddl_problems # The assembled problem.pddl
│ └── plans # A sequence of actions
├── cooking
│ ├── dinox-det
│ ├── ...
| part1 | part2 | part3 | |
|---|---|---|---|
| Input | Images PDDL Domain dinox-det |
object_stubs objdet |
object_stubs init_stubs goal_stubs |
| Output | goal_stubs object_stubs objdet |
init_stubs | PDDL Problem PDDL Plan |
- FastDownward is used within the Unified Planning Library.
Printing credits is turned off by default.
Consider viewing them instead by setting
print_credits: Trueinconfig.yaml. bin/contains theValidatebinary from KCL-Planning/VAL. Consider installing from there instead.- If this repo finds use in your research, please cite:
@article{herzog2025domainconditioned,
title={Domain-Conditioned Scene Graphs for State-Grounded Task Planning},
author={Jonas Herzog and Jiangpin Liu and Yue Wang},
journal={arXiv preprint arXiv:2504.06661},
year={2025}
}