Skip to content

Code for "Domain-Conditioned Scene Graphs for State-Grounded Task Planning" (IROS 2025)

Notifications You must be signed in to change notification settings

Vision-Kek/DC-SGG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Domain-Conditioned Scene Graphs for State-Grounded Task Planning

Code for Domain-Conditioned Scene Graphs for State-Grounded Task Planning (IROS 2025)

Installation

conda create -n dcsgg python=3.13
conda activate dcsgg
pip install -e .

cd src/dcsgg

Usage

  • ➡️ Case 1: For evaluation there is scripts/state_eval.py and scripts/planning_eval.py.
  • ➡️ Case 2: For execution there is part1...py part2...py part3...py.
  • For basic usage, the two main arguments to pass are domain and result_folder.
  • Advanced configuration can be edited in conf/config.yaml.

➡️ Case 1: Only measure result metrics

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

➡️ Case 2: Run state grounding and task planning

  1. Choose a name for the new subdirectory of results/ where your results will go, e.g. my_results.
  2. 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_results

You 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_results

You can measure results with python scripts/planning_eval.py +domain=cooking result_folder=my_results.

Understanding Result Files Layout

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

Credits and Citation

  1. FastDownward is used within the Unified Planning Library. Printing credits is turned off by default. Consider viewing them instead by setting print_credits: True in config.yaml.
  2. bin/ contains the Validate binary from KCL-Planning/VAL. Consider installing from there instead.
  3. 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}
}

About

Code for "Domain-Conditioned Scene Graphs for State-Grounded Task Planning" (IROS 2025)

Topics

Resources

Stars

Watchers

Forks