Chapter 1313. PDDL 언어 기초: 도메인과 문제 정의 (PDDL Fundamentals: Domain and Problem Definition)

Chapter 1313. PDDL 언어 기초: 도메인과 문제 정의 (PDDL Fundamentals: Domain and Problem Definition)

1. 개요

PDDL(Planning Domain Definition Language)은 AI 플래닝의 표준 언어로, 계획 문제를 형식적으로 기술하여 도메인 독립적(domain-independent) 계획기에 입력으로 제공한다. McDermott 등(1998)이 국제 플래닝 대회(IPC)를 위해 설계한 이래, PDDL은 AI 플래닝 커뮤니티의 사실상 표준(de facto standard)으로 자리잡았다.

PDDL의 핵심 설계 원칙은 **도메인(domain)**과 **문제(problem)**의 분리이다. 도메인은 가능한 행동과 세계의 구조를 기술하고, 문제는 특정 임무의 초기 상태와 목표를 기술한다. 이 분리에 의해 동일한 도메인 정의를 다양한 문제 인스턴스에 재사용할 수 있다.

본 장에서는 PDDL의 기본 구조, 도메인 정의의 핵심 요소, 문제 정의의 핵심 요소, 로봇 공학에서의 PDDL 활용을 체계적으로 다룬다.

2. PDDL의 역할과 위치

2.1 계획 시스템에서의 PDDL

[PDDL 도메인 파일] + [PDDL 문제 파일] → [계획기 (FF, POPF, ...)] → [행동 시퀀스 (계획)]

PDDL은 계획기의 입력 형식으로, 도메인과 문제의 두 파일로 구성된다. 계획기는 이 두 파일을 읽어 유효한 행동 시퀀스를 생성한다.

2.2 PlanSys2에서의 PDDL

ROS2의 PlanSys2 프레임워크에서 PDDL은 다음과 같이 활용된다.

PlanSys2 노드PDDL 역할
Domain ExpertPDDL 도메인 파일 로딩 및 관리
Problem Expert초기 상태/목표를 PDDL 문제로 동적 구성
Planner NodePDDL 도메인+문제를 계획기에 전달

3. PDDL의 버전 변천

버전연도주요 추가 기능
PDDL 1.21998기본 STRIPS/ADL, 타입, 양화사
PDDL 2.12003수치 함수, 듀레이티브 액션, 시간적 계획
PDDL 2.22004파생 술어, 시간 제한 목표
PDDL 3.02006선호도(preferences), 경로 제약
PDDL 3.12008객체 함수(object fluents)

PlanSys2는 주로 PDDL 2.1 수준을 지원하며, POPF 계획기를 통해 시간적 계획도 처리한다.

4. 도메인 파일의 기본 구조

(define (domain 도메인이름)
  (:requirements :strips :typing)
  (:types 타입1 타입2 ...)
  (:constants 상수 ...)
  (:predicates
    (술어1 ?변수1 - 타입1 ?변수2 - 타입2)
    (술어2 ?변수1 - 타입1)
    ...)
  (:functions
    (함수1 ?변수 - 타입) - 타입
    ...)
  (:action 행동이름
    :parameters (매개변수)
    :precondition (전제조건)
    :effect (효과))
  ...)

4.1 핵심 요소

요소키워드역할
요구사항:requirements사용하는 PDDL 기능 선언
타입:types객체의 분류 체계
술어:predicates상태를 기술하는 명제
함수:functions수치적 상태 변수
행동:action로봇이 수행할 수 있는 행동

5. 문제 파일의 기본 구조

(define (problem 문제이름)
  (:domain 도메인이름)
  (:objects
    객체1 - 타입1
    객체2 - 타입2
    ...)
  (:init
    (술어1 객체1 객체2)
    (= (함수1 객체1) 값)
    ...)
  (:goal
    (and
      (술어1 객체1 객체2)
      (술어2 객체3)
      ...)))

5.1 핵심 요소

요소키워드역할
도메인 참조:domain사용할 도메인 지정
객체:objects세계에 존재하는 구체적 객체
초기 상태:init현재 세계의 상태
목표:goal달성할 조건

6. 로봇 배달 도메인 예시

6.1 도메인 파일

(define (domain robot-delivery)
  (:requirements :strips :typing)
  (:types robot location object)
  (:predicates
    (at ?r - robot ?l - location)
    (on ?o - object ?l - location)
    (holding ?r - robot ?o - object)
    (gripper_empty ?r - robot)
    (connected ?l1 ?l2 - location))

  (:action move
    :parameters (?r - robot ?from ?to - location)
    :precondition (and (at ?r ?from)
                       (connected ?from ?to))
    :effect (and (at ?r ?to)
                 (not (at ?r ?from))))

  (:action pick
    :parameters (?r - robot ?o - object ?l - location)
    :precondition (and (at ?r ?l)
                       (on ?o ?l)
                       (gripper_empty ?r))
    :effect (and (holding ?r ?o)
                 (not (on ?o ?l))
                 (not (gripper_empty ?r))))

  (:action place
    :parameters (?r - robot ?o - object ?l - location)
    :precondition (and (at ?r ?l)
                       (holding ?r ?o))
    :effect (and (on ?o ?l)
                 (gripper_empty ?r)
                 (not (holding ?r ?o)))))

6.2 문제 파일

(define (problem delivery-1)
  (:domain robot-delivery)
  (:objects
    robot1 - robot
    dock kitchen room_301 room_302 corridor - location
    tray1 tray2 - object)
  (:init
    (at robot1 dock)
    (on tray1 kitchen)
    (on tray2 kitchen)
    (gripper_empty robot1)
    (connected dock corridor)
    (connected corridor kitchen)
    (connected corridor room_301)
    (connected corridor room_302)
    (connected kitchen corridor)
    (connected room_301 corridor)
    (connected room_302 corridor))
  (:goal
    (and (on tray1 room_301)
         (on tray2 room_302))))

7. 도메인과 문제 분리의 의의

도메인-문제 분리에 의해, 동일한 robot-delivery 도메인을 다양한 배달 시나리오(다른 객체, 다른 목적지, 다른 레이아웃)에 재사용할 수 있다. 새로운 배달 임무가 추가될 때 문제 파일만 변경하면 되므로, 도메인 모델의 재사용성이 높다.

8. 설계 시 고려 사항

8.1 도메인 모델의 정확성

PDDL 도메인이 로봇의 실제 능력과 환경의 물리학을 정확히 반영하여야 한다. 전제 조건이 누락되면 실행 불가능한 계획이 생성되고, 효과가 잘못되면 계획이 목표를 달성하지 못한다.

8.2 적절한 추상 수준

PDDL은 기호적(symbolic) 수준에서 동작하므로, 연속적 물리량(정확한 위치, 속도 등)은 직접 표현하지 않는다. 기호 수준에서의 충분한 추상화와 물리 수준에서의 정확한 실행을 연결하는 인터페이스가 필요하다.

8.3 PDDL 기능 요구사항 선택

필요한 PDDL 기능(:requirements)만 선언하여, 계획기의 호환성과 성능을 최적화한다. 불필요하게 높은 표현 수준은 계획 성능을 저하시킬 수 있다.

9. 참고 문헌

  • McDermott, D., et al. (1998). “PDDL — The Planning Domain Definition Language.” Technical Report CVC TR-98-003, Yale Center for Computational Vision and Control.
  • Fox, M., & Long, D. (2003). “PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains.” JAIR, 20, 61-124.
  • Ghallab, M., Nau, D., & Traverso, P. (2016). Automated Planning and Acting. Cambridge University Press.
  • PlanSys2 공식 문서. https://plansys2.github.io/

버전날짜변경 사항
v0.12026-04-05초안 작성